summaryrefslogtreecommitdiff
path: root/includes/js/dojox/widget/Wizard.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/widget/Wizard.js')
-rw-r--r--includes/js/dojox/widget/Wizard.js192
1 files changed, 192 insertions, 0 deletions
diff --git a/includes/js/dojox/widget/Wizard.js b/includes/js/dojox/widget/Wizard.js
new file mode 100644
index 0000000..b8921b1
--- /dev/null
+++ b/includes/js/dojox/widget/Wizard.js
@@ -0,0 +1,192 @@
+if(!dojo._hasResource["dojox.widget.Wizard"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.widget.Wizard"] = true;
+dojo.provide("dojox.widget.Wizard");
+
+dojo.require("dijit.layout.StackContainer");
+dojo.require("dijit.layout.ContentPane");
+dojo.require("dijit.form.Button");
+
+dojo.require("dojo.i18n");
+dojo.requireLocalization("dijit", "common", null, "zh,pt,da,tr,ru,de,sv,ja,he,fi,nb,el,ar,ROOT,pt-pt,cs,fr,es,ko,nl,zh-tw,pl,it,hu");
+dojo.requireLocalization("dojox.widget", "Wizard", null, "zh,pt,da,tr,ru,de,sv,ja,he,fi,nb,el,ar,pt-pt,cs,fr,es,nl,ko,zh-tw,ROOT,pl,it,hu");
+
+dojo.declare(
+ "dojox.widget.WizardContainer",
+ [dijit.layout.StackContainer,dijit._Templated],
+ {
+ // summary:
+ // A set of panels that display sequentially, typically notating a step-by-step
+ // procedure like an install
+ //
+
+ widgetsInTemplate: true,
+ templateString:"<div class=\"dojoxWizard\" dojoAttachPoint=\"wizardNode\">\n <div class=\"dojoxWizardContainer\" dojoAttachPoint=\"containerNode\"></div>\n <div class=\"dojoxWizardButtons\" dojoAttachPoint=\"wizardNav\">\n <button dojoType=\"dijit.form.Button\" dojoAttachPoint=\"previousButton\">${previousButtonLabel}</button>\n <button dojoType=\"dijit.form.Button\" dojoAttachPoint=\"nextButton\">${nextButtonLabel}</button>\n <button dojoType=\"dijit.form.Button\" dojoAttachPoint=\"doneButton\" style=\"display:none\">${doneButtonLabel}</button>\n <button dojoType=\"dijit.form.Button\" dojoAttachPoint=\"cancelButton\">${cancelButtonLabel}</button>\n </div>\n</div>\n",
+
+ // nextButtonLabel: String
+ // Label override for the "Next" button.
+ nextButtonLabel: "",
+
+ // previousButtonLabel: String
+ // Label override for the "Previous" button.
+ previousButtonLabel: "",
+
+ // cancelButtonLabel: String
+ // Label override for the "Cancel" button.
+ cancelButtonLabel: "",
+
+ // doneButtonLabel: String
+ // Label override for the "Done" button.
+ doneButtonLabel: "",
+
+ // cancelFunction: FunctionName
+ // Name of function to call if user presses cancel button.
+ // Cancel button is not displayed if function is not specified.
+ cancelFunction: "",
+
+ // hideDisabled: Boolean
+ // If true, disabled buttons are hidden; otherwise, they are assigned the
+ // "WizardButtonDisabled" CSS class
+ hideDisabled: false,
+
+ postMixInProperties: function(){
+ this.inherited(arguments);
+ var labels = dojo.mixin({cancel: dojo.i18n.getLocalization("dijit", "common", this.lang).buttonCancel},
+ dojo.i18n.getLocalization("dojox.widget", "Wizard", this.lang));
+ for(prop in labels){
+ if(!this[prop + "ButtonLabel"]){
+ this[prop + "ButtonLabel"] = labels[prop];
+ }
+ }
+ },
+
+ startup: function(){
+ this.inherited(arguments);
+
+ this.connect(this.nextButton, "onClick", "_forward");
+ this.connect(this.previousButton, "onClick", "back");
+
+ if(this.cancelFunction){
+ this.cancelFunction = dojo.getObject(this.cancelFunction);
+ this.connect(this.cancelButton, "onClick", this.cancelFunction);
+ }else{
+ this.cancelButton.domNode.style.display = "none";
+ }
+ this.connect(this.doneButton, "onClick", "done");
+
+ this._subscription = dojo.subscribe(this.id+"-selectChild", dojo.hitch(this,"_checkButtons"));
+ this._checkButtons();
+ },
+
+ _checkButtons: function(){
+
+ var sw = this.selectedChildWidget;
+
+ var lastStep = sw.isLastChild;
+ this.nextButton.setAttribute("disabled", lastStep);
+ this._setButtonClass(this.nextButton);
+ if(sw.doneFunction){
+ this.doneButton.domNode.style.display = "";
+ if(lastStep){
+ this.nextButton.domNode.style.display = "none";
+ }
+ }else{
+ // #1438 issue here.
+ this.doneButton.domNode.style.display = "none";
+ }
+ this.previousButton.setAttribute("disabled", !this.selectedChildWidget.canGoBack);
+ this._setButtonClass(this.previousButton);
+ },
+
+ _setButtonClass: function(button){
+ button.domNode.style.display = (this.hideDisabled && button.disabled) ? "none" : "";
+ },
+
+ _forward: function(){
+ // summary: callback when next button is clicked
+ if(this.selectedChildWidget._checkPass()){
+ this.forward();
+ }
+ },
+
+ done: function(){
+ // summary: Finish the wizard's operation
+ this.selectedChildWidget.done();
+ },
+
+ destroy: function(){
+ dojo.unsubscribe(this._subscription);
+ this.inherited(arguments);
+ }
+});
+
+dojo.declare(
+ "dojox.widget.WizardPane",
+ dijit.layout.ContentPane,
+ {
+ // summary: a panel in a WizardContainer
+ //
+ // description:
+ // An extended ContentPane with additional hooks for passing named
+ // functions to prevent the pane from going either forward or
+ // backwards.
+ //
+ // canGoBack: Boolean
+ // If true, then can move back to a previous panel (by clicking the "Previous" button)
+ canGoBack: true,
+
+ // passFunction: String
+ // Name of function that checks if it's OK to advance to the next panel.
+ // If it's not OK (for example, mandatory field hasn't been entered), then
+ // returns an error message (String) explaining the reason.
+ passFunction: "",
+
+ // doneFunction: String
+ // Name of function that is run if you press the "Done" button from this panel
+ doneFunction: "",
+
+ postMixInProperties: function(){
+ if(this.passFunction){
+ this.passFunction = dojo.getObject(this.passFunction);
+ }
+ if(this.doneFunction){
+ this.doneFunction = dojo.getObject(this.doneFunction);
+ }
+ this.inherited(arguments);
+ },
+
+ startup: function(){
+ this.inherited(arguments);
+ if(this.isFirstChild){ this.canGoBack = false; }
+ },
+
+ _checkPass: function(){
+ // summary:
+ // Called when the user presses the "next" button.
+ // Calls passFunction to see if it's OK to advance to next panel, and
+ // if it isn't, then display error.
+ // Returns true to advance, false to not advance.
+ var r = true;
+ if(this.passFunction && dojo.isFunction(this.passFunction)){
+ var failMessage = this.passFunction();
+ switch(typeof failMessage){
+ case "boolean":
+ r = failMessage;
+ break;
+ case "string":
+ alert(failMessage);
+ r = false;
+ break;
+ }
+ }
+ return r;
+ },
+
+ done: function(){
+ if(this.doneFunction && dojo.isFunction(this.doneFunction)){
+ this.doneFunction();
+ }
+ }
+
+});
+
+}