diff --git a/themes/42/assets/css/a.css b/themes/42/assets/css/a.css index 54ee3565..eaa2fe6e 100644 --- a/themes/42/assets/css/a.css +++ b/themes/42/assets/css/a.css @@ -20,4 +20,12 @@ &:hover { color: var(--color-link-dead-hover); } +} + +.problematic { + color: var(--color-link-problematic); + + &:hover { + color: var(--color-link-dead-problematic); + } } \ No newline at end of file diff --git a/themes/42/layouts/_markup/render-link.html b/themes/42/layouts/_markup/render-link.html index e3255dff..2d82e86e 100644 --- a/themes/42/layouts/_markup/render-link.html +++ b/themes/42/layouts/_markup/render-link.html @@ -1,70 +1 @@ -{{- $isExternal := strings.HasPrefix .Destination "http" -}} -{{- $parsed := urls.Parse .Destination -}} -{{- $host := $parsed.Host -}} -{{- $path := $parsed.Path -}} -{{- $query := $parsed.RawQuery -}} -{{- $page := .Page -}} -{{- $site := $page.Site -}} -{{- $aff := index $site.Data.affiliates.sites $host -}} -{{- $isAffiliated := false -}} -{{- $report := default (dict) (transform.Unmarshal (readFile "tools/cache/external_links.yaml")) -}} -{{- $deadList := default (slice) (index $report "links") -}} -{{- $entriesMap := default (dict) (index $report "entries") -}} -{{- $cacheEntry := index $entriesMap .Destination -}} -{{- $deadInfo := dict -}} -{{- $isDeadLink := false -}} -{{- with (first 1 (where $deadList "url" .Destination)) -}} - {{- $deadInfo = index . 0 -}} - {{- $isDeadLink = true -}} -{{- end -}} -{{- $newURL := .Destination -}} -{{- if and $isExternal $aff -}} -{{- $param := $aff.param -}} -{{- $value := $aff.value -}} -{{- $isAffiliated = true -}} -{{- if $query -}} -{{- $newURL = printf "%s://%s%s?%s&%s=%s" $parsed.Scheme $host $path $query $param $value -}} -{{- else -}} -{{- $newURL = printf "%s://%s%s?%s=%s" $parsed.Scheme $host $path $param $value -}} -{{- end -}} -{{- end -}} -{{- $titlePrefix := cond $isAffiliated "Lien affiliƩ" (cond $isExternal "Lien externe" "") -}} -{{- $classes := slice -}} -{{- if $isExternal -}} - {{- $classes = $classes | append "external" -}} - {{- if $isAffiliated -}} - {{- $classes = $classes | append "affiliated" -}} - {{- end -}} -{{- end -}} -{{- if $isDeadLink -}} - {{- $classes = $classes | append "dead" -}} -{{- end -}} -{{- $titleParts := slice -}} -{{- with $titlePrefix -}} - {{- $titleParts = $titleParts | append . -}} -{{- end -}} -{{- with .Title -}} - {{- $titleParts = $titleParts | append . -}} -{{- end -}} -{{- if $isDeadLink -}} - {{- $deadDetails := slice -}} - {{- with (index $cacheEntry "checkedAt") -}} - {{- $deadDetails = $deadDetails | append (printf "inaccessible depuis le %s" (time.Format "02/01/2006" (time .))) -}} - {{- end -}} - {{- with (index $cacheEntry "errorType") -}} - {{- $deadDetails = $deadDetails | append (printf "raison %s" .) -}} - {{- end -}} - {{- with (index $deadInfo "status") -}} - {{- $deadDetails = $deadDetails | append (printf "statut %v" .) -}} - {{- end -}} - {{- with $deadDetails -}} - {{- $titleParts = $titleParts | append (printf "(%s)" (delimit . " ; ")) -}} - {{- end -}} -{{- end -}} -{{- $titleValue := delimit $titleParts " - " -}} - - {{- .Text | safeHTML -}} - -{{- /* */ -}} +{{- partial "render/link.html" . -}} diff --git a/themes/42/layouts/_partials/page-links.html b/themes/42/layouts/_partials/page-links.html index b3439a76..fbe4cdba 100644 --- a/themes/42/layouts/_partials/page-links.html +++ b/themes/42/layouts/_partials/page-links.html @@ -1,7 +1,15 @@ -{{ if .Params.links }} +{{- $page := . -}} +{{- with .Params.links }} -{{ end }} \ No newline at end of file +{{- end }} diff --git a/themes/42/layouts/_partials/render/link.html b/themes/42/layouts/_partials/render/link.html new file mode 100644 index 00000000..75a47af8 --- /dev/null +++ b/themes/42/layouts/_partials/render/link.html @@ -0,0 +1,85 @@ +{{- $isExternal := strings.HasPrefix .Destination "http" -}} +{{- $parsed := urls.Parse .Destination -}} +{{- $host := $parsed.Host -}} +{{- $path := $parsed.Path -}} +{{- $query := $parsed.RawQuery -}} +{{- $page := .Page -}} +{{- $site := $page.Site -}} +{{- $aff := index $site.Data.affiliates.sites $host -}} +{{- $isAffiliated := false -}} +{{- $report := default (dict) (transform.Unmarshal (readFile "tools/cache/external_links.yaml")) -}} +{{- $deadList := default (slice) (index $report "links") -}} +{{- $entriesMap := default (dict) (index $report "entries") -}} +{{- $cacheEntry := index $entriesMap .Destination -}} +{{- $deadInfo := dict -}} +{{- $isDeadLink := false -}} +{{- with (first 1 (where $deadList "url" .Destination)) -}} + {{- $deadInfo = index . 0 -}} + {{- $isDeadLink = true -}} +{{- end -}} +{{- $newURL := .Destination -}} +{{- if and $isExternal $aff -}} + {{- $param := $aff.param -}} + {{- $value := $aff.value -}} + {{- $isAffiliated = true -}} + {{- if $query -}} + {{- $newURL = printf "%s://%s%s?%s&%s=%s" $parsed.Scheme $host $path $query $param $value -}} + {{- else -}} + {{- $newURL = printf "%s://%s%s?%s=%s" $parsed.Scheme $host $path $param $value -}} + {{- end -}} +{{- end -}} +{{- $titlePrefix := cond $isAffiliated "Lien affiliƩ" (cond $isExternal "Lien externe" "") -}} +{{- $classes := slice -}} +{{- if $isExternal -}} + {{- $classes = $classes | append "external" -}} + {{- if $isAffiliated -}} + {{- $classes = $classes | append "affiliated" -}} + {{- end -}} +{{- end -}} +{{- if $isDeadLink -}} + {{- $statusRaw := index $deadInfo "status" -}} + {{- $statusCode := "" -}} + {{- with $statusRaw -}} + {{- $statusCode = printf "%v" . -}} + {{- end -}} + {{- if eq $statusCode "404" -}} + {{- $classes = $classes | append "dead" -}} + {{- else if gt (len $statusCode) 0 -}} + {{- $classes = $classes | append "problematic" -}} + {{- else -}} + {{- $classes = $classes | append "dead" -}} + {{- end -}} +{{- end -}} +{{- $titleParts := slice -}} +{{- with $titlePrefix -}} + {{- $titleParts = $titleParts | append . -}} +{{- end -}} +{{- with .Title -}} + {{- $titleParts = $titleParts | append . -}} +{{- end -}} +{{- if $isDeadLink -}} + {{- $deadDetails := slice -}} + {{- with (index $cacheEntry "checkedAt") -}} + {{- $deadDetails = $deadDetails | append (printf "inaccessible depuis le %s" (time.Format "02/01/2006" (time .))) -}} + {{- end -}} + {{- with (index $cacheEntry "errorType") -}} + {{- $deadDetails = $deadDetails | append (printf "raison %s" .) -}} + {{- end -}} + {{- with (index $deadInfo "status") -}} + {{- $deadDetails = $deadDetails | append (printf "statut %v" .) -}} + {{- end -}} + {{- with $deadDetails -}} + {{- $titleParts = $titleParts | append (printf "(%s)" (delimit . " ; ")) -}} + {{- end -}} +{{- end -}} +{{- $titleValue := delimit $titleParts " - " -}} +{{- $relAttr := "" -}} +{{- if $isExternal -}} + {{- $relAttr = "noreferrer noopener" -}} +{{- end -}} + + {{- .Text | safeHTML -}} + +{{- /* */ -}} diff --git a/themes/default/assets/css/variables/aesthetics.css b/themes/default/assets/css/variables/aesthetics.css index dcf36c2f..5a4d5c30 100644 --- a/themes/default/assets/css/variables/aesthetics.css +++ b/themes/default/assets/css/variables/aesthetics.css @@ -23,6 +23,8 @@ --color-link-affiliated-hover: var(--pink-300); --color-link-dead: var(--red-500); --color-link-dead-hover: var(--red-300); + --color-link-problematic: var(--amber-500); + --color-link-problematic-hover: var(--amber-300); --color-keyword: var(--gray-500); --color-keyword-hover: var(--gray-0); --color-footer-link: var(--gray-500);