diff options
| author | Leif Johansson <leifj@sunet.se> | 2012-10-01 11:43:33 +0200 | 
|---|---|---|
| committer | Leif Johansson <leifj@sunet.se> | 2012-10-01 11:43:33 +0200 | 
| commit | 054bf580e441e7fc199213eec40769660026b22b (patch) | |
| tree | 32698e925fe0b2bffc40ee79bf182ec8959898c0 /src/static/js/jquery.form.wizard-3.0.4.js | |
| parent | e7d1327eb58d945bc23a613ffa9a2a5b77d4712c (diff) | |
updates for django 1.4.1
Diffstat (limited to 'src/static/js/jquery.form.wizard-3.0.4.js')
| -rw-r--r-- | src/static/js/jquery.form.wizard-3.0.4.js | 450 | 
1 files changed, 450 insertions, 0 deletions
| diff --git a/src/static/js/jquery.form.wizard-3.0.4.js b/src/static/js/jquery.form.wizard-3.0.4.js new file mode 100644 index 0000000..a981cc7 --- /dev/null +++ b/src/static/js/jquery.form.wizard-3.0.4.js @@ -0,0 +1,450 @@ +/* + * jQuery wizard plug-in 3.0.4 + * + * + * Copyright (c) 2010 Jan Sundman (jan.sundman[at]aland.net) + *  + * http://www.thecodemine.org + * + * Licensed under the MIT licens: + *   http://www.opensource.org/licenses/mit-license.php + *  + */ + + +(function($){ +	$.widget("ui.formwizard", { + +		_init: function() { +			 +			var wizard = this; +			var formOptionsSuccess = this.options.formOptions.success; +			var formOptionsComplete = this.options.formOptions.complete;	 +			var formOptionsBeforeSend = this.options.formOptions.beforeSend;  +			var formOptionsBeforeSubmit = this.options.formOptions.beforeSubmit;  +			var formOptionsBeforeSerialize = this.options.formOptions.beforeSerialize;  +			this.options.formOptions = $.extend(this.options.formOptions,{ +				success	: function(responseText, textStatus, xhr){  +					if(formOptionsSuccess){ +						formOptionsSuccess(responseText, textStatus, xhr); +					} +					if(wizard.options.formOptions && wizard.options.formOptions.resetForm || !wizard.options.formOptions){ +						wizard._reset(); +					} +				}, +				complete : function(xhr, textStatus){ +					if(formOptionsComplete){ +						formOptionsComplete(xhr, textStatus); +					} +					wizard._enableNavigation(); +				}, +				beforeSubmit : function(arr, theForm, options) { +					if(formOptionsBeforeSubmit){ +						var shouldSubmit = formOptionsBeforeSubmit(arr, theForm, options); +						if(!shouldSubmit) +							wizard._enableNavigation(); +						return shouldSubmit; +					} +				}, +				beforeSend : function(xhr) { +					if(formOptionsBeforeSend){ +						var shouldSubmit = formOptionsBeforeSend(xhr); +						if(!shouldSubmit) +							wizard._enableNavigation(); +						return shouldSubmit; +					} +				}, +				beforeSerialize: function(form, options) {  +					if(formOptionsBeforeSerialize){ +						var shouldSubmit = formOptionsBeforeSerialize(form, options); +						if(!shouldSubmit) +							wizard._enableNavigation(); +						return shouldSubmit; +					}				     +				} +			}); +			 +			this.steps = this.element.find(".step").hide(); +			 +			this.firstStep = this.steps.first().attr("id"); +			this.activatedSteps = new Array(); +			this.isLastStep = false; +			this.previousStep = undefined; +			this.currentStep = this.steps.eq(0).attr("id");		 +			this.nextButton	= this.element.find(this.options.next) +					.click(function() { +						return wizard._next(); +					}); + +			this.nextButtonInitinalValue = this.nextButton.val(); +			this.nextButton.val(this.options.textNext); + +    			this.backButton	= this.element.find(this.options.back) +    				.click(function() { +    					wizard._back();return false;  +    				}); + +	    		this.backButtonInitinalValue = this.backButton.val(); +	    		this.backButton.val(this.options.textBack); + +			if(this.options.validationEnabled && jQuery().validate  == undefined){ +				this.options.validationEnabled = false; +				alert("the validation plugin needs to be included"); +			}else if(this.options.validationEnabled){ +				this.element.validate(this.options.validationOptions); +			} +			if(this.options.formPluginEnabled && jQuery().ajaxSubmit == undefined){ +				this.options.formPluginEnabled = false; +				alert("the form plugin needs to be included"); +			} +	 +			if(this.options.disableInputFields == true){ +				$(this.steps).find(":input:not('.wizard-ignore')").attr("disabled","disabled"); +			} +			 +			if(this.options.historyEnabled){ +				$(window).bind('hashchange', undefined, function(event){ +					var hashStep = event.getState( "_" + $(wizard.element).attr( 'id' )) || wizard.firstStep; +					if(hashStep !== wizard.currentStep){ +						if(wizard.options.validationEnabled && hashStep === wizard._navigate(wizard.currentStep)){ +							if(!wizard.element.valid()){ +								wizard._updateHistory(wizard.currentStep); +								wizard.element.validate().focusInvalid(); +								 +								return false; +							} +						} +						if(hashStep !== wizard.currentStep) +							wizard._show(hashStep); +					} +				}); +				this._updateHistory(this.firstStep); +			} + +			this.element.addClass("ui-formwizard"); +			this.element.find(":input").addClass("ui-wizard-content");	 +			this.steps.addClass("ui-formwizard-content"); +			this.backButton.addClass("ui-formwizard-button ui-wizard-content"); +			this.nextButton.addClass("ui-formwizard-button ui-wizard-content"); +			 +			if(!this.options.disableUIStyles){ +				this.element.addClass("ui-helper-reset ui-widget ui-widget-content ui-helper-reset ui-corner-all"); +				this.element.find(":input").addClass("ui-helper-reset ui-state-default");	 +				this.steps.addClass("ui-helper-reset ui-corner-all"); +				this.backButton.addClass("ui-helper-reset ui-state-default"); +				this.nextButton.addClass("ui-helper-reset ui-state-default"); +			} +			this._show(undefined); +			return $(this); +		}, +    +		_next : function(){ +			if(this.options.validationEnabled){ +				if(!this.element.valid()){ +					this.element.validate().focusInvalid(); +					return false; +				} +			} +			 +			if(this.options.remoteAjax != undefined){  +				var options = this.options.remoteAjax[this.currentStep]; +				var wizard = this; +				if(options !== undefined){  +					var success = options.success; +					var beforeSend = options.beforeSend; +					var complete = options.complete; +					 +					options = $.extend({},options,{ +						success: function(data, statusText){ +							if((success !== undefined && success(data, statusText)) || (success == undefined)){ +								wizard._continueToNextStep();	 +							} +						}, +						beforeSend : function(xhr){ +							wizard._disableNavigation(); +							if(beforeSend !== undefined) +								beforeSend(xhr);							 +							$(wizard.element).trigger('before_remote_ajax', {"currentStep" : wizard.currentStep}); +						}, +						complete : function(xhr, statusText){ +							if(complete !== undefined) +								complete(xhr, statusText); +							$(wizard.element).trigger('after_remote_ajax', {"currentStep" : wizard.currentStep}); +							wizard._enableNavigation(); +						} +					}) +					this.element.ajaxSubmit(options); +					return false; +				} +			} + +			return this._continueToNextStep(); +		}, +	 +		_back : function(){ +			if(this.activatedSteps.length > 0){ +				if(this.options.historyEnabled){ +					this._updateHistory(this.activatedSteps[this.activatedSteps.length - 2]); +				}else{ +					this._show(this.activatedSteps[this.activatedSteps.length - 2], true);	 +				} +			} +			return false; +		}, +	    +		_continueToNextStep : function(){ +			if(this.isLastStep){  +				for(var i = 0; i < this.activatedSteps.length; i++){ +					this.steps.filter("#" + this.activatedSteps[i]).find(":input").not(".wizard-ignore").removeAttr("disabled"); +				} +				if(!this.options.formPluginEnabled){ +					return true; +				}else{  +					this._disableNavigation(); +					this.element.ajaxSubmit(this.options.formOptions); +					return false; +				} +			} +			 +			var step = this._navigate(this.currentStep); +			if(step == this.currentStep){ +				return false; +			} +			if(this.options.historyEnabled){ +				this._updateHistory(step); +			}else{ +				this._show(step, true); +			} +			return false; +		}, +	 +		_updateHistory : function(step){ +			var state = {}; +			state["_" + $(this.element).attr('id')] = step; +			$.bbq.pushState(state); +		}, +		 +		_disableNavigation : function(){ +			this.nextButton.attr("disabled","disabled"); +			this.backButton.attr("disabled","disabled"); +			if(!this.options.disableUIStyles){ +				this.nextButton.removeClass("ui-state-active").addClass("ui-state-disabled"); +				this.backButton.removeClass("ui-state-active").addClass("ui-state-disabled"); +			} +		}, +	 +		_enableNavigation : function(){ +			if(this.isLastStep){ +				this.nextButton.val(this.options.textSubmit); +			}else{ +				this.nextButton.val(this.options.textNext); +			} +		 +			if($.trim(this.currentStep) !== this.steps.eq(0).attr("id")){ +				this.backButton.removeAttr("disabled"); +				if(!this.options.disableUIStyles){ +					this.backButton.removeClass("ui-state-disabled").addClass("ui-state-active"); +				} +			} +				 +			this.nextButton.removeAttr("disabled"); +			if(!this.options.disableUIStyles){ +				this.nextButton.removeClass("ui-state-disabled").addClass("ui-state-active"); +			} +		}, +		    +		_animate : function(oldStep, newStep){ +			this._disableNavigation(); +			var old = this.steps.filter("#" + oldStep); +			var current = this.steps.filter("#" + newStep); +			old.find(":input").not(".wizard-ignore").attr("disabled","disabled"); +			current.find(":input").not(".wizard-ignore").removeAttr("disabled"); +			var wizard = this; +			old.animate(wizard.options.outAnimation, wizard.options.outDuration, wizard.options.easing, function(){ +				current.animate(wizard.options.inAnimation, wizard.options.inDuration, wizard.options.easing, function(){ +					if(wizard.options.focusFirstInput) +						current.find(":input:first").focus(); +					wizard._enableNavigation(); +				}); +				return; +			}); +		}, +	 +		_checkIflastStep : function(step){ +			this.isLastStep = false; +			if($("#" + step).hasClass(this.options.submitStepClass) || this.steps.filter(":last").attr("id") == step){ +				this.isLastStep = true; +			} +		}, +	    +		_getLink : function(step){ +			var link = undefined; +			var links = this.steps.filter("#" + step).find(this.options.linkClass); + +			if(links != undefined){ +				if(links.filter(":radio,:checkbox").size() > 0){ +					link = links.filter(this.options.linkClass + ":checked").val(); +				}else{ +					link = $(links).val();				 +				} +			} +			return link; +		}, +	    +		_navigate : function(step){ +			var link = this._getLink(step); +			if(link != undefined){ +				if((link != "" && link != null && link != undefined) && this.steps.filter("#" + link).attr("id") != undefined){ +					return link; +				} +				return this.currentStep;				 +			}else if(link == undefined && !this.isLastStep){	 +				var step1 =  this.steps.filter("#" + step).next().attr("id"); +				return step1; +			} +		}, +	    +		_show : function(step){ +			var backwards = false; +			if(step == undefined || step == ""){  +					this.activatedSteps.pop(); +					step = this.firstStep; +					this.activatedSteps.push(step); +			}else{		 +				if($.inArray(step, this.activatedSteps) > -1){ +					backwards = true; +					this.activatedSteps.pop(); +				}else { +					this.activatedSteps.push(step); +				} +			} + +			if(this.currentStep !== step || step === this.firstStep){ +				this.previousStep = this.currentStep; +				this._checkIflastStep(step); +				this.currentStep = step; + +				this._animate(this.previousStep, step); +			}; +			$(this.element).trigger('step_shown', $.extend({"isBackNavigation" : backwards},this._state())); +			 +		}, +	    +	   _reset : function(){ +			this.element.resetForm() +			$("label,:input,textarea",this).removeClass("error");		 +			for(var i = 0; i < this.activatedSteps.length; i++){ +				this.steps.filter("#" + this.activatedSteps[i]).hide().find(":input").attr("disabled","disabled"); +			} +			this.activatedSteps = new Array(); +			this.previousStep = undefined;	 +			this.isLastStep = false;	 +			if(this.options.historyEnabled){ +				this._updateHistory(this.firstStep); +			}else{ +				this._show(this.firstStep); +			} + +		}, + +		_state : function(state){ +			var currentState = { "settings" : this.options, +				"activatedSteps" : this.activatedSteps, +				"isLastStep" : this.isLastStep, +				"isFirstStep" : this.currentStep === this.firstStep, +				"previousStep" : this.previousStep, +				"currentStep" : this.currentStep, +				"backButton" : this.backButton, +				"nextButton" : this.nextButton, +				"steps" : this.steps, +				"firstStep" : this.firstStep +			} +			 +			if(state !== undefined) +				return currentState[state]; +				 +			return currentState; +		}, +	    +	  /*Methods*/ +	   +		show : function(step){ +			if(this.options.historyEnabled){ +				this._updateHistory(step); +			}else{ +				this._show(step); +			} +		}, + +		state : function(state){ +			return this._state(state); +		},		 + +		reset : function(){ +			this._reset(); +		}, +		 +		next : function(){ +			this._next();		 +		}, +		 +		back : function(){ +			this._back(); +		}, +		 +		destroy: function() { +			this.element.find("*").removeAttr("disabled").show(); +			this.nextButton.unbind("click").val(this.nextButtonInitinalValue).removeClass("ui-state-disabled").addClass("ui-state-active"); +			this.backButton.unbind("click").val(this.backButtonInitinalValue).removeClass("ui-state-disabled").addClass("ui-state-active"); +			this.backButtonInitinalValue = undefined; +			this.nextButtonInitinalValue = undefined; +			this.activatedSteps = undefined; +			this.previousStep = undefined; +			this.currentStep = undefined; +			this.isLastStep = undefined; +			this.options = undefined; +			this.nextButton = undefined; +			this.backButton = undefined; +			this.formwizard = undefined; +			this.element = undefined; +			this.steps = undefined; +			this.firstStep = undefined; +		}, +		 +		update_steps : function(){ +			this.steps = this.element.find(".step").addClass("ui-formwizard-content"); +			this.steps.not("#" + this.currentStep).hide().find(":input").addClass("ui-wizard-content").attr("disabled","disabled"); +			this._checkIflastStep(this.currentStep); +			this._enableNavigation(); +			if(!this.options.disableUIStyles){			 +				this.steps.addClass("ui-helper-reset ui-corner-all"); +				this.steps.find(":input").addClass("ui-helper-reset ui-state-default"); +			} +		}, + +		options: { +	   		historyEnabled	: false, +			validationEnabled : false, +			validationOptions : undefined, +			formPluginEnabled : false, +			linkClass	: ".link", +			submitStepClass : "submit_step", +			back : ":reset", +			next : ":submit", +			textSubmit : 'Submit', +			textNext : 'Next', +			textBack : 'Back', +			remoteAjax : undefined,  +			inAnimation : {opacity: 'show'}, +	        	outAnimation: {opacity: 'hide'}, +			inDuration : 400, +			outDuration: 400, +			easing: 'swing', +			focusFirstInput : false, +			disableInputFields : true, +			formOptions : { reset: true, success: function(data) { alert("success"); }, +			disableUIStyles : false  +		} +   } + }); +})(jQuery); | 
