Plugin Exclure-secteur

L’idée du plugin « exclure-secteur » est née lors d’un apéro-spip au cours d’une discussion avec tetue et gaspard.

La question était de savoir que faire des articles « inclassables » (par exemple « crédits », « informations légales », etc.). Tetue et moi-même sommes partisans de les mettre en vrac dans un secteur, même s’il est désormais possible de créer des pages liées à aucune rubrique.

Cependant, Gaspard a fait remarquer que cela le « fatiguait » de mettre à chaque fois un critère {id_secteur!=xxx} dans ses boucles.

Ce plugin se propose de résoudre ce problème.

Configuration requise et installation

Il a été testé et développé sur un SPIP 2.0 mais devrait fonctionner sur les versions 1.9.

Il s’installe comme n’importe quel plugin SPIP (mais il nécessite le plugin CFG sous SPIP < 3).

Par ailleurs, sous les versions 1.9.x, le plugin surcharge les boucles ARTICLES / RUBRIQUES / BREVES / SITES, et du coup, ne peut être compatible avec d’autres plugins les surchargeant. En revanche, ce n’est plus le cas pour les versions 2.x.

Utilisation

Une fois installé :
-  sous SPIP < 3 rendez-vous sur /ecrire/?exec=cfg&cfg=secteur.
-  sous SPIP ≥ 3 rendez-vous dans le menu « Squelettes » > « Exclure Secteur ».

Vous obtenez un formulaire listant les secteurs de votre site. Cochez ceux dont vous souhaitez qu’ils soient exclus des boucles :
-   RUBRIQUES
-   ARTICLES
-   SITES
-   BREVES

Dès lors, toutes ces boucles se comporteront comme si elles avaient un critère {id_secteur NOT IN les_secteurs_choisis}.

Faire des exceptions

C’est bien gentil tout cela, mais à un moment, on aimerait bien afficher quand même un article, une rubrique …d’un des secteurs sélectionnés.

Comment faire ?

Solution 1. Il est possible de le faire en ajoutant un critère {id_secteur=x} ou {id_secteur==xx} ou {id_secteur IN X,Y}.

Solution 2. Il est possible de le faire en ajoutant un critère {tout_voir} sur un boucle, qui force alors l’affichage quel que soit le secteur.

Solution 3. On peut activer une option dans la page de configuration du logiciel pour que {tout} soit équivalent, en ce qui concerne l’exclusion des secteurs, à {tout_voir}.

Solution 4
Depuis la version 1.2, une option est activable dans l’espace privé. Elle permet que l’utilisation du critère {id_xxx} ou {id_xxx=y} ou {id_xxx==y} ou {id_xxx IN y} fasse « sauter » l’exclusion selon un secteur.

Exemple : En activant cette option, sur une boucle articles le critère {id_article} ou {id_article=x} ou {id_article==X} ou {id_article IN xx} prend l’article correspondant, même s’il se trouve dans un secteur exclus.

Limites du plugin

Pour le moment, le plugin n’exclut pas les documents associés à des articles / rubriques / breves / sites des secteurs sélectionnés.

La raison est assez simple : il faudrait que je fasse des jointures sur la table ad hoc, ce que je n’ai pas eu encore le temps de coder. De plus, l’organisation des tables a changé entre la version 1.9 et la 2.0 ; du coup, il faudrait faire des tests. [1]

Notes complémentaires

Limiter l’accés de la page de configuration

Il est possible de limiter l’accès à la page de configuration avec le plugin autorité.

Les squelettes de l’espace privé

Depuis SPIP 2.0, de nombreuses pages de l’espace privé sont sous formes de squelettes, et tout porte à croire que le nombre de pages ainsi construites devrait augmenter. Le plugin teste donc, sur SPIP 2.0, si nous sommes ou non dans l’espace privé, et n’applique ses réglages qu’à l’espace public.

Les crayons

Si comme moi vous adorez les crayons, n’oubliez pas d’activer la possibilité qu’un id objet défini explicitement fasse sauter l’exclusion par secteur (voir plus haut « solution 4 »), dans le cas contraire, vous devrez recharger la page à chaque modif d’un objet dans un secteur exclus, ce qui limiterait l’interêt du plugin crayon.

