Rôles de documents

Ce plugin permet d’attribuer un rôle aux documents liés aux contenus, et cerise sur le gâteau, rend possible la gestion des logos par le biais des documents-joints.

Passage de SPIP 3 à SPIP 4  : si vous migrez un site vers SPIP 4, veillez à mettre à jour le plugin avant de mettre à jour SPIP.

La v2 est une évolution majeure qui aura sa propre documentation.

Principe

Les documents liés aux contenus n’ont pas forcément tous la même fonction, il est parfois utile de distinguer le rôle de chaque document : à quoi sert-il ? Quel est son sens ?

Prenons un exemple concret : pour une librairie nous avons un objet éditorial « livre », chaque livre doît être accompagné de sa couverture (le logo), du 4e de couverture, et d’une série d’extraits.
Le squelette correspondant a besoin d´afficher ces images en des endroits particuliers, il faut donc un moyen de les identifier dans des boucles différentes : c’est possible au moyen des rôles.

Rôles de documents : principe

Utilisation

La gestion des rôles s´effectue sur place, dans la liste des documents liés aux contenus.
Un même document peut avoir plusieurs rôles.
Le rôle attribué par défaut est le rôle générique « document ».

Modification des rôles d´un document

Gestion des logos

Le plugin fournit 2 rôles supplémentaires : « logo » et « logo de survol ».
Il est donc possible de s’affranchir de la gestion historique des logos et de profiter des avantages des documents : vous pouvez leur donner un titre, un descriptif, des crédits, les réutiliser, les faire pivoter, etc.

Les balises #LOGO_XXX voient leur fonctionnement étendu : si aucun logo « historique » n´est présent, elles vont chercher un document avec le rôle de logo .

Dans la médiathèque, un nouvel onglet permet de visualiser les documents avec le rôle de logo :

NB — Le plugin Logos par rôle va plus loin en remplaçant complètement la gestion des logos par celles des rôles de documents, le formulaire des logos est entièrement remplacé.

NB 2 — La roadmap de la prochaine version de SPIP (3.3) prévoit que les logos soient gérés via la table spip_documents.

Intégration dans les squelettes

Par défaut les boucles DOCUMENTS ressortent tous les rôles, même les logos : il faut les exclure explicitement si besoin.
Il est possible d’utiliser les critères {role} et {par role}.

Exemples :

Filtrer les documents par rôle :

<BOUCLE_docs(DOCUMENTS documents_liens) {id_article} {role = bandeau}>
#LOGO_DOCUMENT
</BOUCLE_docs>

Trier les documents par roles puis par titre :

<BOUCLE_docs(DOCUMENTS) {id_article} {par role,titre} >
#LOGO_DOCUMENT
</BOUCLE_docs>

Afficher les rôles d´un document :

<BOUCLE_docs(DOCUMENTS) {id_article}>
#TITRE
Rôle(s) :
<BOUCLE_roles(documents_liens){id_document}{objet}{id_objet}{par role}{role!=''}{", "}>[(#ROLE|role{documents})]</BOUCLE_roles>
</BOUCLE_docs>

Déclarer de nouveaux rôles

Tout est expliqué dans la documentation de l’API des rôles, mais reprenons les grandes lignes avec quelques exemples.

Les rôles se manipulent au moyen du pipeline declarer_tables_objets_sql.
Les 2 clés roles_titres et roles_objets permettent d’indiquer les chaînes de langues des nouveaux rôles, ainsi que les rôles possibles pour chaque type d’objet éditorial.

Attention, pour être sûr de vous appuyer sur les déclarations par défaut, pensez bien à nécessiter ou utiliser le plugin « roles_documents » dans le XML de votre plugin, afin de passer après dans le pipeline.

La clé roles_objets est un tableau associatif, vous avez donc la possibilité d’ajouter des valeurs à celles existantes, ou bien de remplacer complètement certaines entrées.

Gardez également bien en tête les priorités de l’API des rôles : il y a des rôles déclarés par défaut pour tous les objets, et optionnellement des rôles pour chaque type d’objet, ces derniers sont pris en priorité.
Le plugin ne déclare que les rôles par défaut pour tous les objets, dès que vous ajoutez des rôles pour un type d’objet en particulier, ils prendront le dessus, dans ce cas pensez à inclure le rôle « logo ».

Voici quelques exemples :

1) Compléter les rôles par défaut

On veut ajouter des rôles à tous les objets, tout en conservant ceux déclarés par le plugin : on fait un merge.

function monplugin_declarer_tables_objets_sql($tables){

  $tables['spip_documents'] = array_merge_recursive(
    $tables['spip_documents'],
    array(
      'roles_titres' => array(
        'alpha' => 'monplugin:role_alpha',
        'beta'  => 'monplugin:role_beta'
      ),
      'roles_objets' => array(
        '*' => array(
          'choix' => array('alpha', 'beta'),
        ),
      ),
    )
  );

  return $tables;
}

2) Remplacer complètement les rôles par défaut

