mirror of
http://git.whoc.org.uk/git/password-manager.git
synced 2025-10-29 10:27:35 +01:00
First version of the newly restructured repository
This commit is contained in:
784
frontend/beta/js/Clipperz/PM/Components/Panels/AccountPanel.js
Normal file
784
frontend/beta/js/Clipperz/PM/Components/Panels/AccountPanel.js
Normal file
@@ -0,0 +1,784 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2011 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz's Javascript Crypto Library.
|
||||
Javascript Crypto Library provides web developers with an extensive
|
||||
and efficient set of cryptographic functions. The library aims to
|
||||
obtain maximum execution speed while preserving modularity and
|
||||
reusability.
|
||||
For further information about its features and functionalities please
|
||||
refer to http://www.clipperz.com
|
||||
|
||||
* Javascript Crypto Library 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.
|
||||
|
||||
* Javascript Crypto Library 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 Javascript Crypto Library. 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:'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:'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:'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:'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'],
|
||||
text:Clipperz.PM.Strings['changePasswordFormProgressDialogErrorMessageText'],
|
||||
buttons:{'ok':"close"}
|
||||
});
|
||||
});
|
||||
//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug(" AccountPanel.doChangePassphraseWithUsernameAndPassphrase 7: " + res); return res;});
|
||||
deferredResult.callback();
|
||||
|
||||
//MochiKit.Logging.logDebug("<<< AccountPanel.doChangePassphraseWithUsernameAndPassphrase");
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'doDeleteAccount': function() {
|
||||
if (Clipperz.PM.Proxy.defaultProxy.isReadOnly() == false) {
|
||||
var username;
|
||||
var passphrase;
|
||||
var safetyCheck;
|
||||
var areThereAnyErrors;
|
||||
var errorMessageActor;
|
||||
|
||||
errorMessageActor = this.getActor('deleteAccount_errorMessage');
|
||||
|
||||
areThereAnyErrors = false;
|
||||
username = this.getDom('deleteAccount_username').value;
|
||||
passphrase= this.getDom('deleteAccount_passphrase').value;
|
||||
safetyCheck = this.getDom('deleteAccount_safetyCheck').checked;
|
||||
|
||||
if (this.user().username() != username) {
|
||||
this.showFormErrorMessageAnimation(errorMessageActor, Clipperz.PM.Strings['deleteAccountFormWrongUsernameWarning']);
|
||||
this.getElement('deleteAccount_username').focus().dom.select();
|
||||
areThereAnyErrors = true;
|
||||
} else if (this.user().passphrase() != passphrase) {
|
||||
this.showFormErrorMessageAnimation(errorMessageActor, Clipperz.PM.Strings['deleteAccountFormWrongPassphraseWarning']);
|
||||
this.getElement('deleteAccount_passphrase').focus().dom.select();
|
||||
areThereAnyErrors = true;
|
||||
} else if (safetyCheck != true) {
|
||||
this.showFormErrorMessageAnimation(errorMessageActor, Clipperz.PM.Strings['deleteAccountFormSafetyCheckWarning']);
|
||||
this.getElement('deleteAccount_safetyCheck').focus();
|
||||
areThereAnyErrors = true;
|
||||
}
|
||||
|
||||
if (areThereAnyErrors == false) {
|
||||
var deferred;
|
||||
|
||||
deferred = new MochiKit.Async.Deferred();
|
||||
errorMessageActor.hide();
|
||||
|
||||
deferred.addCallback(function() {
|
||||
var deferredResult;
|
||||
|
||||
// TODO: if the form is submitted with the return key, the confirmation dialog is skipped!?
|
||||
deferredResult = new MochiKit.Async.Deferred();
|
||||
Clipperz.PM.Components.MessageBox().deferredShow({
|
||||
title:Clipperz.PM.Strings['accountPanelDeletingAccountPanelConfirmationTitle'],
|
||||
text:Clipperz.PM.Strings['accountPanelDeleteAccountPanelConfirmationText'],
|
||||
width:240,
|
||||
showProgressBar:false,
|
||||
showCloseButton:false,
|
||||
buttons:{
|
||||
'yes':Clipperz.PM.Strings['accountPanelDeleteAccountPanelConfirmButtonLabel'],
|
||||
'no':Clipperz.PM.Strings['accountPanelDeleteAccountPanelDenyButtonLabel']
|
||||
},
|
||||
fn:MochiKit.Base.partial(function(aDeferred, aResult) {
|
||||
if (aResult == 'yes') {
|
||||
aDeferred.callback(aResult);
|
||||
} else {
|
||||
aDeferred.errback(aResult);
|
||||
}
|
||||
}, deferredResult)
|
||||
});
|
||||
|
||||
return deferredResult;
|
||||
});
|
||||
deferred.addCallback(MochiKit.Base.method(Clipperz.PM.Components.MessageBox(), 'deferredShow'),
|
||||
{
|
||||
title:Clipperz.PM.Strings['accountPanelDeletingAccountPanelProgressTitle'],
|
||||
text:Clipperz.PM.Strings['accountPanelDeletingAccountPanelProgressText'],
|
||||
width:240,
|
||||
showProgressBar:true,
|
||||
showCloseButton:false
|
||||
}
|
||||
);
|
||||
deferred.addCallback(MochiKit.Base.method(this.user(), 'deleteAccountAction'));
|
||||
deferred.addCallback(Clipperz.PM.exit, 'accountDeleted.html');
|
||||
deferred.addErrback(function(res) {
|
||||
alert(res);
|
||||
})
|
||||
deferred.callback();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'showFormErrorMessageAnimation': function(anActor, anErrorMessage, aCallback) {
|
||||
anActor.update(anErrorMessage);
|
||||
anActor.show(true);
|
||||
anActor.play(aCallback);
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'onkeydown': function(anEvent) {
|
||||
//MochiKit.Logging.logDebug(">>> onkeydown - " + anEvent.src().id);
|
||||
if (anEvent.key().code == 13) {
|
||||
anEvent.stop();
|
||||
|
||||
if (anEvent.src() == this.getDom('changePassphraseForm')) {
|
||||
this.doChangePassphrase();
|
||||
} else if (anEvent.src() == this.getDom('deleteAccountForm')) {
|
||||
this.doDeleteAccount();
|
||||
} else {
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'selectSelectedLanguageOption': function() {
|
||||
var userSelectedLanguage;
|
||||
|
||||
userSelectedLanguage = this.user().preferences().preferredLanguage() || "default";
|
||||
MochiKit.Base.filter(function(anOption) {return (anOption.value == userSelectedLanguage)}, this.getDom('languageSelector').childNodes)[0].selected = true;
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'doSaveUserPreferences': function() {
|
||||
var selectedLanguage;
|
||||
var showDonationReminderDialog;
|
||||
// var disableUnsecureFaviconLoadingForIE;
|
||||
|
||||
//MochiKit.Logging.logDebug(">>> AccountPanel.doSaveUserPreferences");
|
||||
selectedLanguage = this.getDom('languageSelector').value;
|
||||
if (selectedLanguage == "default") {
|
||||
selectedLanguage = null;
|
||||
}
|
||||
this.user().preferences().setPreferredLanguage(selectedLanguage);
|
||||
|
||||
showDonationReminderDialog = this.getDom('showDonationReminderCheckbox').checked;
|
||||
this.user().preferences().setShouldShowDonationPanel(showDonationReminderDialog);
|
||||
|
||||
// disableUnsecureFaviconLoadingForIE = this.getDom('disableFaviconForIECheckbox').checked;
|
||||
// this.user().preferences().setDisableUnsecureFaviconLoadingForIE(disableUnsecureFaviconLoadingForIE);
|
||||
|
||||
this.user().preferences().saveChanges(this.getDom('saveUserPreferences'));
|
||||
},
|
||||
|
||||
'doCancelUserPreferences': function() {
|
||||
this.renderPreferences();
|
||||
},
|
||||
|
||||
// 'switchLanguage': function(anEvent) {
|
||||
// Clipperz.PM.Strings.Languages.setSelectedLanguage(anEvent.src().value);
|
||||
// },
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'renderLoginHistory': function() {
|
||||
var element;
|
||||
|
||||
//MochiKit.Logging.logDebug(">>> AccountPanel.renderLoginHistory");
|
||||
element = YAHOO.ext.Element.get('loginHistoryAccountBlock');
|
||||
|
||||
if (Clipperz.PM.Proxy.defaultProxy.isReadOnly()) {
|
||||
element.update("");
|
||||
this.domHelper().append(element, {tag:'div', cls:'loginHistoryReadOnlyMessage', htmlString:Clipperz.PM.Strings['loginHistoryReadOnlyMessage']});
|
||||
} else {
|
||||
var deferredResult;
|
||||
|
||||
deferredResult = new MochiKit.Async.Deferred();
|
||||
deferredResult.addCallback(MochiKit.Base.bind(function(anElement) {
|
||||
anElement.update("");
|
||||
Clipperz.YUI.DomHelper.append(anElement, {tag:'div', cls:'loadingMessage', htmlString:Clipperz.PM.Strings['loginHistoryLoadingMessage']});
|
||||
}, this), element);
|
||||
deferredResult.addCallback(MochiKit.Base.method(this.user(), 'loadLoginHistory'));
|
||||
deferredResult.addCallback(MochiKit.Base.bind(function(anElement, aResult) {
|
||||
var loginListItems;
|
||||
var tBodyElement;
|
||||
var imageExtension;
|
||||
var now;
|
||||
var i, c;
|
||||
|
||||
loginListItems = aResult;
|
||||
//MochiKit.Logging.logDebug("=== loginListItems: " + Clipperz.Base.serializeJSON(loginListItems));
|
||||
imageExtension = (Clipperz_IEisBroken == true) ? 'gif': 'png';
|
||||
|
||||
now = new Date();
|
||||
anElement.update("");
|
||||
Clipperz.YUI.DomHelper.append(anElement, {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['loginHistoryLoadedMessage']});
|
||||
Clipperz.YUI.DomHelper.append(anElement, {tag:'table', id:'loginHistoryTable', cellspacing:'0', cellpadding:'2', border:'0', children:[
|
||||
{tag:'tbody', id:this.getId('loginHistoryTBody'), children:[]}
|
||||
]});
|
||||
//# Clipperz.YUI.DomHelper.append(anElement, {tag:'div', id:'loginHistoryFooter', children:[
|
||||
Clipperz.YUI.DomHelper.append(anElement, {tag:'div', cls:'clipperzSubPanelButtonBox', children:[
|
||||
{tag:'div', id:this.getId('reloadHistoryButton')}
|
||||
]});
|
||||
|
||||
new YAHOO.ext.Button(this.getDom('reloadHistoryButton'), {text:Clipperz.PM.Strings['loginHistoryReloadButtonLabel'], handler:this.reloadHistory, scope:this});
|
||||
|
||||
tBodyElement = this.getElement('loginHistoryTBody');
|
||||
c = loginListItems.length;
|
||||
for (i=0; i<c; i++) {
|
||||
var ip;
|
||||
var date;
|
||||
var mainText;
|
||||
|
||||
date = Clipperz.PM.Date.parseDateWithUTCFormat(loginListItems[i]['date']);
|
||||
|
||||
if (loginListItems[i]['isCurrent'] === true) {
|
||||
mainText ={tag:'div', cls:'currentSession', htmlString:Clipperz.PM.Strings['loginHistoryCurrentSessionText']}
|
||||
} else {
|
||||
mainText = {tag:'div', cls:'elapsedTime', html:Clipperz.PM.Date.getElapsedTimeDescription(date)}
|
||||
}
|
||||
|
||||
if (loginListItems[i]['connectionType'] == "ONE_TIME_PASSPHRASE") {
|
||||
optionalInfo = [
|
||||
{tag:'span', html:"OTP"}
|
||||
];
|
||||
} else {
|
||||
optionalInfo = [];
|
||||
}
|
||||
|
||||
ip = (loginListItems[i]['ip'].match(/^\d{1,3}(.\d{1,3}){3}$/)) ? loginListItems[i]['ip'] : Clipperz.PM.Strings['unknown_ip'];
|
||||
Clipperz.YUI.DomHelper.append(tBodyElement, {tag:'tr', children:[
|
||||
{tag:'td', cls:'loginHistoryValues', valign:'top', children:[
|
||||
mainText,
|
||||
{tag:'div', cls:'fullDate', html:Clipperz.PM.Date.formatDateWithTemplate(date, Clipperz.PM.Strings['fullDate_format'])},
|
||||
{tag:'div', cls:'loginHistoryIP', children:[
|
||||
{tag:'span', cls:'loginHistoryIPLabel', htmlString:Clipperz.PM.Strings['loginHistoryIPLabel']},
|
||||
{tag:'span', cls:'loginHistoryIPValue', html:ip}
|
||||
]}
|
||||
]},
|
||||
{tag:'td', cls:'loginHistoryCountry', valign:'top', children:optionalInfo},
|
||||
{tag:'td', cls:'loginHistoryCountry', valign:'top', align:'center', children:[
|
||||
{tag:'img', title:Clipperz.PM.Strings['countries'][loginListItems[i]['country']], cls:'flag', src:Clipperz.PM.Strings['icons_baseUrl'] + "/flags/" + loginListItems[i]['country'].toLowerCase() + "." + imageExtension, width:'32', height:'32'}
|
||||
// {tag:'span', cls:'label', htmlString:Clipperz.PM.Strings['countries'][loginListItems[i]['country']]}
|
||||
]},
|
||||
{tag:'td', cls:'loginHistoryBrowser', valign:'top', align:'center', children:[
|
||||
{tag:'img', title:Clipperz.PM.Strings['browsers'][loginListItems[i]['browser']], cls:'browser', src:Clipperz.PM.Strings['icons_baseUrl'] + "/browsers/" + loginListItems[i]['browser'].toLowerCase() + "." + imageExtension, width:'32', height:'32'}
|
||||
// {tag:'span', cls:'label', htmlString:Clipperz.PM.Strings['browsers'][loginListItems[i]['browser']]}
|
||||
]},
|
||||
{tag:'td', cls:'loginHistoryOperatingSystem', valign:'top', align:'center', children:[
|
||||
{tag:'img', title:Clipperz.PM.Strings['operatingSystems'][loginListItems[i]['operatingSystem']], cls:'operatingSystem', src:Clipperz.PM.Strings['icons_baseUrl'] + "/operatingSystems/" + loginListItems[i]['operatingSystem'].toLowerCase() + "." + imageExtension, width:'32', height:'32'}
|
||||
// {tag:'span', cls:'label', htmlString:Clipperz.PM.Strings['operatingSystems'][loginListItems[i]['operatingSystem']]}
|
||||
]}
|
||||
]});
|
||||
}
|
||||
|
||||
Clipperz.Style.applyZebraStylesToTable('loginHistoryTable');
|
||||
}, this), element);
|
||||
|
||||
deferredResult.callback();
|
||||
}
|
||||
//MochiKit.Logging.logDebug("<<< AccountPanel.renderLoginHistory");
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'renderPreferences': function() {
|
||||
var saveUserPreferencesButton;
|
||||
var cancelUserPreferencesButton;
|
||||
var preferencedPanelBodyElement;
|
||||
|
||||
preferencedPanelBodyElement = this.getElement('preferencesPanelBody');
|
||||
|
||||
preferencedPanelBodyElement.update("");
|
||||
Clipperz.YUI.DomHelper.append(preferencedPanelBodyElement,
|
||||
{tag:'form', id:this.getId('accountPreferencesForm'), children:[
|
||||
{tag:'table', cls:'panelBody', children:[
|
||||
{tag:'tr', cls:'openPreferenceBlock', children:[
|
||||
{tag:'td', children:[
|
||||
{tag:'div', cls:'preferenceBlockTitle', htmlString:Clipperz.PM.Strings['accountPreferencesLanguageTitle']},
|
||||
{tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['accountPreferencesLanguageDescription']},
|
||||
{tag:'div', cls:'panelDescription', children:[
|
||||
{tag:'select',
|
||||
id:this.getId('languageSelector'),
|
||||
children:MochiKit.Base.concat([{tag:'option', value:"default", html:"---"}], Clipperz.PM.Strings['loginPanelSwitchLanguageSelectOptions'])
|
||||
}
|
||||
]}
|
||||
]}
|
||||
]},
|
||||
{tag:'tr', cls:'openPreferenceBlock', children:[
|
||||
{tag:'td', children:[
|
||||
{tag:'div', cls:'preferenceBlockTitle', htmlString:Clipperz.PM.Strings['showDonationReminderPanelTitle']},
|
||||
{tag:'table', cellpadding:'0', cellspacing:'0', children:[
|
||||
{tag:'tbody', children:[
|
||||
{tag:'tr', children:[
|
||||
{tag:'td', valign:'top', children:[
|
||||
{tag:'div', cls:'panelDescription', children:[
|
||||
{tag:'input', type:'checkbox', id:this.getId('showDonationReminderCheckbox')}
|
||||
]}
|
||||
]},
|
||||
{tag:'td', valign:'top', children:[
|
||||
{tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['showDonationReminderPanelDescription']}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]} //,
|
||||
/*
|
||||
{tag:'tr', cls:'openPreferenceBlock', children:[
|
||||
{tag:'td', children:[
|
||||
{tag:'div', cls:'preferenceBlockTitle', htmlString:Clipperz.PM.Strings['disableFaviconForIETitle']},
|
||||
{tag:'table', cellpadding:'0', cellspacing:'0', children:[
|
||||
{tag:'tbody', children:[
|
||||
{tag:'tr', children:[
|
||||
{tag:'td', valign:'top', children:[
|
||||
{tag:'div', cls:'panelDescription', children:[
|
||||
{tag:'input', type:'checkbox', id:this.getId('disableFaviconForIECheckbox')}
|
||||
]}
|
||||
]},
|
||||
{tag:'td', valign:'top', children:[
|
||||
{tag:'div', cls:'panelDescription', children:Clipperz.PM.Strings['disableFaviconForIEDescriptionConfig']}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]},
|
||||
*/
|
||||
// {tag:'tr', cls:'openPreferenceBlock', children:[
|
||||
// {tag:'td', children:[
|
||||
// {tag:'div', cls:'preferenceBlockTitle', htmlString:Clipperz.PM.Strings['accountPreferencesInterfaceTitle']},
|
||||
// {tag:'div', cls:'panelDescription', children:Clipperz.PM.Strings['accountPreferencesInterfaceDescriptionConfig']}
|
||||
// ]}
|
||||
// ]}
|
||||
]},
|
||||
{tag:'div', cls:'clipperzSubPanelButtonBox', children:[
|
||||
{tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[
|
||||
{tag:'tbody', children:[
|
||||
{tag:'tr', children:[
|
||||
{tag:'td', width:'100', align:'right', cls:'newRecordPanelButtonTD', children:[
|
||||
{tag:'div', id:this.getId('saveUserPreferences')}
|
||||
]},
|
||||
{tag:'td', width:'10', html:" "},
|
||||
{tag:'td', cls:'newRecordPanelButtonTD', children:[
|
||||
{tag:'div', id:this.getId('cancelUserPreferences')}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
);
|
||||
|
||||
this.selectSelectedLanguageOption();
|
||||
if (this.user().preferences().shouldShowDonationPanel()) {
|
||||
this.getDom('showDonationReminderCheckbox').checked = true;
|
||||
}
|
||||
// if (this.user().preferences().disableUnsecureFaviconLoadingForIE()) {
|
||||
// this.getDom('disableFaviconForIECheckbox').checked = true;
|
||||
// }
|
||||
|
||||
//MochiKit.Logging.logDebug("--- AccountPanel.render - 3");
|
||||
//# saveUserPreferencesButton = new YAHOO.ext.Button(this.getDom('saveUserPreferences'), {text:Clipperz.PM.Strings['saveUserPreferencesFormSubmitLabel'], handler:this.doSaveUserPreferences, scope:this});
|
||||
saveUserPreferencesButton = new YAHOO.ext.Button(this.getDom('saveUserPreferences'), {text:'-----------------', handler:this.doSaveUserPreferences, scope:this});
|
||||
saveUserPreferencesButton.setText(Clipperz.PM.Strings['saveUserPreferencesFormSubmitLabel']);
|
||||
//# cancelUserPreferencesButton = new YAHOO.ext.Button(this.getDom('cancelUserPreferences'), {text:Clipperz.PM.Strings['cancelUserPreferencesFormSubmitLabel'], handler:this.doCancelUserPreferences, scope:this});
|
||||
cancelUserPreferencesButton = new YAHOO.ext.Button(this.getDom('cancelUserPreferences'), {text:'-----------------', handler:this.doCancelUserPreferences, scope:this});
|
||||
cancelUserPreferencesButton.setText(Clipperz.PM.Strings['cancelUserPreferencesFormSubmitLabel']);
|
||||
//MochiKit.Logging.logDebug("--- AccountPanel.render - 4");
|
||||
|
||||
if (Clipperz.PM.Proxy.defaultProxy.isReadOnly()) {
|
||||
this.getElement('accountPreferencesForm').addClass('read-only');
|
||||
saveUserPreferencesButton.disable();
|
||||
cancelUserPreferencesButton.disable();
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'reloadHistory': function() {
|
||||
this.setShouldLoadLoginHistory(true);
|
||||
this.renderLoginHistory();
|
||||
},
|
||||
|
||||
'shouldLoadLoginHistory': function() {
|
||||
return this._shouldLoadLoginHistory;
|
||||
},
|
||||
|
||||
'setShouldLoadLoginHistory': function(aValue) {
|
||||
this._shouldLoadLoginHistory = aValue;
|
||||
},
|
||||
|
||||
'tabSelectedHandler': function(anEvent) {
|
||||
if (anEvent.parameters() == 'accountPreferencesTab') {
|
||||
this.renderPreferences();
|
||||
}
|
||||
|
||||
if ((this.shouldLoadLoginHistory()) && (anEvent.parameters() == 'loginHistoryTab')) {
|
||||
this.renderLoginHistory();
|
||||
this.setShouldLoadLoginHistory(false);
|
||||
}
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
__syntaxFix__: "syntax fix"
|
||||
|
||||
});
|
||||
|
||||
96
frontend/beta/js/Clipperz/PM/Components/Panels/BasePanel.js
Normal file
96
frontend/beta/js/Clipperz/PM/Components/Panels/BasePanel.js
Normal file
@@ -0,0 +1,96 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2011 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz's Javascript Crypto Library.
|
||||
Javascript Crypto Library provides web developers with an extensive
|
||||
and efficient set of cryptographic functions. The library aims to
|
||||
obtain maximum execution speed while preserving modularity and
|
||||
reusability.
|
||||
For further information about its features and functionalities please
|
||||
refer to http://www.clipperz.com
|
||||
|
||||
* Javascript Crypto Library 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.
|
||||
|
||||
* Javascript Crypto Library 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 Javascript Crypto Library. 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 = {}; }
|
||||
|
||||
//var _Clipperz_PM_Components_Panels_base_id_ = 0;
|
||||
|
||||
//#############################################################################
|
||||
|
||||
Clipperz.PM.Components.Panels.BasePanel = function(anElement, args) {
|
||||
args = args || {};
|
||||
|
||||
Clipperz.PM.Components.Panels.BasePanel.superclass.constructor.call(this, anElement, args);
|
||||
|
||||
this._user = args.user || null;
|
||||
this._delegate = args.delegate || null;
|
||||
this._tabPanelController = null;
|
||||
// Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler');
|
||||
|
||||
// this._ids = {};
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
||||
YAHOO.extendX(Clipperz.PM.Components.Panels.BasePanel, Clipperz.PM.Components.BaseComponent, {
|
||||
|
||||
'toString': function() {
|
||||
return "Clipperz.PM.Components.Panels.BasePanel component";
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'user': function() {
|
||||
return this._user;
|
||||
},
|
||||
|
||||
'setUser': function(aValue) {
|
||||
this._user = aValue;
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'delegate': function() {
|
||||
return this._delegate;
|
||||
},
|
||||
|
||||
'setDelegate': function(aValue) {
|
||||
this._delegate = aValue;
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'tabPanelController': function() {
|
||||
return this._tabPanelController;
|
||||
},
|
||||
|
||||
'switchLanguageHandler': function() {
|
||||
//MochiKit.Logging.logDebug(">>> BasePanel.switchLanguageHandler [" + this.toString() + "]");
|
||||
this.render();
|
||||
//MochiKit.Logging.logDebug("<<< BasePanel.switchLanguageHandler [" + this.toString() + "]");
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
__syntaxFix__: "syntax fix"
|
||||
|
||||
});
|
||||
105
frontend/beta/js/Clipperz/PM/Components/Panels/ContactsPanel.js
Normal file
105
frontend/beta/js/Clipperz/PM/Components/Panels/ContactsPanel.js
Normal file
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2011 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz's Javascript Crypto Library.
|
||||
Javascript Crypto Library provides web developers with an extensive
|
||||
and efficient set of cryptographic functions. The library aims to
|
||||
obtain maximum execution speed while preserving modularity and
|
||||
reusability.
|
||||
For further information about its features and functionalities please
|
||||
refer to http://www.clipperz.com
|
||||
|
||||
* Javascript Crypto Library 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.
|
||||
|
||||
* Javascript Crypto Library 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 Javascript Crypto Library. 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.ContactsPanel = function(anElement, args) {
|
||||
args = args || {};
|
||||
|
||||
Clipperz.PM.Components.Panels.ContactsPanel.superclass.constructor.call(this, anElement, args);
|
||||
|
||||
this.render();
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
||||
YAHOO.extendX(Clipperz.PM.Components.Panels.ContactsPanel, Clipperz.PM.Components.Panels.BasePanel, {
|
||||
|
||||
'toString': function() {
|
||||
return "Clipperz.PM.Components.ContactsPanel component";
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'render': function() {
|
||||
// var tabPanelControllerConfig;
|
||||
|
||||
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:"dataSubMenu", cls:'subMenu', children:[
|
||||
{tag:'li', id:this.getId('contacts'), htmlString:Clipperz.PM.Strings['contactsTabLabel']},
|
||||
]}
|
||||
]},
|
||||
{tag:'td', valign:'top', children:[
|
||||
{tag:'ul', cls:'clipperzTabPanels', children:[
|
||||
{tag:'li', id:this.getId('contactsPanel'), children:[
|
||||
{tag:'div', cls:'clipperzSubPanel', children:[
|
||||
{tag:'h5', htmlString:Clipperz.PM.Strings['contactsTabTitle']},
|
||||
{tag:'div', htmlString:Clipperz.PM.Strings['comingSoon']}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]});
|
||||
|
||||
// tabPanelControllerConfig = {}
|
||||
// tabPanelControllerConfig[this.getId('contacts')] = this.getId('contactsPanel');
|
||||
// new Clipperz.PM.Components.TabPanel.TabPanelController({ config:tabPanelControllerConfig, selectedTab:this.getId('contacts') });
|
||||
this.tabPanelController().setUp();
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'tabPanelController': function() {
|
||||
if (this._tabPanelController == null) {
|
||||
var tabPanelControllerConfig;
|
||||
|
||||
tabPanelControllerConfig = {}
|
||||
tabPanelControllerConfig[this.getId('contacts')] = this.getId('contactsPanel');
|
||||
this._tabPanelController = new Clipperz.PM.Components.TabPanel.TabPanelController({ config:tabPanelControllerConfig, selectedTab:this.getId('contacts') });
|
||||
}
|
||||
|
||||
return this._tabPanelController;
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
__syntaxFix__: "syntax fix"
|
||||
|
||||
});
|
||||
|
||||
486
frontend/beta/js/Clipperz/PM/Components/Panels/DataPanel.js
Normal file
486
frontend/beta/js/Clipperz/PM/Components/Panels/DataPanel.js
Normal file
File diff suppressed because one or more lines are too long
1114
frontend/beta/js/Clipperz/PM/Components/Panels/LoginPanel.js
Normal file
1114
frontend/beta/js/Clipperz/PM/Components/Panels/LoginPanel.js
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2011 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz's Javascript Crypto Library.
|
||||
Javascript Crypto Library provides web developers with an extensive
|
||||
and efficient set of cryptographic functions. The library aims to
|
||||
obtain maximum execution speed while preserving modularity and
|
||||
reusability.
|
||||
For further information about its features and functionalities please
|
||||
refer to http://www.clipperz.com
|
||||
|
||||
* Javascript Crypto Library 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.
|
||||
|
||||
* Javascript Crypto Library 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 Javascript Crypto Library. 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.LogoutPanel = function(args) {
|
||||
args = args || {};
|
||||
|
||||
Clipperz.PM.Components.Panels.LogoutPanel.superclass.constructor.call(this, args);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
||||
YAHOO.extendX(Clipperz.PM.Components.Panels.LogoutPanel, Clipperz.PM.Components.Panels.BasePanel, {
|
||||
|
||||
'toString': function() {
|
||||
return "Clipperz.PM.Components.LogoutPanel component";
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'initPanel': function() {
|
||||
var result;
|
||||
var layout;
|
||||
|
||||
result = new YAHOO.ext.ContentPanel(this.getId('panel'), {title:'logout', closable:false, autoCreate:true});
|
||||
|
||||
Clipperz.YUI.DomHelper.append(result.getEl().dom,
|
||||
{tag:'div', children:[
|
||||
{tag:'h2', html:'Logout panel'}
|
||||
]}
|
||||
);
|
||||
|
||||
return result;
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
__syntaxFix__: "syntax fix"
|
||||
|
||||
});
|
||||
|
||||
906
frontend/beta/js/Clipperz/PM/Components/Panels/MainPanel.js
Normal file
906
frontend/beta/js/Clipperz/PM/Components/Panels/MainPanel.js
Normal file
@@ -0,0 +1,906 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2011 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz's Javascript Crypto Library.
|
||||
Javascript Crypto Library provides web developers with an extensive
|
||||
and efficient set of cryptographic functions. The library aims to
|
||||
obtain maximum execution speed while preserving modularity and
|
||||
reusability.
|
||||
For further information about its features and functionalities please
|
||||
refer to http://www.clipperz.com
|
||||
|
||||
* Javascript Crypto Library 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.
|
||||
|
||||
* Javascript Crypto Library 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 Javascript Crypto Library. 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.MainPanel = function(anElement, args) {
|
||||
args = args || {};
|
||||
|
||||
Clipperz.PM.Components.Panels.MainPanel.superclass.constructor.call(this, anElement, args);
|
||||
|
||||
this._recordListDataModel = null;
|
||||
this._selectedRecord = null;
|
||||
this._recordDetailComponent = null;
|
||||
this._recordListGrid = null;
|
||||
|
||||
this._directLinkItemTemplate = null;
|
||||
this._recordItemTemplate = null;
|
||||
|
||||
this._addNewRecordButton = null;
|
||||
this._deleteRecordButton = null;
|
||||
|
||||
this._creationWizard = null;
|
||||
|
||||
Clipperz.NotificationCenter.register(null, 'selectAndEnterEditMode', this, 'selectRecordAndEnterEditModeHandler');
|
||||
|
||||
Clipperz.NotificationCenter.register(null, 'recordAdded', this, 'recordAddedHandler');
|
||||
Clipperz.NotificationCenter.register(null, 'recordUpdated', this, 'recordUpdatedHandler');
|
||||
Clipperz.NotificationCenter.register(null, 'recordRemoved', this, 'recordRemovedHandler');
|
||||
|
||||
Clipperz.NotificationCenter.register(null, 'directLoginAdded', this, 'directLoginAddedHandler');
|
||||
Clipperz.NotificationCenter.register(null, 'directLoginUpdated', this, 'directLoginUpdatedHandler');
|
||||
Clipperz.NotificationCenter.register(null, 'directLoginRemoved', this, 'directLoginRemovedHandler');
|
||||
|
||||
Clipperz.NotificationCenter.register(null, 'accountLocked', this, 'accountLockedHandler');
|
||||
|
||||
MochiKit.Signal.connect(MochiKit.DOM.currentWindow(), 'onresize', this, 'resizeModalMask');
|
||||
this.render();
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
||||
YAHOO.extendX(Clipperz.PM.Components.Panels.MainPanel, Clipperz.PM.Components.Panels.BasePanel, {
|
||||
|
||||
'toString': function() {
|
||||
return "Clipperz.PM.Components.Panels.MainPanel component";
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'render': function() {
|
||||
this.element().update("");
|
||||
Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', id:'mainPanelTABLE', border:'0', cellspacing:'0', cellpadding:'0', children:[
|
||||
{tag:'tbody', children:[
|
||||
{tag:'tr', children:[
|
||||
{tag:'td', width:'15', children:[
|
||||
{tag:'div', cls:'mainPanelMinHeightDiv'}
|
||||
]},
|
||||
{tag:'td', valign:'top', id:'directLoginsTD', width:'200', children:[
|
||||
{tag:'div', id:'directLoginsBlock', children:[
|
||||
{tag:'div', cls:'directLoginsBlockHeaderBox', children:[{tag:'h3', id:'directLoginTitle', htmlString:Clipperz.PM.Strings['mainPanelDirectLoginBlockLabel']}]},
|
||||
{tag:'div', id:'directLoginsDescription', htmlString:Clipperz.PM.Strings['mainPanelDirectLoginBlockDescription']},
|
||||
{tag:'ul', id:'directLogins'}
|
||||
]}
|
||||
]},
|
||||
{tag:'td', width:'15', children:[
|
||||
{tag:'div', cls:'mainPanelMinHeightDiv'}
|
||||
]},
|
||||
{tag:'td', valign:'top', children:[
|
||||
{tag:'div', id:'mainContent', children:[
|
||||
{tag:'div', id:'recordListBlockHeader'},
|
||||
{tag:'div', id:'recordListAndDetailBlock', children:[
|
||||
{tag:'table', id:'recordListAndDetailBlockTABLE', border:'0', cellspacing:'0', cellpadding:'0', children:[
|
||||
{tag:'tbody', children:[
|
||||
{tag:'tr', children:[
|
||||
{tag:'td', valign:'top', width:'250', children:[
|
||||
{tag:'div', id:'recordListBlock', children:[
|
||||
{tag:'div', id:'recordListFilterHeader'},
|
||||
{tag:'ul', id:'records'}
|
||||
]}
|
||||
]},
|
||||
{tag:'td', id:'recordDetailSeparatorTD', rowspan:'2', valign:'top', bgcolor:'#ddddff', html:' '},
|
||||
{tag:'td', valign:'top', children:[
|
||||
{tag:'div', id:'recordDetailMainBlock', children:[
|
||||
{tag:'div', id:'recordTitleTopBlock'},
|
||||
{tag:'div', id:'recordDetailBlock', children:[
|
||||
{tag:'div', id:'recordDetail'}
|
||||
]}
|
||||
]},
|
||||
{tag:'div', id:'recordCreationWizardMainBlock', children:[
|
||||
{tag:'div', id:'recordCreationWizard', html:"WIZARD"}
|
||||
]}
|
||||
]}
|
||||
]},
|
||||
{tag:'tr', children:[
|
||||
{tag:'td', id:'cardBoxLowerLeftTD', html:' '},
|
||||
{tag:'td', id:'cardBoxLowerRightTD', html:' '}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]},
|
||||
{tag:'td', width:'15', html:" "}
|
||||
]}
|
||||
]}
|
||||
]});
|
||||
|
||||
this.renderRecordListBlockHeader();
|
||||
// this.renderRecordListFilterHeader();
|
||||
|
||||
YAHOO.ext.Element.get('directLogins').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
|
||||
|
||||
this.recordDetailComponent();
|
||||
|
||||
YAHOO.ext.Element.get('recordDetailMainBlock').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show();
|
||||
YAHOO.ext.Element.get('recordCreationWizardMainBlock').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'addNewRecordButton': function() {
|
||||
return this._addNewRecordButton;
|
||||
},
|
||||
|
||||
'setAddNewRecordButton': function(aValue) {
|
||||
this._addNewRecordButton = aValue;
|
||||
},
|
||||
|
||||
'deleteRecordButton': function() {
|
||||
return this._deleteRecordButton;
|
||||
},
|
||||
|
||||
'setDeleteRecordButton': function(aValue) {
|
||||
this._deleteRecordButton = aValue;
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'addNewRecord': function(anEvent) {
|
||||
var deferredResult;
|
||||
// var currentNumberOfRecords;
|
||||
|
||||
deferredResult = new MochiKit.Async.Deferred();
|
||||
|
||||
// currentNumberOfRecords = MochiKit.Base.keys(this.user().records()).length;
|
||||
/*
|
||||
// if ((this.user().preferences().shouldShowDonationPanel()) && (currentNumberOfRecords > 0) && ((currentNumberOfRecords%10) == 0)) {
|
||||
// if (true) {
|
||||
if ((this.user().preferences().shouldShowDonationPanel()) && (currentNumberOfRecords >= 5)) {
|
||||
deferredResult.addCallback(Clipperz.PM.showDonationSplashScreen, this.user(), 'recordListAddRecordButton');
|
||||
}
|
||||
*/
|
||||
deferredResult.addCallback(MochiKit.Base.bind(function() {
|
||||
var currentlySelectedRecord;
|
||||
|
||||
currentlySelecedRecord = this.selectedRecord();
|
||||
this.setSelectedRecord(null);
|
||||
|
||||
YAHOO.ext.Element.get('recordDetailMainBlock').hide();
|
||||
YAHOO.ext.Element.get('recordCreationWizardMainBlock').show();
|
||||
this.setCreationWizard(new Clipperz.PM.Components.RecordDetail.CreationWizard(YAHOO.ext.Element.get('recordCreationWizardMainBlock'), {previouslySelectedRecord:currentlySelecedRecord, mainComponent:this}));
|
||||
|
||||
this.enterModalView();
|
||||
}, this));
|
||||
|
||||
deferredResult.callback();
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'creationWizard': function() {
|
||||
return this._creationWizard;
|
||||
},
|
||||
|
||||
'setCreationWizard': function(aValue) {
|
||||
this._creationWizard = aValue;
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'exitWizard': function(aSelectedRecord, shouldEnterEditMode) {
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.exitWizard - " + aSelectedRecord)
|
||||
YAHOO.ext.Element.get('recordCreationWizardMainBlock').hide();
|
||||
YAHOO.ext.Element.get('recordDetailMainBlock').show();
|
||||
|
||||
if (shouldEnterEditMode == true) {
|
||||
this.selectRecordAndEnterEditMode(aSelectedRecord);
|
||||
} else {
|
||||
this.setSelectedRecord(aSelectedRecord);
|
||||
this.exitModalView();
|
||||
}
|
||||
|
||||
this.creationWizard().remove();
|
||||
this.setCreationWizard(null);
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.exitWizard");
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'selectRecordAndEnterEditMode': function(aRecord) {
|
||||
this.setSelectedRecord(aRecord);
|
||||
this.recordDetailComponent().setEditMode('EDIT');
|
||||
},
|
||||
|
||||
'selectRecordAndEnterEditModeHandler': function(anEvent) {
|
||||
this.selectRecordAndEnterEditMode(anEvent.source());
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'resizeModalMask': function() {
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.resizeModalMask");
|
||||
MochiKit.Style.setElementDimensions('recordDetailEditModeHeaderMask', {w:MochiKit.Style.getElementDimensions('mainDiv').w, h:119});
|
||||
|
||||
MochiKit.Style.setElementDimensions('recordDetailEditModeVerticalMask', {w:511, h:MochiKit.Style.getElementDimensions('mainDiv').h - 119});
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.resizeModalMask");
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'enterModalView': function() {
|
||||
if (this.user().preferences().useSafeEditMode()) {
|
||||
var headerMaskElement;
|
||||
var verticalMaskElement;
|
||||
|
||||
this.resizeModalMask();
|
||||
|
||||
headerMaskElement = YAHOO.ext.Element.get('recordDetailEditModeHeaderMask');
|
||||
headerMaskElement.show();
|
||||
headerMaskElement.mask();
|
||||
|
||||
verticalMaskElement = YAHOO.ext.Element.get('recordDetailEditModeVerticalMask');
|
||||
verticalMaskElement.show();
|
||||
verticalMaskElement.mask();
|
||||
}
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'exitModalView': function() {
|
||||
if (this.user().preferences().useSafeEditMode()) {
|
||||
var headerMaskElement;
|
||||
var verticalMaskElement;
|
||||
|
||||
headerMaskElement = YAHOO.ext.Element.get('recordDetailEditModeHeaderMask');
|
||||
headerMaskElement.unmask();
|
||||
headerMaskElement.hide();
|
||||
|
||||
verticalMaskElement = YAHOO.ext.Element.get('recordDetailEditModeVerticalMask');
|
||||
verticalMaskElement.unmask();
|
||||
verticalMaskElement.hide();
|
||||
}
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'removeSelectedRecord': function() {
|
||||
var selectedRecordReferences;
|
||||
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.removeSelectedRecord");
|
||||
if (this.selectedRecord() != null) {
|
||||
selectedRecordReferences = [this.selectedRecord().reference()];
|
||||
} else {
|
||||
selectedRecordReferences = [];
|
||||
}
|
||||
|
||||
if (selectedRecordReferences.length > 0 ) {
|
||||
var recordReference;
|
||||
var records;
|
||||
var deferred;
|
||||
|
||||
records = [];
|
||||
for (recordReference in selectedRecordReferences) {
|
||||
var record;
|
||||
|
||||
//MochiKit.Logging.logDebug("### MainPanel.removeSelectedRecord - recordReference: " + selectedRecordReferences[recordReference]);
|
||||
record = this.user().records()[selectedRecordReferences[recordReference]];
|
||||
//MochiKit.Logging.logDebug("### MainPanel.removeSelectedRecord - record: " + record);
|
||||
records.push(record);
|
||||
}
|
||||
//MochiKit.Logging.logDebug("### MainPanel.removeSelectedRecord - records.length: " + records.length);
|
||||
|
||||
deferred = new MochiKit.Async.Deferred();
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.removeSelectedRecord - 1:");
|
||||
//deferred.addBoth(function(res) {MochiKit.Logging.logDebug("MainPanel.removeSelectedRecord - 1: " + res); return res;});
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.removeSelectedRecord - 2:");
|
||||
deferred.addCallback(function() {
|
||||
var deferredResult;
|
||||
|
||||
deferredResult = new MochiKit.Async.Deferred();
|
||||
Clipperz.PM.Components.MessageBox().deferredShow({
|
||||
title:Clipperz.PM.Strings['mainPanelDeletingRecordPanelConfirmationTitle'],
|
||||
text:Clipperz.PM.Strings['mainPanelDeleteRecordPanelConfirmationText'],
|
||||
width:240,
|
||||
showProgressBar:false,
|
||||
showCloseButton:false,
|
||||
buttons:{
|
||||
'yes':Clipperz.PM.Strings['mainPanelDeleteRecordPanelConfirmButtonLabel'],
|
||||
'no':Clipperz.PM.Strings['mainPanelDeleteRecordPanelDenyButtonLabel']
|
||||
},
|
||||
fn:MochiKit.Base.partial(function(aDeferred, aResult) {
|
||||
if (aResult == 'yes') {
|
||||
aDeferred.callback(aResult);
|
||||
} else {
|
||||
aDeferred.errback(aResult);
|
||||
}
|
||||
}, deferredResult)
|
||||
}, 'recordListRemoveRecordButton');
|
||||
|
||||
return deferredResult;
|
||||
});
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.removeSelectedRecord - 3:");
|
||||
//deferred.addBoth(function(res) {MochiKit.Logging.logDebug("MainPanel.removeSelectedRecord - 2: " + res); return res;});
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.removeSelectedRecord - 4:");
|
||||
//deferred.addBoth(function(res) {MochiKit.Logging.logDebug("MainPanel.removeSelectedRecord - 3: " + res); return res;});
|
||||
deferred.addCallback(MochiKit.Base.method(Clipperz.PM.Components.MessageBox(), 'deferredShow'),
|
||||
{
|
||||
title:Clipperz.PM.Strings['mainPanelDeletingRecordPanelInitialTitle'],
|
||||
text:Clipperz.PM.Strings['mainPanelDeletingRecordPanelInitialText'],
|
||||
width:240,
|
||||
showProgressBar:true,
|
||||
showCloseButton:false,
|
||||
steps:5
|
||||
}
|
||||
);
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.removeSelectedRecord - 5:");
|
||||
//deferred.addBoth(function(res) {MochiKit.Logging.logDebug("MainPanel.removeSelectedRecord - 4: " + res); return res;});
|
||||
deferred.addCallback(MochiKit.Base.method(this.user(), 'deleteRecordsAction'), records);
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.removeSelectedRecord - 6:");
|
||||
//deferred.addBoth(function(res) {MochiKit.Logging.logDebug("MainPanel.removeSelectedRecord - 5: " + res); return res;});
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.removeSelectedRecord - 7:");
|
||||
//deferred.addBoth(function(res) {MochiKit.Logging.logDebug("MainPanel.removeSelectedRecord - 6: " + res); return res;});
|
||||
deferred.addCallback(function() {
|
||||
Clipperz.PM.Components.MessageBox().update({
|
||||
title:null,
|
||||
text:Clipperz.PM.Strings['mainPanelDeletingRecordPanelCompletedText'],
|
||||
step:'next',
|
||||
buttons:{}
|
||||
});
|
||||
});
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.removeSelectedRecord - 8:");
|
||||
//deferred.addBoth(function(res) {MochiKit.Logging.logDebug("MainPanel.removeSelectedRecord - 7: " + res); return res;});
|
||||
deferred.addCallback(MochiKit.Async.wait, 1);
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.removeSelectedRecord - 9:");
|
||||
//deferred.addBoth(function(res) {MochiKit.Logging.logDebug("MainPanel.removeSelectedRecord - 8: " + res); return res;});
|
||||
deferred.addCallback(function(res) {
|
||||
Clipperz.PM.Components.MessageBox().hide(YAHOO.ext.Element.get('main'));
|
||||
return res;
|
||||
});
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.removeSelectedRecord - 10:");
|
||||
//deferred.addBoth(function(res) {MochiKit.Logging.logDebug("MainPanel.removeSelectedRecord - 9: " + res); return res;});
|
||||
deferred.callback();
|
||||
} else {
|
||||
//MochiKit.Logging.logDebug("+++ MainPanel.removeSelectedRecord - nothing selected");
|
||||
}
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'recordDetailComponent': function() {
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.recordDetailComponent");
|
||||
if (this._recordDetailComponent == null) {
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.recordDetailComponent - 1");
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.recordDetailComponent - 1 - user: " + this.user());
|
||||
this._recordDetailComponent = new Clipperz.PM.Components.RecordDetail.MainComponent(
|
||||
YAHOO.ext.Element.get('recordDetail'),
|
||||
{user:this.user(), mainPanel:this}
|
||||
);
|
||||
}
|
||||
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.recordDetailComponent");
|
||||
|
||||
return this._recordDetailComponent;
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'selectedRecord': function() {
|
||||
return this._selectedRecord;
|
||||
},
|
||||
|
||||
'setSelectedRecord': function(aValue) {
|
||||
// this.hideNewRecordPanel();
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.setSelectedRecord");
|
||||
if (aValue != this._selectedRecord) {
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.setSelectedRecord - 1");
|
||||
this._selectedRecord = aValue;
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.setSelectedRecord - 2");
|
||||
this.redrawRecordItems();
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.setSelectedRecord - 3");
|
||||
this.recordDetailComponent().setRecord(aValue);
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.setSelectedRecord - 4");
|
||||
}
|
||||
|
||||
if ((aValue == null) || (Clipperz.PM.Proxy.defaultProxy.isReadOnly())) {
|
||||
this.deleteRecordButton().disable();
|
||||
} else {
|
||||
this.deleteRecordButton().enable();
|
||||
}
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.setSelectedRecord");
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'recordAddedHandler': function(anEvent) {
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.recordAddedHandler");
|
||||
this.recordDetailComponent();
|
||||
this.redrawRecordItems();
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.recordAddedHandler");
|
||||
},
|
||||
|
||||
'recordUpdatedHandler': function(anEvent) {
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.recordUpdatedHandler");
|
||||
this.redrawRecordItems();
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.recordUpdatedHandler");
|
||||
},
|
||||
|
||||
'recordRemovedHandler': function(anEvent) {
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.recordRemovedHandler");
|
||||
this.setSelectedRecord(null);
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.recordRemovedHandler - 1");
|
||||
this.redrawRecordItems();
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.recordRemovedHandler");
|
||||
},
|
||||
|
||||
'compareRecords': function(a, b) {
|
||||
//MochiKit.Logging.logDebug("=== compareRecords: " + a.toString() + " - " + b.toString());
|
||||
return MochiKit.Base.compare(a.label().toLowerCase(), b.label().toLowerCase());
|
||||
},
|
||||
|
||||
'redrawRecordItems': function() {
|
||||
var template;
|
||||
var allRecords;
|
||||
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.redrawRecordItems");
|
||||
MochiKit.Iter.forEach(YAHOO.ext.Element.get('records').getChildrenByTagName('li'), function(aRecordElement) {
|
||||
MochiKit.Signal.disconnectAll(aRecordElement.dom);
|
||||
})
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.redrawRecordItems - 1");
|
||||
YAHOO.ext.Element.get('records').update("");
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.redrawRecordItems - 2");
|
||||
allRecords = MochiKit.Base.values(this.user().records());
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.redrawRecordItems - 3");
|
||||
allRecords.sort(this.compareRecords);
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.redrawRecordItems - 4");
|
||||
template = this.recordItemTemplate();
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.redrawRecordItems - 5");
|
||||
MochiKit.Iter.forEach(allRecords, MochiKit.Base.bind(function(aRecord) {
|
||||
var recordElement;
|
||||
recordElement = template.append('records', {
|
||||
recordTitle:aRecord.label(),
|
||||
recordReference:aRecord.reference(),
|
||||
cls:((aRecord == this.selectedRecord()) ? 'selected': '')
|
||||
}, true);
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.redrawRecordItems - 6: " + recordElement.dom);
|
||||
recordElement.addClassOnOver('hover');
|
||||
MochiKit.Signal.connect(recordElement.dom, 'onclick', this, 'selectRecord');
|
||||
}, this));
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.redrawRecordItems");
|
||||
},
|
||||
|
||||
'selectRecord': function(anEvent) {
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.selectRecord");
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.selectRecord !!! - ", this.user().records()[anEvent.src().id].label());
|
||||
this.setSelectedRecord(this.user().records()[anEvent.src().id]);
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.selectRecord");
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'directLoginAddedHandler': function(anEvent) {
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.recordRemovedHandler");
|
||||
this.redrawDirectLoginItems();
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.recordRemovedHandler");
|
||||
},
|
||||
|
||||
'directLoginUpdatedHandler': function(anEvent) {
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.directLoginUpdatedHandler");
|
||||
this.redrawDirectLoginItems();
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.directLoginUpdatedHandler");
|
||||
},
|
||||
|
||||
'directLoginRemovedHandler': function(anEvent) {
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.directLoginRemovedHandler");
|
||||
this.redrawDirectLoginItems();
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.directLoginRemovedHandler");
|
||||
},
|
||||
|
||||
'compareDirectLogins': function(a, b) {
|
||||
return MochiKit.Base.compare(a.label().toLowerCase(), b.label().toLowerCase());
|
||||
},
|
||||
|
||||
'redrawDirectLoginItems': function() {
|
||||
var template;
|
||||
var allDirectLogins;
|
||||
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.redrawDirectLoginItems");
|
||||
MochiKit.Iter.forEach(YAHOO.ext.Element.get('directLogins').getChildrenByTagName('li'), function(aDirectLoginElement) {
|
||||
MochiKit.Signal.disconnectAll(aDirectLoginElement.dom);
|
||||
//MochiKit.Logging.logDebug("disconnecting IMG " + aDirectLoginElement.getChildrenByTagName('img')[0].dom.src);
|
||||
MochiKit.Signal.disconnectAll(aDirectLoginElement.getChildrenByTagName('img')[0].dom);
|
||||
})
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.redrawDirectLoginItems - 1");
|
||||
YAHOO.ext.Element.get('directLogins').update("");
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.redrawDirectLoginItems - 2");
|
||||
allDirectLogins = MochiKit.Base.values(this.user().directLoginReferences());
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.redrawDirectLoginItems - 3");
|
||||
allDirectLogins.sort(this.compareDirectLogins);
|
||||
|
||||
if (allDirectLogins.length == 0) {
|
||||
YAHOO.ext.Element.get('directLoginsDescription').show();
|
||||
YAHOO.ext.Element.get('directLogins').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
|
||||
} else {
|
||||
YAHOO.ext.Element.get('directLoginsDescription').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
|
||||
YAHOO.ext.Element.get('directLogins').show();
|
||||
}
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.redrawDirectLoginItems - 4");
|
||||
template = this.directLoginItemTemplate();
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.redrawDirectLoginItems - 5");
|
||||
MochiKit.Iter.forEach(allDirectLogins, MochiKit.Base.bind(function(aDirectLogin) {
|
||||
var directLoginElement;
|
||||
var faviconImageElementID;
|
||||
|
||||
faviconImageElementID = aDirectLogin.reference() + "_faviconIMG";
|
||||
directLoginElement = template.append('directLogins', {
|
||||
elementID:faviconImageElementID,
|
||||
faviconUrl:aDirectLogin.fixedFavicon(),
|
||||
directLoginTitle:aDirectLogin.label(),
|
||||
directLoginReference:aDirectLogin.reference()
|
||||
}, true);
|
||||
//MochiKit.Logging.logDebug("--- MainPanel.redrawDirectLoginItems - 6: " + recordElement.dom);
|
||||
directLoginElement.addClassOnOver("hover");
|
||||
MochiKit.Signal.connect(directLoginElement.dom, 'onclick', this, 'handleDirectLoginClick');
|
||||
|
||||
MochiKit.Signal.connect(faviconImageElementID, 'onload', this, 'handleLoadedFaviconImage');
|
||||
MochiKit.Signal.connect(faviconImageElementID, 'onerror', aDirectLogin, 'handleMissingFaviconImage');
|
||||
MochiKit.Signal.connect(faviconImageElementID, 'onabort', aDirectLogin, 'handleMissingFaviconImage');
|
||||
|
||||
// YAHOO.ext.Element.get(faviconImageElementID).dom.src = aDirectLogin.fixedFavicon();
|
||||
}, this));
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.redrawDirectLoginItems");
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'handleDirectLoginClick': function(anEvent) {
|
||||
var directLoginReference;
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.handleDirectLoginClick !!!");
|
||||
|
||||
directLoginReference = this.user().directLoginReferences()[anEvent.src().id];
|
||||
if (anEvent.target().className == 'directLoginItemEditButton') {
|
||||
this.editDirectLogin(directLoginReference);
|
||||
} else {
|
||||
this.openDirectLogin(directLoginReference);
|
||||
}
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.handleDirectLoginClick");
|
||||
},
|
||||
|
||||
'editDirectLogin': function(aDirectLoginReference) {
|
||||
//MochiKit.Logging.logDebug("=== MainPanel.editDirectLogin - " + aDirectLoginReference.label());
|
||||
this.setSelectedRecord(aDirectLoginReference.record());
|
||||
},
|
||||
|
||||
'openDirectLogin': function(aDirectLoginReference) {
|
||||
var deferredResult;
|
||||
var newWindow;
|
||||
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.openDirectLogin - " + aDirectLoginReference.label());
|
||||
deferredResult = new MochiKit.Async.Deferred();
|
||||
//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("MainPanel.openDirectLogin - 1: " + res); return res;});
|
||||
deferredResult.addCallback(MochiKit.Base.method(aDirectLoginReference, 'setupJumpPageWindow'));
|
||||
deferredResult.addCallback(MochiKit.Base.method(aDirectLoginReference, 'deferredDirectLogin'));
|
||||
deferredResult.addCallback(function(aDirectLogin) {
|
||||
aDirectLogin.runDirectLogin(newWindow);
|
||||
});
|
||||
|
||||
newWindow = window.open(Clipperz.PM.Strings['directLoginJumpPageUrl'], "");
|
||||
// MochiKit.Signal.connect(newWindow, 'onload', MochiKit.Base.method(deferredResult, 'callback', newWindow))
|
||||
// MochiKit.Signal.connect(newWindow, 'onload', MochiKit.Base.partial(alert, "done"));
|
||||
deferredResult.callback(newWindow);
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.openDirectLogin");
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'handleLoadedFaviconImage': function(anEvent) {
|
||||
//MochiKit.Logging.logDebug(">>> MainPanel.handleLoadedFaviconImage");
|
||||
MochiKit.Signal.disconnectAll(anEvent.src())
|
||||
//MochiKit.Logging.logDebug("<<< MainPanel.handleLoadedFaviconImage");
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'recordItemTemplate': function() {
|
||||
if (this._recordItemTemplate == null) {
|
||||
this._recordItemTemplate = Clipperz.YUI.DomHelper.createTemplate({tag:'li', cls:'{cls}', id:'{recordReference}', children:[
|
||||
{tag:'span', html:'{recordTitle}'}
|
||||
]});
|
||||
this._recordItemTemplate.compile();
|
||||
}
|
||||
|
||||
return this._recordItemTemplate;
|
||||
},
|
||||
|
||||
'directLoginItemTemplate': function() {
|
||||
if (this._directLoginItemTemplate == null) {
|
||||
this._directLoginItemTemplate = Clipperz.YUI.DomHelper.createTemplate({tag:'li', id:'{directLoginReference}', children:[
|
||||
{tag:'table', border:'0', cellpadding:'0', cellspacing:'0', children:[
|
||||
{tag:'tbody', children:[
|
||||
{tag:'tr', children:[
|
||||
{tag:'td', width:'20', align:'center', valign:'top', children:[
|
||||
{tag:'img', id:'{elementID}', src:'{faviconUrl}'}
|
||||
]},
|
||||
{tag:'td', valign:'top', children:[
|
||||
{tag:'a', cls:'directLoginItemTitle', html:'{directLoginTitle}'}
|
||||
]},
|
||||
{tag:'td', valign:'top', align:'right', children:[
|
||||
// {tag:'span', cls:'directLoginItemEditButton', htmlString:Clipperz.PM.Strings['directLinkReferenceShowButtonLabel']}
|
||||
{tag:'a', cls:'directLoginItemEditButton', htmlString:Clipperz.PM.Strings['directLinkReferenceShowButtonLabel']}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]});
|
||||
this._directLoginItemTemplate.compile();
|
||||
}
|
||||
|
||||
return this._directLoginItemTemplate;
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
/*
|
||||
'newRecordButton': function() {
|
||||
return this._newRecordButton;
|
||||
},
|
||||
|
||||
'setNewRecordButton': function(aValue) {
|
||||
this._newRecordButton = aValue;
|
||||
},
|
||||
|
||||
'newRecordCancelButton': function() {
|
||||
return this._newRecordCancelButton;
|
||||
},
|
||||
|
||||
'setNewRecordCancelButton': function(aValue) {
|
||||
this._newRecordCancelButton = aValue;
|
||||
},
|
||||
*/
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'onkeydown': function(anEvent) {
|
||||
//MochiKit.Logging.logDebug(">>> onkeydown - " + anEvent.src().id + ": " + anEvent.key().code);
|
||||
switch (anEvent.src().id) {
|
||||
/*
|
||||
case this.getId('newRecordForm'):
|
||||
if (anEvent.key().code == 13) {
|
||||
this.newRecordButton().focus();
|
||||
// this.addNewRecord();
|
||||
} else if (anEvent.key().code == 27) {
|
||||
this.newRecordCancelButton().focus();
|
||||
this.hideNewRecordPanel(true);
|
||||
}
|
||||
break;
|
||||
*/
|
||||
case "recordFilterSearchForm":
|
||||
if (anEvent.key().code == 13) {
|
||||
//MochiKit.Logging.logDebug("SEARCH");
|
||||
this.filterCardsWithName(YAHOO.ext.Element.get('recordFilterSearchValue').dom.value);
|
||||
anEvent.event().stopPropagation();
|
||||
YAHOO.ext.Element.get('recordFilterSearchValue').focus();
|
||||
} else if (anEvent.key().code == 27) {
|
||||
this.hideRecordFilterSearchPanel(true);
|
||||
this.showRecordFilterAllPanel();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'renderRecordListBlockHeader': function(){
|
||||
var recordListBlockHeaderElement;
|
||||
|
||||
recordListBlockHeaderElement = YAHOO.ext.Element.get('recordListBlockHeader');
|
||||
recordListBlockHeaderElement.update("");
|
||||
Clipperz.YUI.DomHelper.append(recordListBlockHeaderElement.dom,
|
||||
{tag:'table', cls:'recordListBlockHeaderTABLE', border:'0', cellspacing:'0', cellpadding:'0', children:[
|
||||
{tag:'tbody', children:[
|
||||
{tag:'tr', children:[
|
||||
{tag:'td', /*width:'50%',*/ cls:'recordBlockTitleTD', children:[
|
||||
{tag:'h3', id:'recordBlockTitle', htmlString:Clipperz.PM.Strings['mainPanelRecordsBlockLabel']}
|
||||
]},
|
||||
{tag:'td', align:'right', children:[
|
||||
{tag:'table', id:'recordListButtonsTABLE', border:'0', cellspacing:'0', cellpadding:'0', children:[
|
||||
{tag:'tbody', children:[
|
||||
{tag:'tr', children:[
|
||||
{tag:'td', cls:'recordButtonTD', align:'right', children:[
|
||||
{tag:'div', cls:'recordButton', id:'recordListAddRecordButton'}
|
||||
]},
|
||||
{tag:'td', cls:'recordButtonTD', align:'left', children:[
|
||||
{tag:'div', cls:'recordButton', id:'recordListRemoveRecordButton'}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]},
|
||||
{tag:'td', width:'15', html:" "}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
);
|
||||
|
||||
this.setAddNewRecordButton(new YAHOO.ext.Button('recordListAddRecordButton', {text:Clipperz.PM.Strings['mainPanelAddRecordButtonLabel'], handler:this.addNewRecord, scope:this}));
|
||||
// this.setAddNewRecordButton(new YAHOO.ext.Button('recordListAddRecordButton', {text:Clipperz.PM.Strings['mainPanelAddRecordButtonLabel'], handler:this.showNewRecordPanel, scope:this}));
|
||||
this.setDeleteRecordButton(new YAHOO.ext.Button('recordListRemoveRecordButton', {text:Clipperz.PM.Strings['mainPanelRemoveRecordButtonLabel'], handler:this.removeSelectedRecord, scope:this}));
|
||||
|
||||
|
||||
if ((Clipperz.PM.Proxy.defaultProxy.isReadOnly()) || (this.selectedRecord() == null)) {
|
||||
this.deleteRecordButton().disable();
|
||||
}
|
||||
|
||||
if (Clipperz.PM.Proxy.defaultProxy.isReadOnly()) {
|
||||
this.addNewRecordButton().disable();
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'renderRecordListFilterHeader': function(){
|
||||
var recordListFilterHeaderElement;
|
||||
|
||||
recordListFilterHeaderElement = YAHOO.ext.Element.get('recordListFilterHeader');
|
||||
recordListFilterHeaderElement.update("");
|
||||
Clipperz.YUI.DomHelper.append(recordListFilterHeaderElement.dom,
|
||||
{tag:'div', id:'recordFiltersDIV', children:[
|
||||
{tag:'div', id:'recordFiltersTableWrapper', children:[
|
||||
{tag:'table', id:'recordFiltersTABLE', border:'0', cellspacing:'0', cellpadding:'0', children:[
|
||||
{tag:'tbody', children:[
|
||||
{tag:'tr', children:[
|
||||
{tag:'td', id:'recordFilterAllTD', children:[{tag:'div', children:[{tag:'a', id:'recordFilterAll', htmlString:Clipperz.PM.Strings['mainPanelRecordFilterBlockAllLabel']}]}]},
|
||||
{tag:'td', id:'recordFilterTagsTD', children:[{tag:'div', children:[{tag:'a', id:'recordFilterTags', htmlString:Clipperz.PM.Strings['mainPanelRecordFilterBlockTagsLabel']}]}]},
|
||||
{tag:'td', id:'recordFilterSearchTD', children:[{tag:'div', children:[{tag:'a', id:'recordFilterSearch', htmlString:Clipperz.PM.Strings['mainPanelRecordFilterBlockSearchLabel']}]}]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]},
|
||||
{tag:'div', id:'recordFiltersTagsPanel'},
|
||||
{tag:'div', id:'recordFiltersSearchPanel', children:[{tag:'div', id:'recordFiltersSearchInnerPanel', children:[{tag:'div', id:'recordFiltersSearchInnerInnerPanel', children:[
|
||||
{tag:'form', id:'recordFilterSearchForm', children:[
|
||||
{tag:'input', type:'text', name:'search', id:'recordFilterSearchValue'}
|
||||
]}
|
||||
]}]}]}
|
||||
]}
|
||||
);
|
||||
|
||||
/// YAHOO.ext.Element.get('recordFiltersSearchPanel').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
|
||||
this.showRecordFilterAllPanel(false);
|
||||
|
||||
MochiKit.Signal.connect('recordFilterSearchForm', 'onkeydown', this, 'onkeydown');
|
||||
MochiKit.Signal.connect('recordFilterSearchForm', 'onsubmit', this, 'onkeydown');
|
||||
|
||||
MochiKit.Signal.connect('recordFilterAll', 'onclick', this, 'showRecordFilterAllPanel');
|
||||
MochiKit.Signal.connect('recordFilterTags', 'onclick', this, 'showRecordFilterTagsPanel');
|
||||
MochiKit.Signal.connect('recordFilterSearch', 'onclick', this, 'showRecordFilterSearchPanel');
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'showRecordFilterAllPanel': function(shouldSlide) {
|
||||
this.hideRecordFilterTagsPanel(shouldSlide);
|
||||
this.hideRecordFilterSearchPanel(shouldSlide);
|
||||
YAHOO.ext.Element.get('recordFilterAllTD').addClass('selectedTab');
|
||||
},
|
||||
|
||||
'hideRecordFilterAllPanel': function(shouldSlide) {
|
||||
YAHOO.ext.Element.get('recordFilterAllTD').removeClass('selectedTab');
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'showRecordFilterTagsPanel': function(shouldSlide) {
|
||||
this.hideRecordFilterAllPanel(shouldSlide);
|
||||
this.hideRecordFilterSearchPanel(shouldSlide);
|
||||
YAHOO.ext.Element.get('recordFilterTagsTD').addClass('selectedTab');
|
||||
},
|
||||
|
||||
'hideRecordFilterTagsPanel': function(shouldSlide) {
|
||||
YAHOO.ext.Element.get('recordFilterTagsTD').removeClass('selectedTab');
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'showRecordFilterSearchPanel': function(shouldSlide) {
|
||||
var searchPanelActor;
|
||||
|
||||
this.hideRecordFilterAllPanel(shouldSlide);
|
||||
this.hideRecordFilterTagsPanel(shouldSlide);
|
||||
YAHOO.ext.Element.get('recordFilterSearchTD').addClass('selectedTab');
|
||||
YAHOO.ext.Element.get('recordFilterSearchValue').dom.value = "";
|
||||
|
||||
searchPanelActor = new YAHOO.ext.Actor('recordFiltersSearchPanel');
|
||||
|
||||
searchPanelActor.startCapture(true);
|
||||
searchPanelActor.slideShow('top', 54);
|
||||
searchPanelActor.play(MochiKit.Base.bind(function() {
|
||||
YAHOO.ext.Element.get('recordFilterSearchValue').focus();
|
||||
}, this));
|
||||
},
|
||||
|
||||
'hideRecordFilterSearchPanel': function(shouldSlide) {
|
||||
var searchPanelActor;
|
||||
var callback;
|
||||
|
||||
YAHOO.ext.Element.get('recordFilterSearchTD').removeClass('selectedTab');
|
||||
|
||||
searchPanelActor = new YAHOO.ext.Actor('recordFiltersSearchPanel');
|
||||
|
||||
searchPanelActor.startCapture(true)
|
||||
if (shouldSlide === false) {
|
||||
searchPanelActor.hide();
|
||||
searchPanelActor.slideHide('top');
|
||||
searchPanelActor.show();
|
||||
} else {
|
||||
searchPanelActor.slideHide('top');
|
||||
}
|
||||
|
||||
callback = MochiKit.Base.bind(function() {
|
||||
}, this);
|
||||
|
||||
searchPanelActor.play(callback);
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'filterCardsWithName': function(aValue) {
|
||||
MochiKit.Logging.logDebug(">>> filterCardsWithName: " + aValue);
|
||||
|
||||
MochiKit.Logging.logDebug("<<< filterCardsWithName");
|
||||
},
|
||||
|
||||
'accountLockedHandler': function() {
|
||||
this.setSelectedRecord(null);
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'switchLanguageHandler': function() {
|
||||
YAHOO.ext.Element.get('directLoginTitle').update(Clipperz.PM.Strings['mainPanelDirectLoginBlockLabel']);
|
||||
YAHOO.ext.Element.get('directLoginsDescription').update("");
|
||||
MochiKit.Iter.forEach(Clipperz.PM.Strings['mainPanelDirectLoginBlockDescriptionConfig'], function(aConfigItem) {
|
||||
Clipperz.YUI.DomHelper.append(YAHOO.ext.Element.get('directLoginsDescription').dom, aConfigItem);
|
||||
});
|
||||
YAHOO.ext.Element.get('recordBlockTitle').update(Clipperz.PM.Strings['mainPanelRecordsBlockLabel']);
|
||||
this.renderRecordListBlockHeader();
|
||||
// this.renderRecordListFilterHeader();
|
||||
|
||||
// YAHOO.ext.Element.get('newRecordPanelTitleH2').update(Clipperz.PM.Strings['mainPanelNewRecordPanelTitle']);
|
||||
// YAHOO.ext.Element.get('newRecordPanelTitleLabel').update(Clipperz.PM.Strings['mainPanelNewRecordPanelRecordTitleLabel']);
|
||||
// YAHOO.ext.Element.get('newRecordPanelConfigLabel').update("");
|
||||
// MochiKit.Iter.forEach(Clipperz.PM.Strings['mainPanelNewRecordPanelRecordConfigConfig'], function(aConfigItem) {
|
||||
// Clipperz.YUI.DomHelper.append(YAHOO.ext.Element.get('newRecordPanelConfigLabel').dom, aConfigItem);
|
||||
// });
|
||||
// this.newRecordButton().setText(Clipperz.PM.Strings['mainPanelNewRecordPanelCreateButtonLabel']);
|
||||
// this.newRecordCancelButton().setText(Clipperz.PM.Strings['mainPanelNewRecordPanelCancelButtonLabel']);
|
||||
|
||||
this.recordDetailComponent().render();
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
__syntaxFix__: "syntax fix"
|
||||
|
||||
});
|
||||
305
frontend/beta/js/Clipperz/PM/Components/Panels/ToolsPanel.js
Normal file
305
frontend/beta/js/Clipperz/PM/Components/Panels/ToolsPanel.js
Normal file
@@ -0,0 +1,305 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2011 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz's Javascript Crypto Library.
|
||||
Javascript Crypto Library provides web developers with an extensive
|
||||
and efficient set of cryptographic functions. The library aims to
|
||||
obtain maximum execution speed while preserving modularity and
|
||||
reusability.
|
||||
For further information about its features and functionalities please
|
||||
refer to http://www.clipperz.com
|
||||
|
||||
* Javascript Crypto Library 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.
|
||||
|
||||
* Javascript Crypto Library 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 Javascript Crypto Library. 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.ToolsPanel = function(anElement, args) {
|
||||
args = args || {};
|
||||
|
||||
Clipperz.PM.Components.Panels.ToolsPanel.superclass.constructor.call(this, anElement, args);
|
||||
|
||||
this._generateButtonElement = null;
|
||||
this._needsRenderingUponTabSwitch = false;
|
||||
|
||||
this.render();
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
||||
YAHOO.extendX(Clipperz.PM.Components.Panels.ToolsPanel, Clipperz.PM.Components.Panels.BasePanel, {
|
||||
|
||||
'toString': function() {
|
||||
return "Clipperz.PM.Components.Panels.ToolsPanel component";
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'render': function() {
|
||||
var bookmarkletUrl;
|
||||
|
||||
//MochiKit.Logging.logDebug(">>> ToolsPanel.render");
|
||||
Clipperz.NotificationCenter.unregister(this);
|
||||
MochiKit.Signal.disconnectAllTo(this);
|
||||
|
||||
if (Clipperz_IEisBroken == true) {
|
||||
bookmarkletUrl = bookmarklet_ie;
|
||||
} else {
|
||||
bookmarkletUrl = bookmarklet;
|
||||
}
|
||||
|
||||
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:"dataSubMenu", cls:'subMenu', children:[
|
||||
{tag:'li', id:this.getId('passwordGenerator'), htmlString:Clipperz.PM.Strings['passwordGeneratorTabLabel']},
|
||||
{tag:'li', id:this.getId('bookmarklet'), htmlString:Clipperz.PM.Strings['bookmarkletTabLabel']},
|
||||
{tag:'li', id:this.getId('compact'), htmlString:Clipperz.PM.Strings['compactTabLabel']},
|
||||
{tag:'li', id:this.getId('httpAuth'), htmlString:Clipperz.PM.Strings['httpAuthTabLabel']}
|
||||
]}
|
||||
]},
|
||||
{tag:'td', valign:'top', children:[
|
||||
{tag:'ul', cls:'clipperzTabPanels', children:[
|
||||
{tag:'li', id:this.getId('passwordGeneratorPanel'), children:[
|
||||
{tag:'div', cls:'clipperzSubPanel', children:[
|
||||
{tag:'h5', htmlString:Clipperz.PM.Strings['passwordGeneratorTabTitle']},
|
||||
{tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['paswordGeneratorTabDescription']},
|
||||
|
||||
//---------------------------------------------------
|
||||
{tag:'div', children:[
|
||||
{tag:'form', id:this.getId('passwordGeneratorForm'), cls:'passwordGenerator', children:[
|
||||
{tag:'input', type:'text', cls:'clipperz_passwordGenerator_password', id:this.getId('passwordField')},
|
||||
{tag:'table', children:[
|
||||
{tag:'tbody', children:[
|
||||
{tag:'tr', children:[
|
||||
{tag:'td', width:'20%', children:[
|
||||
{tag:'input', type:'checkbox', name:'lowercase', id:this.getId('lowercase'), checked:true},
|
||||
{tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorLowercaseLabel']}
|
||||
]},
|
||||
{tag:'td', width:'20%', children:[
|
||||
{tag:'input', type:'checkbox', name:'uppercase', id:this.getId('uppercase'), checked:true},
|
||||
{tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorUppercaseLabel']}
|
||||
]},
|
||||
{tag:'td', width:'20%', children:[
|
||||
{tag:'input', type:'checkbox', name:'numbers', id:this.getId('numbers'), checked:true},
|
||||
{tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorNumberLabel']}
|
||||
]},
|
||||
{tag:'td', width:'20%', children:[
|
||||
{tag:'input', type:'checkbox', name:'symbols', id:this.getId('symbols'), checked:true},
|
||||
{tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorSymbolLabel']}
|
||||
]},
|
||||
{tag:'td', width:'20%', children:[
|
||||
{tag:'span', cls:'passwordGeneratorLength', children:[
|
||||
{tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorLengthLabel']},
|
||||
{tag:'span', id:this.getId('passwordLength'), cls:'passwordGeneratorLengthValue', html:'0'}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]},
|
||||
{tag:'div', id:this.getId('generateRandomPassword')}
|
||||
]}
|
||||
//---------------------------------------------------
|
||||
|
||||
]}
|
||||
]},
|
||||
{tag:'li', id:this.getId('bookmarkletPanel'), children:[
|
||||
{tag:'div', cls:'clipperzSubPanel', children:[
|
||||
{tag:'h5', htmlString:Clipperz.PM.Strings['bookmarkletTabTitle']},
|
||||
{tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['bookmarkletTabDescription']},
|
||||
{tag:'a', href:bookmarkletUrl, cls:'bookmarkletLink', htmlString:Clipperz.PM.Strings['bookmarkletTabBookmarkletTitle']},
|
||||
{tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['bookmarkletTabInstructions']}
|
||||
]}
|
||||
]},
|
||||
{tag:'li', id:this.getId('compactPanel'), children:[
|
||||
{tag:'div', cls:'clipperzSubPanel', children:[
|
||||
{tag:'h5', htmlString:Clipperz.PM.Strings['compactTabTitle']},
|
||||
{tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['compactTabDescription']}
|
||||
]}
|
||||
]},
|
||||
{tag:'li', id:this.getId('httpAuthPanel'), children:[
|
||||
{tag:'div', cls:'clipperzSubPanel', children:[
|
||||
{tag:'h5', htmlString:Clipperz.PM.Strings['httpAuthTabTitle']},
|
||||
{tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['httpAuthTabDescription']},
|
||||
{tag:'div', cls:'bookmarkletConfiguration', children:[Clipperz.PM.Strings['httpAuthBookmarkletConfiguration']]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]});
|
||||
|
||||
new Clipperz.PM.Components.PasswordEntropyDisplay(this.getElement('passwordField'));
|
||||
|
||||
MochiKit.Signal.connect(this.getId('lowercase'), 'onclick', this, 'updatePasswordValue');
|
||||
MochiKit.Signal.connect(this.getId('uppercase'), 'onclick', this, 'updatePasswordValue');
|
||||
MochiKit.Signal.connect(this.getId('numbers'), 'onclick', this, 'updatePasswordValue');
|
||||
MochiKit.Signal.connect(this.getId('symbols'), 'onclick', this, 'updatePasswordValue');
|
||||
|
||||
MochiKit.Signal.connect(this.getDom('passwordField'), 'onkeyup', this, 'updatePasswordLengthLabel');
|
||||
MochiKit.Signal.connect(this.getDom('passwordField'), 'onchange', this, 'updatePasswordLengthLabel');
|
||||
MochiKit.Signal.connect(this.getDom('passwordField'), 'onblur', this, 'updatePasswordLengthLabel');
|
||||
|
||||
this.setGenerateButtonElement(new YAHOO.ext.Button(this.getDom('generateRandomPassword'), {text:Clipperz.PM.Strings['passwordGeneratorTabButtonLabel'], handler:this.updatePasswordValue, scope:this}));
|
||||
|
||||
this.setNeedsRenderingUponTabSwitch(false);
|
||||
this.tabPanelController().setUp();
|
||||
Clipperz.NotificationCenter.register(null, 'tabSelected', this, 'tabSelectedHandler');
|
||||
Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler');
|
||||
//MochiKit.Logging.logDebug("<<< ToolsPanel.render");
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'needsRenderingUponTabSwitch': function() {
|
||||
return this._needsRenderingUponTabSwitch;
|
||||
},
|
||||
|
||||
'setNeedsRenderingUponTabSwitch': function(aValue) {
|
||||
this._needsRenderingUponTabSwitch = aValue;
|
||||
},
|
||||
|
||||
'tabSelectedHandler': function(anEvent) {
|
||||
if (this.needsRenderingUponTabSwitch()) {
|
||||
this.render();
|
||||
}
|
||||
|
||||
if (anEvent.parameters() == this.getId('httpAuth')) {
|
||||
var textarea;
|
||||
|
||||
textarea = document.getElementById("httpAuthDefaultConfiguration");
|
||||
textarea.focus();
|
||||
textarea.select();
|
||||
}
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'tabPanelController': function() {
|
||||
if (this._tabPanelController == null) {
|
||||
var tabPanelControllerConfig;
|
||||
|
||||
tabPanelControllerConfig = {}
|
||||
tabPanelControllerConfig[this.getId('passwordGenerator')] = this.getId('passwordGeneratorPanel');
|
||||
tabPanelControllerConfig[this.getId('bookmarklet')] = this.getId('bookmarkletPanel');
|
||||
tabPanelControllerConfig[this.getId('compact')] = this.getId('compactPanel');
|
||||
tabPanelControllerConfig[this.getId('httpAuth')] = this.getId('httpAuthPanel');
|
||||
this._tabPanelController = new Clipperz.PM.Components.TabPanel.TabPanelController({ config:tabPanelControllerConfig, selectedTab:this.getId('passwordGenerator') });
|
||||
}
|
||||
|
||||
return this._tabPanelController;
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'generateButtonElement': function() {
|
||||
return this._generateButtonElement;
|
||||
},
|
||||
|
||||
'setGenerateButtonElement': function(aValue) {
|
||||
this._generateButtonElement = aValue;
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'updatePasswordValue': function(anEvent) {
|
||||
var randomBytes;
|
||||
var randomValue;
|
||||
var charset;
|
||||
var charsetBitSize;
|
||||
var stringValue;
|
||||
var blockIndex;
|
||||
|
||||
//MochiKit.Logging.logDebug(">>> updatePasswordValue");
|
||||
randomBytes = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(50);
|
||||
stringValue = "";
|
||||
blockIndex = 0;
|
||||
|
||||
charset = "";
|
||||
if (this.getDom('lowercase').checked) {
|
||||
charset += Clipperz.PM.Strings['passwordGeneratorLowercaseCharset'];
|
||||
}
|
||||
if (this.getDom('uppercase').checked) {
|
||||
charset += Clipperz.PM.Strings['passwordGeneratorUppercaseCharset'];
|
||||
}
|
||||
if (this.getDom('numbers').checked) {
|
||||
charset += Clipperz.PM.Strings['passwordGeneratorNumberCharset'];
|
||||
}
|
||||
if (this.getDom('symbols').checked) {
|
||||
charset += Clipperz.PM.Strings['passwordGeneratorSymbolCharset'];
|
||||
}
|
||||
|
||||
charsetBitSize = 0;
|
||||
while (Math.pow(2, charsetBitSize) < charset.length) {
|
||||
charsetBitSize ++;
|
||||
}
|
||||
|
||||
if (charsetBitSize > 0) {
|
||||
while (Clipperz.PM.Crypto.passwordEntropy(stringValue) < 128) {
|
||||
if (((blockIndex + 1)*charsetBitSize) > (randomBytes.length() * 8)) {
|
||||
randomBytes = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(50);
|
||||
blockIndex = 0;
|
||||
}
|
||||
randomValue = randomBytes.bitBlockAtIndexWithSize(blockIndex*charsetBitSize, charsetBitSize);
|
||||
if (randomValue < charset.length) {
|
||||
stringValue += charset.charAt(randomValue);
|
||||
}
|
||||
|
||||
blockIndex ++;
|
||||
}
|
||||
} else {
|
||||
stringValue = "";
|
||||
}
|
||||
|
||||
this.getElement('passwordField').dom.focus()
|
||||
this.getElement('passwordField').dom.value = stringValue;
|
||||
|
||||
|
||||
if (anEvent.src) {
|
||||
anEvent.src().focus();
|
||||
} else {
|
||||
this.generateButtonElement().el.focus();
|
||||
}
|
||||
|
||||
this.setNeedsRenderingUponTabSwitch(true);
|
||||
|
||||
return false;
|
||||
//MochiKit.Logging.logDebug("<<< updatePasswordValue");
|
||||
},
|
||||
|
||||
//-----------------------------------------------------
|
||||
|
||||
'updatePasswordLengthLabel': function() {
|
||||
this.getElement('passwordLength').update(this.getDom('passwordField').value.length);
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
__syntaxFix__: "syntax fix"
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user