PageSourceSearch

https://www.saintgelais.fr/wp-content/themes/noyau/assets/js/Frontend/archive-return.js?ver=1.0

js saintgelais.fr collected 2026-10-02 19:55:18 UTC 3,546 bytes, 100 lines download raw bytes

1/**
2 * Retour à l'annuaire pour les pages "proposer un contact" et "proposer une modification".
3 *
4 * Réutilise le même mécanisme localStorage que le bouton "Retour à l'annuaire" des singles
5 * (clés `back_to_archive` / `back_to_archive_title`) :
6 *
7 *  - Sur l'archive contacts, un clic sur "Proposer un contact" mémorise l'URL de l'archive
8 *    courante (ex : la page restreinte "Hébergements").
9 *  - Sur un single contact, un clic sur "Proposer une modification" mémorise l'annuaire
10 *    parent du single (l'URL déjà résolue par le bouton #backToArchive du single).
11 *  - Sur la page proposition/modification, le bouton [data-archive-return] reprend cette URL
12 *    si elle existe, puis la consomme. Sinon il garde son href serveur (fallback).
13 *
14 * Scopé aux contacts pour ne pas contaminer le flux des autres CPT.
15 */
16(function () {
17    'use strict';
18
19    var STORAGE_KEY = 'back_to_archive';
20    var STORAGE_TITLE_KEY = 'back_to_archive_title';
21
22    function store(url, title) {
23        if (!url) {
24            return;
25        }
26        try {
27            localStorage.setItem(STORAGE_KEY, url);
28            if (title) {
29                localStorage.setItem(STORAGE_TITLE_KEY, title);
30            }
31        } catch (e) {
32            /* localStorage indisponible : on laisse le href serveur faire foi */
33        }
34    }
35
36    // Mémorisation de l'origine au clic sur les CTA contacts.
37    document.addEventListener('click', function (e) {
38        if (!e.target || !e.target.closest) {
39            return;
40        }
41
42        // "Proposer un contact" depuis l'archive contacts.
43        var propositionLink = e.target.closest(
44            'section[data-cpt="contacts"]#archivePage .proposition-wrapper a'
45        );
46        if (propositionLink) {
47            store(window.location.href, document.title);
48            return;
49        }
50
51        // "Proposer une modification" depuis un single contact :
52        // on mémorise l'annuaire déjà résolu par le bouton retour du single.
53        // La classe .contact-badge__link sert aussi aux liens tel:/mailto: de la fiche ;
54        // le lien de modification est le seul à porter ?postID= dans son href.
55        var modificationLink = e.target.closest('.contact-badge__link');
56        if (modificationLink && /[?&]postID=/.test(modificationLink.getAttribute('href') || '')) {
57            var backBtn = document.getElementById('backToArchive');
58            if (backBtn && backBtn.getAttribute('href')) {
59                store(backBtn.href, backBtn.getAttribute('title') || document.title);
60            }
61        }
62    });
63
64    // Application de l'origine mémorisée sur le bouton "Retour à l'annuaire"
65    // des pages proposition / modification.
66    function applyReturn() {
67        var buttons = document.querySelectorAll('[data-archive-return]');
68        if (!buttons.length) {
69            return;
70        }
71
72        var storedUrl = null;
73        try {
74            storedUrl = localStorage.getItem(STORAGE_KEY);
75        } catch (e) {
76            storedUrl = null;
77        }
78
79        if (!storedUrl) {
80            return;
81        }
82
83        buttons.forEach(function (btn) {
84            btn.href = storedUrl;
85        });
86
87        try {
88            localStorage.removeItem(STORAGE_KEY);
89            localStorage.removeItem(STORAGE_TITLE_KEY);
90        } catch (e) {
91            /* rien à nettoyer */
92        }
93    }
94
95    if (document.readyState === 'loading') {
96        document.addEventListener('DOMContentLoaded', applyReturn);
97    } else {
98        applyReturn();
99    }
100})();

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.