From 4ef25a1ef8e6c6ff9aa0de276451e496b3deda31 Mon Sep 17 00:00:00 2001 From: "cedric@yterium.com" <> Date: Fri, 4 Feb 2011 23:12:30 +0000 Subject: [PATCH] report de r44142 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 --- .gitattributes | 1 + action/ajouter_documents.php | 16 +++++----------- inc/verifier_document_mode_vignette.php | 24 ++++++++++++++++++++++++ plugin.xml | 2 +- 4 files changed, 31 insertions(+), 12 deletions(-) create mode 100644 inc/verifier_document_mode_vignette.php diff --git a/.gitattributes b/.gitattributes index ef6d1803..96d2cd57 100644 --- a/.gitattributes +++ b/.gitattributes @@ -59,6 +59,7 @@ inc/getdocument.php -text inc/joindre_document.php -text inc/marquer_doublons_doc.php -text inc/renseigner_document.php -text +inc/verifier_document_mode_vignette.php -text inc/vignette.php -text javascript/jquery.MultiFile.js -text javascript/medias_edit.js -text diff --git a/action/ajouter_documents.php b/action/ajouter_documents.php index 4b01e12f..1fc398dd 100644 --- a/action/ajouter_documents.php +++ b/action/ajouter_documents.php @@ -91,7 +91,7 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, $mode = ((isset($file['mode']) AND $file['mode'])?$file['mode']:$mode); include_spip('inc/modifier'); - if (isset($file['distant']) AND $file['distant'] AND $mode=='vignette') { + if (isset($file['distant']) AND $file['distant'] AND !in_array($mode,array('choix','auto','image','document'))) { include_spip('inc/distant'); $file['tmp_name'] = _DIR_RACINE . copie_locale($source); $source = $file['tmp_name']; @@ -146,7 +146,7 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, $champs = array_merge($champs,$infos); // Si mode == 'choix', fixer le mode image/document - if ($mode == 'choix' OR !in_array($mode, array('vignette', 'image', 'document'))) { + if (in_array($mode,array('choix','auto'))) { $choisir_mode_document = charger_fonction('choisir_mode_document','inc'); $mode = $choisir_mode_document($champs, $champs['inclus'] == 'image', $objet); } @@ -179,7 +179,6 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, include_spip('action/editer_document'); // Installer le document dans la base - // attention piege semantique : les images s'installent en mode 'vignette' if (!$id_document){ $id_document = insert_document(); spip_log ("ajout du document ".$file['tmp_name']." ".$file['name']." (M '$mode' T '$objet' L '$id_objet' D '$id_document')"); @@ -360,15 +359,10 @@ function verifier_taille_document_acceptable($infos){ 'hauteur_vignette' => $infos['hauteur'])) )); } - - // Si on veut uploader une vignette, il faut qu'elle ait ete bien lue - if ($infos['mode'] == 'vignette') { - if ($infos['inclus'] != 'image') - return _T('medias:erreur_format_fichier_image',array('nom'=> $infos['fichier'])); #SVG - if (!($infos['largeur'] OR $infos['hauteur'])) - return _T('medias:erreur_upload_vignette',array('nom'=>$infos['fichier'])); - } + // verifier en fonction du mode si une fonction est proposee + if ($verifier_document_mode = charger_fonction("verifier_document_mode_".$infos['mode'],"inc",true)) + return $verifier_document_mode($infos); return true; } diff --git a/inc/verifier_document_mode_vignette.php b/inc/verifier_document_mode_vignette.php new file mode 100644 index 00000000..83176528 --- /dev/null +++ b/inc/verifier_document_mode_vignette.php @@ -0,0 +1,24 @@ +<?php +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2010 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; + +function inc_verifier_document_mode_vignette_dist($infos){ + + // Si on veut uploader une vignette, il faut qu'elle ait ete bien lue + if ($infos['inclus'] != 'image') + return _T('medias:erreur_format_fichier_image',array('nom'=> $infos['fichier'])); #SVG + + if (!($infos['largeur'] OR $infos['hauteur'])) + return _T('medias:erreur_upload_vignette',array('nom'=>$infos['fichier'])); + + return true; +} \ No newline at end of file diff --git a/plugin.xml b/plugin.xml index 82ca0d92..40d3ac89 100644 --- a/plugin.xml +++ b/plugin.xml @@ -2,7 +2,7 @@ <nom>Medias</nom> <auteur>Collectif SPIP, Cedric Morin & Romy Duhem-Verdiere pour la mediatheque</auteur> <icon>images/portfolio-64.png</icon> - <version>1.6.0</version> + <version>2.0.0</version> <version_base>0.11.0</version_base> <etat>dev</etat> <description>Gestion des medias de SPIP</description> -- GitLab