From b357fa19d8ab1eb662fb56c0df6099b70414cae7 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Thu, 10 Aug 2006 21:21:45 +0000
Subject: [PATCH] debug complet du portfolio, ajax, pas ajax, et tout... ce
 genre de choses me tue. vivement jquery!

---
 ecrire/exec/documenter.php |  4 +-
 ecrire/inc/actions.php     | 14 ++++---
 ecrire/inc/documents.php   | 86 +++++++++++++++++++++++++-------------
 ecrire/inc/layer.php       |  3 +-
 4 files changed, 69 insertions(+), 38 deletions(-)

diff --git a/ecrire/exec/documenter.php b/ecrire/exec/documenter.php
index 6fa104a2a0..2d718eeba9 100644
--- a/ecrire/exec/documenter.php
+++ b/ecrire/exec/documenter.php
@@ -14,13 +14,13 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 function exec_documenter_dist()
 {
-	global $id_document, $script, $id, $type, $ancre;
+	global $id_document, $id, $type, $ancre;
 	$id = intval($id);
 	$id_document = intval($id_document);
 
 	include_spip('inc/documents');
 	include_spip('inc/presentation');
 
-	return formulaire_documenter($id_document, array(), $script, $type, $id, $ancre);
+	return formulaire_documenter($id_document, array(), $type, $id, $ancre);
 }
 ?>
diff --git a/ecrire/inc/actions.php b/ecrire/inc/actions.php
index f3573bfa81..dcc1f886da 100644
--- a/ecrire/inc/actions.php
+++ b/ecrire/inc/actions.php
@@ -69,19 +69,22 @@ function generer_action_auteur($action, $arg, $redirect="", $mode=false, $att=''
 		"\n\t</div>\n</form>\n";
 }
 
