SPIP Bonux

Le plugin qui lave plus SPIP que SPIP, avec des chouettes cadeaux dedans ! Interface douce, boucles POUR et CONDITION, tableaux, compteur, etc.

Parce que nous n’avons pas pu tout mettre dans SPIP 2.0 (la boîte était trop petite), voici un plugin qui intègre des trucs en plus ! C’est cadeau !

Rq : certaines fonctionnalités de SPIP Bonux ne sont pas documentées ici, mais dans la doc sur Bonux pour SPIP 3.

C’est doux, c’est neuf ?

De l’avis des amateurs de SPIP-Bonux, cette distribution améliore le confort d’usage des formulaires de saisie de l’espace privé, dont les couleurs tiennent mieux dans la durée. Il s’agit a priori d’une simple variante de style : celle-ci propose une nouvelle palette de couleurs, plus douces pour les yeux et propices à la concentration sur votre travail éditorial. Mais surtout, — là est le vrai cadeau Bonux —, ces formulaires restent accessibles, même lorsque l’affichage des images est désactivé dans le navigateur ou lorsque le trop faible débit de votre connexion ne permet pas de les afficher, situation bien plus courante qu’on ne croit. SPIP-Bonux vous permet donc d’accueillir des collaborateurs autrement laissés pour compte.

Une boucle (POUR)

Une boucle (POUR) qui permet de boucler sur tous les tableaux PHP, qu’ils soient en #ENV, en #GET, ou autres...

