source: spip-zone/_plugins_/urls_pages/trunk/formulaires/editer_url_page.html @ 99665

Last change on this file since 99665 was 99665, checked in by tcharlss@…, 3 years ago

v1.0.0 : premier jet d'une nouvelle version complètement refactorisée, et toujours aussi expérimentale.
Désolé pour le gros commit en 1 seule fois.

Les URLs des pages ne sont plus stockées dans le meta du plugin, mais dans le table spip_urls comme les autres URLs, avec type=, id_objet=0.
On ajoute une colonne 'page' utilisée uniquement pour les URLs des pages.
La migration est effectuée automatiquement lors de la mise à jour du plugin. Seules les URLs éventuellement non migrées (doublon dans la BDD) sont conservées dans la meta urls_pages. Réfléchir à leur prise en charge (message sur la page de gestion des URLs ?).

Le gros avantage de cette version, c'est qu'on à plus besoin de modifier le htaccess, ni d'indiquer le rewritebase dans la configuration.
On a juste à saisir une URL, et c'est tout.
De plus, on peut rentrer manuellement les pages, on ne se repose pas sur la détection automatique des squelettes, qui n'est donnée qu'à titre indicatif.

La fonction qui détecte les fonds de page a été refactorisée et migrée pour être utilisée dans une boucle DATA : <BOUCLE_fonds(DATA){source fonds_pages}>.
Par défaut, une boucle <BOUCLE_urls(URLS)> ne retourne pas les URLs des pages, à moins d'utiliser le critère {tout}.

On est obligé de surcharger la fonction urls_propres_dist() pour prendre en compte les pages, faute de pipeline.
Néammoins, la fonction dist est toujours utilisée pour tout autre URL que les pages.

Les URLs des pages sont gérées à partir du menu des URLs : publication -> gestion des URLs. On ajoute un menu sur cette page pour basculer entre la gestion des URLs des objets éditoriaux, et celle des URLs des pages.

Cette version est compatible SPIP >= 3.1

C'est un premier jet donc, il reste quelques pétouilles à finir.
À tester, mais pas en production !

File size: 3.5 KB
RevLine 
[99665]1<div class="formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#ENV{id,nouveau}">
2        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
3        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
4        [(#ENV{editable})
5        <form method='post' action='#ENV{action}'><div>
6                [(#REM) declarer les hidden qui declencheront le service du formulaire
7                parametre : url d'action ]
8                #ACTION_FORMULAIRE{#ENV{action}}
9                <div class="editer-groupe">
10
11                        #SET{name,page}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}#SET{obli,'obligatoire'}
12                        <div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
13                                <label for="champ_#GET{name}"><:urls_pages:champ_page_label:></label>
14                                [(#ENV{page_locked}|non)<span class='explication'><:urls_pages:champ_page_explication:></span>]
15                                [(#ENV{page_locked}|et{#ENV{page_fond}}|oui)<span class='explication'><:urls_pages:champ_page_explication_fond{fond=#ENV{page_fond}}:></span>]
16                                [<span class='erreur_message'>(#GET{erreurs})</span>]
17                                <input type="text" class="text" name="#GET{name}[(#ENV{page_locked}|oui)_off]" id="champ_#GET{name}" size="40" value="#ENV{#GET{name}}"[ (#ENV{page_locked}|oui)disabled="disabled" readonly="readonly"][ (#GET{obli}|oui)required="required"] />
18                                [(#ENV{page_locked}|non)
19                                <a href="[(#URL_ECRIRE{choisir_fond_page}|parametre_url{var_zajax,contenu}|parametre_url{selectfunc,choisir_page})]" id="choisir_page" class="icone-choisir-page" role="button" tabindex="0" title="<:urls_pages:icone_choisir_page|attribut_html:>">[(#CHEMIN_IMAGE{bullet_arrow_down-16}|balise_img{"+"})]</a>
20                                ]
21                        </div>
22                        [(#ENV{page_locked}|oui)
23                        <input type="hidden" name="#GET{name}" value="#ENV{#GET{name}}">
24                        ]
25
26                        #SET{name,url}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}#SET{obli,'obligatoire'}
27                        #SET{url_site_spip,#URL_SITE_SPIP|replace{'/$', ''}|concat{'/'}}
28                        <div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
29                                <label for="champ_#GET{name}"><:urls_pages:champ_url_label:></label>
30                                <span class='explication'><:urls_pages:champ_url_explication{racine=#GET{url_site_spip}}:></span>
31                                [<span class='erreur_message'>(#GET{erreurs})</span>]
32                                <input type="text" class="text" name="#GET{name}" id="champ_#GET{name}" size="40" value="#ENV{#GET{name}}"[ (#GET{obli}|oui)required="required"] />
33                        </div>
34
35                </div>
36                [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
37                <!--extra-->
38                <p class='boutons'><span class='image_loading'></span><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
39        </div></form>]
40</div>
41
42[(#REM) Gestion de la modale ]
43<script>
44$(document).ready( function(){
45
46        // Ouverture au clic + touche espace
47        var ouvrir_modale = function(event){
48                if (event.type == "click" || (event.type == "keypress" && event.which == 32)){
49                        event.preventDefault();
50                        var url = $(this).attr( "href" );
51                        $.modalboxload(url, {autoResize: true});
52                }
53        }
54        $( "#choisir_page" ).on( "click", ouvrir_modale );
55        $( "#choisir_page" ).on( "keypress", ouvrir_modale );
56        // Init choisir page
57        choisir_page();
58        // Relance choisir page si rechargement ajax
59        if (window.jQuery) {
60                jQuery(function(){
61                        onAjaxLoad(choisir_page);
62                });
63        }
64        // Fonction choisir page : remplissage du champ au clic
65        function choisir_page(){
66                $( "#fonds_pages [data-page] ").on( "click", function() {
67                        var page = $(this).data("page");
68                        $( "[name=page]:not(:disabled)" ).val(page);
69                        $.modalboxclose();
70                });
71        }
72});
73</script>
Note: See TracBrowser for help on using the repository browser.