On veut avoir complètement la main sur les rôles, pas de merge.
Dans ce cas, il faut penser à mettre le rôle « logo », et indiquer le choix par défaut.

function monplugin_declarer_tables_objets_sql($tables){

  $tables['spip_documents']['roles_titres'] = array(
    'alpha' => 'monplugin:role_alpha',
    'beta'    => 'monplugin:role_beta'
  );
  $tables['spip_documents']['roles_objets'] = array(
    '*' => array(
      'choix'  => array('logo','alpha', 'beta'),
      'defaut' => 'alpha',
    ),
  );

  return $tables;
}

3) Avec des rôles par types d’objets

Un dernier exemple pour ajouter des rôles aux articles et aux brèves, tout en conservant les rôles par défaut pour les autres types d’objets.
Là on fait un merge pour garder la clé '*', et ajouter 2 clés 'articles' et 'breves'.
Comme dans l’exemple précédent, pour ces 2 objets il faut remettre le rôle « logo » et le choix par défaut.

$tables['spip_documents'] = array_merge_recursive(
  $tables['spip_documents'],
  array(
    'roles_titres' => array(
      'alpha'  => 'monplugin:role_alpha',
      'beta'   => 'monplugin:role_beta',
    ),
    'roles_objets' => array(
      'articles' => array(
        'choix' => array('document', 'logo', 'alpha'),
        'defaut' => 'document',
      ),
      'breves' => array(
        'choix' => array('document', 'logo', 'beta'),
        'defaut' => 'document',
      ),
    ),
  )
);

Limitations

l´API des rôles ne permet pour l´instant pas de limiter le nombre de rôles utilisés pour un objet.
Il est impossible de dire qu´un rôle « logo » ne peut être utilisé qu´une seule fois pour un contenu, par conséquent c´est aux rédacteurs à veiller à ne l´attribuer qu´une fois.

Discussion

