Changeset 32287 in spip-zone


Ignore:
Timestamp:
Oct 22, 2009, 4:03:10 PM (10 years ago)
Author:
brunobergot@…
Message:

on passe le formulaire_upload en CVT :
-* comme avant le formulaire récupère le contexte depuis lequel il est appelé (cela ne fera que la 4e balise type_boucle sur la zone...)
-* hors d'une boucle et sans paramètres, le formulaire prends en argument l'id_auteur de l'auteur connecté
-* on peut aussi appeler le formulaire avec des arguments explicites (type_objet,id_bojet)
-* un troisième argument permet de définir le fond à utiliser pour l'affichage de la liste des documents

Location:
_plugins_/formulaire_upload
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/formulaire_upload/balise/formulaire_upload.php

    r21747 r32287  
    33if (!defined("_ECRIRE_INC_VERSION")) return;    #securite
    44
    5 /********************************/
    6 /* GESTION DU FORMULAIRE UPLOAD */
    7 /********************************/
    8 
    95// Contexte du formulaire
    10 
    116function balise_FORMULAIRE_UPLOAD ($p) {
    12         $p = calculer_balise_dynamique($p,'FORMULAIRE_UPLOAD', array('id_rubrique', 'id_forum', 'id_article', 'id_breve', 'id_syndic'));
    13         return $p;
    14 }
    15 
    16 
    17 // http://doc.spip.org/@balise_FORMULAIRE_UPLOAD_stat
    18 function balise_FORMULAIRE_UPLOAD_stat($args, $filtres) {
    19         if(!isset($args[5]) || !preg_match(",article|breve|rubrique|syndic|forum|auteur,",$args[5]))
    20                 $args[5] = "";
    21         if(!$args[6] || !preg_match(",\w+,",$args[6]))
    22                 $args[6] = "upload";
    23                
    24         return $args;
    25 }
    26 
    27 
    28 // http://doc.spip.org/@balise_FORMULAIRE_UPLOAD_dyn
    29 function balise_FORMULAIRE_UPLOAD_dyn(
    30         $id_rubrique, $id_forum, $id_article, $id_breve, $id_syndic, $type, $fond
    31 ) {
    32 
    33         // Le contexte nous servira peut-etre a identifier
    34         // le type d'upload (est-ce destine a un article etc)
    35         // Pour l'instant on uploade tout dans la fiche auteur
    36 
    37         // id_rubrique est parfois passee pour les articles, on n'en veut pas
    38         $ids = array();
    39         if ($id_rubrique > 0 AND ($id_article OR $id_breve OR $id_syndic))
    40                 $id_rubrique = 0;
    41 
    42         if (!$proprietaire = intval($GLOBALS['auteur_session']['id_auteur']))
    43                 return false;
    44 
    45         if($type) {
    46                 if($type=="auteur") {
    47                         $ids['id_auteur'] = $proprietaire;
    48                         $id = $proprietaire;
    49                 }       else if($x = intval(${"id_".$type})) {
    50                         $ids['id_'.$type] = $x;
    51                         $id = $x;       
    52                 }
    53         } else
    54                 foreach (array('id_article', 'id_breve', 'id_rubrique', 'id_syndic', 'id_forum') as $o) {
    55                         if ($x = intval($$o)) {
    56                                 $ids[$o] = $x;
    57                                 $id = $x;
    58                                 $type = str_replace('id_', '', $o);
    59                         }
    60                 }
    61 
    62         if (!$type) {
    63                 $type = 'auteur';
    64                 $id = $proprietaire;
    65                 $ids['id_auteur'] = $id;
    66         }
    67 
    68         include_spip('inc/autoriser');
    69         if (!autoriser('joindredocument', $type, $id))
    70                 return false;
    71 
    72         $invalider = false;
    73 
    74         // supprimer des documents ?
    75         if (is_array(_request('supprimer')))
    76         foreach (_request('supprimer') as $supprimer) {
    77                 if ($supprimer = intval($supprimer)
    78                 AND $s = spip_query("SELECT * FROM spip_documents_liens WHERE id_objet="._q($id)." AND objet='$type' AND id_document="._q($supprimer))
    79                 AND $t = spip_fetch_array($s)) {
    80                         include_spip('inc/documents');
    81                         $s = spip_query("SELECT * FROM spip_documents WHERE id_document="._q($supprimer));
    82                         $t = spip_fetch_array($s);
    83                         unlink(copie_locale(get_spip_doc($t['fichier'])));
    84                         spip_query("DELETE FROM spip_documents_liens WHERE id_document="._q($supprimer));
    85                         spip_query("DELETE FROM spip_documents WHERE id_document="._q($supprimer));
    86                         $invalider = true;
    87                         spip_log("supprimer document ($type)".$supprimer, 'upload');
    88                 }
    89         }
    90 
    91         // Ajouter un document
    92         if ($files = ($_FILES ? $_FILES : $HTTP_POST_FILES)) {
    93                 spip_log($files, 'upload');
    94                 include_spip('action/joindre');
    95                 $joindre1 = charger_fonction('joindre1', 'inc');
    96                 $joindre1($files, 'document', $type, $id, 0,
    97                  $hash, $redirect, $documents_actifs, $iframe_redirect);
    98                 $invalider = true;
    99                 spip_log($files, 'upload');
    100         }
    101 
    102         if ($invalider) {
    103                 include_spip('inc/invalideur');
    104                 suivre_invalideur("0",true);
    105                 spip_log('invalider', 'upload');
    106         }
    107 
    108         $script_hidden = array();
    109         foreach($ids as $t => $id)
    110                 $script_hidden[] = $t."=".$id;
    111         $script_hidden = "?".join("&",$script_hidden);
    112 
    113         return array('formulaires/'.$fond, 0,
    114 
    115         array_merge($ids,
    116         array(
    117                 'url' => $script, # ce sur quoi on fait le action='...'
    118                 'url_post' => $script_hidden, # pour les variables hidden
    119                 'arg' => $arg,
    120                 'hash' => $hash,
    121                 'nobot' => _request('nobot'),
    122                 'debug' => $debug /* un truc a afficher si on veut debug */
    123                 ))
     7        // on prend nom de la cle primaire de l'objet pour calculer sa valeur
     8    $_id_objet = $p->boucles[$p->id_boucle]->primary;
     9        return calculer_balise_dynamique(
     10                $p,
     11                'FORMULAIRE_UPLOAD',
     12                array(
     13                        'FORMULAIRE_UPLOAD_TYPE_BOUCLE', // demande du type d'objet
     14                        $_id_objet
     15                )
    12416        );
    12517}
    12618
     19function balise_FORMULAIRE_UPLOAD_stat($args, $filtres) {
     20        // si on force les parametres par #FORMULAIRE_UPLOAD{article,12,inc-upload_truc}
     21        // on enleve les parametres calcules
     22        if (isset($args[3])) {
     23                array_shift($args);
     24                array_shift($args);
     25        }
     26        $objet = $args[0];
     27        $id_objet = $args[1];
     28        if(!$fond_documents = $args[2])
     29                $fond_documents = 'inc-upload_documents';
     30        // pas dans une boucle ? on attache a l'auteur connecté
     31        if ($objet == 'balise_hors_boucle') {
     32                $objet = 'auteur';
     33                $id_objet = $GLOBALS['auteur_session']['id_auteur'];
     34        } else {
     35                $objet = table_objet($objet);
     36        }
     37        // on envoie les arguments a la fonction charger
     38        // du formulaire CVT fomulaires/upload.php
     39        return array($objet, $id_objet, $fond_documents);
     40       
     41}
     42
     43// balise type_boucle de Rastapopoulos dans le plugin etiquettes
     44// present aussi dans plugin ajaxforms, notation...
     45// bref, a integrer dans le core ? :p
     46function balise_FORMULAIRE_UPLOAD_TYPE_BOUCLE($p) {
     47        $type = $p->boucles[$p->id_boucle]->id_table;
     48        $p->code = $type ? $type : "balise_hors_boucle";
     49        return $p; 
     50}
     51
    12752?>
  • _plugins_/formulaire_upload/formulaires/upload.html

    r32263 r32287  
    11<div class="formulaire_spip formulaire_upload">
    2 
    3 <form action="#ENV{url}#formulaire_upload" method="post" enctype="multipart/form-data">
    4 [(#ENV{url_post}|form_hidden)]
    5 
    6 
    7 [(#REM)
    8         Ce qui suit est herite du formulaire forum mais ne semble plus servir, a voir...
    9 ]
    10 
    11 [<input type="hidden" name="arg" value="(#ENV{arg})" />]
    12 [<input type="hidden" name="hash" value="(#ENV{hash})" />]
    13 [<input type="hidden" name="verif_(#ENV{hash})" value="ok" />]
    14 [<input type="hidden" name="afficher_texte" value="(#ENV{afficher_texte})" />]
    15 
    16 
    17 #ENV{debug}
    18 
    19         <fieldset><legend><:formupload:yourfiles:></legend>
    20 
    21         <B_docs>
    22                 #ANCRE_PAGINATION
    23         <BOUCLE_docs(DOCUMENTS)
    24         {id_auteur?}{id_article?}{id_breve?}{id_rubrique?}
    25         {!par id_document}{tout}{pagination 3}>
    26         <div class="bord_formup">
    27         <div class="spip_doc_descriptif spip_doc_logo float#LANG_RIGHT">
    28         [(#SET{logo,[(#LOGO_DOCUMENT|#URL_DOCUMENT
    29                 |inserer_attribut{title,#TYPE_DOCUMENT[
    30                         - (#TAILLE|taille_en_octets)]})]})]
    31         [(#GET{logo}|extraire_attribut{width}|>{78}|?{
    32                 [(#SET{logo,[(#GET{logo}|image_reduire{140,140}|image_recadre{78,78})]
    33         })]})]
    34         #GET{logo}
    35                 [<br />(#DATE|affdate_court)]
    36         </div>
    37         <div class='float#LANG_RIGHT decrire_doc'>
    38                 <div class='forboxcheck checkbox'>
    39                 <input type="checkbox" name="supprimer[]" value="#ID_DOCUMENT" title="<:formupload:doc_delete:>" />
    40                 </div>
    41        
    42         <h4 class="#EDIT{titre}">[(#TITRE|sinon{[(#FICHIER|basename|couper{20})]})]</h4>
    43         [<div class="spip_doc_descriptif #EDIT{descriptif}">(#DESCRIPTIF|sinon{<:info_descriptif:>})</div>]
    44        
    45         </div>
    46         <br class='nettoyeur' />
    47         [(#CONFIG{formupload/insert_code}|?{' ',''})
    48         <div class="insert_code">
    49                 <div class="strong"><:formupload:insert_code:></div>
    50                 [(#TYPE_DOCUMENT|match{jpg|gif|png}|?{' ',''})
    51                 <abbr title="<:formupload:img_left:>">&lt;img#ID_DOCUMENT|left&gt;</abbr> <abbr title="<:formupload:img_center:>">&lt;img#ID_DOCUMENT|center&gt;</abbr> <abbr title="<:formupload:img_right:>">&lt;img#ID_DOCUMENT|right&gt;]
    52                 [(#TYPE_DOCUMENT|match{jpg|gif|png}|?{'',' '})
    53                 <abbr title="<:formupload:doc_left:>">&lt;doc#ID_DOCUMENT|left&gt;</abbr> <abbr title="<:formupload:doc_center:>">&lt;doc#ID_DOCUMENT|center&gt;</abbr> <abbr title="<:formupload:doc_right:>">&lt;doc#ID_DOCUMENT|right&gt;</abbr>]
    54         </div>]
    55         </div>
    56         </BOUCLE_docs>
    57                 [<p class="pagination">(#PAGINATION)</p>]
    58         </B_docs>
    59                 [<p class="pagination">(#PAGINATION)</p>]
    60         <//B_docs>
    61 
    62         [(#REM) Piege a robots spammeurs ]
    63         <p style='display:none;'><label for="nobot"><:antispam_champ_vide:></label>
    64         <input type="text" name="nobot" id="nobot" value="#ENV{nobot}" size="10" /></p>
    65 
    66         <div class="inputfile">
    67                 <label for="fichier"><:formupload:choosefiles:></label>
    68                 <input type="file" name="fichier" class="forml" style="padding:0; font-size:0.8em" [ accept="(#CONFIG{formupload/files_accepted})"][ maxlength="(#CONFIG{formupload/files_number})"] />
    69        
    70 
    71         <p class="spip_bouton"><input type="submit" value="<:bouton_enregistrer:>" /><br style="clear:both;" /></p>
    72         </div>
    73        
     2<br class='bugajaxie' />
     3[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
     4[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
     5[(#ENV{editable})
     6<form action="#ENV{action}#formulaire_upload" method="post" enctype="multipart/form-data">
     7        [(#REM) declarer les hidden qui declencheront le service du formulaire parametre : url d'action ]
     8        #ACTION_FORMULAIRE{#ENV{action}}
     9        <fieldset>
     10                <legend><:formupload:yourfiles:></legend>
     11                [(#INCLURE{fond=formulaires/#ENV*{fond_documents}}{env})]
     12                <ul>
     13                        <li class='saisie_fichier[ (#ENV**{erreurs}|table_valeur{fichier}|oui)erreur]'>
     14                        <div>
     15                                <label for="fichier"><:formupload:choosefiles:></label>
     16                                <input type="file" id="fichier" name="fichier"[ accept="(#CONFIG{formupload/files_accepted})"][ maxlength="(#CONFIG{formupload/files_number})"] />
     17                        </div>
     18                        </li>
     19                </ul>
     20                [(#REM) Piege a robots spammeurs ]
     21                <p style="display: none;">
     22                        <label for="nobot_forum"><:antispam_champ_vide:></label>
     23                        <input type="text" class="text" name="nobot" id="nobot_forum" value="#ENV{nobot}" size="10" />
     24                </p>
     25                <p class="spip_bouton"><input type="submit" value="<:bouton_enregistrer:>" /><br style="clear:both;" /></p>
    7426        </fieldset>
    7527        <br style="clear:both;" />
    76 
    77 
     28</form>]
    7829</div>
    79 </form>
    80 
    81 <br style="clear:both" />
  • _plugins_/formulaire_upload/lang/formupload_fr.php

    r13648 r32287  
    1313        'img_center' => 'Image centr&eacute;e',
    1414        'img_right' => 'Image flottante &agrave; droite',
     15        'msg_doc_added' => 'Document(s) ajout&eacute;(s)',
     16        'msg_doc_deleted' => 'Document(s) supprim&eacute;(s)',
     17        'msg_nothing_to_do' => 'Rien &agrave; faire',
    1518        'Z' => 'ZZzZZzzz'
    1619
Note: See TracChangeset for help on using the changeset viewer.