Licence et remerciement

Le plugin, disponible sur la zone, est distribué en Licence GPL.

Je remercie vivement Denisb qui m’a aidé à coder ce plugin entre 23h30 et 2 heures du matin dans la nuit du 3 au 4 avril 2009.

Je remercie aussi le codeur des squelettes de Contrib, qui m’a donné la base nécessaire au codage du plugin, ainsi que Cerdic qui m’a signalé la présence de la pipeline pre_boucle.

Notes

[1Note : remarquons que, de toute manière, il n’est pas possible pour l’instant avec SPIP de faire un boucle <BOUCLE_x(DOCUMENTS){id_secteur!=xxx}>....

Discussion

24 discussions

  • 4
    management-projet.org

    Avec SpipSPIP 2.0.5 [13790] et cfg Version : 1.10.5 [25764] — stable

    Interface privé :

    Plus de possibilité d’accès au contenu de l’onglet Gestion des plugins dans interface privé.

    Warning : in_array() [function.in-array] : Wrong datatype for second argument in /home/manageme/public_html/formation/ecrire/public/composer.php(51) : eval()’d code on line 53

    Fatal error : Call to undefined function accesrestreint_liste_rubriques_exclues() in /home/manageme/public_html/formation/ecrire/public/composer.php(51) : eval()’d code on line 27

    Interface publique :

    Warning : array_map() [function.array-map] : Argument #2 should be an array in /home/manageme/public_html/formation/plugins/auto/exclure_secteur/inc/exclure_utils.php on line 28

    partout sur la page.

    • merci pour ce signalement ....

      je corrige ce soir

    • bizarre,

      seul le bug sur l’interface public me semble lié au plugin.

      J’ai fait un commit qui devrait résoudre ce problème (attendre que le paquet soit regenerer)

      utilise tu accés restreints ?

      ps : je pars en vacance demain, donc les réglages se feront plus tard...

    • bon, je sais d’om vient le pb ... mais je ne sais poas comment le résoudre ...

      je pars en vacance, mais à la rentré je m’attelle à cela en demandant de l’aide ...

    • je viens de commiter une correction (merci denisb)

      elle sera disponible en téléchargement après le prochain repaquetage de la zone (donc demain au pire)

    Répondre à ce message

  • Bonjour :)

    Idée très sympathique tout ça mais je n’ai aucun accès à la conf du plugin depuis CFG. L’interfaceur aurait-il oublié le « bouton magique » ? :-P

    En tout cas merci beaucoup :-)

    EDIT / Autant pour moi, ma demande d’activation n’était pas passée. Soit SPIP a merdouillé soit j’ai oublié de cliquer sur « valider » c’est selon. EN revanche la suite n’est pas beaucoup plus glorieuse.

    Sous SPIP 2.0.6, obtenu en 6 exemplaires sur /ecrire/ ?exec=admin_plugin à l’activation :

    Warning: in_array() [function.in-array]: Wrong datatype for second argument in /***/***/***/ecrire/public/composer.php(73) : eval()'d code on line 53

    A première vue la même chose que management-projet.org sauf que c’est apparament pas la même ligne.

    La page /ecrire/ ?exec=cfg&cfg=secteur en est également pleine (25 ou 30 exemplaires).

    Un premier test de choix de rubrique semble passer, je reçois bien la confirmation d’exclusion du secteur choisis MAIS, dans l’espace public, même après recalcul de la page il n’en est rien, le secteur trubliopn est toujours là.

    J’attend donc la prochaine upgrade en espérant que ce rapport t’aide au max. :-)

    Répondre à ce message

  • je n’ai pas testé ...
    mais à priori, si on est sur une 3.0, les deux passants par une pipeline, il ne devrait pas y avoir de pb.

    Répondre à ce message

  • Que se passe-t-il si ce plugin et accès restreint sont activés sur un même site ?
    Y a t il incompatibilité ?

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom