Changeset 93:5b55827de220
- Timestamp:
- 02/09/12 14:52:20 (13 years ago)
- Author:
- František Kučera <franta-hg@…>
- Branch:
- default
- Message:
-
#16 „obfuskované“ odkazy na e-maily, které znesnadní sběr spamovacím robotům
odkazy jsou pro uživatele klikatelné (vyžaduje JavaScript).
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
r84
|
r93
|
|
28 | 28 | var e = document.getElementById(id); |
29 | 29 | e.textContent = e.textContent.rot13(); |
30 | | } |
| 30 | }, |
| 31 | |
| 32 | /** |
| 33 | * Vloží klikatelný odkaz. |
| 34 | * @param id ID span elementu obsahujícího data |
| 35 | */ |
| 36 | odkazNaElektronickouPoštu: function(id) { |
| 37 | var spanČesky = document.getElementById(id); |
| 38 | var spanObsah = document.getElementById(id + "b"); |
| 39 | var česky = spanČesky.innerHTML; |
| 40 | var adresa = česky.replace(" zavináč ", "@").replace(" tečka ","."); |
| 41 | |
| 42 | var odkaz = document.createElement("a"); |
| 43 | odkaz.href = "mailto:" + adresa; |
| 44 | if (spanObsah.innerHTML.length > 0) { |
| 45 | odkaz.innerHTML = spanObsah.innerHTML; |
| 46 | } else { |
| 47 | odkaz.innerHTML = adresa; |
| 48 | } |
| 49 | |
| 50 | spanČesky.parentNode.insertBefore(odkaz, spanČesky); |
| 51 | spanČesky.parentNode.removeChild(spanČesky); |
| 52 | spanObsah.parentNode.removeChild(spanObsah); |
| 53 | }, |
| 54 | |
31 | 55 | }; |
32 | 56 | |
-
r91
|
r93
|
|
12 | 12 | <ul> |
13 | 13 | <li><m:a href="kontakt">Kontakt</m:a> – interní odkaz</li> |
| 14 | <li><m:a href="anonym@example.com" typ="email">Pan <em>Anonym</em></m:a> – obfuskovaný e-mail</li> |
14 | 15 | <li> |
15 | 16 | <m:a href="nejlepší linuxová distribuce" typ="seznam">Nejlepší distribuce</m:a> – vyhledávání pomocí Seznamu |
… |
… |
|
30 | 31 | <m:pre jazyk="xml"><![CDATA[ |
31 | 32 | <m:a href="kontakt">Kontakt</m:a> |
| 33 | <m:a href="anonym@example.com" typ="email">Pan Anonym</m:a> |
32 | 34 | <m:a href="nejlepší linuxová distribuce" typ="seznam">Nejlepší distribuce</m:a> |
33 | 35 | <m:a href="GNU/Linux a tučňák Tux" typ="google">GNU/Linux a tučňák Tux</m:a> |
-
r87
|
r93
|
|
20 | 20 | xmlns="http://www.w3.org/1999/xhtml" |
21 | 21 | xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro" |
| 22 | xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace" |
22 | 23 | xmlns:xs="http://www.w3.org/2001/XMLSchema" |
23 | 24 | xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
24 | | exclude-result-prefixes="m xs"> |
| 25 | exclude-result-prefixes="m k xs"> |
25 | 26 | |
26 | 27 | <!-- |
… |
… |
|
97 | 98 | </xsl:call-template> |
98 | 99 | </xsl:template> |
99 | | |
| 100 | |
100 | 101 | <!-- |
101 | 102 | Wikipedia |
… |
… |
|
115 | 116 | </xsl:call-template> |
116 | 117 | </xsl:template> |
117 | | |
| 118 | |
118 | 119 | <!-- |
119 | 120 | Javadoc |
… |
… |
|
134 | 135 | </xsl:call-template> |
135 | 136 | </xsl:template> |
136 | | |
| 137 | |
137 | 138 | <!-- |
138 | 139 | Seznam.cz |
… |
… |
|
168 | 169 | </xsl:call-template> |
169 | 170 | </xsl:template> |
170 | | |
| 171 | |
171 | 172 | <!-- |
172 | 173 | Request for comments |
… |
… |
|
185 | 186 | </xsl:call-template> |
186 | 187 | </xsl:template> |
187 | | |
188 | | |
| 188 | |
| 189 | <!-- |
| 190 | E-mail |
| 191 | ****** |
| 192 | Odkaz na e-mail v „obfuskovaném“ tvaru, |
| 193 | aby spamovací roboti nemohli tak snadno sbírat e-mailové adresy z webů. |
| 194 | Ale zároveň klikatelný, aby ho uživatel nemusel opisovat (vyžaduje JavaScript). |
| 195 | Obsah elementu je nepovinný – pokud chybí, vloží se e-mailová adresa. |
| 196 | * |
| 197 | @href e-mailová adresa (bez „mailto:“) |
| 198 | --> |
| 199 | <xsl:template match="m:a[@typ='email']"> |
| 200 | <xsl:variable name="česky" select="replace(replace(@href, '@', ' zavináč '), '\.', ' tečka ')"/> |
| 201 | <xsl:variable name="klíč" select="concat(tokenize($konfigurace/k:web/k:uuid/text(), '-')[1], '9df1')"/> |
| 202 | <xsl:variable name="pořadí"><xsl:number level="any"/></xsl:variable> |
| 203 | <xsl:variable name="idSpanu" select="concat('c', $klíč, $pořadí)"/> |
| 204 | <span title="{text()}" id="{$idSpanu}"> |
| 205 | <xsl:value-of select="$česky"/> |
| 206 | </span> |
| 207 | <span id="{$idSpanu}b" style="display: none"> |
| 208 | <xsl:apply-templates/> |
| 209 | </span> |
| 210 | <script type="text/javascript"> |
| 211 | xwg.odkazNaElektronickouPoštu("<xsl:value-of select="$idSpanu"/>"); |
| 212 | </script> |
| 213 | </xsl:template> |
| 214 | |
| 215 | |
189 | 216 | <xsl:template name="vložOdkaz"> |
190 | 217 | <xsl:param name="url"/> |