18 discussions

  • Bonjour, je poste ici ne sachant pas vraiment quel est le meilleur lieu, pour la suggestion suivante : pouvoir sélectionner la vignette d’un logo (je dis bien, la vignette, ie. l’encart tout en bas du formulaire « Editer le logo ») via la Médiathèque, en plus de ce qui est proposé actuellement (au choix depuis l’ordinateur ou depuis internet). Ce serait super d’avoir l’option « depuis la médiathèque » de façon à éviter un enregistrement préalable sur son ordinateur d’un document qui est déjà dans la Médiathèque. Je crois que cela hérite de la fonctionnalité historique des Logos, et n’est peut-être pas (encore) implémenté. Si c’est possible avec des versions récentes de plugins, je remercie d’avance le contributeur de me l’indiquer ! Sinon, les plugins « rôles de document » et « logos par rôle » sont vraiment super, merci.

    Répondre à ce message

  • 3

    hello, j’utilisais le téléchargement de documents en public de la manière suivante
    <INCLURE{fond=plugins-dist/medias/prive/objets/editer/colonne_document,objet=article,id_objet=#ID_ARTICLE,env} />
    avec roles de documents activé, le rechargement ajax du bloc documents ne fonctionne plus mais mouline, y a t’il une syntaxe particuliçre pour telecharger un doc en public ? merci

    • hello,
      quelle version ?

    • testé les deux versions disponibles 1.1.8 et 1.2.23 SPIP 3.2.3 [24211]
      notes que l’upload du fichier fonctionne, c’est le rechargement ajax qui pouiche

      aussi la désinstallation du plugin ne se passe pas bien, après vidage des caches, j’ai une erreur à la suppression d’un doc, il cherche toujours action/dissocier_document_role

    • erratum : la désinstallation se passe bien, en vidant bien le cache navigateur...

    Répondre à ce message

  • 9

    Bonjour,

    J’espère que je frappe à la bonne porte.

    Sous Spip 3.2.3
    Lors de la rédaction ou la modification d’un article, je n’ai plus la proposition d’ajouter un logo (chez moi sur la colonne de gauche).

    Par contre, j’ai le choix (chez moi sous l’article) d’utiliser en tant que logo, une photo déjà publiée dans cet article. J’ai cliqué et c’est une autre image qui est devenue le logo.

    Où puis-je chercher ?

    • Tu as bien la fonctionnalité des logos activés dans la config du site (Configuration => Contenu) ?

    • Merci pour ta réponse.
      J’avais uniquement uniquement utiliser les logos d’activé.
      J’ai autorisé les logos de survol et j’ai maintenant la proposition d’ajouter un logo a gauche.
      C’est quand même curieux.

    • Euh oui ce n’est pas normal, et je ne reproduis pas. Ça te fait pareil sur un site sans aucun plugin à part Rôles de doc et ses dépendances ?

    • Je ne savais quels étaient les dépendances (à indiquer dans contrib ?). J’ai donc tout coché et décoché uniquement Rôles de documents. Puis j’ai désactivé tout ce qui était coché. Rôles de documents a été désactivé lui aussi.
      J’ai donc réactivé Rôles de documents , ce qui a activé Chosen et Rôles. J’ai décoché la gestion des logos par survol et tout marchait bien … J’ai alors réactivé Logos par rôle et le problème est réapparu (ca revient à la normale en cochant logo survol).

    • Donc c’est un problème de cet autre plugin Logo par rôle. :)

    • Si cela peut apporter une quelconque aide : en conservant l’ancienne version 0.8.4 de « logos par role », l’encart du logo en colonne de gauche est conservé (perte avec la nouvelle version du plugin, qui est dommageable car « scroller » tout en bas d’un article pour savoir quel est son logo n’est pas pratique, c’est le moins qu’on puisse dire..) Pour ma part, je conserve cette (ancienne) version du plugin, même avec SPIP 3.2.3 (plugin qui est par ailleurs extrêmement utile).

    • liberte

      Bonjour,
      Merci pour l’info.
      J‘utilise Logo par rôle 0.9.2 et j’ai bien la proposition de choisir un logo dans la colonne de gauche.
      Le problème est que je dois cocher la case logo de survol. Je vais poster ce souci dans le plugin concerné.

    • liberte

      Je ne sais pas comment contacter l’auteur du plugin qui est sur la zone.

    • Hello,
      Si tu as un compte sur ce site, tu peux lui laisser un message via le forum privé de l’article de documentation du plugin, qui n’est pas encore publié : https://contrib.spip.net/ecrire/?exec=article&id_article=4976

    Répondre à ce message

  • 5

    Merci pour ce plugin ! C’est vraiment top de pouvoir choisir le logo avec tous ses attributs et via la médiathèque. Je me permets une remarque et une suggestion : l’absence de limitation dans l’usage d’un même logo pour plusieurs documents est au contraire excellente, car dans le cas des articles multilingues, on souhaite garder le même logo pour l’article original et sa traduction - donc qu’un même document serve de logo plusieurs fois est très bien. Une suggestion : avoir la possibilité de renseigner le titre de l’image en utilisant les balises multilingues (de manière à afficher par ex. une légende de l’image dans la langue de l’article). C’est vraiment du détail mais au cas où... Merci encore.

    • Ben en quoi tu ne pourras pas utiliser de balises multi ? Tu peux en mettre dans n’importe quel champ.

    • L’utilisation des balises multi n’est pas prise en compte. Essayez et vous constaterez également.

    • Pour faire suite, j’utilise également le (double) plugin « image_responsive » & « media_responsive ». Il se peut qu’il y ait une incompatibilité sur la gestion des légendes avec les rôles de document, car dans un squelette l’ajout d’une balise multi sur un élément de légende crée un bug. Je ne saurais dire lequel des plugins en est à l’origine mais je vous le soumets pour investigation si vous voulez.

    • Mais Rôles de documents n’a aucun rapport avec les champs de contenu, il ne fait qu’ajouter un champ de rôle sur la table de liaisons avec les autres contenus. Après ce sont des documents, rien de différents d’avant qu’il y ait les rôles, avec leurs champs de titres, descriptifs etc, ce plugin ne fait rien d’autre.

    • Merci pour ces explications et le suivi. Pour information je ne constate plus l’anomalie (possiblement un problème de vidage de cache ?). Tout fonctionne normalement.

    Répondre à ce message

  • 13

    Re-salut,

    je n’arrive pas à sortir les documents qui n’ont pas de rôles {role=''} ou qui n’ont pas un rôle précis {role!='role_exclu'} (affiche tous les documents dans les 2 cas) alors que j’arrive à afficher uniquement ceux qui ont un rôle {role!=''} ou qui ont un rôle précis {role='role_exclu'}.

    Ca doit venir du fait que dans spip_documents_liens, les documents ayant un lien apparaissent 2 fois (avec et sans leur rôle).

    Y’a t’il une solution ?

    Merci

    Ma boucle :

    <BOUCLE_roles(documents){id_article}{role=''}{' / '}>
    #ID_DOCUMENT
    </BOUCLE_roles>
    • Hello,

      L’API des rôles impose de mettre un rôle par défaut, elle n’accepte pas les rôles vides. Le rôle par défaut c’est « document », donc pour sélectionner les docs sans rôle : {role = document} .

      Je vais ajouter cette précision dans la doc, à l’occasion de la prochaine mise à jour.

    • Mmmh j’ai un doute sur ce point, cher ami, car un document peut très bien avoir le rôle par défaut ET d’autres rôles en plus, ce n’est pas exclusif. Donc sélectionner les choses avec le role=document ne veut pas dire qu’ils n’ont pas d’autres rôles par ailleurs.

    • M’est-avis qu’on devrait peut-être avoir un ou deux critères dédiés aux rôles pour faciliter tout cela. (Et si c’est possible, générique dans le plugin Rôles, pas juste pour ceux des documents.)

    • Ah oui exact cher confrère, c’est vrai qu’un doc peut avoir le rôle par défaut mais aussi d’autres rôles éventuels.
      Mais impossible de choisir ceux qui n’ont que le rôle par défaut.

      Donc @jeanmarie, pour l’instant ce n’est pas possible à moins d’écrire un nouveau critère.
      À réfléchir. Un truc du genre {role_unique} ?

    • ok, merci pour la réponse.

      Pour ce qui est de mon problème de documents sans rôle, je crois que ça vient de ma déclaration de nouveaux rôles qui supprime le rôle "document" mais je n’arrive pas à trouver ce que je rate :

      Je souhaite ajouter 2 rôles (visuel grille et visuel présentation) aux documents liés aux articles.
      J’ai donc repris et adapté l’exemple de la doc ci dessus, mais ça ne fonctionne pas (message à l’activation du plugin : L’installation du plugin « Squelette Bord à Bord » (version : 0.2.0) a échoué) et le rôle documents n’est plus disponible.

      Mon code :

      <?php
      
      function bordabord_declarer_tables_objets_sql($tables){
      
      	// les nouveaux rôle
      	$nouveaux_roles_titres = array(
      		'visuelgrille'  => 'bordabord:visuel_grille',
      		'visuelpresentation' => 'bordabord:visuel_presentation'
      	);
      	$nouveaux_roles_objets = array(
      		'articles' => array(
      			'choix' =>  array_keys($nouveaux_roles_titres),
      			'defaut' => ''
      		)
      	);
      
      	// les anciens rôles
      	$anciens_roles_titres = is_array($tables['spip_documents']['roles_titres']) ? $tables['spip_documents']['roles_titres'] : array();
      	$anciens_roles_objets = is_array($tables['spip_documents']['roles_objets']) ? $tables['spip_documents']['roles_objets'] : array();
      
      	// On mélange le tout
      	$roles_titres = array_merge($nouveaux_roles_titres, $anciens_roles_titres);
      	$roles_objets = array_merge($nouveaux_roles_objets, $anciens_roles_objets);
      	array_set_merge($tables, 'spip_documents', array(
      		"roles_titres" => $roles_titres,
      		"roles_objets" => $roles_objets
      	));
      
      	return $tables;
      }

      Qu’est-ce que je rate ?

    • Ben 1) tu surcharges les rôles pour les articles (par défaut ça prend la config *) et dedans t’as pas le rôle « document » et 2) en plus dans tous les cas pour ta config spécifique aux articles tu mets defaut => «  » donc aucun rôle par défaut alors qu’il faut en donner un.

      Tu peux ne pas avoir de rôle « document » pour les articles si vraiment c’est ce que tu veux, mais par contre il faut dire quel rôle sera mis par défaut lors des ajouts.

    • 1) Faut pas surcharger ? J’ai repris bêtement l’exemple en modifiant les rôles et l’objet en me disant que la partie sur les anciens rôles ($anciens_roles_titres et $anciens_roles_objets) servaient justement à récupérer les rôles déjà existant pour ne pas les perdre.

      2) j’ai ajouté le rôle par défaut « document ».

      Ça donne :

      <?php
      
      function bordabord_declarer_tables_objets_sql($tables){
      
      	// les nouveaux rôle
      	$nouveaux_roles_titres = array(
      		'document'  => 'Document',
      		'visuelgrille'  => 'bordabord:visuel_grille',
      		'visuelpresentation' => 'bordabord:visuel_presentation'
      	);
      	$nouveaux_roles_objets = array(
      		'articles' => array(
      			'choix' =>  array_keys($nouveaux_roles_titres),
      			'defaut' => 'document'
      		)
      	);
      
      	// les anciens rôles
      	$anciens_roles_titres = is_array($tables['spip_documents']['roles_titres']) ? $tables['spip_documents']['roles_titres'] : array();
      	$anciens_roles_objets = is_array($tables['spip_documents']['roles_objets']) ? $tables['spip_documents']['roles_objets'] : array();
      
      	// On mélange le tout
      	$roles_titres = array_merge($nouveaux_roles_titres, $anciens_roles_titres);
      	$roles_objets = array_merge($nouveaux_roles_objets, $anciens_roles_objets);
      	array_set_merge($tables, 'spip_documents', array(
      		"roles_titres" => $roles_titres,
      		"roles_objets" => $roles_objets
      	));
      
      	return $tables;
      }

      J’ai bien le rôle document ainsi que mes 2 autres rôles et plus de rôles vide dans la base. Ça semble fonctionner.

      Par contre, à l’installation de mon plugin, j’ai toujours "L’installation du plugin « Squelette Bord à Bord » (version : 0.2.0) a échoué".

    • Quand je parle de surcharge, je parle pour la liste qui définit les rôles par objet.

      Par défaut ça prend la configuration définit dans la clé « * » (étoile), SAUF s’il existe un clé pour tel objet, et dans ce cas ça prend cette liste là. Par défaut il n’y a pas de définition pour « article » par exemple, ça c’est toi qui l’ajoute donc qui surcharge l’étoile.

      Donc tu peux le faire, c’est justement prévu pour ça, mais c’est fait pour le définir pour un objet précis (là que pour les articles). Et à l’intérieur de ce que tu définis TOI pour les articles, bah là c’était uniquement ta liste perso, ça ne reprenait pas l’existant. Et donc pas le rôle « document » et la définition du défaut.

      Pour ce qui est de l’installation ça doit être autre chose. Tu as bien une fonction d’installation dans un fichier d’administrations ? Et dans cette fonction tu utilises bien l’api pour enregistrer le numéro de schéma de ton plugin ? (cf n’importe quel autre plugin qui a une install)

    • Ok, merci pour tes retours, c’est plus clair à présent.

      Pour l’installation qui échoue, effectivement, je n’avais pas de fichier d’administration. Je n’ai pas trouvé de doc là dessus, donc j’ai copié celui d’un plugin qui parait simple (identité extra).
      Ça n’échoue plus mais je ne maitrise pas trop ce que j’ai fait :)

    • Enfin, j’ai trouvé de la doc, mais pour des plugins créant des tables ou des métas, ce qui n’est pas mon cas.
      Bref ...

    • Le fichier d’installation est optionnel (plugin_administrations.php).
      Si tu n’en as pas besoin, il faut enlever schema dans paquet.xml.

    • Ça marche, merci.

    • Bon, dans la bataille, j’avais également perdu le rôle de logo.

      Donc ça donne au final :

      <?php
      
      function bordabord_declarer_tables_objets_sql($tables){
      
      	// les nouveaux rôle
      	$nouveaux_roles_titres = array(
      		// Les rôles par defaut
      		'logo'  => 'roles_documents:role_logo',
      		'document'  => 'roles_documents:role_document',
      		// Mes nouveaux rôles
      		'visuelfourchette'  => 'bordabord:visuel_fourchette',
      		'visuelgrille'  => 'bordabord:visuel_grille',
      		'visuelpresentation' => 'bordabord:visuel_presentation'
      	);
      	$nouveaux_roles_objets = array(
      		'articles' => array(
      			'choix' =>  array_keys($nouveaux_roles_titres),
      			'defaut' => 'document',
      			'principaux' => array(
      				'logo',
      			),
      		)
      	);
      
      	// les anciens rôles
      	$anciens_roles_titres = is_array($tables['spip_documents']['roles_titres']) ? $tables['spip_documents']['roles_titres'] : array();
      	$anciens_roles_objets = is_array($tables['spip_documents']['roles_objets']) ? $tables['spip_documents']['roles_objets'] : array();
      
      	// On mélange le tout
      	$roles_titres = array_merge($nouveaux_roles_titres, $anciens_roles_titres);
      	$roles_objets = array_merge($nouveaux_roles_objets, $anciens_roles_objets);
      	array_set_merge($tables, 'spip_documents', array(
      		"roles_titres" => $roles_titres,
      		"roles_objets" => $roles_objets
      	));
      
      	return $tables;
      }

      Par contre, le rôle par défaut n’a pas l’air d’être pris en compte : c’est le 1er rôle de la liste qui est coché par défaut (il se trouve que c’est document).

      Et il me manque un truc : si j’ajoute le rôle logo_survol (que je mets dans principaux pour le lier au logo), il apparait toujours dans le formulaire d’envoi de logo, même si j’ai désactivé les logos au survol dans la config de SPIP.

      Bon, je ne l’utilise pas, donc je l’ai viré mais ça serait plus propre :)

    Répondre à ce message

  • 7

    Bonjour,

    Mon commentaire est en lien avec le plugin roles_logos, mais je le poste ici car l’article dédié n’existe pas encore sur contrib, et ce dernier est intimement lié à roles_documents.

    Je cherchais à désactiver le rôle logo_survol qui occasionne des effet indésirables.
    La balise #LOGO_TRUC génère une balise img avec des attributs onmouseout et onmouseover, non seulement inutiles dans mon cas, mais qui cassent l’affichage dans l’éditeur markItUp lorsqu’on insère un modèle contenant un logo, à cause du code javascript inline)

    • Le réglage Contenu du site > Les logos >*Ne pas utiliser les logos de survol* n’est, pour l’instant (v1.1.8), pas pris en compte avec cette nouvelle gestion des logos.

    Du coup j’ai tenté d’utiliser la panoplie de pipelines disponibles

    function foo_declarer_tables_objets_sql($tables) {
       if (is_array($tables)) {
        unset($tables['roles_titres']['logo_survol']);
        unset($tables['roles_objets']['*']['choix']['logo_survol']);
       }
       return $tables;
    }
    
    function foo_roles_logos($logos) {
      unset($logos['logo_survol']);
      return $logos;
    }
    
    function foo_quete_logo_objet($infos_logo) {
        include_spip('inc/config');
        if ( lire_config('activer_logos_survol') === 'non' 
              AND  $infos_logo['args']['mode'] === 'off') {
            return array();
        }
        else return $infos_logo;
    }

    Seul l’emploi du pipeline quete_logo_objet m’a permis de désactiver de force l’insertion des attributs onmouseout, onmouseover sur les images.
    Toutefois, dans l’espace privé, le choix de liaison « logo de survol » est toujours disponible pour les rédacteurs.

    1) Peut-on intégrer prendre en compte la désactivation des logos de survol au sein du plugin ? (C’est peut être déjà en place ou prévu sur la branche de dev, je n’ai pas testé)
    2) Comment ne pas afficher le choix de liaison « logo de survol » dans l’interface rédacteur, lorsque l’on souhaite désactiver cette option ?

    Merci

    • Salut placido,

      Dans le trunk, la gestion des logos a été complétée.
      Pour les logos de survol, ça prend en compte la configuration : quand c’est désactivé dans « Contenu du site » ce rôle n’est pas proposé.
      En revanche, on ne touche pas au code produit par la balise #LOGO_SURVOL, donc si c’est activé il y aura toujours onmouseout et cie.

      À noter qu’on a un peu étendu la notion de logo : on est plutôt parti sur une notion de « documents principaux ». Donc quand on définit les rôles, il y a une option supplémentaire pour dire « les rôles suivant correspondent à des rôles principaux » (autant qu’on veut), et ils sont utilisés par le formulaire de logo.
      Et par défaut bien sûr, ce sont les rôles « logo » et « logo_survol ».

      Il faudra peut-être étendre la balise #LOGO_PATATE pour prendre en compte les nouveaux rôles principaux : role « banniere » → #LOGO_PATATE_BANNIERE par exemple.

      Il reste 2/3 trucs à finir et le trunk pourra repasser en test (et documentation à mettre à jour aussi).

    • Sur les conseils de Rastapopoulos, je suis passé à la version de dev, en désinstallant logos_roles (qui semble être devenu superflu). Le résultat est très satisfaisant, (seule la conversion du logo site en document semble inopérante).
      Pour le reste, c’est vraiment bien. Merci !

    • Super, n’hésite pas à faire des retours. Comme l’a dit tcharlss il y a encore quelques trucs à peaufiner avant de le passer en test et stable.

    • Alors, voici quelques retours supplémentaires :

      À la suite du passage logos_roles [0.8.4] + roles_documents [1.1.8] -> roles_documents [1.2.13] plutôt réussi en local, j’ai fait la même chose sur le site distant.

      Cette fois ci, le comportement fût un peu différent : j’ai perdu l’information de liaison « logo » sur la table spip_documents_liens lors de la mise à jour ; seule la liason « document » persistait. J’ai pu récupérer mes liaisons typées « logo » avec une requête SQL, plus quelques éditions dans l’espace privé.
      Je n’avais pas connu cela en local. Peut-être est-ce la cause d’un mauvais enchainement installation/désinstallation entre les différentes versions des plugins.

      Le reste semble OK.

      Il subsiste pour l’instant un point noir : le formulaire de choix du logo des « sélections » (plugin sélections éditoriales) ne propose pas de piocher dans la médiathèque. J’en suis réduit à déclarer une liaison manuellement avec un document existant dans la table spip_documents_liens.

    • Merci ! Super pour les tests dans divers cas comme les contenus sélectionnés, à vérifier donc (pourtant ça utilise #FORMULAIRE_LOGO et Rôles de doc le surcharge normalement…)

    • Pour ce qui est du logo des sélections éditoriales, je ne reproduis pas : https://pic.infini.fr/9YFPpdGs/ZTd1pF0y.png

      Tu n’as même pas le sélecteur de rôle dans ta capture d’écran, ni l’intitulé « logo de ce contenu sélectionné », c’est d’autant plus étrange. Quelle version du plugin ?

      Pour la perte des infos de liaison, tu as juste désactivé roles_logos ou fait une désinstallation ?

    • Sélections éditoriales [1.7.11] | SPIP [3.2.1]

      Mais je viens de trouver le problème, qui n’est pas lié à roles_documents mais à LIM. L’affichage du bloc de sélection de logo était désactivé pour les « Contenus sélectionnés », (je n’ai pas tilté tout de suite, car, malgré ce réglage, je disposais quand même d’une version basique d’un formulaire pour choisir un logo, cf : impr. écran).

      Donc, pas de soucis sur ce point en fin de compte.

      Pour la perte des infos de liaison, tu as juste désactivé roles_logos ou fait une désinstallation ?

      Cela a été un peu chaotique car la compatibilité max du necessite de logos_roles pour roles_documents s’arrête à 1.1.*, ce qui a rendu la simple montée de version problématique. J’ai dû désactiver logos_roles, désactiver roles_documents, puis installer la version dev de ce dernier...

      En attendant d’autres résultats de tests...

      Merci

    Répondre à ce message

  • 2

    Salut,

    dans la partie « Intégration dans les squelettes », le code de Afficher les rôles d´un document semble ne pas focntionner à cause des critères {objet}{id_objet}
    de la boucle <BOUCLE_roles>.

    En fait, une seule boucle semble suffire, pas besoin de la boucle <BOUCLE_docs> :

    <BOUCLE_roles(documents){id_article}{par role}{role!=''}{", "}>
    #TITRE
    Rôle(s) : [(#ROLE|role{documents})]
    </BOUCLE_roles>
    • Hop,

      Ah oui, il faut peut-être préciser {objet = patate} {id_objet = N}, à tester.
      Par contre il faut forcément une boucle séparée pour les rôles, avec une seule boucle ça ne te sortira qu’un seul rôle.

    • Ah ben oui, il faut 2 rôles bien sûr, j’étais parti sur des documents qui n’ont qu’un rôle !

      Pour la boucle, il faut effectivement rajouter objet = patate id_objet = N :

      <BOUCLE_docs(DOCUMENTS) {id_article}>
      	<B_roles>
      	#TITRE
      	Rôle(s) :
      	<BOUCLE_roles(documents_liens){id_document}{objet=article}{id_objet=#ID_ARTICLE}{par role}{role!=''}{" / "}>[(#ROLE|role{documents})]</BOUCLE_roles>
      </BOUCLE_docs>

      Avec un <B_roles> avant le #TITRE pour ne pas l’afficher si pas de rôle (ce qui ne doit pas arriver, mais on ne sait jamais, moi , ça m’est arrivé :) )

      PS : ne pas tenir compte le capture d’écran, elle est restée coincée là et je ne trouve pas comment la supprimer

    Répondre à ce message

  • 5

    Bonjour,

    Oh c’est bien joli cet outil : merci beaucoup ;-)))

    Les logos du site (siteon0 et siteoff0) ne sont pas compris dans cette revisitation de la gestion documents/logos via rôles : c’est à venir ou pas ?

    J’entends par là que l’on pourrait associer des documents de la médiathèque comme logos et/ou document à l’identité du site : donc 2, 3, 4,... potentiels logos pour les affichages RWD, par exemple.

    Merci,
    françois

    • Ce serait bien, mais comme expliqué il s’agit juste de documents liés à tel ou tel contenu. Or « le site » ce n’est pas un contenu, un objet SPIP, donc ya pas de liaison à faire. C’est un cas particulier et pour l’instant je ne sais pas comment ce pourrait être géré.

    • Je crois que le plugin Logo par rôle le permet.

      Bon après, il y a une partie de ses fonctionnalités que je voulais mettre depuis le début dans rôles de documents (surtout la surcharge du formulaire d’édition de logo).
      Donc à terme, les 2 pourraient en partie être fusionnés, il faut qu’on en discute avec son auteur.

    • En parlant de fusion, la possibilité d’ajouter des fichiers SVG pour les logos est très appréciable et rendue possible avec Logo SVG ;-)

    • Bah ya pas besoin puisque là justement on utilise les documents joints, donc on peut y mettre n’importe quel type de fichier, dont SVG évidemment. Le but c’est vraiment de supprimer totalement la gestion des anciens logos qui n’a plus du tout lieu d’être, et tout centraler avec spip_documents, une seule manière de gérer (et pouvoir réutiliser etc).

      @tcharlss oui pour la fusion totalement pour ce qui est de surcharger le formulaire de logo dans la colonne (en restant compatible avec bigup). Le reste c’est pour moi un sujet différent, et qui d’ailleurs ne devrait pas s’appeler « logo par rôle ». C’est plus une « configuration des rôles » plus précises, et d’ailleurs je vois pas pourquoi spécialement pour « logo », surtout que comme déjà évoqué à plusieurs réunion, ce terme de « logo » ne veut rien dire et ya plein de gens hors SPIP qui ne comprennent pas quand ils découvrent (c’est plutôt « image principale » ou ce genre de terme).

    • Yes, but, pour le(s) logo(s) de site, on ne peut pas « y mettre n’importe quel type de fichier », d’où la question de peut-être revoir la gestion du logo site comme un spip_document et pour le coup, effectivement, ne pas avoir besoin d’une gestion SVG dédiée aux logos.

    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