Skip to content
Extraits de code Groupes Projets
Valider 1df44ae4 rédigé par cedric@yterium.com's avatar cedric@yterium.com
Parcourir les fichiers

Report de r89155 : Fix https://core.spip.net/issues/3380 : il faut verifier...

Report de r89155 : 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
parent aee03e91
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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
......
......@@ -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);
}
......
......@@ -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')
......
......@@ -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);
}
......@@ -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,''}})]
......
......@@ -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>
......
<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"
......
......@@ -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>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter