Changeset 87412 in spip-zone


Ignore:
Timestamp:
Feb 11, 2015, 5:44:13 PM (5 years ago)
Author:
kent1@…
Message:

Une option supplémentaire permettant d'avoir plusieurs boutons d'upload dans le même document

Location:
_plugins_/diogene/diogene_complements/diogene_documents/trunk
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/diogene/diogene_complements/diogene_documents/trunk/diogene_documents_pipelines.php

    r84328 r87412  
    66 * kent1 (http://www.kent1.info - kent1@arscenic.info)
    77 *
    8  * © 2014 - Distribue sous licence GNU/GPL
     8 * © 2014-2015 - Distribue sous licence GNU/GPL
    99 *
    1010 * Utilisation des pipelines par Diogene Documents
     
    3333                        $flux['args']['contexte']['champs_documents'] = array();
    3434
     35                $flux['args']['contexte']['nombre_documents'] = isset($flux['args']['options_complements']['nombre_documents']) ? $flux['args']['options_complements']['nombre_documents'] : 0;
     36
    3537                if(intval($id_objet) > 0){
    3638                        $documents_objet = sql_allfetsel('*','spip_documents as docs LEFT JOIN spip_documents_liens as liens on docs.id_document = liens.id_document','liens.objet='.sql_quote($objet).' AND liens.id_objet='.intval($id_objet));
     
    4345                        }
    4446                }
    45                 $flux['data'] .= recuperer_fond('formulaires/diogene_ajouter_documents',$flux['args']['contexte']);
    46         }
    47         return $flux;
    48 }
    49 
    50 /**
    51  * Insertion dans le pipeline diogene_verifier (Diogene)
    52  *
    53  * Vérification des formulaires qui sont modifiés par Diogene
    54  *
    55  * @param array $flux Le contexte du pipeline
    56  * @return array $flux le contexte modifié passé aux suivants
    57  */
    58 function diogene_documents_diogene_verifier($flux){
    59         $id_diogene = _request('id_diogene');
    60         if(intval($id_diogene)){
    61                 $options_complements = unserialize(sql_getfetsel("options_complements","spip_diogenes","id_diogene=".intval($id_diogene)));
    62                 $erreurs = $flux['args']['erreurs'];
     47
     48                if(isset($flux['args']['options_complements']['documents_un_par_un']) && $flux['args']['options_complements']['documents_un_par_un'] == 'on' && intval($flux['args']['options_complements']['nombre_documents']) >= 1)
     49                        $flux['data'] .= recuperer_fond('formulaires/diogene_ajouter_documents_un_par_un',$flux['args']['contexte']);
     50                else
     51                        $flux['data'] .= recuperer_fond('formulaires/diogene_ajouter_documents',$flux['args']['contexte']);
    6352        }
    6453        return $flux;
     
    8473                        $ajouter_documents = charger_fonction('ajouter_documents', 'action');
    8574                        $mode = joindre_determiner_mode('auto','new',$objet);
    86                         $files = joindre_trouver_fichier_envoye();
    87                         if(is_array($files))
     75                        $files = diogene_document_joindre_trouver_fichier_envoye(array($post['fichier_upload']));
     76                        if(is_array($files)){
    8877                                $nouveaux_doc = $ajouter_documents('new',$files,$objet,$id_objet,$mode);
     78                                foreach($files as $i => $file){
     79                                        $infos_doc = array();
     80                                        if($file['titre'])
     81                                                $infos_doc['titre'] = $file['titre'];
     82                                        if($file['descriptif'])
     83                                                $infos_doc['descriptif'] = $file['descriptif'];
     84                                        if($file['credits'])
     85                                                $infos_doc['credits'] = $file['credits'];
     86                                        if(count($infos_doc) > 0){
     87                                                $test = sql_updateq('spip_documents',$infos_doc,'id_document='.$nouveaux_doc[$i]);
     88                                        }
     89                                }
     90                        }
    8991                }
    9092               
    9193                if(intval($id_objet) > 0){
    9294                        include_spip('action/editer_document');
    93                         $documents_objet = sql_allfetsel('*','spip_documents as docs LEFT JOIN spip_documents_liens as liens on docs.id_document = liens.id_document','liens.objet='.sql_quote($objet).' AND liens.id_objet='.intval($id_objet));
     95                        $documents_objet = sql_allfetsel('id_document','spip_documents_liens','objet='.sql_quote($objet).' AND id_objet='.intval($id_objet));
    9496                        if(_request('titre'))
    9597                                $ancien_titre = _request('titre');
     
    107109                                        foreach(array('titre','credits','descriptif') as $champ){
    108110                                                if(_request($champ.'_'.$id_document)){
    109                                                         set_request($champ,_request($champ.'_'.$id_document));
    110                                                         $infos_doc[$champ] = _request($champ.'_'.$id_document);
     111                                                        $valeur_champ = _request($champ.'_'.$id_document);
     112                                                        set_request($champ,$valeur_champ);
     113                                                        $infos_doc[$champ] = $valeur_champ;
    111114                                                }
    112                                                 else{
     115                                                else
    113116                                                        set_request($champ,'');
    114                                                 }
    115117                                        }
    116118                                        $err = document_modifier($id_document, $infos_doc);
     
    128130}
    129131
     132function diogene_document_joindre_trouver_fichier_envoye($post){
     133        if (is_array($post)){
     134                $i = 1;
     135                include_spip('action/ajouter_documents');
     136                foreach ($post as $file) {
     137                        if (is_array($file['name'])){
     138                                while (count($file['name'])){
     139                                                $test=array(
     140                                                        'error'=>array_shift($file['error']),
     141                                                        'name'=>array_shift($file['name']),
     142                                                        'tmp_name'=>array_shift($file['tmp_name']),
     143                                                        'type'=>array_shift($file['type']),
     144                                                        );
     145                                                if (!($test['error'] == 4)){
     146                                                        if (is_string($err = joindre_upload_error($test['error'])))
     147                                                                return $err; // un erreur upload
     148                                                        if (!is_array(verifier_upload_autorise($test['name'])))
     149                                                                return _T('medias:erreur_upload_type_interdit',array('nom'=>$test['name']));
     150                                                        if(_request('titre_document'.$i))
     151                                                                $test['titre'] = _request('titre_document'.$i);
     152                                                        if(_request('descriptif_document'.$i))
     153                                                                $test['descriptif'] = _request('descriptif_document'.$i);
     154                                                        if(_request('credits_document'.$i))
     155                                                                $test['credits'] = _request('credits_document'.$i);
     156                                                        $files[]=$test;
     157                                                }
     158                                                $i++;
     159                                }
     160                        }
     161                        else {
     162                                //UPLOAD_ERR_NO_FILE
     163                                if (!($file['error'] == 4)){
     164                                        if (is_string($err = joindre_upload_error($file['error'])))
     165                                                return $err; // un erreur upload
     166                                        if (!is_array(verifier_upload_autorise($file['name'])))
     167                                                return _T('medias:erreur_upload_type_interdit',array('nom'=>$file['name']));
     168                                        $files[]=$file;
     169                                }
     170                        }
     171                }
     172                if (!count($files))
     173                        return _T('medias:erreur_indiquez_un_fichier');
     174        }
     175        return $files;
     176}
    130177/**
    131178 * Insertion dans le pipeline diogene_objets (Diogene)
     
    165212 * Insertion dans le pipeline diogene_champs_pre_edition (Diogene)
    166213 *
    167  * Ajoute la prise en compte des champs insérés dans le diogène
     214 * Ajoute la prise en compte des champs insérés dans le diogène :
     215 * - champs_documents : tableau de champs associés aux documents dans l'interface de saisie
     216 * - nombre_documents : nombre maximal de documents pouvant être lié
     217 * - documents_un_par_un : affichera dans le formulaire autant de bouton parcourir que de documents possibles
    168218 *
    169219 * @param array $array
     
    173223        $array[] = 'champs_documents';
    174224        $array[] = 'nombre_documents';
     225        $array[] = 'documents_un_par_un';
    175226        return $array;
    176227}
  • _plugins_/diogene/diogene_complements/diogene_documents/trunk/formulaires/diogene_ajouter_documents.html

    r86751 r87412  
    44                <ul>
    55                        <BOUCLE_documents(DOCUMENTS){id_article}{tout}>
    6                         <li class="editer editer_document_#ID_DOCUMENT">
     6                        <li class="editer editer_document editer_document_#ID_DOCUMENT">
    77                                <div class="logo_document">
    88                                #LOGO_DOCUMENT
     
    3030                                                <div class="choix">
    3131                                                        <input type="checkbox" name="supprimer_#ID_DOCUMENT" id="supprimer_#ID_DOCUMENT"[(#ENV{supprimer_#ID_DOCUMENT}|oui)checked="checked"] />
    32                                                         <label for="supprimer_#ID_DOCUMENT"><:lien_supprimer:></label>
     32                                                        <label for="supprimer_#ID_DOCUMENT"><:diogene_documents:lien_supprimer_document:></label>
    3333                                                </div>
    3434                                        </li>
  • _plugins_/diogene/diogene_complements/diogene_documents/trunk/lang/diogene_documents_fr.php

    r83984 r87412  
    77
    88$GLOBALS[$GLOBALS['idx_lang']] = array(
    9 
     9        'explication_documents_un_par_un' => 'Afficher autant de bouton parcourir que le nombre maximal de documents (si supérieur à 1).',
    1010        'label_champs_documents' => 'Champs associés aux documents',
    11         'label_nombre_documents' => 'Nombre de document maximal',
     11        'label_documents_un_par_un' => 'Téléverser les documents un par un',
     12        'label_ajouter_nouveaux_documents' => 'Ajouter des documents',
     13        'label_editer_documents_articles' => 'Éditer les documents liés',
     14        'label_nombre_documents' => 'Nombre de document maximal (0 pour l\'infini)',
     15        'lien_supprimer_document' => 'Supprimer ce document',
    1216        'legende_documents' => 'Documents',
    1317);
  • _plugins_/diogene/diogene_complements/diogene_documents/trunk/paquet.xml

    r86751 r87412  
    22        prefix="diogene_documents"
    33        categorie="edition"
    4         version="1.0.2"
     4        version="1.1.0"
    55        etat="test"
    66        compatibilite="[3.0.0;3.0.*]"
     
    1212        <auteur lien="http://www.kent1.info" mail="kent1@arscenic.info">kent1</auteur>
    1313
    14         <copyright>2014</copyright>
     14        <copyright>2014-2015</copyright>
    1515
    1616        <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
    1717
    1818        <pipeline nom="diogene_ajouter_saisies" inclure="diogene_documents_pipelines.php" />
    19         <pipeline nom="diogene_verifier" inclure="diogene_documents_pipelines.php" />
    2019        <pipeline nom="diogene_traiter" inclure="diogene_documents_pipelines.php" />
    2120        <pipeline nom="diogene_champs_texte" inclure="diogene_documents_pipelines.php" />
  • _plugins_/diogene/diogene_complements/diogene_documents/trunk/prive/diogene_documents_champs_texte.html

    r83984 r87412  
    1212                                maxlength=2,
    1313                                defaut=0})]
     14                        [(#SAISIE{case,documents_un_par_un,
     15                                label=<:diogene_documents:label_documents_un_par_un:>,
     16                                explication=<:diogene_documents:explication_documents_un_par_un:>})]
    1417                </ul>
    1518        </fieldset>
Note: See TracChangeset for help on using the changeset viewer.