Add new account center and account recovery frontends
[blerg.git] / www / jssrc / blerg / PasswdForm.js
diff --git a/www/jssrc/blerg/PasswdForm.js b/www/jssrc/blerg/PasswdForm.js
new file mode 100644 (file)
index 0000000..39ec889
--- /dev/null
@@ -0,0 +1,61 @@
+enyo.kind({
+    name: "blerg.PasswdForm",
+    classes: "blerg-form",
+    components: [
+        {kind: "onyx.Groupbox", components: [
+            {kind: "onyx.InputDecorator", components: [
+                {name: "oldpassword", kind: "onyx.Input", placeholder: "Old Password", type: "password"}
+            ]}
+        ]},
+        {kind: "onyx.Groupbox", components: [
+            {kind: "onyx.InputDecorator", components: [
+                {name: "password1", kind: "onyx.Input", placeholder: "New Password", type: "password"}
+            ]},
+            {kind: "onyx.InputDecorator", components: [
+                {name: "password2", kind: "onyx.Input", placeholder: "New Password (again)", type: "password"}
+            ]}
+        ]},
+        {name: "changePasswordError", tag: "p", showing: false, classes: "blerg-error", content: "I couldn't change your password. Are you sure you have the right old password?"},
+        {name: "passwordMatchError", tag: "p", showing: false, classes: "blerg-error", content: "Your new passwords don't match."},
+        {name: "changeButton", kind: "onyx.Button", content: "Change", onclick: "changeClick", classes: "onyx.affirmative"},
+        {name: "spinner", kind: "OldSchoolSpinner", showing: false},
+        {name: "api", kind: "blerg.API",
+         onPasswordChangeSuccessful: "passwordChangeSuccessful",
+         onPasswordChangeFailed: "passwordChangeFailed"}
+    ],
+    hideErrors: function() {
+        this.$.changePasswordError.hide();
+        this.$.passwordMatchError.hide();
+    },
+    changeClick: function() {
+        this.hideErrors();
+        if (this.$.oldpassword.getValue() == '') {
+            this.$.changePasswordError.show();
+            return;
+        }
+        if (this.$.password1.getValue() != this.$.password2.getValue()) {
+            this.$.passwordMatchError.show();
+            return;
+        }
+        this.$.changeButton.setDisabled(true);
+        this.$.spinner.show();
+        this.$.spinner.start();
+        this.$.api.changePassword(this.$.oldpassword.getValue(), this.$.password1.getValue());
+    },
+    passwordChangeSuccessful: function(inSender, inEvent) {
+        this.$.oldpassword.setValue('');
+        this.$.password1.setValue('');
+        this.$.password2.setValue('');
+        this.$.changeButton.setDisabled(false);
+        this.$.spinner.hide();
+        this.$.spinner.stop();
+        alert("Password Changed Successfully");
+    },
+    passwordChangeFailed: function(inSender, inEvent) {
+        this.$.changeButton.setDisabled(false);
+        this.$.spinner.hide();
+        this.$.spinner.stop();
+        this.hideErrors();
+        this.$.changePasswordError.show();
+    }
+});