ProfileCtrl.js revision 2d7019e19039fd083850f76e54b6b26a7b06a8f2
55cf6e01272ec475edea32aa9b7923de2d36cb42Christian Maeder/*
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
e9458b1a7a19a63aa4c179f9ab20f4d50681c168Jens Elkner *
de6a40dbdd4712e5a9398b8519a59b1eaeab2f5aChristian Maeder * Copyright © 2011 ForgeRock AS. All rights reserved.
f18f9ae43d53e16e3324bed71ea67ba536c91042Christian Maeder *
98890889ffb2e8f6f722b00e265a211f13b5a861Corneliu-Claudiu Prodescu * The contents of this file are subject to the terms
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * of the Common Development and Distribution License
3f69b6948966979163bdfe8331c38833d5d90ecdChristian Maeder * (the License). You may not use this file except in
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder * compliance with the License.
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder *
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * You can obtain a copy of the License at
f3a94a197960e548ecd6520bb768cb0d547457bbChristian Maeder * http://forgerock.org/license/CDDLv1.0.html
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * See the License for the specific language governing
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * permission and limitations under the License.
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski *
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * When distributing Covered Code, include this CDDL
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * Header Notice in each file and include the License file
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski * at http://forgerock.org/license/CDDLv1.0.html
a14767aeac3e78ed100f5b75e210ba563ee10dbaChristian Maeder * If applicable, add the following below the CDDL Header,
7660d5932a1fb9677d07889714b677a059af2b2fChristian Maeder * with the fields enclosed by brackets [] replaced by
a14767aeac3e78ed100f5b75e210ba563ee10dbaChristian Maeder * your own identifying information:
a14767aeac3e78ed100f5b75e210ba563ee10dbaChristian Maeder * "Portions Copyrighted [year] [name of copyright owner]"
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder */
a14767aeac3e78ed100f5b75e210ba563ee10dbaChristian Maeder
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder/*global $, define, require*/
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowskidefine("app/comp/user/profile/ProfileCtrl",[
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski "app/comp/user/profile/ProfileView",
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder "app/comp/user/delegates/UserDelegate",
2dfb9a95c5586f73abda1d0f369d6d154b159452Sonja Gröning "app/comp/common/eventmanager/EventManager",
319eb8dee52f1d1235910f80dde1dd5f9227ec4cChristian Maeder "app/comp/common/dialog/ConfirmationDialogCtrl",
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder "app/comp/user/changesecurityinfo/SecurityDialogCtrl",
80664cc18425d67cd71be80f27f882fa16e43848Christian Maeder "app/comp/user/changepassword/ChangePasswordDialogCtrl",
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder "app/comp/user/securitypicture/SelectPictureDialogCtrl",
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder "app/util/Validators",
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski "app/util/Constants",
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski "app/comp/main/Configuration",
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski "app/util/Validator",
81946e2b3f6dde6167f48769bd02c7a634736856Christian Maeder "app/util/Condition"],
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski function(profileView, userDelegate, eventManager, confirmationDialogCtrl, securityDialogCtrl, changePasswordDialogCtrl, selectPictureDialogCtrl, validators, constants, globalConfiguration, Validator, Condition) {
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder
2dfb9a95c5586f73abda1d0f369d6d154b159452Sonja Gröning var obj = {};
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski obj.view = profileView;
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder obj.delegate = userDelegate;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski
0b2340d1ef7d0998e4b0c321021be942c6b67652Christian Maeder obj.validators = [];
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski
0b2340d1ef7d0998e4b0c321021be942c6b67652Christian Maeder obj.user = null;
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder obj.setUser = function(u) {
986d3f255182539098a97ac86da9eeee5b7a72e3Christian Maeder obj.user = u;
986d3f255182539098a97ac86da9eeee5b7a72e3Christian Maeder obj.reloadUser();
986d3f255182539098a97ac86da9eeee5b7a72e3Christian Maeder obj.validate();
986d3f255182539098a97ac86da9eeee5b7a72e3Christian Maeder };
a14767aeac3e78ed100f5b75e210ba563ee10dbaChristian Maeder
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder obj.reloadUser = function() {
e7ce154edb906685b3fa7f6c0a764e18a4658068Christian Maeder
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder obj.view.setUserName(obj.user.firstname + " " + obj.user.lastname);
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder obj.view.getEmailInput().val(obj.user.email);
b1f59a4ea7c96f4c03a4d7cfcb9c5e66871cfbbbChristian Maeder
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder obj.view.getFirstNameInput().val(obj.user.firstname);
f4255fa60f8dcaa8f21ce60b2820c228a19e39aeChristian Maeder obj.view.getLastNameInput().val(obj.user.lastname);
f4255fa60f8dcaa8f21ce60b2820c228a19e39aeChristian Maeder
f4255fa60f8dcaa8f21ce60b2820c228a19e39aeChristian Maeder obj.view.getAddress1Input().val(obj.user.address1);
5c358300e78157f4bfaf5415c70e1096a9205b61Christian Maeder obj.view.getAddress2Input().val(obj.user.address2);
5c358300e78157f4bfaf5415c70e1096a9205b61Christian Maeder
5c358300e78157f4bfaf5415c70e1096a9205b61Christian Maeder obj.view.getCityInput().val(obj.user.city);
5c358300e78157f4bfaf5415c70e1096a9205b61Christian Maeder obj.view.getPostalCodeInput().val(obj.user.postalcode);
5c358300e78157f4bfaf5415c70e1096a9205b61Christian Maeder obj.view.getPhoneNumberInput().val(obj.user.phonenumber);
5c358300e78157f4bfaf5415c70e1096a9205b61Christian Maeder
5c358300e78157f4bfaf5415c70e1096a9205b61Christian Maeder obj.setCountryAndStateProvince(obj.user.country, obj.user.state_province);
5c358300e78157f4bfaf5415c70e1096a9205b61Christian Maeder obj.setSecurityQuestionSelect(obj.user.securityquestion);
a0951ecefe9f0733f3bbb6039bf66af7d72b3944mcodescu
5c358300e78157f4bfaf5415c70e1096a9205b61Christian Maeder obj.view.getSecurityQuestion().val(obj.user.securityquestion);
048abf92dccee48433769bc8e677880be37b0c95Christian Maeder obj.view.getSecurityAnswer().val(obj.user.securityanswer);
5c358300e78157f4bfaf5415c70e1096a9205b61Christian Maeder
578b677874296e4ba48e57b5e4b4b0270d995603Christian Maeder if( obj.mode === constants.MODE_ADMIN ) {
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder //obj.view.getPasswordAttemptsInput().val(obj.user.passwordAttempts);
83b3260413a3b1b7dee1f9c4d3249dec994a875cMihai Codescu var curr_date, curr_month, curr_year, d = new Date(obj.user.lastPasswordSet);
578b677874296e4ba48e57b5e4b4b0270d995603Christian Maeder curr_date = d.getDate();
f2c050360525df494e6115073b0edc4c443a847cMihai Codescu curr_month = d.getMonth();
f2c050360525df494e6115073b0edc4c443a847cMihai Codescu curr_year = d.getFullYear();
2018084d6189a68640c516ca3e340d879f40f0acChristian Maeder
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder obj.view.getLastPasswordSetInput().val(curr_year + "/" + curr_month + "/" + curr_date);
3c988357f9b9de1b366278a5644f4ea009d596e2Christian Maeder obj.view.getAccountStatusInput().val(obj.user.accountStatus);
3c988357f9b9de1b366278a5644f4ea009d596e2Christian Maeder } else {
3c988357f9b9de1b366278a5644f4ea009d596e2Christian Maeder require("app/comp/user/login/LoginCtrl").setUserName(obj.user.email);
3c988357f9b9de1b366278a5644f4ea009d596e2Christian Maeder }
3c988357f9b9de1b366278a5644f4ea009d596e2Christian Maeder
3c988357f9b9de1b366278a5644f4ea009d596e2Christian Maeder obj.view.getUserProfileHeadingLabel().html(obj.user.firstname+" "+obj.user.lastname+"'s Profile");
3c988357f9b9de1b366278a5644f4ea009d596e2Christian Maeder };
3c988357f9b9de1b366278a5644f4ea009d596e2Christian Maeder
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder obj.getUser = function() {
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder return obj.user;
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder };
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder obj.init = function(mode, profileName, user, callback) {
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder console.log("ProfileCtrl.init()");
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder if(!profileName) {
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder profileName = 'My profile';
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder }
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder obj.mode = (mode) ? mode : constants.MODE_USER;
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder eventManager.sendEvent(constants.EVENT_PROFILE_INITIALIZATION, { profileName: profileName});
ccd28c25c1aee73a195053e677eca17e20917d84Christian Maeder
e00f5b4d89ac027e883461aab6248e33ad10ae8eChristian Maeder obj.view.show(function() {
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder obj.registerListeners();
ab373af0c94a5a73d8c8d5fd580775d79f745a00Christian Maeder
975642b989852fc24119c59cf40bc1af653608ffChristian Maeder if( obj.mode === 'user' ) {
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder $("#securityDialogLink").on(
c549c7db6c5c3fa20df0df194eb968fc0bd377b3Christian Maeder 'click',
c549c7db6c5c3fa20df0df194eb968fc0bd377b3Christian Maeder function(event) {
c549c7db6c5c3fa20df0df194eb968fc0bd377b3Christian Maeder if( obj.mode === constants.MODE_USER ) {
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder securityDialogCtrl.init(obj.getUser().userName, constants.MODE_USER, obj);
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder } else {
c549c7db6c5c3fa20df0df194eb968fc0bd377b3Christian Maeder securityDialogCtrl.init(obj.getUser().userName, constants.MODE_ADMIN, obj);
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder }
c549c7db6c5c3fa20df0df194eb968fc0bd377b3Christian Maeder });
e7ddd5495421698701a2bbc57a5b3390a11d12caChristian Maeder } else {
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder $("#passwordChangeLink").bind('click', function(event) {
975642b989852fc24119c59cf40bc1af653608ffChristian Maeder changePasswordDialogCtrl.init(obj.getUser().userName);
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder });
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder }
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder obj.setUser((user) ? user : globalConfiguration.loggedUser);
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder obj.registerValidators();
ad187062b0009820118c1b773a232e29b879a2faChristian Maeder obj.validate();
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder $("#authMethodLink").off().on('click', function(){ obj.authMethodDialog(); });
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder $("#passphraseLink").off().on('click', function(){ obj.passphraseDialog(); });
975642b989852fc24119c59cf40bc1af653608ffChristian Maeder
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder if(callback) {
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder callback();
f4255fa60f8dcaa8f21ce60b2820c228a19e39aeChristian Maeder }
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder }, mode);
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder
975642b989852fc24119c59cf40bc1af653608ffChristian Maeder };
8731f7b93b26083dc34a2c0937cd6493b42f2c2cTill Mossakowski
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder obj.authMethodDialog = function() {
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder confirmationDialogCtrl.init("Select adaptive auth method", "<form><div style='float: left;'><input type='radio' name='auth' value='SMS' checked='checked'/>SMS</div><div style='float: left;'><input type='radio' name='auth' value='OAuth' disabled='disabled'/>OAuth</div></form>", "Update", function() {
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder }, 400, 70);
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder };
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder obj.passphraseDialog = function() {
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder selectPictureDialogCtrl.init(obj);
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder };
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder obj.registerListeners = function() {
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder var self = this;
975642b989852fc24119c59cf40bc1af653608ffChristian Maeder
abe0293c13ccb9c7c864e780181f370155de5658Christian Maeder console.log("ProfileCtrl.registerListeners()");
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder obj.view.getSaveButton().off().on('click', function(event) {
c549c7db6c5c3fa20df0df194eb968fc0bd377b3Christian Maeder event.preventDefault();
c549c7db6c5c3fa20df0df194eb968fc0bd377b3Christian Maeder obj.saveUser();
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder });
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder
c549c7db6c5c3fa20df0df194eb968fc0bd377b3Christian Maeder obj.view.getCountryInput().change(obj.adjustStateProvinceDropdown).change();
c549c7db6c5c3fa20df0df194eb968fc0bd377b3Christian Maeder obj.view.getStateProvinceInput().change(function(event){
c549c7db6c5c3fa20df0df194eb968fc0bd377b3Christian Maeder if(obj.view.getStateProvinceInput().val()!==""){
c549c7db6c5c3fa20df0df194eb968fc0bd377b3Christian Maeder obj.view.getFirstStateProvinceOption().text("");
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder }else{
ad06a3932c674dd1ebf566b8b5594d0df9e52cc0Christian Maeder obj.view.getFirstStateProvinceOption().text("Please Select");
c549c7db6c5c3fa20df0df194eb968fc0bd377b3Christian Maeder }
c549c7db6c5c3fa20df0df194eb968fc0bd377b3Christian Maeder });
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder if( obj.mode === constants.MODE_ADMIN) {
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder obj.view.getDeleteButton().on('click', function(event) {
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder event.preventDefault();
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder confirmationDialogCtrl.init("Delete user", obj.user.email + " account will be deleted.", "Delete", function() {
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder self.deleteUser();
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder });
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder });
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder obj.view.getBackButton().on('click', function(event) {
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder event.preventDefault();
ccd28c25c1aee73a195053e677eca17e20917d84Christian Maeder eventManager.sendEvent(constants.EVENT_GO_BACK_REQUEST);
ccd28c25c1aee73a195053e677eca17e20917d84Christian Maeder });
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder }
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder };
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder obj.registerValidators = function() {
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder var self = this;
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder
f7d2e793728bbb7fd185e027eb9dfd7b9dd11c21Christian Maeder obj.validators[0] = new Validator([ obj.view
f7d2e793728bbb7fd185e027eb9dfd7b9dd11c21Christian Maeder .getFirstNameInput() ], [ new Condition('letters-only',
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maeder validators.nameValidator) ], 'keyup', 'simple',
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maeder self.validateForm);
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maeder obj.validators[1] = new Validator(
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maeder [ obj.view.getLastNameInput() ], [ new Condition(
27e8de893356be63440b1b8aa2c4f19fbaf399acChristian Maeder 'letters-only', validators.lastnameValidator) ],
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maeder 'keyup', 'simple', self.validateForm);
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maeder obj.validators[2] = new Validator([ obj.view
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maeder .getPhoneNumberInput() ], [ new Condition(
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maeder 'letters-only', validators.phoneNumberValidator) ],
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maeder 'keyup', 'simple', self.validateForm);
f876a858a3644fa16b793afb4692cf353fa13762Christian Maeder
f876a858a3644fa16b793afb4692cf353fa13762Christian Maeder obj.validators[3] = new Validator([obj.view.getEmailInput()],
f876a858a3644fa16b793afb4692cf353fa13762Christian Maeder [new Condition('email', validators.emailValidator),
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder new Condition('unique', function(inputs, self) {
e7ce154edb906685b3fa7f6c0a764e18a4658068Christian Maeder if( obj.user.email !== inputs[0].val() ) {
ccd28c25c1aee73a195053e677eca17e20917d84Christian Maeder userDelegate.checkUserNameAvailability(inputs[0].val(), function(available) {
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder if(!available) {
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder self.simpleAddError(inputs[0], "Email address already exists.");
e00f5b4d89ac027e883461aab6248e33ad10ae8eChristian Maeder self.addError(inputs[0]);
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder } else {
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder self.simpleRemoveError(inputs[0]);
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder self.removeError(inputs[0]);
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder }
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder });
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder }
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder })], 'change', 'simple', obj.validateForm);
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder };
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder obj.validate = function() {
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder var i;
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder for (i = 0; i < obj.validators.length; i++) {
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder obj.validators[i].validate();
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder }
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder };
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder obj.validateForm = function() {
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder var i, allOk = true;
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder for (i = 0; i < obj.validators.length; i++) {
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder if (obj.validators[i].isOk() === false) {
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder allOk = false;
f876a858a3644fa16b793afb4692cf353fa13762Christian Maeder break;
f876a858a3644fa16b793afb4692cf353fa13762Christian Maeder }
f876a858a3644fa16b793afb4692cf353fa13762Christian Maeder }
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder
adfdcfa67b7f12df6df7292e238c3f9a4b637980Christian Maeder if (allOk) {
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder console.log('enable');
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder obj.view.enableSaveButton();
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder } else if (!allOk) {
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder console.log('disable');
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder obj.view.disableSaveButton();
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder }
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder return allOk;
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder };
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder obj.deleteUser = function() {
3c988357f9b9de1b366278a5644f4ea009d596e2Christian Maeder eventManager.sendEvent(constants.EVENT_PROFILE_DELETE_USER_REQUEST, { userId: obj.user._id, successCallback: obj.afterUserDelete, errorCallback: obj.afterUserDelete});
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder };
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder obj.afterUserDelete = function() {
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder confirmationDialogCtrl.close();
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder };
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder obj.saveUser = function() {
f876a858a3644fa16b793afb4692cf353fa13762Christian Maeder var selfProfileUpdate = false;
f876a858a3644fa16b793afb4692cf353fa13762Christian Maeder if(obj.user._id === globalConfiguration.loggedUser._id) {
f876a858a3644fa16b793afb4692cf353fa13762Christian Maeder selfProfileUpdate = true;
3c988357f9b9de1b366278a5644f4ea009d596e2Christian Maeder }
3c988357f9b9de1b366278a5644f4ea009d596e2Christian Maeder obj.delegate.patchUserDifferences(obj.user, obj.view.getUser(), function() {
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder obj.delegate.readEntity(obj.user._id, function(user) {
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder obj.setUser(user);
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder if(selfProfileUpdate) {
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder globalConfiguration.loggedUser = user;
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder }
6f5bf1e81c4669f7c605e13548861a1207b0c7e8Christian Maeder eventManager.sendEvent(constants.EVENT_USER_PROFILE_UPDATED_SUCCESSFULY, { user: user });
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder }, function() {
de5abf4b803d72be44859fb3d0a7d5446811ba17Christian Maeder eventManager.sendEvent(constants.EVENT_USER_PROFILE_UPDATE_FAILED);
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder });
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder }, function() {
94e112d16f89130a688db8b03ad3224903f5e97eChristian Maeder eventManager.sendEvent(constants.EVENT_USER_PROFILE_UPDATE_FAILED);
f876a858a3644fa16b793afb4692cf353fa13762Christian Maeder obj.reloadUser();
319eb8dee52f1d1235910f80dde1dd5f9227ec4cChristian Maeder }, function() {
319eb8dee52f1d1235910f80dde1dd5f9227ec4cChristian Maeder obj.reloadUser();
f876a858a3644fa16b793afb4692cf353fa13762Christian Maeder });
319eb8dee52f1d1235910f80dde1dd5f9227ec4cChristian Maeder };
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maeder obj.setStates = function(country,stateProvince) {
e00f5b4d89ac027e883461aab6248e33ad10ae8eChristian Maeder var self = this;
6f485a7c411a3a411673a43aadd6293975f1b029Till Mossakowski
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder $.ajax({
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder type : "GET",
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder url : "data/" + country + ".json",
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder dataType : "json",
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder success : function(data) {
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder data = [ {
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder "key" : "",
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder "value" : "Please Select"
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder } ].concat(data);
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder obj.view.getStateProvinceInput().loadSelect(data);
de1825031cd79d4bd0b87d0566c4a5c57d60cf77Christian Maeder if(stateProvince && stateProvince!==""){
obj.view.getStateProvinceInput().val(stateProvince);
obj.view.getFirstStateProvinceOption().text("");
}else{
obj.view.getFirstStateProvinceOption().text("Please Select");
}
obj.checkSelectors();
},
error : function(xhr) {
console.log('Error: ' + xhr.status + ' ' + xhr.statusText);
}
});
};
obj.setCountryAndStateProvince = function(country, stateProvince) {
var self = this;
$.ajax({
type : "GET",
url : "data/countries.json",
dataType : "json",
success : function(data) {
data = [ {
"key" : "",
"value" : "Please Select"
} ].concat(data);
obj.view.getCountryInput().loadSelect(data);
if(country && country!==""){
obj.view.getCountryInput().val(country);
obj.view.getFirstCoutryOption().text("");
}
obj.adjustStateProvinceDropdown(null,stateProvince);
obj.checkSelectors();
},
error : function(xhr) {
console.log('Error: ' + xhr.status + ' ' + xhr.statusText);
}
});
};
obj.setSecurityQuestionSelect = function(question) {
var self = this;
$.ajax({
type : "GET",
url : "data/secquestions.json",
dataType : "json",
success : function(data) {
obj.view.getSecurityQuestion().loadSelect(data);
obj.view.getSecurityQuestion().val(question);
obj.checkSelectors();
},
error : function(xhr) {
console.log('Error: ' + xhr.status + ' ' + xhr.statusText);
}
});
};
obj.adjustStateProvinceDropdown = function(event,stateProvince) {
var country = obj.view.getCountryInput().val();
if(!country || country===""){
console.log("Removing all states/provinces");
obj.view.getStateProvinceInput().emptySelect();
if(country===""){
obj.view.getFirstCoutryOption().text("Please Select");
}
}else{
obj.view.getFirstCoutryOption().text("");
console.log("Getting data from server for "+country);
obj.setStates(country,stateProvince);
}
};
obj.checkSelectors = function() {
var self = this;
obj.view.getSelects().each(function() {
if( self.editMode === false && $(this).val() === '' ) {
self.view.setEditMode(false);
}
});
};
console.log("ProfileCtrl created");
return obj;
});