Valider 09e02de1 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

"Une balise pour generer un bouton d'action en post, ajaxable

a utiliser a la place des liens action_auteur, sous la forme
#BOUTON_ACTION{libelle,url}
ou
#BOUTON_ACTION{libelle,url,ajax}
pour que le bouton se comporte comme un lien class = 'ajax' (rechargement de l'inclusion ajax parente la plus proche)
Dans le cas d'un hit ajax, le cache des pages ajax est vide car on suppose avoir fait une action en base de donnee

En resume :
pour de la navigation ajax, utiliser un lien class ajax
pour une operation en bdd, utiliser un #BOUTON_ACTION avec le troisieme argument ajax
"
parent 4fa35626
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+27 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -1273,4 +1273,30 @@ function balise_ACTION_FORMULAIRE($p){
	return $p;
}

/**
 * Generer un bouton d'action en post, ajaxable
 * a utiliser a la place des liens action_auteur, sous la forme
 * #BOUTON_ACTION{libelle,url}
 * ou
 * #BOUTON_ACTION{libelle,url,ajax} pour que l'action soit ajax comme un lien class='ajax'
 *
 * @param unknown_type $p
 * @return unknown
 */
function balise_BOUTON_ACTION_dist($p){
	
	$_label = interprete_argument_balise(1,$p);
	if (!$_label) $_label="''";
	$_url = interprete_argument_balise(2,$p);
	if (!$_url) $_url="''";

	$_class = interprete_argument_balise(3,$p);
	if (!$_class) $_class="''";

	$p->code = "'<form class=\'bouton_action_post '.$_class.'\' method=\'post\' action=\''.$_url.'\'><span>'.form_hidden($_url).'<input type=\'submit\' class=\'submit\' value=\''.$_label.'\' /></span></form>'";
	$p->interdire_scripts = false;
	return $p;
}


?>
 No newline at end of file
+68 −47
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -169,6 +169,7 @@ var ajaxbloc_selecteur;
jQuery.fn.ajaxbloc = function() {
	if (this.length)
		initReaderBuffer();
		
  return this.each(function() {
	  jQuery('div.ajaxbloc',this).ajaxbloc(); // traiter les enfants d'abord
		var blocfrag = jQuery(this);
@@ -186,6 +187,7 @@ jQuery.fn.ajaxbloc = function() {
		ajax_env = ajax_env[1];
		if (ajaxbloc_selecteur==undefined)
			ajaxbloc_selecteur = '.pagination a,a.ajax';
	
		jQuery(ajaxbloc_selecteur,this).not('.noajax').each(function(){
			var url = this.href.split('#');
			url[0] += (url[0].indexOf("?")>0 ? '&':'?')+'var_ajax=1&var_ajax_env='+encodeURIComponent(ajax_env);
@@ -219,6 +221,25 @@ jQuery.fn.ajaxbloc = function() {
				return false;
			});
		}).addClass('noajax'); // previent qu'on ajax pas deux fois le meme lien
		jQuery('form.bouton_action_post.ajax:not(.noajax)', this).each(function(){
			var leform = this;
			jQuery(this).prepend("<input type='hidden' name='var_ajax' value='1' /><input type='hidden' name='var_ajax_env' value='"+(ajax_env)+"' />")
			.ajaxForm({
				beforeSubmit: function(){
					jQuery(blocfrag).addClass('loading').animeajax();
				},
				success: function(c){
					on_pagination(c);
					preloaded_urls = {}; // on vide le cache des urls car on a fait une action en bdd
					// on le refait a la main ici car onAjaxLoad intervient sur une iframe dans IE6 et non pas sur le document
					jQuery(blocfrag)
					.ajaxbloc();
				},
				iframe: jQuery.browser.msie
			})
			.addClass('noajax') // previent qu'on n'ajaxera pas deux fois le meme formulaire en cas de ajaxload
			;
		});
  });
};