From 80cfdf992fc0c4fe882b73f62584a01dfd226511 Mon Sep 17 00:00:00 2001 From: "cedric@yterium.com" <> Date: Mon, 8 May 2017 07:33:08 +0000 Subject: [PATCH] Suite de r104308 et r104309 : on retablit le fonctionnement iso de inc-upload_document.html qui determine lui meme avec son env les methodes d'upload via filtre medias_lister_methodes_upload et pipeline medias_methodes_upload Ainsi on conserve la compat complete avec les versions anterieures de SPIP, tout en beneficiant de l'extensibilite des methodes d'upload --- formulaires/illustrer_document.php | 11 --------- formulaires/inc-upload_document.html | 7 +++--- formulaires/joindre_document.php | 17 ------------- medias_fonctions.php | 36 ++++++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 31 deletions(-) diff --git a/formulaires/illustrer_document.php b/formulaires/illustrer_document.php index fa9e407c..c45a7198 100644 --- a/formulaires/illustrer_document.php +++ b/formulaires/illustrer_document.php @@ -31,17 +31,6 @@ function formulaires_illustrer_document_charger_dist($id_document) { $valeurs['id_vignette'] = $vignette['id_document']; $valeurs['_pipeline'] = array('editer_contenu_objet', array('type' => 'illustrer_document', 'id' => $id_document)); - // méthodes d'upload disponibles - $valeurs['_methodes_upload'] = array(); - $valeurs['_methodes_upload']['upload'] = array('label_lien'=>_T('medias:bouton_download_local'),'label_bouton'=>_T('bouton_upload')); - $valeurs['_methodes_upload']['distant'] = array('label_lien'=>_T('medias:bouton_download_sur_le_web'),'label_bouton'=>_T('bouton_choisir')); - - // pipeline pour les méthodes d'upload - $valeurs['_methodes_upload'] = pipeline('medias_methodes_upload', array( - 'args' => array('objet' => 'document', 'id_objet' => $id_document), - 'data' => $valeurs['_methodes_upload'] - )); - return $valeurs; } diff --git a/formulaires/inc-upload_document.html b/formulaires/inc-upload_document.html index 13c9e3bf..66ad5345 100644 --- a/formulaires/inc-upload_document.html +++ b/formulaires/inc-upload_document.html @@ -6,9 +6,10 @@ [(#ENV{joindre_distant}|oui)#SET{methode,distant}] [(#ENV{joindre_ftp}|oui)#SET{methode,ftp}] -<div id="defaultsubmit#GET{domid}" class="none">DEFAULT</div> +#SET{methodes_upload,#ENV**|medias_lister_methodes_upload} -<BOUCLE_methodes(DATA){source tableau,#ENV{_methodes_upload}}> +<div id="defaultsubmit#GET{domid}" class="none">DEFAULT</div> +<BOUCLE_methodes(DATA){source tableau,#GET{methodes_upload}}> #SET{methode_upload,#CLE} <div class='joindre_mode#GET{domid}[(#GET{methode}|=={#CLE}|non)none-js]' id='joindre_#CLE#GET{domid}'> @@ -17,7 +18,7 @@ <div class='sourceup'> [(#SET{cpt,1})] <:medias:bouton_download_depuis:> - <BOUCLE_methodes_liens(DATA){source tableau,#ENV{_methodes_upload}}> + <BOUCLE_methodes_liens(DATA){source tableau,#GET{methodes_upload}}> [(#GET{cpt}|>{1}|oui) [(#VAL{'|'})] ] diff --git a/formulaires/joindre_document.php b/formulaires/joindre_document.php index 95c76faa..caa48cac 100644 --- a/formulaires/joindre_document.php +++ b/formulaires/joindre_document.php @@ -83,23 +83,6 @@ function formulaires_joindre_document_charger_dist( $valeurs = array(); $mode = joindre_determiner_mode($mode, $id_document, $objet); - // méthodes d'upload disponibles - $valeurs['_methodes_upload'] = array(); - $valeurs['_methodes_upload']['upload'] = array('label_lien'=>_T('medias:bouton_download_local'),'label_bouton'=>_T('bouton_upload')); - if($proposer_media && !empty($objet) && $id_objet != 0){ - $valeurs['_methodes_upload']['mediatheque'] = array('label_lien'=>_T('medias:bouton_download_par_mediatheque'),'label_bouton'=>_T('medias:bouton_attacher_document')); - } - if($proposer_ftp) { - $valeurs['_methodes_upload']['ftp'] = array('label_lien'=>_T('medias:bouton_download_par_ftp'),'label_bouton'=>_T('bouton_choisir')); - } - $valeurs['_methodes_upload']['distant'] = array('label_lien'=>_T('medias:bouton_download_sur_le_web'),'label_bouton'=>_T('bouton_choisir')); - - - // pipeline pour les méthodes d'upload - $valeurs['_methodes_upload'] = pipeline('medias_methodes_upload', array( - 'args' => array('objet' => $objet, 'id_objet' => $id_objet), - 'data' => $valeurs['_methodes_upload'] - )); $valeurs['id'] = $id_document; $valeurs['_mode'] = $mode; diff --git a/medias_fonctions.php b/medias_fonctions.php index e2b69850..6710704c 100644 --- a/medias_fonctions.php +++ b/medias_fonctions.php @@ -284,3 +284,39 @@ function filtre_vignette_dist($extension = 'defaut', $get_chemin = false) { // retourne une balise <img ... /> return $balise_img($fichier); } + +/** + * Determiner les methodes upload en fonction du env de inc-upload_document + * + * @param string|array $env + * @return array + */ +function medias_lister_methodes_upload($env) { + if (is_string($env)) { + $env = unserialize($env); + } + + $methodes = array(); + // méthodes d'upload disponibles + $methodes = array(); + $methodes['upload'] = array('label_lien'=>_T('medias:bouton_download_local'),'label_bouton'=>_T('bouton_upload')); + + if((isset($env['mediatheque']) and $env['mediatheque'])){ + $methodes['mediatheque'] = array('label_lien'=>_T('medias:bouton_download_par_mediatheque'),'label_bouton'=>_T('medias:bouton_attacher_document')); + } + + if((isset($env['proposer_ftp']) and $env['proposer_ftp'])){ + $methodes['ftp'] = array('label_lien'=>_T('medias:bouton_download_par_ftp'),'label_bouton'=>_T('bouton_choisir')); + } + $methodes['distant'] = array('label_lien'=>_T('medias:bouton_download_sur_le_web'),'label_bouton'=>_T('bouton_choisir')); + + // pipeline pour les méthodes d'upload + $methodes = pipeline('medias_methodes_upload', + array( + 'args' => array('objet' => $env['objet'], 'id_objet' => $env['id_objet']), + 'data' => $methodes + ) + ); + + return $methodes; +} \ No newline at end of file -- GitLab