Changeset 109227 in spip-zone


Ignore:
Timestamp:
Mar 1, 2018, 10:47:58 PM (16 months ago)
Author:
tcharlss@…
Message:

Dans le widget qui permet de changer les rôles, on n'affiche pas les rôles principaux (ceux des logos). On interdit aussi d'enlever un rôle si c'est le seul attribué (l'API nécessite au moins un rôle). On n'affiche pas le widget s'il y a un rôle unique et pas d'autres attribuables. Changement de la signature de la fonction qui renvoie les infos sur les rôles de documents d'un objet : on peut demander les rôles d'un document précis.

Location:
_plugins_/roles_documents/trunk
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/roles_documents/trunk/formulaires/editer_logo.php

    r109200 r109227  
    108108
    109109        // 1) Cherchons ensuite les documents avec des rôles de logos
    110         $roles_logos = roles_presents_sur_document($objet, $id_objet, true); // Tableau des rôles attribués ou non
     110        $roles_logos = roles_documents_presents_sur_objet($objet, $id_objet, 0, true); // Tableau des rôles attribués ou non
    111111        foreach ($roles_logos['attribues'] as $role) {
    112112                // Vérifier la config de certains rôles connus
  • _plugins_/roles_documents/trunk/formulaires/editer_roles_document.html

    r109087 r109227  
     1[(#REM)
     2
     3        Formulaire d'édition des rôles d'un document
     4
     5]
    16<div class="formulaire_spip formulaire_#FORM">
     7
    28        [<div class="reponse_formulaire reponse_formulaire_ok none">(#ENV**{message_ok})</div>]
    39        [<div class="reponse_formulaire reponse_formulaire_erreur">(#ENV**{message_erreur})</div>]
     10
    411        <form action="#ENV{action}" method="post"><div class="spip roles roles-documents">
    512                #ACTION_FORMULAIRE{#ENV{action}}
    6                 <B_roles>[<span class="label">(#TOTAL_BOUCLE|singulier_ou_pluriel{roles:role_titre,roles:roles_titre})</span> : ]
    7                 <BOUCLE_roles(documents_liens){id_document}{objet}{id_objet}{par role}{role!=''}{", "}>[<span class="role-#ROLE">(#ROLE|role{documents})</span>]</BOUCLE_roles>
     13       
     14                [(#REM) Liste des rôles attribués ]
     15                <B_roles>
     16                [<span class="label">(#TOTAL_BOUCLE|singulier_ou_pluriel{roles:role_titre,roles:roles_titre})</span> : ]
     17                <BOUCLE_roles(documents_liens)
     18                        {id_document}
     19                        {objet}
     20                        {id_objet}
     21                        {par role}
     22                        {role != ''}
     23                        {", "}
     24                >
     25                [<span class="role-#ROLE">(#ROLE|role{documents})</span>]
     26                </BOUCLE_roles>
     27
     28                [(#REM) dropdown pour ajouter ou retirer les rôles ]
    829                [(#ENV{editable}|oui)
    9                 <INCLURE{fond=formulaires/inc-editer_liens_actions_roles,
    10                         env,
    11                         id=#ENV{id_document},
    12                         cle=document-#ENV{id_document}-#ENV{objet}-#ENV{id_objet},
    13                         libelle=<:roles_documents:bouton_modifier_roles:>}>
     30                <INCLURE{fond=formulaires/inc-editer_liens_actions_roles_documents,
     31                        id_document,
     32                        objet,
     33                        id_objet,
     34                        principaux='',
     35                        libelle=<:roles_documents:bouton_modifier_roles:>,
     36                }>
    1437                ]
     38
    1539        </div></form>
     40
    1641</div>
  • _plugins_/roles_documents/trunk/formulaires/editer_roles_document.php

    r105637 r109227  
    44 * Gestion du formulaire d'édition des rôles des liens d'un document
    55 *
     6 * `#FORMULAIRE_EDITER_ROLES_DOCUMENT{2,article,3}`
     7 * pour editer les roles du document 2 lié à l'article 3
     8 *
    69 * @package SPIP\Formulaires
    710 **/
     
    1215/**
    1316 * Chargement du formulaire d'édition des rôles des liens d'un document
    14  *
    15  * `#FORMULAIRE_EDITER_ROLES_DOCUMENT{2,article,3}`
    16  * pour editer les roles du document 2 lié à l'article 3
    1717 *
    1818 * @param int $id_document
  • _plugins_/roles_documents/trunk/roles_documents_fonctions.php

    r109200 r109227  
    1717
    1818/**
    19  * Lister les rôles de documents distincts pour un objet : ceux possibles, ceux attribués et non attribués
    20  *
     19 * Lister les rôles de documents pour un objet : ceux possibles, ceux attribués et non attribués.
     20 *
     21 * - Soit les rôles uniques des documents pour un type d'objet (si $id_document == 0)
     22 * - Soit tous les rôles entre un document et un objet (si $id_document)
     23 *
    2124 * @note
    22  * Vaguement basé sur la fonction roles_presents_sur_id() de l'API, sauf qu'on retourne des rôles uniques,
    23  * et on fait le détail entre ceux atribués et non attribués.
    24  *
    25  * l'API des rôles permet de lister les rôles attribués pour un document précis,
    26  * mais pas pour TOUS les documents liés à l'objet.
    27  * Ex. pas possible : roles_presents_sur_id('*', 'document', $objet, $id_objet, 'document')
     25 * Vaguement basé sur la fonction roles_presents_sur_id() de l'API.
    2826 *
    2927 * @see
    3028 * roles_presents_sur_id()
    3129 * roles_presents_liaisons()
    32  * 
     30 *
    3331 * @param string $objet
    3432 *     Type d'objet lié
    3533 * @param integer $id_objet
    3634 *     Identifiant de l'objet lié
    37  * @param mixed $principaux
     35 * @param integer $id_document
     36 *     Identifiant d'un document pour renvoyer les rôles de ce document précis
     37 * @param bool|mixed $principaux
    3838 *     true : ne renvoyer que les rôles principaux (logos)
    3939 *     false : exclure les rôles principaux (logos)
     
    4444 *     - non_attribues : ceux non attribues
    4545 */
    46 function roles_presents_sur_document($objet, $id_objet, $principaux = null) {
     46function roles_documents_presents_sur_objet($objet, $id_objet, $id_document=0, $principaux = null) {
    4747        static $done = array();
    4848
    4949        // Stocker le résultat
    50         $hash = "$objet-$id_objet-$principaux";
     50        $hash = "$id_document-$objet-$id_objet-$principaux";
    5151        if (isset($done[$hash])) {
    5252                return $done[$hash];
     
    5454
    5555        // Liste de tous les rôles possibles
    56         // Si pas de rôles sur ces objets, on sort
     56        // Si aucun rôle sur cet objet, on sort
    5757        $infos_roles = roles_presents('document', $objet);
    5858        if (!$infos_roles) {
     
    6262
    6363        // Liste des rôles attribués
    64         $res = sql_allfetsel(
    65                 'distinct(role)',
    66                 'spip_documents_liens',
    67                 array(
    68                         'objet=' . sql_quote($objet),
    69                         'id_objet=' . intval($id_objet),
    70                         "role!=''",
    71                 )
     64        $select = 'distinct(role)';
     65        $where = array(
     66                'objet = ' . sql_quote($objet),
     67                'id_objet = ' . intval($id_objet),
     68                "role != ''",
    7269        );
     70        if ($id_document) {
     71                $select = 'role';
     72                $where[] = 'id_document=' . intval($id_document);
     73        }
     74        $res = sql_allfetsel($select, 'spip_documents_liens', $where);
    7375        $roles_attribues = array_column($res, 'role');
    7476
     
    8789        }
    8890
    89         // On renvoie le détail
     91        // On retourne le détail
    9092        $roles = array(
    9193                'possibles'     => $roles_possibles,
  • _plugins_/roles_documents/trunk/roles_documents_pipelines.php

    r109200 r109227  
    377377                $objet = $flux['args']['contexte']['objet'];
    378378                $id_objet = $flux['args']['contexte']['id_objet'];
    379                 $roles = roles_presents_sur_document($objet, $id_objet, $principaux);
     379                $roles = roles_documents_presents_sur_objet($objet, $id_objet, 0, $principaux);
    380380                $contexte = array(
    381381                        'role' => $flux['args']['contexte']['role'],
Note: See TracChangeset for help on using the changeset viewer.