Valider 63d1e59a rédigé par esj's avatar esj
Parcourir les fichiers

Mise en Ajax des deux dernieres actions faisables dans le portfolio et le...

Mise en Ajax des deux dernieres actions faisables dans le portfolio et le fonds: supprimer un document et supprimer sa vignette. On réaffiche alors tout le portfolio ou le fonds (dans quelques cas on pourrait faire encore mieux, mais c'est déjà beaucoup mieux que de recharger toute la page). 

Au passage, xhtmlisation de qq séquences qui ne l'étaient pas. A noter que la construction à double balises A imbriquées de icone_horizontale conduit à provoquer parfois 2 requetes Ajax, il faudrait vraiment trouver une écriture graphiquement aussi bonne mais n'ayant pas cet inconvénient.
parent 8731448e
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+15 −7
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -21,10 +21,13 @@ function action_documenter_dist($arg)

	$arg = _request('arg');

	if (!preg_match(",^(-?)(\d+)\W(\w+)$,", $arg, $r))
	if (!preg_match(",^(-?)(\d+)\W(\w+)\W?(\d*)$,", $arg, $r))
		spip_log("action_documenter $arg pas compris");
	else {
		list($x, $sign, $id, $type) = $r;
		list($x, $sign, $id, $type, $vignette) = $r;
		if ($vignette)
			supprimer_document_et_vignette($vignette);
		else {
			if ($sign)
				$x = spip_query("SELECT docs.id_document FROM spip_documents AS docs, spip_documents_".$type."s AS l, spip_types_documents AS lestypes WHERE l.id_$type=$id AND l.id_document=docs.id_document AND docs.mode='document' AND docs.id_type=lestypes.id_type AND lestypes.extension IN ('gif', 'jpg', 'png')");
			else $x = spip_query("SELECT docs.* FROM spip_documents AS docs, spip_documents_".$type."s AS l, spip_types_documents AS lestypes  WHERE l.id_$type=$id AND l.id_document=docs.id_document AND docs.mode='document'  AND docs.id_type=lestypes.id_type AND lestypes.extension NOT IN ('gif', 'jpg', 'png')");
@@ -32,5 +35,10 @@ function action_documenter_dist($arg)
				supprimer_document_et_vignette($r['id_document']);
			}
		}
		if ($type == 'rubrique') {
			include_spip('inc/rubriques');
			calculer_rubriques();
		}
	}
}
?>
+5 −5
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -34,7 +34,7 @@ function action_joindre_dist()
	$redirect = _request('redirect');
	if (!preg_match(',^(\d+)\D(\d+)\D(\w+)/(\w+)$,',_request('arg'),$r)) {
	  spip_log("action_joindre_dist incompris: " . _request('arg'));
	  redirige_par_entete($redirect);
	  redirige_par_entete(urldecode($redirect));
	}
	list($arg, $id, $id_document, $mode, $type) = $r;

@@ -58,6 +58,7 @@ function action_joindre_dist()

     else spip_log("spip_action: sousaction inconnue $sousaction");

     $redirect = urldecode($redirect);
     if ($documents_actifs) {
	$redirect .= '&show_docs=' . join('-',$documents_actifs);
     }
@@ -70,10 +71,9 @@ function action_joindre_dist()
			$ancre = 'portfolio';
		else
			$ancre = 'documents';

		$redirect .= '#' . $ancre;
     }

    $redirect .= '#' . $ancre;
    if ($type == 'rubrique') {
	include_spip('inc/rubriques');
	calculer_rubriques();
+13 −12
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -18,11 +18,12 @@ include_spip('inc/texte');
function exec_documenter_dist()
{
	$type = _request("type");
	$s = _request("s");
	$id = intval(_request(($type == 'article') ? 'id_article' : 'id_rubrique'));

	if ($id > 0)
	if (!$s)
	  $album = 'documents';
	else {	  $album = 'portfolio'; $id = 0 - $id;}
	else  $album = 'portfolio'; 

	if ($type == 'rubrique')
		$flag_editable = acces_rubrique($id);
@@ -33,7 +34,7 @@ function exec_documenter_dist()
			  $flag_editable = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur LIMIT 1"));
		}
	}
	return formulaire_documenter($id, $type, $album, $flag_editable ? 'ajax' : false);
	return formulaire_documenter($id, $type, $album, $flag_editable);
}

