Ordoc : ordonner les documents attachés

Ordoc est un plugin pour SPIP 3.1 qui ajoute aux listes de documents attachés à des objets éditoriaux (tel que les articles), la possibilité d’ordonner les documents par glisser / déposer.

Ordoc ajoute dans listes de documents attachés à des objets éditoriaux une icone de déplacement (une croix) sur chaque vue d’un document. Cette icône peut être cliquée pour déplacer un document plus haut ou plus bas dans la liste. De fait, cliquer / déplacer n’importe où sur la vue du document fonctionne aussi (la croix permettant de montrer visuellement que c’est faisable).

Ordoc : croix de déplacement
Ordoc ajoute une croix à côté du bouton Modifier.

Nouveau champ rang_lien

L’ordre est enregistré dans une nouvelle colonne rang_lien de la table spip_documents_liens.

Il devient par conséquent possible d’écrire des boucles Documents utilisant ce tri, tel que :

<BOUCLE_docs(DOCUMENTS){id_article}{par rang_lien, num titre, titre}>
[(#LOGO_DOCUMENT|image_reduire{200})]
</BOUCLE_docs>

Comportement

Lorsqu’on ajoute plusieurs documents, aucun ordre n’est défini.

L’ordre (et donc le tri {par rang_lien}) devient fonctionnel dès que l’on déplace un élément.
Dès qu’un ordre est défini , on voit apparaitre un bouton « réinitialiser l’ordre » en bas du portfolio.

Si on clique sur ce bouton, on efface l’ordre. Les images peuvent donc être listées selon un autre logique de tri.

Présentation vidéo

Présentation de Minidoc, Ordoc et Centre image.
Cette vidéo peut être vue en meilleure qualité sur medias.spip.net
//medias.spip.net/IMG/mp4/ordoc-minidoc-centre_image-encoded.mp4

Compatibilité

Pour les personnes qui utilisaient auparavant le plugin Mosaïque, un plugin de migration est disponible : Migration de Mosaïque vers Ordoc

Notes

  • le plugin a été intégré dans le plugin Médias de SPIP 3.2

Discussion

11 discussions

  • 1

    Bonjour,
    y aurait-il une ruse pour permettre de mélanger des docs de type différent ?
    Des images et des pdfs, par exemple.
    Merci
    Sylvain

    Répondre à ce message

  • 1

    Bonjour,

    Je viens de passer à SPIP 3.2

    J’ai remplacé

    {id_document IN #MODELE{ordre_mosaique,id_article}|explode{','}}

    Par

    {par rang_lien, num titre, titre}

    Ce qui donne :

    <BOUCLE_portfolio(DOCUMENTS){mode=document}{extension==jpg|png|gif}
    {titre!=banniere}{doublons}{par rang_lien, num titre, titre}>
    <div class="col-md-4">
    <a href="#URL_DOCUMENT" class="thumbnail" rel="prettyPhoto[pic]" [title="(#TITRE|texte_backend)"]>[(#FICHIER|image_passe_partout{230,173}|image_recadre{230,173}
    |inserer_attribut{alt,[(#TITRE|texte_backend)]}
    |inserer_attribut{title,[(#TITRE|texte_backend)]})]</a></div>
    </BOUCLE_portfolio>

    Le backoffice permet bien de glisser/déposer les images du portfolio, c’est super que ça soit maintenant intégré à SPIP
    Mais l’affichage frontoffice ne respecte pas du tout cet ordre !

    Qu’est-ce que j’ai manqué ?
    Merci d’avance !

    PS : j’ai mis des sauts de ligne dans le code sinon ça ne s’affiche pas bien dans ce forum, mais ces sauts de ligne n’existent pas dans le code du squelette

    • À mon avis, c’est pas compliqué.
      Le tri est fait sur la table de liaison. Pas sur la liste des documents simplement.
      Il faut donc, pour trier correctement sur une table de liaison… qu’il y ait une liaison à faire :)
      Dans le cas présent, si c’est sur un article, je dirais :

      <BOUCLE_portfolio(DOCUMENTS){id_article}{...}{par rang_lien, num titre, titre}>

      Sinon ça doit t’afficher tous les documents du site, et pas seulement ceux que tu as triés pour cet article.

      MM.

    Répondre à ce message

  • 1

    Bonjour,
    est-il possible de faire fonctionner ordoc avec le NivoSlider 3.2.8 ?
    je suis en 3.1.7.

    Et si oui, comment faire ??

    Merci !
    Paul

    • Salut,

      c’est plus quelque chose que je poserai sur le forum de nivoslider (car c’est ce plugin qui s’occupe de faire les requetes, et donc qui peut prendre en charge ce plugin).

    Répondre à ce message

  • 1

    Bonjour merci de se pluging,
    Mais chez moi il ne marche pas...

    Je suis sous SPIP 3.1, impossible de passer sous SPIP 3.2 pour cause d’autres plugings incompatibles (Masonry et Supersize sideshow).

    J’ai installé le pluging, il est activé, je voie bien les petite croix dans ma liste de document, mais quand je déplace un document, il reste a se charger, avec le petit minuteur qui tourne, et jamais cela ne s’arrête.

    Et en public, le document ne bouge pas. Bien que j’ai mis le critère dans ma boucle.
    Da quoi cela peut bien vouloir venir ?

    Je viens de passer de PHP 5.2.17 a 7, j’attends de vois si cela vient de ça.

    • Bon, cela vient du PHP, j’ai mis la dernière version et cela marche !

      Super !

    Répondre à ce message

  • 1

    Salut !
    Je suis passé à la version 3.2.0 de SPIP, et ben, croyez-le bien, je n’arrive pas à installer ce superbe plugin. Je n’ai pas écrit qu’il n’est pas installable, mais bien que je n’y arrive pas. C’est indiqué qu’il est incompatible... C’est trop con ! Mais si il y a un truc magique à faire, je suis preneur !
    Reconnaissances Spipiennes.

    Répondre à ce message

  • 12

    Super, ça fait longtemps que cela me tracassait...

    avec une boucle

    <BOUCLE_documents_slide(DOCUMENTS) {id_article?} {id_rubrique?} {tout} {extension IN png,jpg,gif} {par rang_lien, num titre, date} {inverse} {doublons}{vu=non}>
    		#SET{fichiers,#GET{fichiers}|push{#FICHIER}}
    </BOUCLE_documents_slide>

    J’obtiens un

    Column ’rang_lien’ in order clause is ambiguous

    je suis donc obligé à mettre « spip_documents_liens.rang_lien »

    • Oui, il va falloir attendre la 3.2 pour corriger ce problème. Je suppose que tu as l’erreur avec l’environnement id_rubrique=xx.

      Je te conseille d’appliquer le même patch pour ton inclusion qu’indiqué dans le ticket https://core.spip.net/issues/3894 , c’est à dire https://zone.spip.org/trac/spip-zone/changeset/102606,

      C’est à dire changer :

      <BOUCLE_documents_slide(DOCUMENTS) {id_article?} {id_rubrique?}

      par :

      [(#REM) On peut arriver avec id_article ou id_rubrique. On les réaffecte sur objet, id_objet. ] 
      [(#ENV{id_article}|oui)[(#VAL{article}|setenv{objet})][(#ENV{id_article}|setenv{id_objet})]] 
      [(#ENV{id_rubrique}|oui)[(#VAL{rubrique}|setenv{objet})][(#ENV{id_rubrique}|setenv{id_objet})]] 
      ...
      <BOUCLE_documents_slide(DOCUMENTS) {objet?} {id_objet?}

      En fait il y a 2 petits problèmes en 3.1 :

      • le critère {par truc} qui n’ajoute pas toujours le nom de la table de liaison dans la requête sql, ce qui fait qu’il peut dans certains cas y avoir ambiguité (c’est ce que te dis mysql sur rang_lien) (résolu en 3.2)
      • les critères optionnels {id_x?}{id_y?}{id_z?} etc qui ont une jointure possible sur la même table, font que {vu=non} ou {par rang_lien} ici ne s’appliquent pas sur la bonne jointure, dès lors que id_x n’est pas dans l’environnement. (là c’est compliqué).

      MM.

    • Ok parfait, ça marche nickel

    • Moi aussi je l’attendais depuis longtemps, longtemps...
      Marche impeccable sauf pour albums auquel il faut surcharger l’appel des docs.
      Merci encore.

    • Hop, je m’incruste rapidement dans ce fil de dicussion : oui, ce plugin est super chouette, et c’est prévu de le brancher sur les albums dès que possible.

    •  ;-) Ha ben je regardais comment l’utiliser avec Album justement.

      Magnifique en tout cas, merci. La 3.2 promet d’être un grand cru ^^

    • @tcharlss, j’ai une version Album + . ordoc qui semble fonctionner en 3.1.4 là

      Tu veux que je commites ?

    • Hello,

      Je veux bien qu’on en discute avant, parceque pareil de mon côté, j’ai pas encore commité mais c’est prêt aussi.

      Comment tu gères la compat 3.1+ordoc / 3.2 ? Il faut ajouter {par rang_lien} dans les listes de documents des albums, sauf que du coup en 3.1 ça veut dire qu’ordoc doit être une dépendance obligatoire, ce que je voudrais éviter.

      Du coup je pensais mettre la version actuelle dans une branche réservée à SPIP <= 3.1, et basculer le trunk pour SPIP >= 3.2.

      Sinon pour résumer, j’ai complètement revu le markup pour reprendre au maximum celui du porfolio, et avoir le moins de modifications JS à faire. Du coup en 3.2 ça marche pour ordoc + minidoc.

    • Ah ben alors je te laisse faire, c’est certainement plus testé et abouti que moi.

      En 3.1, pour le problème de tri, c’est assez simple.

      Au début de l’inclusion tu faire :

      [(#PLUGIN{ordoc}|oui)#SET{par,rang_lien}]

      Dans la boucle documents tu mets :

      {par #GET{par}}

      Chez moi cela fonctionne à priori nickel.

      Et j’ai mis le code js dans une condition :

      <BOUCLE_si_ordoc(CONDITION){si #PLUGIN{ordoc}|oui}>.... </BOUCLE_si_ordoc>

    • Mettre le critère {par..} avant {!par media,id_document,extension,date}

    • Ah mais c’est bien sûr ! Oui tu as raison, c’était tout simple, merci pour l’astuce.

    • Du coup, tu as l’intention de publier une version 3.1 compatible avec ordoc ?

    • Ça va compliquer un peu les choses parce ça suppose de faire de légères modifs au JS d’ordoc et minidoc (modifs déjà intégrées à SPIP 3.2), mais oui, j’aimerais bien.
      Quoique je comptais aussi faire un peu de ménage et passer à flexbox pour simplifier un peu les modèles, du coup ça pourrait justifier une nouvelle branche. Je ne sais pas encore là.

      Bon, on sort un peu d’ordoc, cette discussion pourrait se poursuivre sur le forum d’albums :)

    Répondre à ce message

  • bonjour,

    si j’ajoute des documents à partir de la médiathèque, et en l’occurence dans l’ordre souhaité, les documents sont enregistrés dans la base avec le rang_lien à 0. Comme dans l’espace privé ils sont affichés selon leur id, tout va bien. Mais dans la page publique, le critère rang_lien ne fonctionne pas (CQFD).

    Il faut en fait déplacer au moins un élément pour que l’ordre par rang_lien soit attribué à chaque élément.

    Ne serait-il pas possible d’attribuer un rang dès le chargement des documents ?

    Répondre à ce message

  • 1

    Est-ce que ce principe pourrait être mis en oeuvre pour les articles ?

    Répondre à ce message

  • Je ne te le fais pas dire « c’est merveilleux ! » :-O

    J’avais levé le pied ces dernières années mais je m’y remets progressivement et ca fait plaisir de voir que les mêmes têtes sont toujours là et toujours, avec des idées de folie :-)

    Répondre à ce message

  • Whouaa, que j’ai hâte d’arriver à la Spip 3.2 pour l’implémenter sur mes sites :-)
    Merci Matthieu M. et toute l’équipe de Spip !

    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