diff --git a/action/dissocier_document.php b/action/dissocier_document.php index 3467be335657b9462aec3445ba1ef7ca081b75f8..8f650ede0e5c3e52157329ae1d65bf98d205f302 100644 --- a/action/dissocier_document.php +++ b/action/dissocier_document.php @@ -56,7 +56,7 @@ function action_dissocier_document_dist($arg=null){ if ($id_objet=intval($id_objet) AND ( ($id_objet<0 AND $id_objet==-$GLOBALS['visiteur_session']['id_auteur']) - OR autoriser('modifier',$objet,$id_objet) + OR autoriser('dissocierdocuments',$objet,$id_objet) )) dissocier_document($document, $objet, $id_objet, $suppr, $check); else diff --git a/action/editer_document.php b/action/editer_document.php index a64c3fa96285a6bff73dc4e0013e139ef7a69af2..c4ce000aae21210c7ad8cd7935989af474ad0a5b 100644 --- a/action/editer_document.php +++ b/action/editer_document.php @@ -256,12 +256,22 @@ function medias_revision_document_parents($id_document, $parents=null, $ajout=fa if (!$ajout){ foreach($liens as $k=>$lien) if (!isset($objets_parents[$lien['objet']]) OR !in_array($lien['id_objet'],$objets_parents[$lien['objet']])) { - objet_dissocier(array('document'=>$id_document),array($lien['objet']=>$lien['id_objet'])); + if (autoriser('dissocierdocuments',$lien['objet'],$lien['id_objet'])){ + objet_dissocier(array('document'=>$id_document),array($lien['objet']=>$lien['id_objet'])); + } unset($liens[$k]); } else $deja_parents[$lien['objet']][] = $lien['id_objet']; } + // verifier les droits d'associer + foreach($objets_parents as $objet=>$ids){ + foreach($ids as $k=>$id){ + if (!autoriser('associerdocuments',$objet,$id)){ + unset($objets_parents[$objet][$k]); + } + } + } objet_associer(array('document'=>$id_document),$objets_parents); } diff --git a/formulaires/editer_document.php b/formulaires/editer_document.php index 1654d0ce1f11ee9ca88bd252e1e15330d292c6f3..044fd440901de733573d18a1545324d1e11ab648 100644 --- a/formulaires/editer_document.php +++ b/formulaires/editer_document.php @@ -134,6 +134,7 @@ function formulaires_editer_document_traiter_dist($id_document='new', $id_parent } $res = formulaires_editer_objet_traiter('document',$id_document,$id_parent,$lier_trad,$retour,$config_fonc,$row,$hidden); + set_request('parents'); $autoclose = "<script type='text/javascript'>if (window.jQuery) jQuery.modalboxclose();</script>"; if (_request('copier_local') OR _request('joindre_upload') diff --git a/medias_autoriser.php b/medias_autoriser.php index 6d2a5c9a73c93694b3ffbeb8c28638bcc9363e38..c043ad6cfe049aaa07f7686c427739c8ba0ec949 100644 --- a/medias_autoriser.php +++ b/medias_autoriser.php @@ -301,3 +301,38 @@ function autoriser_orphelins_supprimer_dist($faire, $type, $id, $qui, $opt){ AND !$qui['restreint']) return true; } + + +/** + * Autoriser a associer des documents a un objet : + * il faut avoir le droit de modifier cet objet + * @param $faire + * @param $type + * @param $id + * @param $qui + * @param $opt + * @return bool + */ +function autoriser_associerdocuments_dist($faire, $type, $id, $qui, $opt){ + if ($type=='document') return false; // pas de document sur les documents + return autoriser('modifier',$type,$id,$qui,$opt); +} + +/** + * Autoriser a dissocier des documents a un objet : + * il faut avoir le droit de modifier cet objet + * @param $faire + * @param $type + * @param $id + * @param $qui + * @param $opt + * @return bool + */ +function autoriser_dissocierdocuments_dist($faire, $type, $id, $qui, $opt){ + if ($type=='document') return false; // pas de document sur les documents + // cas particulier + if (intval($id)<0 AND $id==-$qui['id_auteur']){ + return true; + } + return autoriser('modifier',$type,$id,$qui,$opt); +} diff --git a/modeles/document_case.html b/modeles/document_case.html index b0d406919fe1e6aa12139df244c94af505ef91a5..aba87d0c4f131137a8ca65df8d73198721f8d215 100644 --- a/modeles/document_case.html +++ b/modeles/document_case.html @@ -38,10 +38,11 @@ </div>] <div class="actions"> <BOUCLE_compte(documents_liens){id_document}{0,2} /> - [(#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>] - [(#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>] + [(#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>] + [(#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>] + [(#AUTORISER{modifier,document,#ID_DOCUMENT}|oui) <a href="#URL_ECRIRE{document_edit,id_document=#ID_DOCUMENT}" target="_blank" class="editbox" tabindex="0" role="button"><:medias:bouton_modifier_document:></a> - <//B_compte> + ]<//B_compte> [(#PIPELINE{document_desc_actions,#ARRAY{args,#ARRAY{id_document,#ID_DOCUMENT,position,document_case,objet,#OBJET,id_objet,#ID_OBJET},data,''}})] </div> [(#PIPELINE{afficher_metas_document,#ARRAY{args,#ARRAY{'quoi','document_case','id_document',#ID_DOCUMENT},data,''}})] diff --git a/modeles/document_desc.html b/modeles/document_desc.html index f3b4ca9c5eae244f2228888ca52efa7c7a95f676..b9c222a3b9a79e03d2542aeeaaf57ad2f601ed6d 100644 --- a/modeles/document_desc.html +++ b/modeles/document_desc.html @@ -34,10 +34,11 @@ </div>] <div class="actions"> <BOUCLE_compte(documents_liens){id_document}{0,2} /> - [(#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-safe,#SELF},ajax,<:medias:bouton_enlever_supprimer_document_confirmation:>,'',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]<span>|</span>] - [(#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>] + [(#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>] + [(#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>] + [(#AUTORISER{modifier,document,#ID_DOCUMENT}|oui) <a href="#URL_ECRIRE{document_edit,id_document=#ID_DOCUMENT}" target="_blank" class="editbox" tabindex="0" role="button"><:medias:bouton_modifier_document:></a> - <//B_compte> + ]<//B_compte> [(#PIPELINE{document_desc_actions,#ARRAY{args,#ARRAY{id_document,#ID_DOCUMENT,position,document_desc,objet,#OBJET,id_objet,#ID_OBJET},data,''}})] </div> <div class="nettoyeur"></div> diff --git a/paquet.xml b/paquet.xml index 3fe82ae8e6d750a2fd54a020b9b10b226c71db09..24e213308e5a3045c3c49f98fbb6ba6c32786631 100644 --- a/paquet.xml +++ b/paquet.xml @@ -1,7 +1,7 @@ <paquet prefix="medias" categorie="multimedia" - version="2.10.13" + version="2.10.14" etat="stable" compatibilite="[3.0.0;3.1.*]" logo="prive/themes/spip/images/portfolio-32.png" diff --git a/prive/squelettes/inclure/document_infos.html b/prive/squelettes/inclure/document_infos.html index 1edfde8fa9b122ad943c89f158ea1a945c608d03..f2030571e69cf15944eb1610f65e02174eb707f2 100644 --- a/prive/squelettes/inclure/document_infos.html +++ b/prive/squelettes/inclure/document_infos.html @@ -10,7 +10,7 @@ [(#VU|=={oui}|oui) [<span class='vu'>(#CHEMIN_IMAGE{document-vu-24.png}|balise_img|inserer_attribut{title,<:medias:document_vu:>}|inserer_attribut{alt,<:medias:document_vu:>})</span>] ] - [(#AUTORISER{modifier,#OBJET,#ID_OBJET}|oui) + [(#AUTORISER{dissocierdocuments,#OBJET,#ID_OBJET}|oui) [(#BOUTON_ACTION{<:medias:bouton_enlever_document:>,[(#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT--safe,#SELF})],ajax,'',''})] ] </li>