Browse Source

Un peu de nettoyage de code supplémentaire. Demain on branche la partie "Formidable".

master
xdjuj@apsulis.com 10 years ago
parent
commit
444b17071f
  1. 2
      noisettes/uploadify.html
  2. 6
      paquet.xml
  3. 2
      theme/uploadify/uploadify.css
  4. 167
      uploadify.html

2
noisettes/uploadify.html

@ -4,7 +4,7 @@
<div id="conteneur-uploadify">
<div id="custom-queue"></div>
<input id="custom_file_upload" type="file" name="Filedata" />
</div><!-- #custom-demo -->
</div><!-- #conteneur-uploadify -->
<script type="text/javascript" charset="utf-8">
jQuery(function() {

6
paquet.xml

@ -1,16 +1,18 @@
<paquet
prefix="uploadify"
categorie="multimedia"
version="1.0.1"
version="1.0.2"
etat="dev"
compatibilite="[3.0.0;3.0.*]"
logo="theme/img/uploadify.png"
documentation="http://contrib.spip.net/?article3045"
>
<nom>Uploadify</nom>
<auteur lien="http://demo.apsulis.com">XDjuj</auteur>
<auteur lien="http://demo.apsulis.com">Hady, XDjuj</auteur>
<copyright>2012</copyright>
<pipeline nom="header_prive_css" action="insert_head_css" inclure="uploadify_pipelines.php" />
<necessite nom="medias" />
<utilise nom="formidable" />
</paquet>

2
theme/uploadify/uploadify.css

@ -71,7 +71,7 @@ Released under the MIT License <http://www.opensource.org/licenses/mit-license.p
background-color: #FDE5DD !important;
}
.uploadify-queue-item .cancel a {
background: url('theme/uploadify/uploadify-cancel.png') 0 0 no-repeat;
background: url('uploadify-cancel.png') 0 0 no-repeat;
float: right;
height: 16px;
text-indent: -9999px;

167
uploadify.html

@ -23,15 +23,13 @@ if (!empty($_FILES)) {
$files = $_FILES["Filedata"];
$ajouter_documents = charger_fonction('ajouter_documents', 'action');
$mode = joindre_determiner_mode($mode,$id_document,$objet);
include_spip('inc/joindre_document');
$nouveaux_doc = ajouter_un_doc($id_document,$files,$objet,$id_objet,$mode);
$mode = joindre_determiner_mode($mode,$id_document,$objet);
$ajouter_un_document = charger_fonction('ajouter_un_document','action');
$nouveaux_doc = $ajouter_un_document($id_document, $files, $objet, $id_objet, $mode);
if (defined('_tmp_dir'))
effacer_repertoire_temporaire(_tmp_dir);
// Ligne echo obligatoire pour le script Uploadify : c'est sa détection de bonne fin
// echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
@ -41,8 +39,7 @@ if (!empty($_FILES)) {
return $nouveaux_doc;
}
// Les fonctions
// Copie/Conforme de medias/formulaires/joindre_document.php TODO => ne pourrait-on pas l'inclure directement ??
function joindre_determiner_mode($mode,$id_document,$objet){
if ($mode=='auto'){
if (intval($id_document))
@ -54,158 +51,4 @@ function joindre_determiner_mode($mode,$id_document,$objet){
}
}
return $mode;
}
function ajouter_un_doc($id_document, $file, $objet, $id_objet, $mode) {
$source = $file['tmp_name'];
$nom_envoye = $file['name'];
// passer en minuscules le nom du fichier, pour eviter les collisions
// si le file system fait la difference entre les deux il ne detectera
// pas que Toto.pdf et toto.pdf
// et on aura une collision en cas de changement de file system
$file['name'] = strtolower(translitteration($file['name']));
// Pouvoir definir dans mes_options.php que l'on veut titrer tous les documents par d?faut
if (!defined('_TITRER_DOCUMENTS')) { define('_TITRER_DOCUMENTS', false); }
$titrer = isset($file['titrer'])?$file['titrer']:_TITRER_DOCUMENTS;
$mode = ((isset($file['mode']) AND $file['mode'])?$file['mode']:$mode);
include_spip('inc/modifier');
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'];
unset($file['distant']);
}
// Documents distants : pas trop de verifications bloquantes, mais un test
// via une requete HEAD pour savoir si la ressource existe (non 404), si le
// content-type est connu, et si possible recuperer la taille, voire plus.
if (isset($file['distant']) AND $file['distant']) {
include_spip('inc/distant');
if (is_array($a = renseigner_source_distante($source))) {
$champs = $a;
# NB: dans les bonnes conditions (fichier autorise et pas trop gros)
# $a['fichier'] est une copie locale du fichier
unset($champs['type_image']);
}
// on ne doit plus arriver ici, car l'url distante a ete verifiee a la saisie !
else {
spip_log("Echec du lien vers le document $source, abandon");
return $a; // message d'erreur
}
}
else { // pas distant
$champs = array(
'distant' => 'non'
);
$type_image = ''; // au pire
$champs['titre'] = '';
if ($titrer){
$titre = substr($nom_envoye,0, strrpos($nom_envoye, ".")); // Enlever l'extension du nom du fichier
$titre = preg_replace(',[[:punct:][:space:]]+,u', ' ', $titre);
$champs['titre'] = preg_replace(',\.([^.]+)$,', '', $titre);
}
if (!is_array($fichier = fixer_fichier_upload($file, $mode)))
return is_string($fichier)?$fichier:_T("medias:erreur_upload_type_interdit",array('nom'=>$file['name']));
$champs['inclus'] = $fichier['inclus'];
$champs['extension'] = $fichier['extension'];
$champs['fichier'] = $fichier['fichier'];
/**
* Récupère les informations du fichier
* -* largeur
* -* hauteur
* -* type_image
* -* taille
* -* ses metadonnées si une fonction de metadatas/ est présente
*/
$infos = renseigner_taille_dimension_image($champs['fichier'],$champs['extension']);
if (is_string($infos))
return $infos; // c'est un message d'erreur !
$champs = array_merge($champs,$infos);
// Si mode == 'choix', fixer le mode 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);
}
$champs['mode'] = $mode;
// if (($test = verifier_taille_document_acceptable($champs))!==true){
// spip_unlink($champs['fichier']);
// return $test; // erreur sur les dimensions du fichier
// }
unset($champs['type_image']);
unset($champs['inclus']);
$champs['fichier'] = set_spip_doc($champs['fichier']);
}
// si le media est pas renseigne, le faire, en fonction de l'extension
if (!isset($champs['media'])){
$champs['media'] = sql_getfetsel('media_defaut','spip_types_documents','extension='.sql_quote($champs['extension']));
}
// lier le parent si necessaire
if ($id_objet=intval($id_objet) AND $objet)
$champs['parents'][] = "$objet|$id_objet";
// "mettre a jour un document" si on lui
// passe un id_document
if ($id_document=intval($id_document)){
unset($champs['titre']); // garder le titre d'origine
unset($champs['date']); // garder la date d'origine
unset($champs['descriptif']); // garder la desc d'origine
// unset($a['distant']); # on peut remplacer un doc statique par un doc distant
// unset($a['mode']); # on peut remplacer une image par un document ?
}
include_spip('action/editer_document');
// Installer le document dans la base
if (!$id_document){
if ($id_document = document_inserer())
spip_log ("ajout du document ".$file['tmp_name']." ".$file['name']." (M '$mode' T '$objet' L '$id_objet' D '$id_document')",'medias');
else
spip_log ("Echec insert_document() du document ".$file['tmp_name']." ".$file['name']." (M '$mode' T '$objet' L '$id_objet' D '$id_document')",'medias'._LOG_ERREUR);
}
if (!$id_document)
return _T('medias:erreur_insertion_document_base',array('fichier'=>"<em>".$file['name']."</em>"));
document_modifier($id_document,$champs);
// permettre aux plugins de faire des modifs a l'ajout initial
// ex EXIF qui tourne les images si necessaire
// Ce plugin ferait quand même mieux de se placer dans metadata/jpg.php
pipeline('post_edition',
array(
'args' => array(
'table' => 'spip_documents', // compatibilite
'table_objet' => 'documents',
'spip_table_objet' => 'spip_documents',
'type' =>'document',
'id_objet' => $id_document,
'champs' => array_keys($champs),
'serveur' => '', // serveur par defaut, on ne sait pas faire mieux pour le moment
'action' => 'ajouter_document',
'operation' => 'ajouter_document', // compat <= v2.0
),
'data' => $champs
)
);
return $id_document ;
}
?>
}
Loading…
Cancel
Save