#16 „obfuskované“ odkazy na e-maily, které znesnadní sběr spamovacím robotům
odkazy jsou pro uživatele klikatelné (vyžaduje JavaScript).
--- 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);
+ },
+
};
/**
--- 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>
--- 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>