Changeset 89155 in spip-zone


Ignore:
Timestamp:
May 8, 2015, 4:30:04 PM (4 years ago)
Author:
cedric@…
Message:

Fix https://core.spip.net/issues/3380 : il faut verifier les droits d'associer/dissocier les documents a un objet dans le formulaire editer objet.
Pour cela on cree 2 autorisations associerdocuments et dissocierdocuments qui par defaut reposent sur autoriser(modifier).
+ n'afficher le lien 'modifier' sur un document que si on a bien le droit de le modifier

Location:
_core_/branches/spip-3.0/plugins/medias
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • _core_/branches/spip-3.0/plugins/medias/action/dissocier_document.php

    r79785 r89155  
    5050                AND (
    5151                        ($id_objet<0 AND $id_objet==-$GLOBALS['visiteur_session']['id_auteur'])
    52                         OR autoriser('modifier',$objet,$id_objet)
     52                        OR autoriser('dissocierdocuments',$objet,$id_objet)
    5353                ))
    5454                dissocier_document($document, $objet, $id_objet, $suppr, $check);
  • _core_/branches/spip-3.0/plugins/medias/action/editer_document.php

    r79785 r89155  
    250250                foreach($liens as $k=>$lien)
    251251                        if (!isset($objets_parents[$lien['objet']]) OR !in_array($lien['id_objet'],$objets_parents[$lien['objet']])) {
    252                                 objet_dissocier(array('document'=>$id_document),array($lien['objet']=>$lien['id_objet']));
     252                                if (autoriser('dissocierdocuments',$lien['objet'],$lien['id_objet'])){
     253                                        objet_dissocier(array('document'=>$id_document),array($lien['objet']=>$lien['id_objet']));
     254                                }
    253255                                unset($liens[$k]);
    254256                        }
     
    256258        }
    257259
     260        // verifier les droits d'associer
     261        foreach($objets_parents as $objet=>$ids){
     262                foreach($ids as $k=>$id){
     263                        if (!autoriser('associerdocuments',$objet,$id)){
     264                                unset($objets_parents[$objet][$k]);
     265                        }
     266                }
     267        }
    258268        objet_associer(array('document'=>$id_document),$objets_parents);
    259269
  • _core_/branches/spip-3.0/plugins/medias/formulaires/editer_document.php

    r88961 r89155  
    135135
    136136        $res = formulaires_editer_objet_traiter('document',$id_document,$id_parent,$lier_trad,$retour,$config_fonc,$row,$hidden);
     137        set_request('parents');
    137138        $autoclose = "<script type='text/javascript'>if (window.jQuery) jQuery.modalboxclose();</script>";
    138139        if (_request('copier_local')
  • _core_/branches/spip-3.0/plugins/medias/medias_autoriser.php

    r88961 r89155  
    243243                return true;
    244244}
     245
     246
     247/**
     248 * Autoriser a associer des documents a un objet :
     249 * il faut avoir le droit de modifier cet objet
     250 * @param $faire
     251 * @param $type
     252 * @param $id
     253 * @param $qui
     254 * @param $opt
     255 * @return bool
     256 */
     257function autoriser_associerdocuments_dist($faire, $type, $id, $qui, $opt){
     258        if ($type=='document') return false; // pas de document sur les documents
     259        return autoriser('modifier',$type,$id,$qui,$opt);
     260}
     261
     262/**
     263 * Autoriser a dissocier des documents a un objet :
     264 * il faut avoir le droit de modifier cet objet
     265 * @param $faire
     266 * @param $type
     267 * @param $id
     268 * @param $qui
     269 * @param $opt
     270 * @return bool
     271 */
     272function autoriser_dissocierdocuments_dist($faire, $type, $id, $qui, $opt){
     273        if ($type=='document') return false; // pas de document sur les documents
     274        // cas particulier
     275        if (intval($id)<0 AND $id==-$qui['id_auteur']){
     276                return true;
     277        }
     278        return autoriser('modifier',$type,$id,$qui,$opt);
     279}
  • _core_/branches/spip-3.0/plugins/medias/modeles/document_case.html

    r82582 r89155  
    3939                        <div class="actions">
    4040                                <BOUCLE_compte(documents_liens){id_document}{0,2} />
    41                                 [(#TOTAL_BOUCLE|=={1}|et{#AUTORISER{modifier,#OBJET,#ID_OBJET}})[(#BOUTON_ACTION{<:medias:bouton_enlever_supprimer_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT-suppr,#SELF},ajax,<:medias:bouton_enlever_supprimer_document_confirmation:>,'',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
    42                                 [(#ID_OBJET|<{0}|ou{#AUTORISER{modifier,#OBJET,#ID_OBJET}})[(#BOUTON_ACTION{<:medias:bouton_enlever_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT,#SELF},ajax,'','',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
     41                                [(#TOTAL_BOUCLE|=={1}|et{#AUTORISER{dissocierdocuments,#OBJET,#ID_OBJET}})[(#BOUTON_ACTION{<:medias:bouton_enlever_supprimer_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT-suppr,#SELF},ajax,<:medias:bouton_enlever_supprimer_document_confirmation:>,'',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
     42                                [(#AUTORISER{dissocierdocuments,#OBJET,#ID_OBJET})[(#BOUTON_ACTION{<:medias:bouton_enlever_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT,#SELF},ajax,'','',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
     43                                [(#AUTORISER{modifier,document,#ID_DOCUMENT}|oui)
    4344                                <a href="#URL_ECRIRE{document_edit,id_document=#ID_DOCUMENT}" target="_blank" class="editbox" tabindex="0" role="button"><:medias:bouton_modifier_document:></a>
    44                                 <//B_compte>
     45                                ]<//B_compte>
    4546                                [(#PIPELINE{document_desc_actions,#ARRAY{args,#ARRAY{id_document,#ID_DOCUMENT,position,document_case},data,''}})]
    4647                        </div>
  • _core_/branches/spip-3.0/plugins/medias/modeles/document_desc.html

    r88869 r89155  
    3535                <div class="actions">
    3636                        <BOUCLE_compte(documents_liens){id_document}{0,2} />
    37                         [(#TOTAL_BOUCLE|=={1}|et{#AUTORISER{modifier,#OBJET,#ID_OBJET}}|et{#VU|=={non}})[(#BOUTON_ACTION{<:medias:bouton_enlever_supprimer_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT-suppr-safe,#SELF},ajax,<:medias:bouton_enlever_supprimer_document_confirmation:>,'',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
    38                         [(#AUTORISER{modifier,#OBJET,#ID_OBJET})[(#BOUTON_ACTION{<:medias:bouton_enlever_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT--safe,#SELF},ajax,'','',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
     37                        [(#TOTAL_BOUCLE|=={1}|et{#AUTORISER{dissocierdocuments,#OBJET,#ID_OBJET}}|et{#VU|=={non}})[(#BOUTON_ACTION{<:medias:bouton_enlever_supprimer_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT-suppr-safe,#SELF},ajax,<:medias:bouton_enlever_supprimer_document_confirmation:>,'',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
     38                        [(#AUTORISER{dissocierdocuments,#OBJET,#ID_OBJET})[(#BOUTON_ACTION{<:medias:bouton_enlever_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT--safe,#SELF},ajax,'','',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>]
     39                        [(#AUTORISER{modifier,document,#ID_DOCUMENT}|oui)
    3940                        <a href="#URL_ECRIRE{document_edit,id_document=#ID_DOCUMENT}" target="_blank" class="editbox" tabindex="0" role="button"><:medias:bouton_modifier_document:></a>
    40                         <//B_compte>
     41                        ]<//B_compte>
    4142                        [(#PIPELINE{document_desc_actions,#ARRAY{args,#ARRAY{id_document,#ID_DOCUMENT,position,document_desc},data,''}})]
    4243                </div>
  • _core_/branches/spip-3.0/plugins/medias/prive/squelettes/inclure/document_infos.html

    r64826 r89155  
    1111                        [<span class='vu'>(#CHEMIN_IMAGE{document-vu-24.png}|balise_img|inserer_attribut{title,<:medias:document_vu:>}|inserer_attribut{alt,<:medias:document_vu:>})</span>]
    1212                        ]
    13                         [(#AUTORISER{modifier,#OBJET,#ID_OBJET}|oui)
     13                        [(#AUTORISER{dissocierdocuments,#OBJET,#ID_OBJET}|oui)
    1414                                [(#BOUTON_ACTION{<:medias:bouton_enlever_document:>,[(#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT--safe,#SELF})],ajax,'',''})]
    1515                        ]
Note: See TracChangeset for help on using the changeset viewer.