-function redirige_action_auteur($action, $arg, $ret, $gra, $mode=false, $atts='')
-{
-	if (!$ret) $ret = _request('exec');
-	$gra = preg_replace(',^&,', '', $gra);
+function redirige_action_auteur($action, $arg, $ret, $gra, $mode=false, $atts='') {
+	if (!$redirect = _request('redirect')) {
+		$gra = preg_replace(',^&,', '', $gra);
+		$redirect = generer_url_ecrire($ret ? $ret : _request('exec'),
+			$gra, '&', _DIR_RESTREINT_ABS);
+	}
 
 	return generer_action_auteur(
 		$action,
 		$arg,
-		generer_url_ecrire($ret, $gra, true, _DIR_RESTREINT_ABS),
+		$redirect,
 		$mode,
 		$atts);
 }
 
+
 // Retourne un formulaire d'execution de $action sur $id,
 // revenant a l'envoyeur $script d'arguments $args.
 // Utilise Ajax si dispo, en ecrivant le resultat dans le innerHTML du noeud
@@ -89,6 +92,7 @@ function redirige_action_auteur($action, $arg, $ret, $gra, $mode=false, $atts=''
 
 function ajax_action_auteur($action, $id, $corps, $script, $args_ajax, $args)
 {
+
 	// Methode traditionnelle
 	if ($_COOKIE['spip_accepte_ajax'] != 1) {
 		if (is_string($corps)) {
diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php
index 3d897af4be..0bfdcf890d 100644
--- a/ecrire/inc/documents.php
+++ b/ecrire/inc/documents.php
@@ -547,14 +547,14 @@ function formulaire_taille($document) {
 	// Donnees sur le type de document
 	$t = @spip_abstract_fetsel('inclus,extension',
 		'spip_types_documents', "id_type=".$document['id_type']);
-	$type_inclus = $t['type_inclus'];
+	$type_inclus = $t['inclus'];
 	$extension = $t['extension'];
 
 	# TODO -- pour le MP3 "l x h pixels" ne va pas
 	if (($type_inclus == "embed" OR $type_inclus == "image")
 	AND (
 		// documents dont la taille est definie
-		$document['largeur'] * $document['hauteur']
+		($document['largeur'] * $document['hauteur'])
 		// ou distants
 		OR $document['distant'] == 'oui'
 		// ou formats dont la taille ne peut etre lue par getimagesize
@@ -564,7 +564,6 @@ function formulaire_taille($document) {
 		  "<input type='text' name='largeur_document' class='fondl' style='font-size:9px;' value=\"".$document['largeur']."\" size='5' onFocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\" />" .
 		  " &#215; <input type='text' name='hauteur_document' class='fondl' style='font-size:9px;' value=\"".$document['hauteur']."\" size='5' onFocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\" /> "._T('info_pixels');
 	}
-	return '';
 }
 
 //
@@ -575,27 +574,33 @@ function formulaire_upload($id, $intitule='', $inclus = '', $mode='', $type="",
 	global $spip_lang_right;
 	static $num_form = 0; $num_form ++;
 
-	if (!_DIR_RESTREINT) {
+	if (!_DIR_RESTREINT)
 		$dir_ftp = determine_upload();
-		$debut = "\n" . bouton_block_invisible("ftp$num_form");
-		$milieu = "\n<div>" . debut_block_invisible("ftp$num_form");
-		$fin = "\n" . fin_block();
-	} else $dir_ftp = $debut = $fin = '';
-
-	$res =  "\n$debut" .
-		(!$intitule ? '' : "\n\t<span>$intitule</span><br />") .
-		"\n\t\t<input name='fichier' type='file' style='font-size: 10px;' class='forml' size='15' />" .
+	else $dir_ftp = '';
+
+	$res = "<input name='fichier' type='file' style='font-size: 10px;' class='forml' size='15' />" .
 		"\n\t\t<div align='" .
 		$GLOBALS['spip_lang_right'] . 
 		"'><input name='sousaction1' type='submit' value='" .
 		_T('bouton_telecharger') .
-		"' class='fondo' /></div>";
+		"' class='fondo' />";
 
 	// Un menu depliant si on a une possibilite supplementaire
 
 	$test_distant = ($mode == 'document' AND $type);
-	if ($dir_ftp OR $test_distant)
-		$res .= $milieu;
+	if ($dir_ftp OR $test_distant OR ($mode == 'vignette')) {
+		$debut = "<div style='float:".$GLOBALS['spip_lang_left'].";'>"
+			. bouton_block_invisible("ftp$num_form") ."</div>\n";
+		$milieu = debut_block_invisible("ftp$num_form");
+		$fin = fin_block();
+
+		if ($mode == 'vignette')
+			$res = $milieu . $res;
+		else
+			$res = $res . $milieu;
+	}
+
+	$res = $debut . ($intitule ? "<span>$intitule</span><br />" : '') .$res;
 
 	if ($dir_ftp) {
 		$l = texte_upload_manuel($dir_ftp,$inclus, $mode);
@@ -619,9 +624,8 @@ function formulaire_upload($id, $intitule='', $inclus = '', $mode='', $type="",
 			"\n</div>";
 	}
 
-	if ($dir_ftp OR $test_distant)
-		$res .= $fin;
-	// Fin menu depliant
+	$res .= $fin;
+	// Fin eventuel menu depliant
 
 	$res .= "\n\t\t<input type='hidden' name='id' value='$id' />" .
 		"\n\t\t<input type='hidden' name='id_document' value='$id_document' />" .
@@ -629,9 +633,16 @@ function formulaire_upload($id, $intitule='', $inclus = '', $mode='', $type="",
 		"\n\t\t<input type='hidden' name='ancre' value='$ancre' />" .
 		"\n\t$fin";
 
+	// a cause d'ajax, on ne peut pas faire confiance au script "documenter"
+	// pour reafficher la page apres upload de la vignette... donc il faut
+	// hacker
+	$script = $GLOBALS['exec'];
+	if ($script == 'documenter')
+		$script = ($type == 'rubriques') ? 'naviguer' : 'articles';
+
 	return generer_action_auteur('joindre',
 		$mode,
-		generer_url_ecrire($GLOBALS['exec'], "id_$type=$id"),
+		generer_url_ecrire($script, "id_$type=$id"),
 		$res,
 		" method='post' enctype='multipart/form-data' style='border: 0px; margin: 0px;'");
 }
@@ -704,10 +715,11 @@ function afficher_portfolio(
 
 		# script pour l'action des formulaires
 		if (isset($document['script']))
-			$script = $document['script']; 
+			$script = $document['script']; # jamais utilise !?
 		elseif ($type == "rubrique")
 			$script = 'naviguer';
-		else	$script = $GLOBALS['exec'];
+		else
+			$script = 'articles';
 
 		$style = "";
 		if (!$case)
@@ -719,7 +731,7 @@ function afficher_portfolio(
 		echo formulaire_tourner($id_document, $document, $script, $flag_modif, $type);
 
 		if ($flag_modif)
-			echo formulaire_documenter($id_document, $document, $script, $type, $document["id_$type"], $album);
+			echo formulaire_documenter($id_document, $document, $type, $document["id_$type"], $album);
 
 		if (isset($document['info']))
 			echo "<div class='verdana1'>".$document['info']."</div>";
@@ -1089,7 +1101,7 @@ function afficher_case_document($id_document, $id, $type, $deplier = false) {
 			  "</font></div>";
 		}
 
-		echo formulaire_documenter($id_document, $document, '', $type, $id, "document$id_document");
+		echo formulaire_documenter($id_document, $document, $type, $id, "document$id_document");
 
 		fin_cadre_enfonce();
 		}
@@ -1136,7 +1148,7 @@ function afficher_case_document($id_document, $id, $type, $deplier = false) {
 		if (ereg(",$id_document,", $doublons))
 			echo $raccourci_doc;
 
-		echo formulaire_documenter($id_document, $document,'', $type, $id, "document$id_document");
+		echo formulaire_documenter($id_document, $document, $type, $id, "document$id_document");
 		
 		fin_cadre_relief();
 	}
@@ -1172,21 +1184,34 @@ function date_formulaire_documenter($date, $id_document) {
 // En mode Ajax pour eviter de recharger toute la page ou il se trouve
 // (surtout si c'est un portfolio)
 
-function formulaire_documenter($id_document, $document, $script, $type, $id, $ancre)
-{
+function formulaire_documenter($id_document, $document, $type, $id, $ancre) {
+
+	// + securite (avec le script exec=documenter ca vient de dehors)
+	if (!preg_match('/^(article|rubrique)$/',$type, $r)) return;
+
 	if ($document) {
 		// premier appel
 		$flag_deplie = teste_doc_deplie($id_document);
-		if (!$script) $script = $GLOBALS['exec'];
-	} else {
-	  	// retour d'Ajax
+	} else if ($id_document) {
+		// retour d'Ajax
 		$document = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = " . intval($id_document)));
 		$flag_deplie = 'ajax';
+	} else {
+		spip_log("erreur dans formulaire_documenter()");
+		return;
 	}
 
 	$descriptif = $document['descriptif'];
 	$titre = $document['titre'];
 	$date = $document['date'];
+
+	// vers ou rediriger
+	// a cause d'ajax, on ne peut pas faire confiance au script "documenter"
+	// pour reafficher la page apres upload de la vignette... donc il faut
+	// hacker
+	$script = $GLOBALS['exec'];
+	if ($script == 'documenter')
+		$script = ($type == 'rubrique') ? 'naviguer' : 'articles';
  
 	if ($document['mode'] == 'vignette') {
 
@@ -1198,10 +1223,11 @@ function formulaire_documenter($id_document, $document, $script, $type, $id, $an
 	  $label = _T('entree_titre_document');
 	  $taille = formulaire_taille($document);
 	  $supp = 'doc-24.gif';
+
 	  $id_vignette = $document['id_vignette'];
 	  $vignette = "<hr style='margin-left: -5px; margin-right: -5px; height: 1px; border: 0px; color: #eeeeee; background-color: white;' />" .
 	    ($id_vignette ?
-	     icone_horizontale (_T('info_supprimer_vignette'), redirige_action_auteur('supprimer', "document-$id_vignette", $script, "id_$type=$id#$ancre"), "vignette-24.png", "supprimer.gif", false) :
+	     icone_horizontale (_T('info_supprimer_vignette'), redirige_action_auteur('supprimer', "document-$id_vignette", $script, "id_$type=$id&show_docs=$id_document#$ancre"), "vignette-24.png", "supprimer.gif", false) :
 	     formulaire_upload($id,_T('info_vignette_personnalisee'), false, 'vignette', $type, $ancre, $id_document));
 	}
 
diff --git a/ecrire/inc/layer.php b/ecrire/inc/layer.php
index 7ab43af513..6d96a1e51c 100644
--- a/ecrire/inc/layer.php
+++ b/ecrire/inc/layer.php
@@ -17,7 +17,8 @@ $numero_block = array();
 
 $compteur_block = 0;
 
-$compteur_block = rand(1,250)*200;	// astuce idiote pour que les blocs ahah n'aient pas les memes numeros de triangle que la page principale (sinon le triangle d'un bloc importe par ahah agit sur un autre triangle... vivement jquery...).
+if (_request('var_ajax'))
+$compteur_block = rand(1,2500)*500;	// astuce idiote pour que les blocs ahah n'aient pas les memes numeros de triangle que la page principale (sinon le triangle d'un bloc importe par ahah agit sur un autre triangle... vivement jquery...).
 
 
 function debut_block_visible($nom_block){
-- 
GitLab