# HG changeset patch # User František Kučera <franta-hg@frantovo.cz> # Date 1328795540 -3600 # Node ID 5b55827de220fcb4d5e935c8bc3489b9b6bc696c # Parent 8d34f20208842ff1810064ca4cd5606bac91ef81 #16 „obfuskované“ odkazy na e-maily, které znesnadní sběr spamovacím robotům odkazy jsou pro uživatele klikatelné (vyžaduje JavaScript). diff -r 8d34f2020884 -r 5b55827de220 vstup/js/skript.js --- a/vstup/js/skript.js Thu Feb 09 12:54:49 2012 +0100 +++ b/vstup/js/skript.js Thu Feb 09 14:52:20 2012 +0100 @@ -27,7 +27,31 @@ rot13: function(id) { var e = document.getElementById(id); e.textContent = e.textContent.rot13(); - } + }, + + /** + * Vloží klikatelný odkaz. + * @param id ID span elementu obsahujícího data + */ + odkazNaElektronickouPoštu: function(id) { + var spanČesky = document.getElementById(id); + var spanObsah = document.getElementById(id + "b"); + var česky = spanČesky.innerHTML; + var adresa = česky.replace(" zavináč ", "@").replace(" tečka ","."); + + var odkaz = document.createElement("a"); + odkaz.href = "mailto:" + adresa; + if (spanObsah.innerHTML.length > 0) { + odkaz.innerHTML = spanObsah.innerHTML; + } else { + odkaz.innerHTML = adresa; + } + + spanČesky.parentNode.insertBefore(odkaz, spanČesky); + spanČesky.parentNode.removeChild(spanČesky); + spanObsah.parentNode.removeChild(spanObsah); + }, + }; /** diff -r 8d34f2020884 -r 5b55827de220 vstup/odkazy.xml --- a/vstup/odkazy.xml Thu Feb 09 12:54:49 2012 +0100 +++ b/vstup/odkazy.xml Thu Feb 09 14:52:20 2012 +0100 @@ -11,6 +11,7 @@ <ul> <li><m:a href="kontakt">Kontakt</m:a> – interní odkaz</li> + <li><m:a href="anonym@example.com" typ="email">Pan <em>Anonym</em></m:a> – obfuskovaný e-mail</li> <li> <m:a href="nejlepší linuxová distribuce" typ="seznam">Nejlepší distribuce</m:a> – vyhledávání pomocí Seznamu <m:podČarou>Byl založen roku 1996 <m:a href="Ivo Lukačovič" typ="wiki">Ivem Lukačovičem</m:a>, a stal se prvním českým internetovým vyhledávačem v České republice. @@ -29,6 +30,7 @@ <m:pre jazyk="xml"><![CDATA[ <m:a href="kontakt">Kontakt</m:a> +<m:a href="anonym@example.com" typ="email">Pan Anonym</m:a> <m:a href="nejlepší linuxová distribuce" typ="seznam">Nejlepší distribuce</m:a> <m:a href="GNU/Linux a tučňák Tux" typ="google">GNU/Linux a tučňák Tux</m:a> <m:a href="1855" typ="rfc">Netiketa</m:a> diff -r 8d34f2020884 -r 5b55827de220 šablona/makra/odkazy.xsl --- a/šablona/makra/odkazy.xsl Thu Feb 09 12:54:49 2012 +0100 +++ b/šablona/makra/odkazy.xsl Thu Feb 09 14:52:20 2012 +0100 @@ -19,9 +19,10 @@ <xsl:stylesheet version="2.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro" + xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - exclude-result-prefixes="m xs"> + exclude-result-prefixes="m k xs"> <!-- Interní odkazy @@ -96,7 +97,7 @@ )"/> </xsl:call-template> </xsl:template> - + <!-- Wikipedia ********* @@ -114,7 +115,7 @@ )"/> </xsl:call-template> </xsl:template> - + <!-- Javadoc ******* @@ -133,7 +134,7 @@ )"/> </xsl:call-template> </xsl:template> - + <!-- Seznam.cz ********* @@ -167,7 +168,7 @@ )"/> </xsl:call-template> </xsl:template> - + <!-- Request for comments ******************** @@ -184,8 +185,34 @@ )"/> </xsl:call-template> </xsl:template> - - + + <!-- + E-mail + ****** + Odkaz na e-mail v „obfuskovaném“ tvaru, + aby spamovací roboti nemohli tak snadno sbírat e-mailové adresy z webů. + Ale zároveň klikatelný, aby ho uživatel nemusel opisovat (vyžaduje JavaScript). + Obsah elementu je nepovinný – pokud chybí, vloží se e-mailová adresa. + * + @href e-mailová adresa (bez „mailto:“) + --> + <xsl:template match="m:a[@typ='email']"> + <xsl:variable name="česky" select="replace(replace(@href, '@', ' zavináč '), '\.', ' tečka ')"/> + <xsl:variable name="klíč" select="concat(tokenize($konfigurace/k:web/k:uuid/text(), '-')[1], '9df1')"/> + <xsl:variable name="pořadí"><xsl:number level="any"/></xsl:variable> + <xsl:variable name="idSpanu" select="concat('c', $klíč, $pořadí)"/> + <span title="{text()}" id="{$idSpanu}"> + <xsl:value-of select="$česky"/> + </span> + <span id="{$idSpanu}b" style="display: none"> + <xsl:apply-templates/> + </span> + <script type="text/javascript"> + xwg.odkazNaElektronickouPoštu("<xsl:value-of select="$idSpanu"/>"); + </script> + </xsl:template> + + <xsl:template name="vložOdkaz"> <xsl:param name="url"/> <a>