Skip to content
Extraits de code Groupes Projets
Valider d631a773 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Report de r21019 : Lorsqu'on upload un logo par le formulaire de l'interface...

Report de r21019 : Lorsqu'on upload un logo par le formulaire de l'interface privee et qu'une erreur se produit, la requete ajax part en vrille car l'erreur etait affichee en minipres au lieu de revenir par le canal normal du CVT
On corrige en introduisant un $return optionnel dans action/iconifier et dans check_upload_error qui permet de faire remonter l'erreur par le CVT
le comportement par defaut des fonctions reste identique
parent c960ece9
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -79,7 +79,7 @@ function action_spip_image_effacer_dist($arg) { ...@@ -79,7 +79,7 @@ function action_spip_image_effacer_dist($arg) {
* @param string $source * @param string $source
* Chemin du logo uploadé sur le serveur en attente d'utilisation * Chemin du logo uploadé sur le serveur en attente d'utilisation
**/ **/
function action_spip_image_ajouter_dist($arg,$sousaction2,$source) { function action_spip_image_ajouter_dist($arg,$sousaction2,$source,$return=false) {
global $formats_logos; global $formats_logos;
include_spip('inc/documents'); include_spip('inc/documents');
...@@ -87,6 +87,7 @@ function action_spip_image_ajouter_dist($arg,$sousaction2,$source) { ...@@ -87,6 +87,7 @@ function action_spip_image_ajouter_dist($arg,$sousaction2,$source) {
if (!$_FILES) $_FILES = $GLOBALS['HTTP_POST_FILES']; if (!$_FILES) $_FILES = $GLOBALS['HTTP_POST_FILES'];
$source = (is_array($_FILES) ? array_pop($_FILES) : ""); $source = (is_array($_FILES) ? array_pop($_FILES) : "");
} }
$erreur = "";
if (!$source) if (!$source)
spip_log("spip_image_ajouter : source inconnue"); spip_log("spip_image_ajouter : source inconnue");
else { else {
...@@ -97,7 +98,7 @@ function action_spip_image_ajouter_dist($arg,$sousaction2,$source) { ...@@ -97,7 +98,7 @@ function action_spip_image_ajouter_dist($arg,$sousaction2,$source) {
$source = @copy(determine_upload() . $source, $f); $source = @copy(determine_upload() . $source, $f);
else { else {
// Intercepter une erreur a l'envoi // Intercepter une erreur a l'envoi
if (check_upload_error($source['error'])) if ($erreur = check_upload_error($source['error'],"",$return))
$source =""; $source ="";
else else
// analyse le type de l'image (on ne fait pas confiance au nom de // analyse le type de l'image (on ne fait pas confiance au nom de
...@@ -117,37 +118,42 @@ function action_spip_image_ajouter_dist($arg,$sousaction2,$source) { ...@@ -117,37 +118,42 @@ function action_spip_image_ajouter_dist($arg,$sousaction2,$source) {
if (_LOGO_MAX_SIZE > 0 if (_LOGO_MAX_SIZE > 0
AND $poids > _LOGO_MAX_SIZE*1024) { AND $poids > _LOGO_MAX_SIZE*1024) {
spip_unlink ($f); spip_unlink ($f);
check_upload_error(6, $erreur = _T('info_logo_max_poids',
_T('info_logo_max_poids', array('maxi' => taille_en_octets(_LOGO_MAX_SIZE*1024),
array('maxi' => taille_en_octets(_LOGO_MAX_SIZE*1024), 'actuel' => taille_en_octets($poids)));
'actuel' => taille_en_octets($poids))));
} }
if (_LOGO_MAX_WIDTH * _LOGO_MAX_HEIGHT elseif (_LOGO_MAX_WIDTH * _LOGO_MAX_HEIGHT
AND ($size[0] > _LOGO_MAX_WIDTH AND ($size[0] > _LOGO_MAX_WIDTH
OR $size[1] > _LOGO_MAX_HEIGHT)) { OR $size[1] > _LOGO_MAX_HEIGHT)) {
spip_unlink ($f); spip_unlink ($f);
check_upload_error(6, $erreur = _T('info_logo_max_poids',
_T('info_logo_max_poids', array(
array( 'maxi' =>
'maxi' => _T('info_largeur_vignette',
_T('info_largeur_vignette', array('largeur_vignette' => _LOGO_MAX_WIDTH,
array('largeur_vignette' => _LOGO_MAX_WIDTH, 'hauteur_vignette' => _LOGO_MAX_HEIGHT)),
'hauteur_vignette' => _LOGO_MAX_HEIGHT)), 'actuel' =>
'actuel' => _T('info_largeur_vignette',
_T('info_largeur_vignette', array('largeur_vignette' => $size[0],
array('largeur_vignette' => $size[0], 'hauteur_vignette' => $size[1]))
'hauteur_vignette' => $size[1])) ));
)));
} }
@rename ($f, _DIR_LOGOS . $arg . ".$type"); else
@rename ($f, _DIR_LOGOS . $arg . ".$type");
} }
else { else {
spip_unlink ($f); spip_unlink ($f);
check_upload_error(6,_T('info_logo_format_interdit', $erreur = _T('info_logo_format_interdit',
array('formats' => join(', ', $formats_logos)))); array('formats' => join(', ', $formats_logos)));
} }
} }
if ($erreur){
if ($return)
return $erreur;
else
check_upload_error(6,$erreur);
}
} }
?> ?>
...@@ -205,7 +205,7 @@ function deplacer_fichier_upload($source, $dest, $move=false) { ...@@ -205,7 +205,7 @@ function deplacer_fichier_upload($source, $dest, $move=false) {
// et true si erreur = pas de fichier // et true si erreur = pas de fichier
// pour les autres erreurs affiche le message d'erreur et meurt // pour les autres erreurs affiche le message d'erreur et meurt
// http://doc.spip.org/@check_upload_error // http://doc.spip.org/@check_upload_error
function check_upload_error($error, $msg='') { function check_upload_error($error, $msg='', $return=false) {
global $spip_lang_right; global $spip_lang_right;
if (!$error) return false; if (!$error) return false;
...@@ -239,8 +239,10 @@ function check_upload_error($error, $msg='') { ...@@ -239,8 +239,10 @@ function check_upload_error($error, $msg='') {
} }
spip_log ("erreur upload $error"); spip_log ("erreur upload $error");
if ($return)
return $msg;
if(_request("iframe")=="iframe") { if(_request("iframe")=="iframe") {
echo "<div class='upload_answer upload_error'>$msg</div>"; echo "<div class='upload_answer upload_error'>$msg</div>";
exit; exit;
} }
......
...@@ -214,8 +214,10 @@ function formulaires_editer_logo_traiter_dist($objet, $id_objet, $retour='', $op ...@@ -214,8 +214,10 @@ function formulaires_editer_logo_traiter_dist($objet, $id_objet, $retour='', $op
$logo = $chercher_logo($id_objet, $_id_objet, $etat); $logo = $chercher_logo($id_objet, $_id_objet, $etat);
if ($logo) if ($logo)
spip_unlink($logo[0]); spip_unlink($logo[0]);
$ajouter_image($type.$etat.$id_objet," ",$file); if ($err = $ajouter_image($type.$etat.$id_objet," ",$file,true))
$res['message_ok'] = ''; // pas besoin de message : la validation est visuelle $res['message_erreur'] = $err;
else
$res['message_ok'] = ''; // pas besoin de message : la validation est visuelle
set_request('logo_up',' '); set_request('logo_up',' ');
} }
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter