-rw-r--r-- | frontend/beta/js/Clipperz/PM/Components/Panels/AccountPanel.js | 8 | ||||
-rw-r--r-- | frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldValueComponent.js | 12 |
2 files changed, 10 insertions, 10 deletions
diff --git a/frontend/beta/js/Clipperz/PM/Components/Panels/AccountPanel.js b/frontend/beta/js/Clipperz/PM/Components/Panels/AccountPanel.js index defce91..a627adc 100644 --- a/frontend/beta/js/Clipperz/PM/Components/Panels/AccountPanel.js +++ b/frontend/beta/js/Clipperz/PM/Components/Panels/AccountPanel.js @@ -1,375 +1,375 @@ /* Copyright 2008-2013 Clipperz Srl This file is part of Clipperz, the online password manager. For further information about its features and functionalities please refer to http://www.clipperz.com. * Clipperz is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * Clipperz is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. * You should have received a copy of the GNU Affero General Public License along with Clipperz. If not, see http://www.gnu.org/licenses/. */ if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; } //############################################################################# Clipperz.PM.Components.Panels.AccountPanel = function(anElement, args) { //MochiKit.Logging.logDebug(">>> new AccountPanel"); args = args || {}; Clipperz.PM.Components.Panels.AccountPanel.superclass.constructor.call(this, anElement, args); Clipperz.NotificationCenter.register(null, 'setupDone', this, 'render'); this._shouldLoadLoginHistory = true; // this.render(); //MochiKit.Logging.logDebug("<<< new AccountPanel"); return this; } //============================================================================= YAHOO.extendX(Clipperz.PM.Components.Panels.AccountPanel, Clipperz.PM.Components.Panels.BasePanel, { 'toString': function() { return "Clipperz.PM.Components.AccountPanel component"; }, //------------------------------------------------------------------------- 'render': function() { var errorMessageActor; var changePasswordButton; var deleteAccountButton; try { //MochiKit.Logging.logDebug(">>> AccountPanel.render"); Clipperz.NotificationCenter.unregister(this); MochiKit.Signal.disconnectAllTo(this); this.element().update(""); Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[ {tag:'tbody', children:[ {tag:'tr', children:[ {tag:'td', valign:'top', width:'200', children:[ {tag:'ul', id:"accountSubMenu", cls:'subMenu', children:[ {tag:'li', id:'changePassphraseTab', htmlString:Clipperz.PM.Strings['changePasswordTabLabel']}, {tag:'li', id:'manageOTPTab', htmlString:Clipperz.PM.Strings['manageOTPTabLabel']}, {tag:'li', id:'accountPreferencesTab', htmlString:Clipperz.PM.Strings['accountPreferencesLabel']}, {tag:'li', id:'loginHistoryTab', htmlString:Clipperz.PM.Strings['accountLoginHistoryLabel']}, {tag:'li', id:'deleteAccountTab', htmlString:Clipperz.PM.Strings['deleteAccountTabLabel']} // {tag:'li', id:'paidAccountTab'), htmlString:Clipperz.PM.Strings['paidAccountTabLabel']} ]} ]}, {tag:'td', valign:'top', children:[ {tag:'ul', cls:'clipperzTabPanels', children:[ {tag:'li', id:this.getId('changePassphrasePanel'), children:[ {tag:'div', cls:'clipperzSubPanel', children:[ {tag:'h5', htmlString:Clipperz.PM.Strings['changePasswordTabTitle']}, {tag:'div', cls:'panelBody', id:'changePassphraseBlock', children:[ {tag:'form', id:this.getId('changePassphraseForm'), children:[ {tag:'h5', cls:'errorMessage', id:this.getId('changePassphrase_errorMessage')}, {tag:'table', cls:'panelBody', children:[ {tag:'tr', children:[ {tag:'td', children:[ {tag:'span', cls:'formLabel', htmlString:Clipperz.PM.Strings['changePasswordFormUsernameLabel']} ]}, {tag:'td', children:[ - {tag:'input', type:'text', name:'username', id:this.getId('changePassphrase_username')} + {tag:'input', type:'text', name:'username', id:this.getId('changePassphrase_username'), autocomplete:'off'} ]} ]}, {tag:'tr', children:[ {tag:'td', children:[ {tag:'span', cls:'formLabel', htmlString:Clipperz.PM.Strings['changePasswordFormOldPassphraseLabel']} ]}, {tag:'td', children:[ - {tag:'input', type:'password', name:'oldPassphrase', id:this.getId('changePassphrase_oldPassphrase')} + {tag:'input', type:'password', name:'oldPassphrase', id:this.getId('changePassphrase_oldPassphrase'), autocomplete:'off'} ]} ]}, {tag:'tr', children:[ {tag:'td', children:[ {tag:'span', cls:'formLabel', htmlString:Clipperz.PM.Strings['changePasswordFormNewPassphraseLabel']} ]}, {tag:'td', children:[ - {tag:'input', type:'password', name:'newPassphrase', id:this.getId('changePassphrase_newPassphrase')} + {tag:'input', type:'password', name:'newPassphrase', id:this.getId('changePassphrase_newPassphrase'), autocomplete:'off'} ]} ]}, {tag:'tr', children:[ {tag:'td', children:[ {tag:'span', cls:'formLabel', htmlString:Clipperz.PM.Strings['changePasswordFormRetypePassphraseLabel']} ]}, {tag:'td', children:[ - {tag:'input', type:'password', name:'renewPassphrase', id:this.getId('changePassphrase_renewPassphrase')} + {tag:'input', type:'password', name:'renewPassphrase', id:this.getId('changePassphrase_renewPassphrase'), autocomplete:'off'} ]} ]}, {tag:'tr', children:[ {tag:'td', align:'right', children:[ {tag:'input', type:'checkbox', id:this.getId('changePassphrase_safetyCheck')} ]}, {tag:'td', children:[ {tag:'span', htmlString:Clipperz.PM.Strings['changePasswordFormSafetyCheckboxLabel']} ]} ]} ]}, {tag:'div', cls:'clipperzSubPanelButtonBox', children:[ {tag:'div', id:this.getId('changePassphraseButton')} ]} ]} ]} ]} ]}, {tag:'li', id:this.getId('manageOTPPanel'), children:[ {tag:'div', cls:'clipperzSubPanel', children:[ {tag:'h5', htmlString:Clipperz.PM.Strings['manageOTPTabTitle']}, {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['manageOTPTabDescription']}, {tag:'div', id:'OTPComponent'} ]} ]}, {tag:'li', id:this.getId('accountPreferencesPanel'), children:[ {tag:'div', cls:'clipperzSubPanel', children:[ {tag:'h5', htmlString:Clipperz.PM.Strings['accountPreferencesTabTitle']}, {tag:'div', cls:'panelBody', id:this.getId('preferencesPanelBody')} ]} ]}, {tag:'li', id:this.getId('loginHistoryAccountPanel'), children:[ {tag:'div', cls:'clipperzSubPanel', children:[ {tag:'h5', htmlString:Clipperz.PM.Strings['loginHistoryTabTitle']}, {tag:'div', cls:'panelBody', id:'loginHistoryAccountBlock'} ]} ]}, {tag:'li', id:this.getId('deleteAccountPanel'), children:[ {tag:'div', cls:'clipperzSubPanel', children:[ {tag:'h5', htmlString:Clipperz.PM.Strings['deleteAccountTabTitle']}, {tag:'div', cls:'panelBody', id:'deleteAccountBlock', children:[ {tag:'form', id:this.getId('deleteAccountForm'), children:[ {tag:'h5', cls:'errorMessage', id:this.getId('deleteAccount_errorMessage')}, {tag:'table', cls:'panelBody', children:[ {tag:'tr', children:[ {tag:'td', children:[ {tag:'span', cls:'formLabel', htmlString:Clipperz.PM.Strings['deleteAccountFormUsernameLabel']} ]}, {tag:'td', children:[ {tag:'input', type:'text', name:'username', id:this.getId('deleteAccount_username')} ]} ]}, {tag:'tr', children:[ {tag:'td', children:[ {tag:'span', cls:'formLabel', htmlString:Clipperz.PM.Strings['deleteAccountFormPassphraseLabel']} ]}, {tag:'td', children:[ {tag:'input', type:'password', name:'passphrase', id:this.getId('deleteAccount_passphrase')} ]} ]}, {tag:'tr', children:[ {tag:'td', align:'right', children:[ {tag:'input', type:'checkbox', id:this.getId('deleteAccount_safetyCheck')} ]}, {tag:'td', children:[ {tag:'span', htmlString:Clipperz.PM.Strings['deleteAccountFormSafetyCheckboxLabel']} ]} ]} ]}, {tag:'div', cls:'clipperzSubPanelButtonBox', children:[ {tag:'div', id:this.getId('deleteAccountButton')} ]} ]} ]} ]} ]} /* {tag:'li', id:this.getId('paidAccountPanel'), children:[ {tag:'div', cls:'clipperzSubPanel', children:[ {tag:'h5', htmlString:Clipperz.PM.Strings['upgradeAccountTabTitle']}, {tag:'div', htmlString:Clipperz.PM.Strings['comingSoon']} ]} ]} */ ]} ]} ]} ]} ]}); //MochiKit.Logging.logDebug("--- AccountPanel.render - 1"); MochiKit.Signal.connect(this.getId('changePassphraseForm'), 'onkeydown', this, 'onkeydown'); errorMessageActor = this.getActor('changePassphrase_errorMessage'); errorMessageActor.setVisibilityMode(YAHOO.ext.Element.DISPLAY); errorMessageActor.update("---"); errorMessageActor.hide(); changePasswordButton = new YAHOO.ext.Button(this.getDom('changePassphraseButton'), {text:Clipperz.PM.Strings['changePasswordFormSubmitLabel'], handler:this.doChangePassphrase, scope:this}); //MochiKit.Logging.logDebug("--- AccountPanel.render - 2"); MochiKit.Signal.connect(this.getId('deleteAccountForm'), 'onkeydown', this, 'onkeydown'); errorMessageActor = this.getActor('deleteAccount_errorMessage'); errorMessageActor.setVisibilityMode(YAHOO.ext.Element.DISPLAY); errorMessageActor.update(Clipperz.PM.Strings['deleteAccountFormEmptyErrorMessage']); errorMessageActor.hide(); deleteAccountButton = new YAHOO.ext.Button(this.getDom('deleteAccountButton'), {text:Clipperz.PM.Strings['deleteAccountFormSubmitLabel'], handler:this.doDeleteAccount, scope:this}); //MochiKit.Logging.logDebug("--- AccountPanel.render - 5"); if (Clipperz.PM.Proxy.defaultProxy.isReadOnly()) { this.getElement('changePassphraseForm').addClass('read-only'); // this.getElement('accountPreferencesForm').addClass('read-only'); this.getElement('deleteAccountForm').addClass('read-only'); changePasswordButton.disable(); deleteAccountButton.disable(); } //MochiKit.Logging.logDebug("--- AccountPanel.render - 6"); new Clipperz.PM.Components.PasswordEntropyDisplay(this.getElement('changePassphrase_oldPassphrase')); new Clipperz.PM.Components.PasswordEntropyDisplay(this.getElement('changePassphrase_newPassphrase')); new Clipperz.PM.Components.OTP.MainComponent(YAHOO.ext.Element.get('OTPComponent'), {user:this.user()}); this.tabPanelController().setUp(); Clipperz.NotificationCenter.register(null, 'tabSelected', this, 'tabSelectedHandler'); Clipperz.NotificationCenter.register(null, 'updatedPreferences', this, 'renderPreferences'); Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler'); //MochiKit.Logging.logDebug("<<< AccountPanel.render"); } catch(exception) { MochiKit.Logging.logError("### " + exception); throw exception; } }, //------------------------------------------------------------------------- 'tabPanelController': function() { if (this._tabPanelController == null) { var tabPanelControllerConfig; tabPanelControllerConfig = {} tabPanelControllerConfig['changePassphraseTab'] = this.getId('changePassphrasePanel'); tabPanelControllerConfig['manageOTPTab'] = this.getId('manageOTPPanel'); tabPanelControllerConfig['accountPreferencesTab'] = this.getId('accountPreferencesPanel'); tabPanelControllerConfig['loginHistoryTab'] = this.getId('loginHistoryAccountPanel'); tabPanelControllerConfig['deleteAccountTab'] = this.getId('deleteAccountPanel'); // tabPanelControllerConfig['paidAccountTab'] = this.getId('paidAccountPanel'); this._tabPanelController = new Clipperz.PM.Components.TabPanel.TabPanelController({ name:'accountTabPanel', config:tabPanelControllerConfig, selectedTab:'changePassphraseTab' }); } return this._tabPanelController; }, //------------------------------------------------------------------------- 'doChangePassphrase': function() { if (Clipperz.PM.Proxy.defaultProxy.isReadOnly() == false) { var username; var oldPassphrase; var newPassphrase; var renewPassphrase; var safetyCheck; var areThereAnyErrors; var errorMessageActor; errorMessageActor = this.getActor('changePassphrase_errorMessage'); areThereAnyErrors = false; username = this.getDom('changePassphrase_username').value; oldPassphrase= this.getDom('changePassphrase_oldPassphrase').value; newPassphrase= this.getDom('changePassphrase_newPassphrase').value; renewPassphrase= this.getDom('changePassphrase_renewPassphrase').value; safetyCheck = this.getDom('changePassphrase_safetyCheck').checked; if (this.user().username() != username) { this.showFormErrorMessageAnimation(errorMessageActor, Clipperz.PM.Strings['changePasswordFormWrongUsernameWarning']); this.getElement('changePassphrase_username').focus().dom.select(); areThereAnyErrors = true; } else if (this.user().passphrase() != oldPassphrase) { this.showFormErrorMessageAnimation(errorMessageActor, Clipperz.PM.Strings['changePasswordFormWrongPassphraseWarning']); this.getElement('changePassphrase_oldPassphrase').focus().dom.select(); areThereAnyErrors = true; } else if (newPassphrase != renewPassphrase) { this.showFormErrorMessageAnimation(errorMessageActor, Clipperz.PM.Strings['changePasswordFormWrongRetypePassphraseWarning']); this.getElement('changePassphrase_renewPassphrase').focus().dom.select(); areThereAnyErrors = true; } else if (safetyCheck != true) { this.showFormErrorMessageAnimation(errorMessageActor, Clipperz.PM.Strings['changePasswordFormSafetyCheckWarning']); this.getElement('changePassphrase_safetyCheck').focus(); areThereAnyErrors = true; } if (areThereAnyErrors == false) { errorMessageActor.hide(); this.doChangePassphraseWithUsernameAndPassphrase(username, newPassphrase); } } }, //------------------------------------------------------------------------- 'doChangePassphraseWithUsernameAndPassphrase': function(anUsername, aPassphrase) { var deferredResult; //MochiKit.Logging.logDebug(">>> AccountPanel.doChangePassphraseWithUsernameAndPassphrase - this.user: " + this.user()); deferredResult = new MochiKit.Async.Deferred(); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug(" AccountPanel.doChangePassphraseWithUsernameAndPassphrase 1: " + res); return res;}); deferredResult.addCallback(MochiKit.Base.method(Clipperz.PM.Components.MessageBox(), 'deferredShow'), { title:Clipperz.PM.Strings['changePasswordFormProgressDialogTitle'], text:Clipperz.PM.Strings['changePasswordFormProgressDialogEmptyText'], width:240, showProgressBar:true, showCloseButton:false, steps:4 }, this.getDom('changePassphraseButton') ); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug(" AccountPanel.doChangePassphraseWithUsernameAndPassphrase 2: " + res); return res;}); deferredResult.addCallback(MochiKit.Base.method(this.user(), 'changeCredentials'), anUsername, aPassphrase); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug(" AccountPanel.doChangePassphraseWithUsernameAndPassphrase 3: " + res); return res;}); deferredResult.addCallback(function() { Clipperz.PM.Components.MessageBox().update({ title:Clipperz.PM.Strings['changePasswordFormProgressDialogConnectedMessageTitle'], text:Clipperz.PM.Strings['changePasswordFormProgressDialogConnectedMessageText'], /*showProgressBar:false,*/ step:'next' }); }); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug(" AccountPanel.doChangePassphraseWithUsernameAndPassphrase 4: " + res); return res;}); deferredResult.addCallback(MochiKit.Async.wait, 1); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug(" AccountPanel.doChangePassphraseWithUsernameAndPassphrase 5: " + res); return res;}); deferredResult.addCallback(function(anAccountPanel, res) { Clipperz.PM.Components.MessageBox().hide(YAHOO.ext.Element.get('main')); anAccountPanel.getDom('changePassphrase_username').value = ""; anAccountPanel.getDom('changePassphrase_oldPassphrase').value = ""; anAccountPanel.getElement('changePassphrase_oldPassphrase').focus(); anAccountPanel.getDom('changePassphrase_newPassphrase').value = ""; anAccountPanel.getElement('changePassphrase_newPassphrase').focus(); anAccountPanel.getDom('changePassphrase_renewPassphrase').value = ""; anAccountPanel.getDom('changePassphrase_safetyCheck').checked = false; anAccountPanel.getElement('changePassphrase_username').focus(); return res; }, this); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug(" AccountPanel.doChangePassphraseWithUsernameAndPassphrase 6: " + res); return res;}); deferredResult.addErrback(function() { Clipperz.PM.Components.MessageBox().update({ title:Clipperz.PM.Strings['changePasswordFormProgressDialogErrorMessageTitle'], diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldValueComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldValueComponent.js index f2c70aa..a8117d7 100644 --- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldValueComponent.js +++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldValueComponent.js @@ -1,270 +1,270 @@ /* Copyright 2008-2013 Clipperz Srl This file is part of Clipperz, the online password manager. For further information about its features and functionalities please refer to http://www.clipperz.com. * Clipperz is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * Clipperz is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. * You should have received a copy of the GNU Affero General Public License along with Clipperz. If not, see http://www.gnu.org/licenses/. */ if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } //############################################################################# Clipperz.PM.Components.RecordDetail.FieldValueComponent = function(anElement, args) { args = args || {}; Clipperz.PM.Components.RecordDetail.FieldValueComponent.superclass.constructor.call(this, anElement, args); this._inputElement = null; this._scrambledStatus = 'SCRAMBLED'; // 'UNSCRAMBLED' this.render(); return this; } //============================================================================= YAHOO.extendX(Clipperz.PM.Components.RecordDetail.FieldValueComponent, Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent, { 'toString': function() { return "Clipperz.PM.Components.RecordDetail.FieldValueComponent component"; }, //------------------------------------------------------------------------- 'value': function() { return this.recordField().value(); }, 'setValue': function(aValue) { this.recordField().setValue(aValue); }, //------------------------------------------------------------------------- 'inputElement': function() { return this._inputElement; }, 'setInputElement': function(aValue) { this._inputElement = aValue; }, //------------------------------------------------------------------------- 'scrambledStatus': function() { return this._scrambledStatus; }, 'setScrambledStatus': function(aValue) { this._scrambledStatus = aValue; }, //------------------------------------------------------------------------- 'handleTypeChange': function() { //MochiKit.Logging.logDebug(">>> handling type change - " + this.recordField().type()); this.synchronizeComponentValues(); this.update(); }, //------------------------------------------------------------------------- 'addrUrl': function() { var result; result = "http://maps.google.com/maps?q=" + this.value().split(' ').join('+'); return result; }, //------------------------------------------------------------------------- 'updateViewMode': function() { var scarmbledStatus; scrambledStatus = this.scrambledStatus() || 'SCRAMBLED'; this.element().update(""); if (this.recordField().hidden() == false) { switch(this.recordField().type()) { case 'TXT': case 'PWD': Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'span', html:this.value()}); break; case 'URL': var urlLocation; urlLocation = Clipperz.Base.sanitizeString(this.value()); if (! (/^(https?|ftp|svn):\/\//.test(urlLocation))) { urlLocation = 'http://' + urlLocation; } Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'a', href:urlLocation, html:this.value(), target:'_blank'}); break; case 'DATE': Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'span', html:this.value()}); break; case 'ADDR': Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'a', href:this.addrUrl(), html:this.value(), target:'_blank'}); break; } } else { var tableElement; var tdElement; var inputElement; var passwordElementConfiguration; if (scrambledStatus == 'SCRAMBLED') { var scrambledInputElement; if ((Clipperz_IEisBroken === true) && (Clipperz.PM.Proxy.defaultProxy.isReadOnly())) { - scrambledInputElement = {tag:'input', type:'password', value:"this.value()"}; + scrambledInputElement = {tag:'input', type:'password', value:"this.value()", autocomplete:"off"}; } else { - scrambledInputElement = {tag:'input', type:'text', cls:'scrambledField', title:Clipperz.PM.Strings['recordDetailPasswordFieldTooltipLabel'], value:"this.value()"}; + scrambledInputElement = {tag:'input', type:'text', cls:'scrambledField', title:Clipperz.PM.Strings['recordDetailPasswordFieldTooltipLabel'], value:"this.value()", autocomplete:"off"}; } passwordElementConfiguration = {tag:'table', border:'0', cellspacing:'2', cellpadding:'0', children:[ {tag:'tbody', children:[ {tag:'tr', children:[ {tag:'td', valign:'top', children:[ scrambledInputElement, {tag:'a', cls:'scrambleLink', id:this.getId('scrambleLink'), href:'#', htmlString:Clipperz.PM.Strings['recordDetailPasswordFieldUnscrambleLabel']} ]}, {tag:'td', valign:'top', children:[ {tag:'span', cls:'scrambledFieldLabel', htmlString:Clipperz.PM.Strings['recordDetailPasswordFieldHelpLabel']} ]} ]} ]} ]}; } else { passwordElementConfiguration = {tag:'div', children:[ - {tag:'input', type:'text', cls:'unscrambledField', value:"this.value()"}, + {tag:'input', type:'text', cls:'unscrambledField', value:"this.value()", autocomplete:"off"}, {tag:'a', cls:'scrambleLink', id:this.getId('scrambleLink'), href:'#', htmlString:Clipperz.PM.Strings['recordDetailPasswordFieldScrambleLabel']} ]}; } tableElement = Clipperz.YUI.DomHelper.append(this.element().dom, passwordElementConfiguration, true); inputElement = tableElement.getChildrenByTagName('input')[0]; inputElement.dom.value = this.value(); inputElement.wrap({tag:'div', cls:'passwordBackground'}).setStyle('background-position', "0px -" + Math.min(128, Clipperz.PM.Crypto.passwordEntropy(this.value())) + "px"); MochiKit.Signal.connect(inputElement.dom, 'onfocus', this, 'selectHiddenFieldOnFocus'); MochiKit.Signal.connect(this.getDom('scrambleLink'), 'onclick', this, 'toggleScramble'); } }, //------------------------------------------------------------------------- 'updateEditMode': function() { var inputElement; var scarmbledStatus; scrambledStatus = this.scrambledStatus() || 'SCRAMBLED'; this.element().update(""); switch(this.recordField().type()) { case 'TXT': case 'URL': case 'ADDR': - inputElement = Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'input', type:'text', value:"this.value()"}, true); + inputElement = Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'input', type:'text', value:"this.value()", autocomplete:"off"}, true); inputElement.dom.value = this.value(); break; case 'PWD': Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', width:'100%', cellpadding:'0', cellspacing:'0', children:[ {tag:'tbody', children:[ {tag:'tr', children:[ {tag:'td', valign:'top', children:[ - {tag:'input', type:((scrambledStatus == 'SCRAMBLED') ? 'password' : 'text'), id:this.getId('passwordInputElement'), value:"this.value()"}, + {tag:'input', type:((scrambledStatus == 'SCRAMBLED') ? 'password' : 'text'), id:this.getId('passwordInputElement'), value:"this.value()", autocomplete:"off"}, {tag:'a', cls:'scrambleLink', id:this.getId('scrambleLink'), href:'#', html:(scrambledStatus == 'SCRAMBLED' ? Clipperz.PM.Strings['recordDetailPasswordFieldUnscrambleLabel'] : Clipperz.PM.Strings['recordDetailPasswordFieldScrambleLabel'])} ]}, {tag:'td', valign:'top', children:[ {tag:'div', id:this.getId('passwordGenerator'), cls:'Clipperz_PasswordGenerator_button', html:' '} ]} ]} ]} ]}) inputElement = this.getElement('passwordInputElement'); inputElement.dom.value = this.value(); new Clipperz.PM.Components.PasswordEntropyDisplay(this.getElement('passwordInputElement')); new Clipperz.PM.Components.PasswordGenerator(this.getElement('passwordGenerator'), this); MochiKit.Signal.connect(this.getDom('scrambleLink'), 'onclick', this, 'toggleScramble'); break; // case 'NOTE': // inputElement = Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'textarea', rows:'5', html:this.value()}, true); // break case 'DATE': - inputElement = Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'input', type:'text', value:"this.value()"}, true); + inputElement = Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'input', type:'text', value:"this.value()", autocomplete:"off"}, true); inputElement.dom.value = this.value(); break; } this.setInputElement(inputElement); }, //------------------------------------------------------------------------- 'synchronizeComponentValues': function() { //MochiKit.Logging.logDebug(">>> FieldValueComponent.synchronizeComponentValues"); if (this.inputElement() != null) { var value; switch(this.recordField().type()) { case 'TXT': case 'URL': case 'ADDR': case 'PWD': case 'DATE': value = this.inputElement().dom.value; break; } this.setValue(value); } //MochiKit.Logging.logDebug("<<< FieldValueComponent.synchronizeComponentValues"); }, //------------------------------------------------------------------------- 'selectHiddenFieldOnFocus': function(anEvent) { anEvent.src().select(); }, //------------------------------------------------------------------------- 'toggleScramble': function(anEvent) { this.synchronizeComponentValues(); if (this.scrambledStatus() == 'SCRAMBLED') { this.setScrambledStatus('UNSCRAMBLED'); } else { this.setScrambledStatus('SCRAMBLED'); }; this.update(); }, //------------------------------------------------------------------------- __syntaxFix__: "syntax fix" }); |