PageSourceSearch

https://api-web.educagri.fr/logo/?imgSelector=ministerefooter&name=agriculture2_medium_couleur

js educagri.fr collected 2026-10-01 10:34:03 UTC 4,054 bytes, 94 lines download raw bytes

1
2/*
3 script de chargement des logos (avec title et lien de redirection) et des labels du ministère
4 @author [email protected] 05-2017
5
6 Dernière màj 05-05-2026
7 ## sont des tags de remplacements
8
9 */
10
11Logo = {};
12
13Logo.execute = (function () {
14    /*
15     ##imgManifests## et ##labelManifests## sont des tags qui seront remplacés par des objets json
16     */
17
18    const othersParamsList = [{"followTarget":true,"addLink":false,"scriptVersion":"1"}];
19    const labelManifests = [];
20    const imgManifests = [{"alt":"Minist\u00e8re de l'agriculture, de l'agro-alimentaire et de la souverainet\u00e9 alimentaire; Libert\u00e9, Egalit\u00e9, Fraternit\u00e9","title":"Minist\u00e8re de l'agriculture, de l'agro-alimentaire et de la souverainet\u00e9 alimentaire; Libert\u00e9, Egalit\u00e9, Fraternit\u00e9","description":"Logo couleur medium, sans marge, Minist\u00e8re charg\u00e9 de l'Agriculture ; en transparence","target":"https:\/\/agriculture.gouv.fr","extension":"png","src":"\/\/api-web.educagri.fr\/apis\/logo\/images\/agriculture2_medium_couleur.png","selector":"ministerefooter"}];
21    const availableVersionsList = {"VERSION_1":"1","VERSION_2":"2"}
22    const parser = new DOMParser();
23
24    imgManifests.forEach((imgManifest, i) => {
25        const params = othersParamsList[i];
26        const isSvg = String(imgManifest.isSvg) === "true";
27        const version = params.scriptVersion;
28        let el = version !== availableVersionsList["VERSION_1"]
29            ? document.querySelector(imgManifest.selector)
30            : document.getElementById(imgManifest.selector);
31        if (!el) return;
32
33        if (version !== availableVersionsList["VERSION_1"] && isSvg) {
34            const doc = parser.parseFromString(imgManifest.svgRaw, 'image/svg+xml');
35            const newSvg = doc.querySelector('svg');
36            const labelledbyId = "svg-title-" + Date.now().toString(36) + Math.random().toString(36).substring(2);
37
38            if (newSvg) {
39                Array.from(el.attributes).forEach(attr => {
40                    const name = attr.name.toLowerCase();
41                    if (name !== 'src' && name !== 'viewbox') {
42                        newSvg.setAttribute(attr.name, attr.value);
43                    }
44                });
45
46                newSvg.setAttribute("role", "img");
47                newSvg.setAttribute("aria-labelledby", labelledbyId);
48                newSvg.setAttribute("focusable", "false");
49                newSvg.removeAttribute('width');
50                newSvg.removeAttribute('height');
51                newSvg.classList.add("preserve-aspect-ratio");
52
53                const newTitle = document.createElementNS("http://www.w3.org/2000/svg", "title");
54                newTitle.textContent = imgManifest.title;
55                newTitle.setAttribute("id", labelledbyId);
56                newSvg.prepend(newTitle);
57
58                el.replaceWith(newSvg);
59                el = newSvg;
60            }
61        } else {
62            el.title = imgManifest.title;
63            el.alt = imgManifest.alt;
64            el.src = imgManifest.src;
65        }
66
67        const target = imgManifest.target;
68        if (params.followTarget) {
69            el.classList.add('clickable-logo');
70            el.addEventListener("click", () => window.open(target, '_blank'), false);
71        }
72
73        if (params.addLink) {
74            const a = document.createElement("a");
75            a.href = target;
76            a.target = '_blank';
77            if (!isSvg) {
78                a[version !== availableVersionsList["VERSION_1"] ? "ariaLabel" : "title"] = imgManifest.title || el.title || "";
79            }
80            if (version !== availableVersionsList["VERSION_1"]) {
81                a.setAttribute("rel", "noopener noreferrer");
82            }
83            el.replaceWith(a);
84            a.appendChild(el);
85        }
86    });
87
88    labelManifests.forEach(label => {
89        const targetLabel = document.getElementById(label.textSelector);
90        if (targetLabel) targetLabel.textContent = label.text;
91    });
92
93    return true;
94})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.