source: spip-zone/_plugins_/groupes_mots_arborescents/gma_autorisations.php @ 91783

Last change on this file since 91783 was 63401, checked in by marcimat@…, 8 years ago

Plugin «Groupes de mots arborescents» de préfixe «gma» qui permet de faire des hiérarchies de groupes de mots.

Il ne fonctionne pour l'instant qu'avec la version trunk du plugin mots.

On peut donc créer une arborescence de groupes de mots, et mettre des mots dans chaque groupe.

  • Les propriétés d'un sous groupe de mots héritent automatiquement du groupe racine (et ne sont pas modifiable hors du groupe racine)
  • Le squelettes de liaison des mots clés sont sur surchargés pour ne lister que les groupes racines, et afficher dans les sélecteurs l'arborescence complète des groupes et mots.
  • On ne peut supprimer un groupe que si le groupe n'a pas de sous groupe

Par ailleurs, on utilise une implémentation de QueryPath? (http://querypath.org/) (non sans mal) pour modifier le code HTML du formulaire de groupes de mots.

Cette librairie quoi que très bien s'appuie sur la classe domDocument elle même s'appuyant sur libxml2 qui a un léger bug lors de l'import d'un texte HTML qui possède des CDATA dans des scripts : la librairie double alors ces échappements par des nouveaux ! Du coup, on les enlève avant d'utiliser la librairie (qui de toutes façons les remets).

Cette librairie pourrait être mise dans un plugin spécifique car très pratique une fois les soucis réglés (CDATA et passer le texte en unicode avant importation).

File size: 1.1 KB
Line 
1<?php
2/**
3 * Plugin Groupes arborescents de mots clés
4 * (c) 2012 Marcillaud Matthieu
5 * Licence GNU/GPL
6 */
7
8if (!defined('_ECRIRE_INC_VERSION')) return;
9
10/** declaration vide pour ce pipeline. **/
11function gma_autoriser(){}
12
13
14/**
15 * Autorisation de supprimer un groupe de mots
16 *
17 * Surcharge l'autorisation du plugin mots
18 * pour tenir compte des sous groupes.
19 *
20 * On ne peut pas supprimer un groupe de mots s'il possède des sous groupes.
21 *
22 * @param  string $faire Action demandée
23 * @param  string $type  Type d'objet sur lequel appliquer l'action
24 * @param  int    $id    Identifiant de l'objet
25 * @param  array  $qui   Description de l'auteur demandant l'autorisation
26 * @param  array  $opt   Options de cette autorisation
27 * @return bool          true s'il a le droit, false sinon
28**/
29function autoriser_groupemots_supprimer($faire, $type, $id, $qui, $opt) {
30        // si l'autorisation normale ne passe déjà pas, partir !
31        if (!autoriser_groupemots_supprimer_dist($faire, $type, $id, $qui, $opt)) {
32                return false;
33        }
34        return sql_countsel('spip_groupes_mots','id_parent='.intval($id))?false:true;
35}
36
37
38?>
Note: See TracBrowser for help on using the repository browser.