User self edition case
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.ria / src / argeo-ria-lib / security / class / org / argeo / security / ria / components / PasswordCredentialImpl.js
index a7b648b230e5d9f7623ac67c9543ce769ca1c8a4..48723506ef7e71a8866dd3fa82161cefe34bb4da 100644 (file)
@@ -8,6 +8,9 @@ qx.Class.define("org.argeo.security.ria.components.PasswordCredentialImpl", {
                valid : {\r
                        init : false\r
                },\r
+               selfEdition : {\r
+                       init : false\r
+               },\r
                encoderCallback : {\r
                        init : function(string){\r
                                var encoderShort = org.argeo.ria.util.Encoder;\r
@@ -17,13 +20,23 @@ qx.Class.define("org.argeo.security.ria.components.PasswordCredentialImpl", {
                }\r
        },\r
        \r
-       construct : function(){\r
+       construct : function(selfEdition){\r
                this.base(arguments);\r
+               if(selfEdition){\r
+                       this.setSelfEdition(selfEdition);\r
+               }\r
                this.setLayout(new qx.ui.layout.HBox(5, "center"));\r
-               this.add(new qx.ui.basic.Label("Password"), {flex:1});\r
+               this.getLayout().setAlignY("middle");\r
+               if(this.getSelfEdition()){\r
+                       this.oldPass = new qx.ui.form.PasswordField();\r
+                       this.add(new qx.ui.basic.Label("Old"), {flex:1});\r
+                       this.add(this.oldPass, {flex:2});\r
+                       this.oldPass.addListener("changeValue", function(){this.fireEvent("modified");}, this);\r
+               }\r
+               this.add(new qx.ui.basic.Label((selfEdition?"New":"Password")), {flex:1});\r
                this.pass1 = new qx.ui.form.PasswordField();\r
                this.add(this.pass1, {flex:2});\r
-               this.add(new qx.ui.basic.Label("Confirm Password"), {flex:1});\r
+               this.add(new qx.ui.basic.Label((selfEdition?"Confirm":"Confirm Password")), {flex:1});\r
                this.pass2 = new qx.ui.form.PasswordField();\r
                this.add(this.pass2, {flex:2});\r
                this.pass1.addListener("changeValue", function(){this.fireEvent("modified");}, this);\r
@@ -36,22 +49,28 @@ qx.Class.define("org.argeo.security.ria.components.PasswordCredentialImpl", {
                        return this;\r
                },\r
                getData : function(format){\r
-                       var encoded = null;\r
+                       var encoder = this.getEncoderCallback();\r
+                       var encoded = null;                     \r
                        if(this.pass1.getValue() != null && this.pass1.getValue() != ""){\r
-                               var encoder = this.getEncoderCallback();\r
                                encoded = encoder(this.pass1.getValue()); \r
                        }\r
+                       if(this.getSelfEdition() && encoded && this.oldPass.getValue()!=""){\r
+                               return {oldPass:encoder(this.oldPass.getValue()), newPass:encoded};\r
+                       }\r
                        return encoded;\r
                },\r
                clear : function(){\r
                        this.pass1.setValue("");\r
-                       this.pass2.setValue("");                        \r
+                       this.pass2.setValue("");                \r
+                       if(this.getSelfEdition()){\r
+                               this.oldPass.setValue("");\r
+                       }\r
                },\r
                validate : function(){\r
                        if(this.pass1.getValue() != this.pass2.getValue()){\r
                                this.pass1.setValid(false);\r
-                               this.pass2.setValid(false); \r
-                               this.setValid(false);\r
+                               this.pass2.setValid(false);\r
+                               this.setValid(false);                           \r
                        }else{\r
                                this.pass1.setValid(true);\r
                                this.pass2.setValid(true); \r