Changeset 91789 in spip-zone


Ignore:
Timestamp:
Sep 11, 2015, 3:57:55 PM (4 years ago)
Author:
marcimat@…
Message:

Contourner les problèmes avec querypath / libxml 2.9.2, comme signalé par r91788 .
On utilise pour ça du coup une regexp afin d'ajouter le html au bon endroit (et le retirer).
C'est plus sensible, mais au moins ça contourne le bug.

Je garde l'ancien code tout de même sous le coude. On pourrait mettre un try/catch pour basculer de l'ancien au nouveau d'ailleurs uniquement si le bug se présente.
À voir.

Location:
_plugins_/groupes_mots_arborescents
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/groupes_mots_arborescents/gma_pipelines.php

    r91788 r91789  
    9393 *
    9494 * @param array $flux
    95  *              Données du pipeline
    96  * @return array
    97  *              Données du pipeline complétées
     95 *     Données du pipeline
     96 * @return array
     97 *     Données du pipeline complétées
    9898**/
    9999function gma_formulaire_fond($flux) {
    100100        // sur le formulaire d'édition de groupe de mot
    101101        if ($flux['args']['form'] == 'editer_groupe_mot') {
    102 
     102                $env = $flux['args']['contexte'];
     103
     104                // la parenté sur tous : on récupère le sélecteur et on l'ajoute après le titre...
     105                $selecteur_parent = recuperer_fond('formulaires/selecteur_groupe_parent', $env);
     106
     107                $cherche = "/(<(li|div)[^>]*class=(?:'|\")editer editer_titre.*?<\/\\2>)\s*(<(li|div)[^>]*class=(?:'|\")editer)/is";
     108                if (preg_match($cherche, $flux['data'], $m)) {
     109                        $flux['data'] = preg_replace($cherche, '$1'.$selecteur_parent.'$3', $flux['data'], 1);
     110                }
     111
     112                // les paramètres techniques sont uniquement sur les groupes racines (on enlève le fieldset)
     113                if ($env['id_parent']) {
     114                        $cherche = "/<(li|div)[^>]*class=(?:'|\")fieldset fieldset_config.*?<\/fieldset>\s*<\/\\1>/is";
     115                        if (preg_match($cherche, $flux['data'], $m)) {
     116                                $flux['data'] = preg_replace($cherche, '', $flux['data'], 1);
     117                        }
     118                }
     119        }
     120        return $flux;
     121}
     122
     123
     124/**
     125 * Modifie les champs du formulaire de groupe de mot
     126 * pour :
     127 * - ajouter le sélecteur de parenté
     128 * - n'afficher les options techniques que sur la racine
     129 *
     130 * @note
     131 *     Code utilisant querypath (mais non fonctionnels avec libxml version 2.9.2 :/)
     132 *
     133 * @param array $flux
     134 *     Données du pipeline
     135 * @return array
     136 *     Données du pipeline complétées
     137**/
     138function gma_formulaire_fond_avec_querypath($flux) {
     139        // sur le formulaire d'édition de groupe de mot
     140        if ($flux['args']['form'] == 'editer_groupe_mot') {
    103141                $html = $flux['data'];
    104142                $env = $flux['args']['contexte'];
     143
     144                // la parenté sur tous : on récupère le sélecteur et on l'ajoute après le titre...
     145                $selecteur_parent = recuperer_fond('formulaires/selecteur_groupe_parent', $env);
    105146
    106147                // charger QueryPath
     
    108149                $qp = spip_query_path($html, 'body');
    109150
    110                 // la parenté sur tous
    111                 // on récupère le sélecteur et on l'ajoute après le titre...
    112                 $selecteur_parent = recuperer_fond('formulaires/selecteur_groupe_parent', $env);
    113151                $qp->top('body')->find('.editer_titre')->after($selecteur_parent);
    114152
    115                 // les paramètres techniques sont uniquement sur les groupes racine
     153                // les paramètres techniques sont uniquement sur les groupes racines
    116154                if ($env['id_parent']) {
    117155                        $qp->top('body')->find('.fieldset_config')->remove();
     
    123161        return $flux;
    124162}
     163
    125164
    126165
  • _plugins_/groupes_mots_arborescents/paquet.xml

    r91788 r91789  
    22        prefix="gma"
    33        categorie="navigation"
    4         version="1.2.2"
     4        version="1.2.3"
    55        etat="test"
    66        compatibilite="[3.0.4;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.