feat: Add protect link against spam
This commit is contained in:
parent
542c1adaa5
commit
b3981e36b7
|
@ -0,0 +1,19 @@
|
|||
const obfuscates = document.getElementsByClassName("obfuscate");
|
||||
for (const element of obfuscates) {
|
||||
const link = document.createElement("a");
|
||||
const separators = element.dataset.separators;
|
||||
const protocol = element.dataset.param1.split("").reverse().join("");
|
||||
let url = protocol;
|
||||
for (let i = 0; i < separators.length; i++) {
|
||||
url += separators[i] + element.dataset["param" + (i+2)].split("").reverse().join("");
|
||||
}
|
||||
let text = element.dataset.param2.split("").reverse().join("");
|
||||
for (let i = 1; i < separators.length; i++) {
|
||||
text += separators[i] + element.dataset["param" + (i+2)].split("").reverse().join("");
|
||||
}
|
||||
link.innerText = url.replace(new RegExp(element.dataset.regex, 'i'), element.dataset.replace);
|
||||
link.href = url;
|
||||
link.rel = "nofollow";
|
||||
element.parentElement.insertBefore(link, element);
|
||||
}
|
||||
while (obfuscates.length > 0) obfuscates[0].remove();
|
|
@ -0,0 +1,7 @@
|
|||
.obfuscate:before
|
||||
content: attr(data-param2)
|
||||
unicode-bidi: bidi-override
|
||||
direction: rtl
|
||||
|
||||
&.at
|
||||
content: attr(data-param4) "\002E" attr(data-param3) "\0040" attr(data-param2)
|
|
@ -1,2 +1,3 @@
|
|||
@import "./variables"
|
||||
@import "./grid"
|
||||
@import "./link"
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
{{/*
|
||||
S'il n'y a pas de / dans l'url d'un lien alors on ajoute le path du répertoire
|
||||
*/}}
|
||||
{{ $isExternalLink := strings.HasPrefix .Destination "http" }}
|
||||
{{ $isWebLink := or $isExternalLink (eq 0 (.Destination | strings.Count ":")) }}
|
||||
{{ $isTelLink := strings.HasPrefix .Destination "tel:" }}
|
||||
{{ $isMailtoLink := strings.HasPrefix .Destination "mailto:" }}
|
||||
{{ $hasSlash := in .Destination "/" }}
|
||||
{{- if $isWebLink -}}
|
||||
{{ $link := cond (and $isWebLink (and (not $hasSlash) (not $isExternalLink))) (path.Join "/" .Page.Dir .Destination) .Destination }}
|
||||
<a href="{{ $link | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}{{ if $isExternalLink }} target="_blank" rel="noopener"{{ end }}>{{ .Text | safeHTML }}</a>
|
||||
{{- else -}}
|
||||
{{- $separators := cond $isMailtoLink ":@." ":" -}}
|
||||
{{- $regex := cond $isMailtoLink "[a-z]*:(.*)" "[a-z]*:([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})"}}
|
||||
{{- $replace := cond $isMailtoLink "$1" "$1 $2 $3 $4 $5" -}}
|
||||
{{- $string := .Destination -}}
|
||||
{{- $params := slice -}}
|
||||
|
||||
{{- range split $separators "" }}
|
||||
{{ $parts := split $string . }}
|
||||
{{ $params = $params | append (index $parts 0) }}
|
||||
{{ $string = index $parts 1 }}
|
||||
{{ end }}
|
||||
{{- $params = $params | append (string $string) -}}
|
||||
<span
|
||||
class="obfuscate{{ if $isMailtoLink }} at{{ end }}"
|
||||
data-separators="{{ $separators }}"
|
||||
{{ range $param_index, $param_value := $params }}
|
||||
data-param{{add $param_index 1}}="{{ range $index := seq (sub (len $param_value) 1) 0}}{{ substr $param_value $index 1}}{{ end }}"
|
||||
{{ end }}
|
||||
data-regex="{{ $regex }}"
|
||||
data-replace="{{ $replace }}"
|
||||
>
|
||||
</span>
|
||||
{{- end -}}
|
||||
|
Loading…
Reference in New Issue