// Compatbilite plugin (sinon togg va encore raler).
@@ -48,7 +49,7 @@ $GLOBALS['afficher_portfolio'] = 'formulaire_documenter';
function formulaire_documenter(
	$doc,		# tableau des documents ou numero de l'objet attachant
	$type = "article",	# article ou rubrique ?
	$album = 'portfolio',	# album d'images ou de documents ?
	$ancre = 'portfolio',	# album d'images ou de documents ?
	$flag_modif = false,	# a-t-on le droit de modifier ?
	$couleur='',		# couleur des cases du tableau
	$appelant =''		# pour le rappel (cf plugin)
@@ -56,7 +57,7 @@ function formulaire_documenter(
	global $couleur_claire, $spip_lang_left, $spip_lang_right;

	if (is_int($doc)) {
		if ($album == 'portfolio') {
		if ($ancre == 'portfolio') {
			$lies = spip_query("SELECT docs.*,l.id_$type FROM spip_documents AS docs, spip_documents_".$type."s AS l, spip_types_documents AS lestypes WHERE l.id_$type=$doc AND l.id_document=docs.id_document AND docs.mode='document' AND docs.id_type=lestypes.id_type AND lestypes.extension IN ('gif', 'jpg', 'png') ORDER BY 0+docs.titre, docs.date");
			$couleur = $couleur_claire;
		} else {
@@ -73,7 +74,7 @@ function formulaire_documenter(
	include_spip('inc/documents');
	charger_generer_url();
	// la derniere case d'une rangee
	$bord_droit = ($album == 'portfolio' ? 2 : 1);
	$bord_droit = ($ancre == 'portfolio' ? 2 : 1);
	$case = 0;
	$res = '';

@@ -97,7 +98,7 @@ function formulaire_documenter(
		$res .= formulaire_tourner($id_document, $document, $script, $flag_modif, $type);

		if ($flag_modif)
		  $res .= formulaire_legender($id_document, $document, $script, $type, $document["id_$type"], $album);
		  $res .= formulaire_legender($id_document, $document, $script, $type, $document["id_$type"], $ancre);

		if (isset($document['info']))
			$res .= "<div class='verdana1'>".$document['info']."</div>";
@@ -117,14 +118,14 @@ function formulaire_documenter(
		$res .= "</tr>";
	}

	$div = ($album =='documents' ? '': '-');
	$s = ($ancre =='documents' ? '': '-');
	if (is_int($doc)) {
		$head = "\n<div id='$album'>&nbsp;</div>"
		. "\n<div style='background-color: $couleur; padding: 4px; color: black; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px;' class='verdana2'>\n<b>".majuscules(_T("info_$album"))."</b></div>";
		$head = "\n<div id='$ancre'>&nbsp;</div>"
		. "\n<div style='background-color: $couleur; padding: 4px; color: black; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px;' class='verdana2'>\n<b>".majuscules(_T("info_$ancre"))."</b></div>";

		if (count($documents) > 3) {
			$head .= "<div style='background-color: #dddddd; padding: 4px; color: black; text-align: right' class='arial1'>"
			  . ajax_action_auteur('documenter', "$div$doc/$type", $GLOBALS['exec'], "id_$type=$div$doc&type=$type",array(_L('Supprimer_tout')))
			  . ajax_action_auteur('documenter', "$s$doc/$type", $GLOBALS['exec'], "id_$type=$doc&s=$s&type=$type",array(_L('Supprimer_tout')))
			. "</div>\n";
		}
	} else $head = '';
@@ -135,7 +136,7 @@ function formulaire_documenter(
	. "</table>";	  
	return _request('var_ajaxcharset') 
	? $res
	: ("<div id='documenter-$div$doc'>$res</div>");
	: ("<div id='documenter-$s$doc'>$res</div>");
}

?>
+3 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -213,7 +213,9 @@ function AjaxSqueezeNode(trig, noeud, f)
	if (!f) f = function(r) { noeud.innerHTML = r;}

	if (typeof(trig) == 'string') {
		return !ajah('GET', trig+'&var_ajaxcharset=utf-8', null, f);
		i = trig.split('?');
		trig = i[0] +'?var_ajaxcharset=utf-8&' + i[1];
		return !ajah('GET', trig, null, f);
	}

	for (i=0;i < trig.elements.length;i++) {
+6 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -112,6 +112,10 @@ function redirige_action_auteur($action, $arg, $ret, $gra='', $mode=false, $atts
// revenant a l'envoyeur $script d'arguments $args.
// Utilise Ajax si dispo, en ecrivant le resultat dans le innerHTML du noeud
// d'attribut  id = $action-$id (cf. AjaxSqueeze dans layer.js)
// Precise le charset de l'envoyeur avec la variable d'url var_ajaxcharset
// qui sert aussi a index.php de savoir que la requete est en Ajax.
// Attention, la redirection doit propager cette variable, 
// i.e. la mettre dans la 2e URL, et avant l'ancre de celle ci.

// http://doc.spip.org/@ajax_action_auteur
function ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args_ajax='', $fct_ajax='')
@@ -138,7 +142,7 @@ function ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args
			return redirige_action_auteur($action,
				$id,
				$action,
				"script=$script$args_ajax&var_ajaxcharset=utf-8",
				"var_ajaxcharset=utf-8&script=$script$args_ajax",
				$corps,
				(" method='post'\nonsubmit="
				 . declencheur_ajax('this', $ancre, $fct_ajax)));
@@ -161,7 +165,7 @@ function ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args
		$ajax = redirige_action_auteur($action,
			$id,
			$action,
			"script=$script$args_ajax&var_ajaxcharset=utf-8");
			"var_ajaxcharset=utf-8&script=$script$args_ajax");

		if ($att) $clic = "\n<div$att>$clic</div>";
		return "<a href='$href'\nonclick="
Chargement en cours