<BOUCLE_test(POUR){tableau #ENV{tableau}}>
#CLE=>#VALEUR<br />
</BOUCLE_test>

cle et valeur peuvent être utilisés dans les critères, ainsi que de nombreux critères des boucles traditionnelles de spip (pagination par exemple)

Ces tableaux peuvent être déjà présent dans #ENV car fournis en argument d’un inclure, ou en contexte d’un formulaire CVT, ou issus de tout filtre retournant un array() PHP : (#ENV{qqc}|mon_filtre), ou toute balise retournant un array() comme #ARRAY ...

De nombreux exemples sont disponibles dans le répertoire demo/ du plugin.

Il est possible dans cette boucle de trier les résultats {par cle} ou {par valeur}, mais aussi, si les résultats sont eux-mêmes des tableaux (ou des objets), de trier sur une de leurs clés. Par exemple si #ARRAY est un tableau d’objets ayant un champ date, le tri {par date} fonctionne «naturellement».

Une boucle (CONDITION)

<BOUCLE_test(CONDITION){si #ENV{test}|>{5}}>
vrai
</BOUCLE_test>
faux
<//B_test>

Des balises pour manipuler les tableaux

SPIP permet deja d’initialiser un tableau avec

  1. #SET{tableau,#ARRAY{1,premier,2,deuxieme,3,troisieme}}

Spip-Bonux ajoute la balise #SET_MERGE qui permet de fusionner et affecter une variable en meme temps :

  1. #SET_MERGE{nom_tableau,#GET{tableau},#ARRAY{cle,valeur}}

et la balise #SET_PUSH, pour y ajouter un element :

  1. #SET_PUSH{tableau,valeur}

Un critère compteur

Inspiré de Classer les articles par nombre de commentaires, le critère compteur permet de compter les elements d’une table associées à ceux d’une autre.

Exemple, pour afficher les auteurs avec leur nombre d’articles :

<BOUCLE1(AUTEURS){compteur articles}{par compteur_articles}>
#ID_AUTEUR : #COMPTEUR{articles}
</BOUCLE1>

La balise #COMPTEUR est associée au critere et permet d’afficher la valeur du compteur pour chaque auteur.

SPIP Bonux (2.3.6)

updated on 17 March 2019

Discussion

110 discussions

  • 2

    Hello. Dans un cas d’utilisation de SPIP avec des tables externes, j’utilise une fonction très pratique de Bonux : “picker_selected”.
    Elle me permet par exemple, pour un objet éditorial donné (ici organisme), de lister les rubriques auxquelles il est reliées :

    <BOUCLE_principale(ORGANISMES) {id_organisme}>
    <BOUCLE_rubriques(RUBRIQUES){id_rubrique IN #THESAURUS_DOSSIERS|picker_selected{rubrique}}>
    <li><a href="#URL_RUBRIQUE">#TITRE</a></li>
    </BOUCLE_rubriques>
    </BOUCLE_principale>

    Ceci dit, je n’arrive pas à faire la réciproque ! A savoir, pour une rubrique donnée, connaître les organismes qui y sont reliés.
    j’ai essayé ceci sans grande conviction :

    <BOUCLE_rubriques(RUBRIQUES){id_rubrique}>
    <B_organismes>
    <BOUCLE_organismes(ORGANISMES){thesaurus_dossiers IN #ID_RUBRIQUE}>
    #TITRE
    </BOUCLE_organismes>
    </B_organismes>
    </BOUCLE_rubriques>

    Mais bien sûr cela ne marche pas... Le champs extra thesaurus dossier de l’objet Organisme se présente ainsi :
    “rubrique|1,rubrique|2”.

    Une idée?

    • Peut être : 
       
      <BOUCLE_organismes(ORGANISMES)
          {thesaurus_dossiers==(^|,)rubrique[|]#ID_RUBRIQUE($|,)}>
      #TITRE
      </BOUCLE_organismes>
       
      Ou 
       
      [(#SET{regex,"(^|,)rubrique[|]#ID_RUBRIQUE($|,)"})]
      <BOUCLE_organismes(ORGANISMES)
          {thesaurus_dossiers==#GET{regex}}>
      #TITRE
      </BOUCLE_organismes>

      Mais bon, il faut bien comprendre que ce sélecteur de champs extras n’est pas fait pour ce genre de requête. Pour faire des liaisons multiples avec quelque chose et permettre des critères, il faut passer par une table de liaison spip_objet_liens dans la mesure du possible (et donc ici spip_organismes_liens).

    • Merci Matthieu. Effectivement une table de liaison aurait été très pratique ! Malheureusement j’ai dû composer avec des tables externes et une autre logique de structuration.

    Reply to this message

  • Bonjour, je n’arrive pas à trouver comment accéder à la gestion du plugin Bonux avec SPIP 3. Avec les précédentes versions de SPIP, je savais faire mais là, je ne dois pas être bien réveillé ou j’ai loupé quelque chose ?

    Reply to this message

  • Bonjour,
    dans le cadre d’un formulaire “formidable”, l’export csv ne fonctionne pas, impossible de télécharger le fichier.
    La discussion suivante fournit une solution :
    http://contrib.spip.net/Formidable-le-generateur-de-formulaires#forum456385
    En commentant la ligne 90 du fichier plugins/spip-bonux/inc/exporter_csv.php , cela fonctionne.
    Cette ligne est-elle nécessaire ? Et sinon, est-il possible de modifier le plugin ?
    Merci,
    Sylvain

    Reply to this message

  • 2

    Bonjour,

    Je tente de rendre conditionnelle une récursion (menu arborescent de rubriques).

    Quand la condition est vraie, j’ai une page blanche.

    <BOUCLE_DeepMenu(CONDITION){si 1}><BOUCLE_SsSousMenuhaut(BOUCLE_SousMenuHaut)></BOUCLE_SsSousMenuhaut></BOUCLE_DeepMenu>

    Si la condition est fausse : la page s’affiche normalement :

    Je suis tombé sur un bug ou une impossibilité ?

    Reply to this message

  • Laurent BARITAUD

    Question d’un non spécialiste : lorsque j’active SPIP Bonux sous spip 2.0.10, nécessaire pour le fonctionnement d’autres plugins, mon site affiche une belle page toute blanche. Plusieurs essais d’activation/désactivation me le confirment. Pourtant, il ne semble pas indispensable d’installer d’autres plugins en amont de Bonux.
    Merci de votre aide, je reprécise, à un non spécialiste.
    Laurent.

    Reply to this message

  • bonjour,

    j’utilise spip 2.1.12 et bonux 2.3.0.

    J’ai une boucle condition dans laquelle je met une balise #TEXTE, et aucune image du #TEXTE n’apparait sur le site dans la partie publique.

    elles apparaissent bien dans la partie privée, et si je met la balise #TEXTE juste avant la boucle CONDITION, les images apparaissent également.

    Dans le code source, rien n’est interprété (pas de balise img).

    Une idée d’où ça pourrait venir ?

    un exemple : http://pass-pro.org/EIFFAGE-L-HARMONIE-DES-TALENTS

    une image est insérée au début du texte. Je la vois dans la partie privée, mais elle n’est pas sur la partie publique.

    Reply to this message

  • 1

    Bonjour,

    SPIP 2.1.10, j’ai beaucoup de plugins d’installer.
    Dans plusieurs pages de l’espace privé je reçois le message suivant:

    Aucun squelette Array.html n’est disponible... ../plugins/auto/spip-bonux/style_prive_plugins.htm

    Des idées d’où peut provenir l’erreur?

    Merci

    Zaa

    • Aucun squelette Array.html n’est disponible... ../plugins/spip-bonux/style_prive_plugins.html

      J’ai aussi le même problème ??

    Reply to this message

  • 4
    ChateauDav

    A quand la compatibilité avec SPIP 3 ?? =)

    Reply to this message

  • Pour documentation : SPIP Bonux intègre une version améliorée de #PAGINATION qui affiche un lien « Tout afficher », permettant à l’utilisateur d’afficher tous les éléments de la liste sur une seule page. Pour utiliser ce modèle (situé dans /modeles/pagination_prive.html) : #PAGINATION{prive}

    Reply to this message

  • SPIP-Bonux est-il compatible SPIP 3.0 ?

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom