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

une fonction traiter() d'un formulaire peut explicitement demander a etre...

une fonction traiter() d'un formulaire peut explicitement demander a etre appellee sans ajax en appellant la fonction
refuser_traiter_formulaire_ajax();
Attention : dans ce cas le formulaire est resoumis par le client sans ajax, verifier() et traier() sont reappellees
Permet de conserver la verification ajax et de forcer un rechargement de la page que quand c'est necessaire.
parent 600b0395
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+15 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -74,6 +74,21 @@ function init_var_mode(){
	}
}

function refuser_traiter_formulaire_ajax(){
	if ($v=_request('var_ajax')
	  AND $v=='form'
		AND $form = _request('formulaire_action')
		AND $args = _request('formulaire_action_args')
		AND decoder_contexte_ajax($args,$form)!==false) {
		// on est bien dans le contexte de traitement d'un formulaire en ajax
		// mais traiter ne veut pas
		// on le dit a la page qui va resumbit
		// sans ajax
		include_spip('inc/actions');
		ajax_retour('noajax',false);
		exit;
	}
}
// http://doc.spip.org/@traiter_formulaires_dynamiques
function traiter_formulaires_dynamiques(){
	static $done = false;
+30 −20
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -92,13 +92,21 @@ jQuery.fn.positionner = function() {
jQuery.fn.formulaire_dyn_ajax = function(target) {
  return this.each(function() {
	var cible = target || this;
	jQuery('form:not(.noajax)', this)
	.prepend("<input type='hidden' name='var_ajax' value='form' />")
		jQuery('form:not(.noajax)', this).each(function(){
		var leform = this;
		jQuery(this).prepend("<input type='hidden' name='var_ajax' value='form' />")
		.ajaxForm({
			beforeSubmit: function(){
				jQuery(cible).addClass('loading').animeajax();
			},
			success: function(c){
				if (c=='noajax'){
					// le serveur ne veut pas traiter ce formulaire en ajax
					// on resubmit sans ajax
					jQuery("input[@name=var_ajax]",leform).remove();
					jQuery(leform).ajaxFormUnbind().submit();
				}
				else {
					var d = jQuery('div.ajax',
						jQuery('<div><\/div>').html(c));
					if (d.length)
@@ -107,12 +115,14 @@ jQuery.fn.formulaire_dyn_ajax = function(target) {
					.removeClass('loading')
					.html(c)
					.positionner();
				}
			},
			iframe: jQuery.browser.msie
		})
		.addClass('noajax') // previent qu'on n'ajaxera pas deux fois le meme formulaire en cas de ajaxload
		;
		});
  });
}

// rechargement ajax d'une noisette implementee par {ajax}