Changeset 44142 in spip-zone


Ignore:
Timestamp:
Feb 4, 2011, 4:56:31 PM (9 years ago)
Author:
cedric@…
Message:

generaliser le cas derogatoire du mode=vignette pour permettre a des plugins d'ajouter des documents avec d'autres modes

Il suffit de fournir une fonction surchargeable inc_verifier_document_mode_xxx_dist() pour que celle ci soit appelee au chargement d'un document dans le mode xxx

Location:
_plugins_/mediatheque
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/mediatheque/action/ajouter_documents.php

    r43455 r44142  
    3636/**
    3737 * Ajouter un document (au format $_FILES)
    38  * $id_document,        # document a remplacer, ou pour une vignette, l'id_document de maman
    39  * $source,     # le fichier sur le serveur (/var/tmp/xyz34)
    40  * $nom_envoye, # son nom chez le client (portequoi.pdf)
    41  * $objet,      # lie a un article, une breve ou une rubrique ?
    42  * $id_objet,   # identifiant de l'article (ou rubrique) lie
    43  * $mode,       # 'image' => image en mode image
    44  *          'vignette' => personnalisee liee a un document
    45  *          'document' => doc ou image en mode document
    46  *          'distant' => lien internet
    47  * $actifs      # les documents dont il faudra ouvrir la boite de dialogue
    4838 *
    49  * @param unknown_type $id_document
    50  * @param array $source
    51  * @param unknown_type $nom_envoye
    52  * @param unknown_type $objet
    53  * @param unknown_type $id_objet
    54  * @param unknown_type $mode
    55  * @param unknown_type $documents_actifs
    56  * @param unknown_type $titrer
    57  * @return unknown
     39 * @param  $id_document
     40 *    document a remplacer
     41 * @param  $file
     42 *   description au format $_FILES enrichi :
     43 *   tmp_name : le fichier sur le serveur (/var/tmp/xyz34)
     44 *   name : le nom initial chez le client (portequoi.pdf)
     45 *   titrer : true/false
     46 *   mode : choix (ou auto), image, document, vignette, ...
     47 *   distant : url distante
     48 *
     49 * http://doc.spip.org/@ajouter_un_document
     50 *
     51 * @param  $objet
     52 *   objet parent
     53 * @param  $id_objet
     54 *   id_objet du parent
     55 * @param  $mode
     56 *   mode par defaut si pas precise pour le document
     57 * @return array|bool|int|mixed|string|unknown
    5858 */
    59 // http://doc.spip.org/@ajouter_un_document
    6059function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, $mode) {
    6160       
     
    7675
    7776        include_spip('inc/modifier');
    78         if (isset($file['distant']) AND $file['distant'] AND $mode=='vignette') {
     77        if (isset($file['distant']) AND $file['distant'] AND !in_array($mode,array('choix','auto','image','document'))) {
    7978                include_spip('inc/distant');
    8079                $file['tmp_name'] = _DIR_RACINE . copie_locale($source);
     
    131130
    132131                // Si mode == 'choix', fixer le mode image/document
    133                 if ($mode == 'choix' OR !in_array($mode, array('vignette', 'image', 'document'))) {
     132                if (in_array($mode,array('choix','auto'))) {
    134133                        $choisir_mode_document = charger_fonction('choisir_mode_document','inc');
    135134                        $mode = $choisir_mode_document($champs, $champs['inclus'] == 'image', $objet);
     
    164163        include_spip('action/editer_document');
    165164        // Installer le document dans la base
    166         // attention piege semantique : les images s'installent en mode 'vignette'
    167165        if (!$id_document){
    168166                $id_document = insert_document();
     
    344342                                ));
    345343        }
    346        
    347         // Si on veut uploader une vignette, il faut qu'elle ait ete bien lue
    348         if ($infos['mode'] == 'vignette') {
    349                 if ($infos['inclus'] != 'image')
    350                         return _T('medias:erreur_format_fichier_image',array('nom'=> $infos['fichier'])); #SVG
    351 
    352                 if (!($infos['largeur'] OR $infos['hauteur']))
    353                         return _T('medias:erreur_upload_vignette',array('nom'=>$infos['fichier']));
    354         }
     344
     345  // verifier en fonction du mode si une fonction est proposee
     346        if ($verifier_document_mode = charger_fonction("verifier_document_mode_".$infos['mode'],"inc",true))
     347                return $verifier_document_mode($infos);
    355348
    356349        return true;
  • _plugins_/mediatheque/plugin.xml

    r44141 r44142  
    1111        <icon>img_pack/portfolio-64.png</icon>
    1212        <auteur>[Cedric MORIN->http://www.yterium.net] &amp; [romy.tetue.net->http://romy.tetue.net] &amp; superyms--(traduction)</auteur>
    13         <version>1.5.0</version>
     13        <version>1.6.0</version>
    1414        <version_base>0.11</version_base>
    1515        <etat>stable</etat>
Note: See TracChangeset for help on using the changeset viewer.