Changeset 93:5b55827de220

Show
Ignore:
Timestamp:
02/09/12 14:52:20 (12 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:
3 modified

Legend:

Unmodified
Added
Removed
  • vstup/js/skript.js

    r84 r93  
    2828                var e = document.getElementById(id); 
    2929                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 
    3155}; 
    3256 
  • vstup/odkazy.xml

    r91 r93  
    1212                <ul> 
    1313                        <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> 
    1415                        <li> 
    1516                                <m:a href="nejlepší linuxová distribuce" typ="seznam">Nejlepší distribuce</m:a> – vyhledávání pomocí Seznamu 
     
    3031                <m:pre jazyk="xml"><![CDATA[ 
    3132<m:a href="kontakt">Kontakt</m:a> 
     33<m:a href="anonym@example.com" typ="email">Pan Anonym</m:a> 
    3234<m:a href="nejlepší linuxová distribuce" typ="seznam">Nejlepší distribuce</m:a> 
    3335<m:a href="GNU/Linux a tučňák Tux" typ="google">GNU/Linux a tučňák Tux</m:a> 
  • šablona/makra/odkazy.xsl

    r87 r93  
    2020        xmlns="http://www.w3.org/1999/xhtml" 
    2121        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" 
    2223        xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    2324        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    24         exclude-result-prefixes="m xs"> 
     25        exclude-result-prefixes="m k xs"> 
    2526 
    2627        <!-- 
     
    9798                </xsl:call-template> 
    9899        </xsl:template> 
    99          
     100 
    100101        <!-- 
    101102                Wikipedia 
     
    115116                </xsl:call-template> 
    116117        </xsl:template> 
    117          
     118 
    118119        <!-- 
    119120                Javadoc 
     
    134135                </xsl:call-template> 
    135136        </xsl:template> 
    136          
     137 
    137138        <!--  
    138139                Seznam.cz 
     
    168169                </xsl:call-template>     
    169170        </xsl:template> 
    170          
     171 
    171172        <!--  
    172173                Request for comments 
     
    185186                </xsl:call-template> 
    186187        </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 
    189216        <xsl:template name="vložOdkaz"> 
    190217                <xsl:param name="url"/>