summaryrefslogtreecommitdiff
path: root/frontend/gamma/js/Clipperz/PM
Side-by-side diff
Diffstat (limited to 'frontend/gamma/js/Clipperz/PM') (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/gamma/js/Clipperz/PM/BookmarkletProcessor.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Connection.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Crypto.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginBinding.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginFormValue.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginInput.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/OneTimePassword.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.Field.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/Record.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Legacy.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Preferences.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/User.Header.RecordIndex.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/User.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Date.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Proxy.js15
-rwxr-xr-xfrontend/gamma/js/Clipperz/PM/Proxy/Proxy.JSON.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Test.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Strings.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Strings/MessagePanelConfigurations.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Strings/Strings_defaults.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Strings/Strings_en-US.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Toll.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/download.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/look.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/directLogin.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/protect.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/share.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/store.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/GraphicFunctions.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Logo/normal.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/exclamationMark.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/info.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/questionMark.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/RegisterButton/normal.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Star/normal.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/close.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/open.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/ComponentSlot.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/FaviconComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/ProgressBar.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/Tooltip.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/WizardController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Compact/MainController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/AppPage.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/ColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DateColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/FaviconColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/GridComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/ImageColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/LinkColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginForm.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginPage.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/Page.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageFooter.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/PasswordTooltip.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/RulerComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/TabSidePanel.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/TextColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardsController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/FilterController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/GridController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/MainController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardDetail.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardList.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/LoginForm.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/iPhone/Controllers/MainController.js15
107 files changed, 642 insertions, 963 deletions
diff --git a/frontend/gamma/js/Clipperz/PM/BookmarkletProcessor.js b/frontend/gamma/js/Clipperz/PM/BookmarkletProcessor.js
index 789d6b8..897beed 100644
--- a/frontend/gamma/js/Clipperz/PM/BookmarkletProcessor.js
+++ b/frontend/gamma/js/Clipperz/PM/BookmarkletProcessor.js
@@ -1,196 +1,193 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
/*
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
Clipperz.PM.BookmarkletProcessor = function(aConfiguration) {
this._configuration = aConfiguration;
this._editableFields = null;
this._favicon = null;
return this;
}
Clipperz.PM.BookmarkletProcessor.prototype = MochiKit.Base.update(null, {
'toString': function() {
return "Clipperz.PM.BookmarkletProcessor";
},
//-------------------------------------------------------------------------
'configuration': function() {
return this._configuration;
},
//-------------------------------------------------------------------------
'pageTitle': function() {
return this.configuration().page.title;
},
//-------------------------------------------------------------------------
'fields': function() {
return this.configuration().form.inputs;
},
//-------------------------------------------------------------------------
'editableFields': function() {
if (this._editableFields == null) {
this._editableFields = MochiKit.Base.filter(function(aField) {
var result;
var type;
type = aField['type'].toLowerCase();
result = ((type != 'hidden') && (type != 'submit') && (type != 'checkbox') && (type != 'radio') && (type != 'select'));
return result;
}, this.fields())
}
return this._editableFields;
},
//-------------------------------------------------------------------------
'hostname': function() {
if (this._hostname == null) {
var actionUrl;
actionUrl = this.configuration()['form']['attributes']['action'];
this._hostname = actionUrl.replace(/ ^ h t t p s ? : \ / \ / ( [ ^ \ / ] * ) \ / . * /, '$1');
}
return this._hostname;
},
'favicon': function() {
if (this._favicon == null) {
this._favicon = "http://" + this.hostname() + "/favicon.ico";
}
return this._favicon;
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
//#############################################################################
/ *
Clipperz.PM.BookmarkletProcessor.createRecordFromBookmarkletConfiguration = function(anUser, aConfiguration) {
var processor;
var record;
var recordVersion;
var directLogin;
var bindings;
var i,c;
processor = new Clipperz.PM.BookmarkletProcessor(aConfiguration);
record = new Clipperz.PM.DataModel.Record({
'label': processor.pageTitle(),
'notes': "",
'user': anUser
});
recordVersion = new Clipperz.PM.DataModel.Record.Version(record, {})
record.setCurrentVersion(recordVersion);
bindings = {};
c = processor.editableFields().length;
for (i=0; i<c; i++) {
var formField;
var recordField;
formField = processor.editableFields()[i];
recordField = new Clipperz.PM.DataModel.RecordField({
'label': formField['name'],
'value': formField['value'],
'type': Clipperz.PM.Strings.inputTypeToRecordFieldType[formField['type']],
'hidden': false,
'recordVersion': recordVersion
});
recordVersion.addField(recordField);
bindings[formField['name']] = recordField.key();
}
directLogin = new Clipperz.PM.DataModel.DirectLogin({
'record': record,
'label': processor.pageTitle(),
'favicon': processor.favicon(),
'formData': processor.configuration()['form'],
'bindingData': bindings,
'bookmarkletVersion': '0.2'
});
record.addDirectLogin(directLogin);
anUser.addRecord(record);
return record;
};
* /
//-----------------------------------------------------------------------------
Clipperz.PM.BookmarkletProcessor.sanitizeBookmarkletConfiguration = function(aConfiguration) {
var result;
// throw "XSS Bookmarklet attempt";
result = aConfiguration;
return result;
};
//-----------------------------------------------------------------------------
Clipperz.PM.BookmarkletProcessor.checkBookmarkletConfiguration = function(aConfiguration) {
var result;
try {
result = Clipperz.Base.evalJSON(aConfiguration);
result = Clipperz.PM.BookmarkletProcessor.sanitizeBookmarkletConfiguration(result);
if (result['version'] != '0.2.3') {
throw "WrongBookmarkletVersion";
}
} catch (exception) {
throw exception;
}
return result;
};
//-----------------------------------------------------------------------------
*/ \ No newline at end of file
diff --git a/frontend/gamma/js/Clipperz/PM/Connection.js b/frontend/gamma/js/Clipperz/PM/Connection.js
index 6e58c60..b4e8aaa 100644
--- a/frontend/gamma/js/Clipperz/PM/Connection.js
+++ b/frontend/gamma/js/Clipperz/PM/Connection.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
//-----------------------------------------------------------------------------
//
// Abstract C O N N E C T I O N class
//
//-----------------------------------------------------------------------------
Clipperz.PM.Connection = function (args) {
args = args || {};
this._proxy = args.proxy || Clipperz.PM.Proxy.defaultProxy;
this._getCredentialsFunction = args.getCredentialsFunction;
this._clipperz_pm_crypto_version = null;
this._connectionId = null;
this._sharedSecret = null;
return this;
}
Clipperz.PM.Connection.prototype = MochiKit.Base.update(null, {
'toString': function() {
return "Connection [" + this.version() + "]";
},
//=========================================================================
'version': function() {
throw Clipperz.Base.exception.AbstractMethod;
},
'clipperz_pm_crypto_version': function() {
if (this._clipperz_pm_crypto_version == null) {
var connectionVersions;
var versions;
var version;
var i, c;
version = null;
connectionVersions = Clipperz.PM.Connection.communicationProtocol.versions;
versions = MochiKit.Base.keys(connectionVersions);
c = versions.length;
for (i=0; i<c; i++) {
if (! (versions[i] == 'current')) {
if (this instanceof connectionVersions[versions[i]]) {
version = versions[i];
};
}
}
this._clipperz_pm_crypto_version = version;
}
return this._clipperz_pm_crypto_version;
},
//-------------------------------------------------------------------------
'defaultErrorHandler': function(anErrorString, anException) {
MochiKit.Logging.logError("### Connection.defaultErrorHandler: " + anErrorString + " (" + anException + ")");
},
//-------------------------------------------------------------------------
'getCredentialsFunction': function () {
return this._getCredentialsFunction;
},
'normalizedCredentials': function(someValues) {
throw Clipperz.Base.exception.AbstractMethod;
},
//=========================================================================
'proxy': function () {
return this._proxy;
},
//=========================================================================
'register': function () {
throw Clipperz.Base.exception.AbstractMethod;
},
'login': function() {
throw Clipperz.Base.exception.AbstractMethod;
},
//-------------------------------------------------------------------------
'message': function(someArguments, aCallback) {
throw Clipperz.Base.exception.AbstractMethod;
},
//-------------------------------------------------------------------------
'serverSideUserCredentials': function() {
throw Clipperz.Base.exception.AbstractMethod;
},
//=========================================================================
'sharedSecret': function () {
return this._sharedSecret;
},
'setSharedSecret': function (aValue) {
this._sharedSecret = aValue;
},
//-------------------------------------------------------------------------
'connectionId': function() {
return this._connectionId;
},
'setConnectionId': function(aValue) {
this._connectionId = aValue;
},
//=========================================================================
/*
// TODO: ?????
'oneTimePassword': function() {
return this._oneTimePassword;
},
'setOneTimePassword': function(aValue) {
this._oneTimePassword = aValue;
},
*/
//=========================================================================
'reset': function() {
this.setSharedSecret(null);
this.setConnectionId(null);
},
//=========================================================================
__syntaxFix__: "syntax fix"
}
);
if (typeof(Clipperz.PM.Connection.SRP) == 'undefined') { Clipperz.PM.Connection.SRP = {}; }
//-----------------------------------------------------------------------------
//
// S R P [ 1 . 0 ] C O N N E C T I O N class
//
//-----------------------------------------------------------------------------
Clipperz.PM.Connection.SRP['1.0'] = function (args) {
Clipperz.PM.Connection.call(this, args);
return this;
}
Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.PM.Connection(), {
'version': function() {
return '1.0';
},
//=========================================================================
'register': function (someUserData) {
var deferredResult;
var cryptoVersion;
var srpConnection;
cryptoVersion = this.clipperz_pm_crypto_version();
deferredResult = new Clipperz.Async.Deferred("Connection.registerWithVersion", {trace:false});
deferredResult.collectResults({
'credentials': [
this.getCredentialsFunction(),
MochiKit.Base.method(this, 'normalizedCredentials'),
MochiKit.Base.bind(function(someCredentials) {
var srpConnection;
var result;
srpConnection = new Clipperz.Crypto.SRP.Connection({ C:someCredentials['username'], P:someCredentials['password'], hash:this.hash() });
result = srpConnection.serverSideCredentials();
result['version'] = Clipperz.PM.Connection.communicationProtocol.currentVersion;
diff --git a/frontend/gamma/js/Clipperz/PM/Crypto.js b/frontend/gamma/js/Clipperz/PM/Crypto.js
index bfafbea..31fe349 100644
--- a/frontend/gamma/js/Clipperz/PM/Crypto.js
+++ b/frontend/gamma/js/Clipperz/PM/Crypto.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
if (typeof(Clipperz.PM.Crypto) == 'undefined') { Clipperz.PM.Crypto = {}; }
Clipperz.PM.Crypto.VERSION = "0.2";
Clipperz.PM.Crypto.NAME = "Clipperz.PM.Crypto";
Clipperz.PM.Crypto.encryptingFunctions = {};
MochiKit.Base.update(Clipperz.PM.Crypto, {
'__repr__': function () {
return "[" + this.NAME + " " + this.VERSION + "]";
},
//-------------------------------------------------------------------------
'toString': function () {
return this.__repr__();
},
//-------------------------------------------------------------------------
/*
'communicationProtocol': {
'currentVersion': '0.2',
'versions': {
'0.1': Clipperz.PM.Connection.SRP['1.0'], //Clipperz.Crypto.SRP.versions['1.0'].Connection,
'0.2': Clipperz.PM.Connection.SRP['1.1'] //Clipperz.Crypto.SRP.versions['1.1'].Connection
},
'fallbackVersions': {
'current': '0.1',
'0.2': '0.1',
'0.1': null
}
},
*/
//-------------------------------------------------------------------------
'encryptingFunctions': {
'currentVersion': '0.3',
'versions': {
//#####################################################################
'0.1': {
'encrypt': function(aKey, aValue) {
return Clipperz.Crypto.Base.encryptUsingSecretKey(aKey, Clipperz.Base.serializeJSON(aValue));
},
'deferredEncrypt': function(aKey, aValue) {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("Crypto[0.1].deferredEncrypt");
deferredResult.addCallback(Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].encrypt, aKey, aValue);
deferredResult.callback();
return deferredResult;
},
'decrypt': function(aKey, aValue) {
var result;
if (aValue != null) {
result = Clipperz.Base.evalJSON(Clipperz.Crypto.Base.decryptUsingSecretKey(aKey, aValue));
} else {
result = null;
}
return result;
},
'deferredDecrypt': function(aKey, aValue) {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("Crypto.[0.1].deferredDecrypt");
deferredResult.addCallback(Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].decrypt, aKey, aValue);
deferredResult.callback();
return deferredResult;
},
'hash': function(aValue) {
var result;
var strngResult;
stringResult = Clipperz.Crypto.Base.computeHashValue(aValue.asString()); // !!!!!!!
result = new Clipperz.ByteArray("0x" + stringResult);
return result;
},
'deriveKey': function(aStringValue) {
return Clipperz.Crypto.Base.computeHashValue(aStringValue);
}
},
//#####################################################################
'0.2': {
'encrypt': function(aKey, aValue, aNonce) {
var result;
var key, value;
var dataToEncrypt;
var encryptedData;
key = Clipperz.Crypto.SHA.sha_d256(new Clipperz.ByteArray(aKey));
value = new Clipperz.ByteArray(Clipperz.Base.serializeJSON(aValue));
dataToEncrypt = Clipperz.Crypto.SHA.sha_d256(value).appendBlock(value);
encryptedData = Clipperz.Crypto.AES.encrypt(key, dataToEncrypt, aNonce);
result = encryptedData.toBase64String();
return result;
},
'deferredEncrypt': function(aKey, aValue, aNonce) {
var deferredResult;
var key, value;
var dataToEncrypt;
// var encryptedData;
key = Clipperz.Crypto.SHA.sha_d256(new Clipperz.ByteArray(aKey));
value = new Clipperz.ByteArray(Clipperz.Base.serializeJSON(aValue));
dataToEncrypt = Clipperz.Crypto.SHA.sha_d256(value).appendBlock(value);
deferredResult = new Clipperz.Async.Deferred("Crypto[0.2].deferredEncrypt")
deferredResult.addCallback(Clipperz.Crypto.AES.deferredEncrypt, key, dataToEncrypt, aNonce);
deferredResult.addCallback(function(aResult) {
return aResult.toBase64String();
})
deferredResult.callback();
return deferredResult;
},
'decrypt': function(aKey, aValue) {
var result;
if (aValue != null) {
var key, value;
var decryptedData;
var decryptedValue;
key = Clipperz.Crypto.SHA.sha_d256(new Clipperz.ByteArray(aKey));
value = new Clipperz.ByteArray().appendBase64String(aValue);
decryptedData = Clipperz.Crypto.AES.decrypt(key, value);
decryptedValue = decryptedData.split((256/8));
try {
result = Clipperz.Base.evalJSON(decryptedValue.asString());
} catch (exception) {
MochiKit.Logging.logError("Error while decrypting data [1]");
throw Clipperz.Crypto.Base.exception.CorruptedMessage;
}
} else {
result = null;
}
return result;
},
'deferredDecrypt': function(aKey, aValue) {
var result;
if (aValue != null) {
var deferredResult;
var key, value;
// var decryptedData;
key = Clipperz.Crypto.SHA.sha_d256(new Clipperz.ByteArray(aKey));
value = new Clipperz.ByteArray().appendBase64String(aValue);
deferredResult = new Clipperz.Async.Deferred("Crypto.[0.2].deferredDecrypt");
deferredResult.addCallback(Clipperz.Crypto.AES.deferredDecrypt, key, value);
deferredResult.addCallback(function(aResult) {
var result;
var decryptedData;
decryptedData = aResult.split((256/8));
try {
result = Clipperz.Base.evalJSON(decryptedData.asString());
} catch (exception) {
MochiKit.Logging.logError("Error while decrypting data [2]");
throw Clipperz.Crypto.Base.exception.CorruptedMessage;
}
return result;
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js
index 1d38509..8f8696d 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.DataModel');
Clipperz.PM.DataModel.DirectLogin = function(args) {
args = args || {};
Clipperz.PM.DataModel.DirectLogin.superclass.constructor.apply(this, arguments);
this._reference = args.reference
|| Clipperz.PM.Crypto.randomKey();
this._record = args.record
|| Clipperz.Base.exception.raise('MandatoryParameter');
this._retrieveIndexDataFunction = args.retrieveIndexDataFunction
|| this.record().retrieveDirectLoginIndexDataFunction()
|| Clipperz.Base.exception.raise('MandatoryParameter');
this._setIndexDataFunction = args.setIndexDataFunction
|| this.record().setDirectLoginIndexDataFunction()
|| Clipperz.Base.exception.raise('MandatoryParameter');
this._removeIndexDataFunction = args.removeIndexDataFunction
|| this.record().removeDirectLoginIndexDataFunction()
|| Clipperz.Base.exception.raise('MandatoryParameter');
this._inputs = null;
this._bindings = null;
this._formValues = null;
// this._inputsDeferredLock = new MochiKit.Async.DeferredLock();
// this._bindingsDeferredLock = new MochiKit.Async.DeferredLock();
// this._formValuesDeferredLock = new MochiKit.Async.DeferredLock();
this._transientState = null;
this._isBrandNew = MochiKit.Base.isUndefinedOrNull(args.reference);
this.record().addDirectLogin(this);
return this;
}
Clipperz.Base.extend(Clipperz.PM.DataModel.DirectLogin, Object, {
'toString': function() {
return "DirectLogin (" + this.reference() + ")";
},
//=========================================================================
'reference': function () {
return this._reference;
},
//-------------------------------------------------------------------------
'record': function () {
return this._record;
},
//=========================================================================
'isBrandNew': function () {
return this._isBrandNew;
},
//=========================================================================
'removeIndexDataFunction': function () {
return this._removeIndexDataFunction;
},
'remove': function () {
return Clipperz.Async.callbacks("DirectLogin.remove", [
MochiKit.Base.partial(this.removeIndexDataFunction(), this.reference()),
MochiKit.Base.method(this.record(), 'removeDirectLogin', this)
], {trace:false});
},
//=========================================================================
/*
'inputsDeferredLock': function () {
return this._inputsDeferredLock;
},
'bindingsDeferredLock': function () {
return this._bindingsDeferredLock;
},
'formValuesDeferredLock': function () {
return this._formValuesDeferredLock;
},
*/
//=========================================================================
'label': function () {
return this.getIndexDataForKey('label');
},
'setLabelKeepingBackwardCompatibilityWithBeta': function (aValue) {
return Clipperz.Async.callbacks("DirectLogin.setLabelKeepingBackwardCompatibilityWithBeta", [
MochiKit.Base.method(this, 'setIndexDataForKey', 'label', aValue),
MochiKit.Base.method(this, 'setValue', 'label', aValue)
], {trace:false});
},
'setLabel': function (aValue) {
return this.setLabelKeepingBackwardCompatibilityWithBeta(aValue);
// return this.setIndexDataForKey('label', aValue);
},
//=========================================================================
'favicon': function () {
return this.getIndexDataForKey('favicon');
},
'setFavicon': function (aValue) {
return this.setIndexDataForKey('favicon', aValue);
},
'faviconUrlWithBookmarkletConfiguration': function (aBookmarkletConfiguration) {
var result;
if (! MochiKit.Base.isUndefinedOrNull(aBookmarkletConfiguration['page']['favicon'])) {
result = aBookmarkletConfiguration['page']['favicon'];
} else if (! MochiKit.Base.isUndefinedOrNull(aBookmarkletConfiguration['form']['attributes']['action'])) {
var actionUrl;
var hostname;
actionUrl = aBookmarkletConfiguration['form']['attributes']['action'];
hostname = actionUrl.replace(/^https?:\/\/([^\/]*)\/.*/, '$1');
result = "http://" + hostname + "/favicon.ico";
} else {
result = null;
}
return result;
},
//-------------------------------------------------------------------------
/*
'faviconData': function () {
var regexp = new RegExp('^data\:\/\/.*', 'i');
return Clipperz.Async.callbacks("DirectLogin.favicon", [
MochiKit.Base.method(this, 'getIndexDataForKey', 'favicon'),
MochiKit.Base.method(regexp, 'test'),
Clipperz.Async.deferredIf("is data URL", [
MochiKit.Base.method(this, 'getIndexDataForKey', 'favicon')
], [
MochiKit.Base.method(this, 'transientState'),
MochiKit.Base.itemgetter('faviconData'),
Clipperz.Async.deferredIf('has a chaced value for the favicon data', [
MochiKit.Base.operator.identity
], [
MochiKit.Base.method(this, 'getIndexDataForKey', 'favicon'),
MochiKit.Base.method(this, 'loadFaviconDataFromURL')
])
])
], {trace:false});
},
//-------------------------------------------------------------------------
'loadFaviconDataFromURL': function (anURL) {
var deferredResult;
var image;
deferredResult = new Clipperz.Async.Deferred("DirectLogin.loadFaviconDataFromURL", {trace:false});
deferredResult.addCallback(function (anEvent) {
var image = anEvent.src();
var canvas = document.createElement("canvas");
var result;
canvas.width = image.width;
canvas.height = image.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(image, 0, 0);
result = canvas.toDataURL(/*"image/png"* /);
return result;
});
deferredResult.addErrback(MochiKit.Async.succeed, Clipperz.PM.Strings.getValue('defaultFaviconUrl'));
deferredResult.addBoth(MochiKit.Base.bind(function (aDataUrl) {
this.transientState()['faviconData'] = aDataUrl;
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginBinding.js b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginBinding.js
index fd55c63..4377853 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginBinding.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginBinding.js
@@ -1,125 +1,122 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
//#############################################################################
Clipperz.PM.DataModel.DirectLoginBinding = function(aDirectLogin, args) {
args = args || {};
this._directLogin = aDirectLogin|| Clipperz.Base.exception.raise('MandatoryParameter');
this._key = args.key || Clipperz.Base.exception.raise('MandatoryParameter');
this._fieldKey = args.field || /* this.directLogin().fieldWithName(args.fieldName).reference() || */ null;
return this;
}
Clipperz.PM.DataModel.DirectLoginBinding.prototype = MochiKit.Base.update(null, {
'toString': function() {
return "DirectLoginBinding (" + this.key() + ", " + this.fieldKey() + ")";
},
//-------------------------------------------------------------------------
'directLogin': function () {
return this._directLogin;
},
//-------------------------------------------------------------------------
'key': function() {
return this._key;
},
//-------------------------------------------------------------------------
'fieldKey': function() {
return this._fieldKey;
},
'setFieldKey': function(aValue) {
this._fieldKey = aValue;
return this.directLogin().setValue('bindingData' + '.' + this.key(), aValue);
},
// 'fieldName': function() {
// return this._fieldName;
// },
//-------------------------------------------------------------------------
'field': function() {
var deferredResult;
if (this.fieldKey() != null) {
deferredResult = Clipperz.Async.callbacks("DirectLoginBinding.field [1]", [
MochiKit.Base.method(this.directLogin().record(), 'fields'),
MochiKit.Base.itemgetter(this.fieldKey())
], {trace:false});
// } else if (this.fieldName() != null) {
// WTF = TODO;
// result = this.directLogin().record().fieldWithName(this.fieldName());
//
// this.setFieldKey(result.key());
} else {
deferredResult = MochiKit.Async.succeed(null);
}
return deferredResult;
},
'setField': function (aField) {
this.setFieldKey(aField.reference());
},
//-------------------------------------------------------------------------
/*
'fieldValue': function () {
return Clipperz.Async.callbacks("DirectLoginBinding.fieldValue", [
MochiKit.Base.method('field'),
MochiKit.Base.methodcaller('value')
], {trace:false});
},
*/
//-------------------------------------------------------------------------
'serializedData': function() {
return this.fieldKey();
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginFormValue.js b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginFormValue.js
index 939ab4b..a461197 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginFormValue.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginFormValue.js
@@ -1,107 +1,104 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
//#############################################################################
Clipperz.PM.DataModel.DirectLoginFormValue = function(aDirectLogin, args) {
args = args || {};
this._directLogin = aDirectLogin|| Clipperz.Base.exception.raise('MandatoryParameter');
this._key = args.key || Clipperz.Base.exception.raise('MandatoryParameter');
this._fieldOptions = args.fieldOptions || Clipperz.Base.exception.raise('MandatoryParameter');
this._value = args.value || null;
return this;
}
Clipperz.PM.DataModel.DirectLoginFormValue.prototype = MochiKit.Base.update(null, {
'toString': function() {
return "DirectLoginFormValue (" + this.key() + ", " + this.value() + ")";
},
//-------------------------------------------------------------------------
'directLogin': function () {
return this._directLogin;
},
//-------------------------------------------------------------------------
'key': function() {
return this._key;
},
//-------------------------------------------------------------------------
'fieldOptions': function() {
return this._fieldOptions;
},
//-------------------------------------------------------------------------
'type': function () {
return this.fieldOptions()['type'];
},
//-------------------------------------------------------------------------
'value': function() {
var result;
result = this._value;
// if ((result == null) && (this.type() == 'checkbox')) {
// result = false;
// };
return result;
},
'setValue': function (aValue) {
//console.log("DirectLoginFormValue.setValue", aValue);
this._value = aValue;
return this.directLogin().setValue('formValues' + '.' + this.key(), aValue);
},
//-------------------------------------------------------------------------
/*
'serializedData': function() {
return this.value();
},
*/
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginInput.js b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginInput.js
index 673d5ee..8188389 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginInput.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginInput.js
@@ -1,203 +1,200 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
//#############################################################################
Clipperz.PM.DataModel.DirectLoginInput = function(args) {
this._args = args;
return this;
}
Clipperz.PM.DataModel.DirectLoginInput.prototype = MochiKit.Base.update(null, {
'args': function() {
return this._args;
},
//-------------------------------------------------------------------------
'name': function() {
return this.args()['name'];
},
//-------------------------------------------------------------------------
'type': function() {
var result;
result = this.args()['type'];
if (result != null) {
result = result.toLowerCase();
}
return result;
},
//-------------------------------------------------------------------------
'options': function() {
return this.args()['options'];
},
//-------------------------------------------------------------------------
'value': function() {
return this.args()['value'];
},
//-------------------------------------------------------------------------
/*
'formConfiguration': function(someFormValues, someBindings, someFields) {
var result;
//console.log("### DirectLoginInput.formConfiguration", someFields);
if (this.shouldSetValue()) {
switch (this.type()) {
case 'select':
var currentValue;
var options;
// currentValue = this.directLogin()._configuration['formValues'][this.name()];
currentValue = someFormValues[this.name()];
options = this.args()['options'];
result = MochiKit.DOM.SELECT({name:this.name()},
MochiKit.Base.map(function(anOption) {
var options;
options = {value:anOption['value']};
if (currentValue == anOption['value']) {
options.selected = true;
}
return MochiKit.DOM.OPTION(options, anOption['label'])
}, options)
)
break;
case 'checkbox':
var options;
options = {type:'checkbox', name: this.name()};
// if (this.directLogin()._configuration['formValues'][this.name()] == true) {
if (someFormValues[this.name()] == true) {
options['checked'] = true;
};
result = MochiKit.DOM.INPUT(options, null);
break;
case 'radio':
var currentName;
var currentValue;
var options;
currentName = this.name();
// currentValue = this.directLogin()._configuration['formValues'][this.name()];
currentValue = someFormValues[this.name()];
options = this.args()['options'];
result = MochiKit.DOM.DIV(null,
MochiKit.Base.map(function(anOption) {
var options;
var isChecked;
var inputNode;
var divNode;
options = {type:'radio', name:currentName, value:anOption['value']}
isChecked = (currentValue == anOption['value']);
if (isChecked) {
options.checked = true;
}
if (Clipperz_IEisBroken == true) {
var checkedValue;
checkedValue = (isChecked ? " CHECKED" : "");
inputNode = MochiKit.DOM.currentDocument().createElement("<INPUT TYPE='RADIO' NAME='" + currentName + "' VALUE='" + anOption['value'] + "'" + checkedValue + ">");
} else {
inputNode = MochiKit.DOM.INPUT(options, anOption['value']);
}
divNode = MochiKit.DOM.DIV(null, inputNode);
return divNode;
}, options)
);
break;
}
} else {
var binding;
// binding = this.directLogin().bindings()[this.name()];
binding = someBindings[this.name()];
//console.log("### binding", binding);
//if (binding != null) {
/// console.log(" binding.field()", binding.field());
/// console.log(" binding.field().value()", binding.field().value());
// console.log(" someFields[binding.fieldKey()].value()", someFields[binding.fieldKey()].value());
//}
result = MochiKit.DOM.INPUT({
type:((this.type() != 'password') ? this.type() : 'text'),
name:this.name(),
// value:((binding != null)? binding.field().value() : this.value())
value:((binding != null)? someFields[binding.fieldKey()]['value'] : this.value())
// value:((binding != null)? someFields[binding.fieldKey()].value() : this.value())
}, null);
}
return result;
},
*/
//-------------------------------------------------------------------------
'needsFormValue': function() {
var type;
var result;
type = this.type();
result = ((type == 'checkbox') || (type == 'radio') || (type == 'select'));
return result;
},
'needsBinding': function() {
var type;
var result;
type = this.type();
result = ((type == 'text') || (type == 'password'));
return result;
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js b/frontend/gamma/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js
index 3408b08..cdeec8b 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
try { if (typeof(Clipperz.KeyValueObjectStore) == 'undefined') { throw ""; }} catch (e) {
throw "Clipperz.PM.DataModel.EncryptedRemoteObject depends on Clipperz.KeyValueObjectStore!";
}
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
Clipperz.PM.DataModel.EncryptedRemoteObject = function(args) {
args = args || {};
this._name = args.name || null;
this._reference = args.reference || Clipperz.PM.Crypto.randomKey();
this._isBrandNew = ((args.reference == null) && (args.remoteData == null));
if ((this._isBrandNew == false) && (args['retrieveKeyFunction'] == null)) {
Clipperz.Base.exception.raise('MandatoryParameter');
} else {
this._retrieveKeyFunction = args['retrieveKeyFunction'];
}
this._retrieveRemoteDataFunction = args.retrieveRemoteDataFunction || null;
this._remoteData = args.remoteData || null;
// this._remoteData = args.remoteData ? Clipperz.Base.deepClone(args.remoteData) : null;
if ((!this._isBrandNew) && ((this._retrieveRemoteDataFunction == null) && (this._remoteData == null))) {
Clipperz.Base.exception.raise('MandatoryParameter');
}
this._encryptedDataKeypath = args.encryptedDataKeypath || 'data'; //Clipperz.Base.exception.raise('MandatoryParameter');
this._encryptedVersionKeypath = args.encryptedVersionKeypath || 'version'; //Clipperz.Base.exception.raise('MandatoryParameter');
this._transientState = null;
this._deferredLocks = {};
if (this._isBrandNew == true) {
this._objectDataStore = new Clipperz.KeyValueObjectStore(/*{'name':'EncryptedRemoteObject.objectDataStore [1]'}*/);
} else {
this._objectDataStore = null;
}
return this;
}
//
// Basic data workflow
// =======================
//
// getRemoteData
// unpackRemoteData
// getDecryptData [encryptedDataKeypath, encryptedVersionKeypath]
// unpackData
//
//
// ?? packData
// ?? encryptDataWithKey
// ?? packRemoteData [encryptedDataKeypath (?), encryptedVersionKeypath (?)]
//
Clipperz.PM.DataModel.EncryptedRemoteObject.prototype = MochiKit.Base.update(null, {
'toString': function () {
return "Clipperz.PM.DataModel.EncryptedRemoteObject" + (this.name() != null ? " - " + this.name() : "");
},
//-------------------------------------------------------------------------
'name': function () {
return this._name;
},
//-------------------------------------------------------------------------
'reference': function () {
return this._reference;
},
'setReference': function (aValue) {
this._reference = aValue;
return this._reference;
},
//-------------------------------------------------------------------------
'transientState': function () {
if (this._transientState == null) {
this._transientState = new Clipperz.KeyValueObjectStore(/*{'name':'EncryptedRemoteObject.transientState [2]'}*/);
}
return this._transientState;
},
'resetTransientState': function (isCommitting) {
if (this._transientState != null) {
this._transientState.removeAllData();
}
this._transientState = null;
},
//-------------------------------------------------------------------------
'isBrandNew': function () {
return this._isBrandNew;
},
//-------------------------------------------------------------------------
'getKey': function () {
var deferredResult;
var deferredLock;
deferredLock = this.getDeferredLockForKey('key');
deferredResult = new Clipperz.Async.Deferred("EncryptedRemoteObject.getKey", {trace:false});
deferredResult.acquireLock(deferredLock);
deferredResult.addMethod(
this.decryptedDataStore(),
'deferredGetOrSet',
'decryptionKey',
MochiKit.Base.partial(this.retrieveKeyFunction(), this.reference())
);
deferredResult.releaseLock(deferredLock);
deferredResult.callback();
return deferredResult;
},
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
'retrieveKeyFunction': function () {
return this._retrieveKeyFunction;
},
'setRetrieveKeyFunction': function (aFunction) {
this._retrieveKeyFunction = aFunction;
},
//-------------------------------------------------------------------------
'hasLoadedRemoteData': function () {
return (this._remoteData != null);
},
'getRemoteData': function () {
var deferredResult;
var deferredLock;
deferredLock = this.getDeferredLockForKey('remoteData');
deferredResult = new Clipperz.Async.Deferred("EncryptedRemoteObjects.getRemoteData", {trace:false});
deferredResult.acquireLock(deferredLock);
deferredResult.addCallback(MochiKit.Base.bind(function () {
var innerDeferredResult;
if (this._remoteData != null) {
innerDeferredResult = MochiKit.Async.succeed(this._remoteData);
} else {
innerDeferredResult = Clipperz.Async.callbacks("EncryptedRemoteObjects.getRemoteData <inner deferred>", [
MochiKit.Base.partial(this.retrieveRemoteDataFunction(), this.reference()),
MochiKit.Base.method(this, 'unpackRemoteData'),
MochiKit.Base.bind(function (someData) {
this._remoteData = someData;
return this._remoteData;
}, this)
], {trace:false});
}
return innerDeferredResult;
}, this))
deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress');
deferredResult.releaseLock(deferredLock);
deferredResult.callback();
return deferredResult;
},
//-------------------------------------------------------------------------
'unpackRemoteData': function (someData) {
return MochiKit.Async.succeed(someData);
},
//.........................................................................
'packRemoteData': function (someData) {
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/OneTimePassword.js b/frontend/gamma/js/Clipperz/PM/DataModel/OneTimePassword.js
index 9f1c197..834e21b 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/OneTimePassword.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/OneTimePassword.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
//#############################################################################
Clipperz.PM.DataModel.OneTimePassword = function(args) {
args = args || {};
// this._user = args['user'];
this._reference = args['reference'] || Clipperz.PM.Crypto.randomKey();
this._password = args['password'];
this._passwordValue = Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword(args['password']);
this._creationDate = args['created'] ? Clipperz.PM.Date.parseDateWithUTCFormat(args['created']) : new Date();
this._usageDate = args['used'] ? Clipperz.PM.Date.parseDateWithUTCFormat(args['used']) : null;
this._status = args['status'] || 'ACTIVE'; // 'REQUESTED', 'USED', 'DISABLED'
this._connectionInfo= null;
this._key = null;
this._keyChecksum = null;
return this;
}
Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, {
'toString': function() {
return "Clipperz.PM.DataModel.OneTimePassword";
},
/*
//-------------------------------------------------------------------------
'user': function() {
return this._user;
},
//-------------------------------------------------------------------------
'password': function() {
return this._password;
},
//-------------------------------------------------------------------------
'passwordValue': function() {
return this._passwordValue;
},
//-------------------------------------------------------------------------
'creationDate': function() {
return this._creationDate;
},
//-------------------------------------------------------------------------
'reference': function() {
return this._reference;
},
//-------------------------------------------------------------------------
'key': function() {
if (this._key == null) {
this._key = Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword(this.user().username(), this.passwordValue());
}
return this._key;
},
//-------------------------------------------------------------------------
'keyChecksum': function() {
if (this._keyChecksum == null) {
this._keyChecksum = Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(this.user().username(), this.passwordValue());
}
return this._keyChecksum;
},
*/
//-------------------------------------------------------------------------
'status': function() {
return this._status;
},
'setStatus': function(aValue) {
this._status = aValue;
},
//-------------------------------------------------------------------------
/*
'serializedData': function() {
var result;
result = {
'password': this.password(),
'created': this.creationDate() ? Clipperz.PM.Date.formatDateWithUTCFormat(this.creationDate()) : null,
'used': this.usageDate() ? Clipperz.PM.Date.formatDateWithUTCFormat(this.usageDate()) : null,
'status': this.status()
};
return result;
},
//-------------------------------------------------------------------------
'packedPassphrase': function() {
var result;
var packedPassphrase;
var encodedPassphrase;
var prefixPadding;
var suffixPadding;
var getRandomBytes;
getRandomBytes = MochiKit.Base.method(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'getRandomBytes');
encodedPassphrase = new Clipperz.ByteArray(this.user().passphrase()).toBase64String();
//MochiKit.Logging.logDebug("--- encodedPassphrase.length: " + encodedPassphrase.length);
prefixPadding = getRandomBytes(getRandomBytes(1).byteAtIndex(0)).toBase64String();
//MochiKit.Logging.logDebug("--- prefixPadding.length: " + prefixPadding.length);
suffixPadding = getRandomBytes((500 - prefixPadding.length - encodedPassphrase.length) * 6 / 8).toBase64String();
//MochiKit.Logging.logDebug("--- suffixPadding.length: " + suffixPadding.length);
//MochiKit.Logging.logDebug("--- total.length: " + (prefixPadding.length + encodedPassphrase.length + suffixPadding.length));
packedPassphrase = {
'prefix': prefixPadding,
'passphrase': encodedPassphrase,
'suffix': suffixPadding
};
// result = Clipperz.Base.serializeJSON(packedPassphrase);
result = packedPassphrase;
//MochiKit.Logging.logDebug("===== OTP packedPassprase: [" + result.length + "]" + result);
//MochiKit.Logging.logDebug("<<< OneTimePassword.packedPassphrase");
return result;
},
//-------------------------------------------------------------------------
'encryptedPackedPassphrase': function() {
return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(this.passwordValue(), this.packedPassphrase())
},
//-------------------------------------------------------------------------
'encryptedData': function() {
var deferredResult;
var result;
//MochiKit.Logging.logDebug(">>> OneTimePassword.encryptedData");
//MochiKit.Logging.logDebug("--- OneTimePassword.encryptedData - id: " + this.reference());
result = {
'reference': this.reference(),
'key': this.key(),
'keyChecksum': this.keyChecksum(),
'data': "",
'version': Clipperz.PM.Crypto.encryptingFunctions.currentVersion
}
//MochiKit.Logging.logDebug("--- OneTimePassword.encryptedData - 2: " + Clipperz.Base.serializeJSON(result));
deferredResult = new MochiKit.Async.Deferred();
//MochiKit.Logging.logDebug("--- OneTimePassword.encryptedData - 3");
//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("OneTimePassword.encryptedData - 1: " + res); return res;});
//# deferredResult.addCallback(Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion, this.passwordValue(), this.packedPassphrase());
deferredResult.addCallback(MochiKit.Base.method(this, 'encryptedPackedPassphrase'));
//MochiKit.Logging.logDebug("--- OneTimePassword.encryptedData - 4");
//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("OneTimePassword.encryptedData - 2: [" + res.length + "]" + res); return res;});
deferredResult.addCallback(function(aResult, res) {
aResult['data'] = res;
return aResult;
}, result);
//MochiKit.Logging.logDebug("--- OneTimePassword.encryptedData - 5");
//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("OneTimePassword.encryptedData - 3: " + Clipperz.Base.serializeJSON(res)); return res;});
deferredResult.callback();
//MochiKit.Logging.logDebug("--- OneTimePassword.encryptedData - 6");
return deferredResult;
},
//-------------------------------------------------------------------------
'saveChanges': function() {
var deferredResult;
var result;
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.Field.js b/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.Field.js
index 147aa7d..f51bbc2 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.Field.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.Field.js
@@ -1,167 +1,164 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
try { if (typeof(Clipperz.PM.DataModel.Record.Version) == 'undefined') { throw ""; }} catch (e) {
throw "Clipperz.PM.DataModel.Record.Version.Field depends on Clipperz.PM.DataModel.Record.Version!";
}
Clipperz.PM.DataModel.Record.Version.Field = function(args) {
Clipperz.PM.DataModel.Record.Version.Field.superclass.constructor.apply(this, arguments);
this._recordVersion = args.recordVersion || Clipperz.Base.exception.raise('MandatoryParameter');
this._reference = args.reference || Clipperz.PM.Crypto.randomKey();
return this;
}
Clipperz.Base.extend(Clipperz.PM.DataModel.Record.Version.Field, Object, {
'toString': function() {
return "Record.Version.Field (" + this.reference() + ")";
},
//-------------------------------------------------------------------------
'recordVersion': function () {
return this._recordVersion;
},
//-------------------------------------------------------------------------
'reference': function () {
return this._reference;
},
//-------------------------------------------------------------------------
'getItem': function (aKey) {
return Clipperz.Async.callbacks("Clipperz.PM.DataModel.Record.Version.Field.getItem", [
MochiKit.Base.method(this, 'recordVersion'),
MochiKit.Base.methodcaller('getValue', 'fields' + '.' + this.reference() + '.' + aKey)
], {trace:false});
},
'setItem': function (aKey, aValue) {
return Clipperz.Async.callbacks("Clipperz.PM.DataModel.Record.Version.Field.getItem", [
MochiKit.Base.method(this, 'recordVersion'),
MochiKit.Base.methodcaller('setValue', 'fields' + '.' + this.reference() + '.' + aKey, aValue)
], {trace:false});
},
//-------------------------------------------------------------------------
'label': function () {
return this.getItem('label');
},
'setLabel': function (aValue) {
return this.setItem('label', aValue);
},
//-------------------------------------------------------------------------
'value': function () {
return this.getItem('value');
},
'setValue': function (aValue) {
return this.setItem('value', aValue);
},
//-------------------------------------------------------------------------
'actionType': function () {
return Clipperz.Async.callbacks("Clipperz.PM.DataModel.Record.Version.Field.actionType", [
Clipperz.Async.collectResults("Clipperz.PM.DataModel.Record.Version.Field.actionType [collect results]", {
'isHidden': MochiKit.Base.method(this, 'isHidden'),
'value': MochiKit.Base.method(this, 'value')
}, {trace:false}),
function (someValues) {
var result; // 'NONE', 'URL', 'EMAIL', 'PASSWORD'
result = 'NONE';
if (someValues['isHidden']) {
result = 'PASSWORD';
} else if (Clipperz.Base.isUrl(someValues['value'])) {
result = 'URL'
} else if (Clipperz.Base.isEmail(someValues['value'])) {
result = 'EMAIL'
};
return result;
}
], {trace:false});
},
//-------------------------------------------------------------------------
'isHidden': function () {
return this.getItem('hidden');
},
'setIsHidden': function (aValue) {
return this.setItem('hidden', aValue);
},
//-------------------------------------------------------------------------
'isEmpty': function () {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.Record.Version.Field.isEmpty", {trace:false});
deferredResult.collectResults({
'label': [
MochiKit.Base.method(this, 'label'),
MochiKit.Base.partial(MochiKit.Base.operator.eq, '')
],
'value': [
MochiKit.Base.method(this, 'value'),
MochiKit.Base.partial(MochiKit.Base.operator.eq, '')
],
'isHidden': [
MochiKit.Base.method(this, 'isHidden'),
MochiKit.Base.partial(MochiKit.Base.operator.eq, false)
]
});
deferredResult.addCallback(MochiKit.Base.values);
deferredResult.addCallback(function(someValues) {
return MochiKit.Iter.every(someValues, MochiKit.Base.operator.identity);
});
deferredResult.callback();
return deferredResult;
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.js b/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.js
index 6e50f8e..dd35fc9 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
try { if (typeof(Clipperz.PM.DataModel.Record) == 'undefined') { throw ""; }} catch (e) {
throw "Clipperz.PM.DataModel.Record.Version depends on Clipperz.PM.DataModel.Record!";
}
Clipperz.PM.DataModel.Record.Version = function(args) {
//console.log(">>> Record.new");
Clipperz.PM.DataModel.Record.Version.superclass.constructor.apply(this, arguments);
this._getVersionFunction = args.getVersion || Clipperz.Base.exception.raise('MandatoryParameter');
this._fields = null;
return this;
}
Clipperz.Base.extend(Clipperz.PM.DataModel.Record.Version, Clipperz.PM.DataModel.EncryptedRemoteObject, {
'toString': function() {
return "Record.Version (" + this.reference() + ")";
},
//-------------------------------------------------------------------------
'reference': function () {
return this._reference;
},
//-------------------------------------------------------------------------
/*
'hasPendingChanges': function () {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.Record.Version.hasPendingChanges", {trace:false});
deferredResult.addCallback(MochiKit.Base.bind(Clipperz.PM.DataModel.Record.Version.superclass.hasPendingChanges, this));
deferredResult.callback();
return deferredResult;
},
*/
//-------------------------------------------------------------------------
'hasPendingChangesWhenBrandNew': function () {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.Record.Version.hasPendingChangesWhenBrandNew", {trace:false});
deferredResult.addMethod(this, 'fields');
deferredResult.addCallback(MochiKit.Base.values);
deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.methodcaller('isEmpty'))
deferredResult.addCallback(Clipperz.Async.collectAll);
deferredResult.addCallback(function(someValues) {
return MochiKit.Iter.every(someValues, MochiKit.Base.operator.identity);
});
deferredResult.addCallback(MochiKit.Base.operator.lognot)
deferredResult.callback();
return deferredResult;
},
//=========================================================================
'commitTransientState': function () {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.Record.Version.commitTransientState", {trace:false});
deferredResult.addCallback(MochiKit.Base.bind(Clipperz.PM.DataModel.Record.Version.superclass.commitTransientState, this));
deferredResult.callback();
return deferredResult;
},
//=========================================================================
'unpackData': function (someData) { // ++
var result;
//console.log("Record.Version - UNPACK DATA", this, someData);
result = someData;
if ((someData['fields'] != null) && (someData['fields'] instanceof Array)) {
var fields;
var i,c;
fields = someData['fields'];
delete someData['fields'];
someData['fields'] = {};
c = fields.length;
for (i=0; i<c; i++) {
someData['fields'][i] = fields[i];
}
}
return result;
},
//=========================================================================
'fields': function () {
var deferredResult;
var deferredLock;
deferredLock = this.getDeferredLockForKey('fields');
deferredResult = new Clipperz.Async.Deferred("Record.Version.fields", {trace:false});
deferredResult.acquireLock(deferredLock);
deferredResult.addCallback(MochiKit.Base.bind(function () {
var innerDeferredResult;
if (this._fields == null) {
innerDeferredResult = new Clipperz.Async.Deferred("Record.Version.fields <inner deferred>", {trace:false});
innerDeferredResult.addMethod(this, 'getValue', 'fields');
innerDeferredResult.addCallback(MochiKit.Base.bind(function (someObjectData) {
var reference;
this._fields = {};
for (reference in someObjectData) {
var recordVersionField;
recordVersionField = new Clipperz.PM.DataModel.Record.Version.Field({
'recordVersion': this,
'reference': reference
});
this._fields[reference] = recordVersionField;
}
return this._fields;
}, this));
innerDeferredResult.callback();
} else {
innerDeferredResult = MochiKit.Async.succeed(this._fields);
}
return innerDeferredResult;
}, this));
deferredResult.releaseLock(deferredLock);
deferredResult.callback();
return deferredResult;
},
//-------------------------------------------------------------------------
'getFieldsValues': function () {
return this.getValue('fields');
},
//-------------------------------------------------------------------------
'addField': function (someParameters) {
var newField;
newField = new Clipperz.PM.DataModel.Record.Version.Field({recordVersion:this});
return Clipperz.Async.callbacks("Record.Version.addField", [
MochiKit.Base.method(this, 'fields'),
MochiKit.Base.method(this, '_getObjectDataStore'),
MochiKit.Base.methodcaller('values'),
Clipperz.Base.serializeJSON,
MochiKit.Base.bind(function () { this._fields[newField.reference()] = newField; }, this),
MochiKit.Base.method(newField, 'setLabel', someParameters['label']),
MochiKit.Base.method(newField, 'setValue', someParameters['value']),
MochiKit.Base.method(newField, 'setIsHidden', someParameters['isHidden']),
MochiKit.Base.method(this, '_getObjectDataStore'),
MochiKit.Base.methodcaller('values'),
Clipperz.Base.serializeJSON,
MochiKit.Base.partial(MochiKit.Async.succeed, newField)
], {trace:false});
},
//-------------------------------------------------------------------------
'removeField': function (aField) {
return Clipperz.Async.callbacks("Record.Version.removeField", [
MochiKit.Base.method(this, 'fields'),
MochiKit.Base.bind(function () { delete this._fields[aField.reference()]; }, this),
MochiKit.Base.method(this, 'removeValue', 'fields' + '.' + aField.reference())
], {trace:false});
},
//-------------------------------------------------------------------------
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/Record.js b/frontend/gamma/js/Clipperz/PM/DataModel/Record.js
index 85dd06b..b816f80 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/Record.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/Record.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
Clipperz.PM.DataModel.Record = function(args) {
//console.log(">>> new Clipperz.PM.DataModel.Record", args);
Clipperz.PM.DataModel.Record.superclass.constructor.apply(this, arguments);
this._updateDate = (args.updateDate ? Clipperz.PM.Date.parse(args.updateDate) : Clipperz.Base.exception.raise('MandatoryParameter'));
this._retrieveIndexDataFunction = args.retrieveIndexDataFunction || Clipperz.Base.exception.raise('MandatoryParameter');
this._updateIndexDataFunction = args.updateIndexDataFunction || Clipperz.Base.exception.raise('MandatoryParameter');
this._retrieveDirectLoginIndexDataFunction = args.retrieveDirectLoginIndexDataFunction || null;
this._setDirectLoginIndexDataFunction = args.setDirectLoginIndexDataFunction || null;
this._removeDirectLoginIndexDataFunction = args.removeDirectLoginIndexDataFunction || null;
this._createNewDirectLoginFunction = args.createNewDirectLoginFunction || null;
this._directLogins = {};
this._versions = {};
this._currentRecordVersion = null;
if (this.isBrandNew()) {
var newVersion;
this.setNotes('');
newVersion = new Clipperz.PM.DataModel.Record.Version({
'retrieveKeyFunction': MochiKit.Base.method(this, 'getVersionKey'),
'getVersion': MochiKit.Base.method(this, 'getVersion')
});
this._versions[newVersion.reference()] = newVersion;
this._currentVersionReference = newVersion.reference();
// this.setLabel('');
}
//console.log("<<< new Clipperz.PM.DataModel.Record", args);
return this;
}
Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.EncryptedRemoteObject, {
'toString': function() {
return "Record (" + this.reference() + ")";
},
//-------------------------------------------------------------------------
'reference': function () {
return this._reference;
},
//=========================================================================
'getIndexData': function () {
return this._retrieveIndexDataFunction(this.reference());
},
//.........................................................................
'getIndexDataForKey': function (aKey) {
return Clipperz.Async.callbacks("Record.getIndexDataForKey", [
MochiKit.Base.method(this, 'getIndexData'),
MochiKit.Base.itemgetter(aKey)
], {trace:false});
},
//-------------------------------------------------------------------------
'setIndexDataForKey': function (aKey, aValue) {
// return this._updateIndexDataFunction(this.reference(), aKey, aValue);
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("Record.setIndexDataForKey", {trace:false});
deferredResult.addMethod(this, 'getIndexDataForKey', aKey);
deferredResult.addCallback(MochiKit.Base.bind(function (aCurrentValue) {
var result;
var originalValue;
originalValue = this.transientState().getValue('originalValues.indexData.' + aKey);
if (originalValue == null) {
originalValue = this.transientState().setValue('originalValues.indexData.' + aKey, aCurrentValue);
}
if (aCurrentValue != aValue) {
if (originalValue != aValue) {
this.transientState().setValue('hasPendingChanges.indexData.' + aKey, true);
} else {
this.transientState().setValue('hasPendingChanges.indexData.' + aKey, false);
}
result = this._updateIndexDataFunction(this.reference(), aKey, aValue);
} else {
result = MochiKit.Async.succeed(aValue);
}
return result;
}, this));
deferredResult.callback();
return deferredResult;
},
//=========================================================================
/*
'key': function () {
return this.getIndexDataForKey('key');
},
*/
//=========================================================================
'label': function () {
return this.getIndexDataForKey('label');
},
//.........................................................................
'setLabel': function (aValue) {
return this.setIndexDataForKey('label', aValue);
},
//=========================================================================
'headerNotes': function () {
return this.getIndexDataForKey('notes');
},
//-------------------------------------------------------------------------
'notes': function () {
return Clipperz.Async.callbacks("Record.notes", [
MochiKit.Base.method(this, 'headerNotes'),
MochiKit.Base.bind(function (someHeaderNotes) {
var result;
if ((someHeaderNotes == null) || (typeof(someHeaderNotes) == 'undefined')) {
result = this.getValue('notes');
} else {
result = MochiKit.Async.succeed(someHeaderNotes);
}
return result;
}, this)
], {trace:false});
},
//.........................................................................
'setNotes': function (aValue) {
return this.setValue('notes', aValue);
},
//=========================================================================
'updateDate': function () {
return MochiKit.Async.succeed(this._updateDate);
},
//=========================================================================
'favicon': function () {
var result;
var directLogins;
directLogins = MochiKit.Base.values(this.directLogins());
if (directLogins.length > 0) {
result = directLogins[0].favicon();
// } else if (/* is there an URL to use for searching a favicon */){
} else {
result = null; // MochiKit.Async.succeed(Clipperz.PM.Strings['defaultFaviconUrl']);
}
return result;
},
//-------------------------------------------------------------------------
'searchableContent': function () {
var deferredResult;
//console.log(">>> searchableContent");
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Legacy.js b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Legacy.js
index e675525..d6202ff 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Legacy.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Legacy.js
@@ -1,187 +1,184 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
try { if (typeof(Clipperz.PM.DataModel.User) == 'undefined') { throw ""; }} catch (e) {
throw "Clipperz.PM.DataModel.User.Header.Legacy depends on Clipperz.PM.DataModel.User!";
}
if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; }
Clipperz.PM.DataModel.User.Header.Legacy = function(args) {
// args = args || {};
Clipperz.PM.DataModel.User.Header.Legacy.superclass.constructor.apply(this, arguments);
this._retrieveRecordDetailFunction = args.retrieveRecordDetailFunction || Clipperz.Base.exception.raise('MandatoryParameter');
this._records = null;
// this._directLogins = null;
return this;
}
Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.Legacy, Clipperz.PM.DataModel.EncryptedRemoteObject, {
'toString': function() {
return "Clipperz.PM.DataModel.User.Header.Legacy";
},
//-------------------------------------------------------------------------
'retrieveRecordDetailFunction': function () {
return this._retrieveRecordDetailFunction;
},
//-------------------------------------------------------------------------
'getRecordKey': function (aRecordReference) {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.getRecordKey", {trace:false});
deferredResult.addMethod(this, 'getRecordIndexData');
deferredResult.addCallback(MochiKit.Base.itemgetter('key'))
deferredResult.callback();
return deferredResult;
},
//=========================================================================
'getRecordIndexData': function (aRecordReference) {
return this.getValue('records.' + aRecordReference);
},
'updateRecordIndexData': function (aRecordReference, aKey, aValue) {
return this.setValue('records.' + aRecordReference + "." + aKey, aValue);
},
//-------------------------------------------------------------------------
'getDirectLoginIndexData': function (aDirectLoginReference) {
return this.getValue('directLogins.' + aDirectLoginReference);
},
'setDirectLoginIndexData': function (aDirectLoginReference, aKey, aValue) {
return this.setValue('directLogins.' + aDirectLoginReference + '.' + aKey, aValue);
},
'removeDirectLoginIndexData': function (aDirectLoginReference) {
return this.removeValue('directLogins.' + aDirectLoginReference);
},
//=========================================================================
'records': function () {
var deferredResult;
var deferredLock;
deferredLock = this.getDeferredLockForKey('records');
deferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.records", {trace:false});
deferredResult.acquireLock(deferredLock);
deferredResult.addCallback(MochiKit.Base.bind(function () {
var innerDeferredResult;
if (this._records == null) {
innerDeferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.records <inner deferred>", {trace:false});
innerDeferredResult.collectResults({
'header': [
// MochiKit.Base.method(this, 'getObjectDataStore'),
// MochiKit.Base.methodcaller('values')
MochiKit.Base.method(this, 'values')
],
'recordsStats': [
MochiKit.Base.method(this, 'getRemoteData'),
MochiKit.Base.itemgetter('recordsStats')
]
});
innerDeferredResult.addCallback(MochiKit.Base.bind(function (someObjectData) {
var reference;
this._records = {};
// this._directLogins = {};
for (reference in someObjectData['header']['records']) {
var record;
record = new Clipperz.PM.DataModel.Record({
'reference': reference,
'retrieveKeyFunction': MochiKit.Base.method(this, 'getRecordKey'),
'retrieveRemoteDataFunction': this.retrieveRecordDetailFunction(),
// 'encryptedDataKeypath': 'data',
// 'encryptedVersionKeypath': 'version',
'retrieveIndexDataFunction': MochiKit.Base.method(this, 'getRecordIndexData'),
'updateIndexDataFunction': MochiKit.Base.method(this, 'updateRecordIndexData'),
'updateDate': someObjectData['recordsStats'][reference]['updateDate'],
'retrieveDirectLoginIndexDataFunction': MochiKit.Base.method(this, 'getDirectLoginIndexData'),
'setDirectLoginIndexDataFunction': MochiKit.Base.method(this, 'setDirectLoginIndexData'),
'removeDirectLoginIndexDataFunction': MochiKit.Base.method(this, 'removeDirectLoginIndexData')
});
this._records[reference] = record;
}
for (reference in someObjectData['header']['directLogins']) {
var directLogin;
var record;
record = this._records[someObjectData['header']['directLogins'][reference]['record']];
if (record != null) {
directLogin = new Clipperz.PM.DataModel.DirectLogin({
'reference': reference,
'record': record //,
// 'retrieveIndexDataFunction': MochiKit.Base.method(this, 'getDirectLoginIndexData'),
// 'setIndexDataFunction': MochiKit.Base.method(this, 'setDirectLoginIndexData'),
// 'removeIndexDataFunction': MochiKit.Base.method(this, 'removeDirectLoginIndexData')
});
} else {
Clipperz.log("WARNING: DIRECT LOGIN without a matching RECORD!!");
}
}
return this._records;
}, this));
innerDeferredResult.callback();
} else {
innerDeferredResult = MochiKit.Async.succeed(this._records);
}
return innerDeferredResult;
}, this));
deferredResult.releaseLock(deferredLock);
deferredResult.callback();
return deferredResult;
},
//=========================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js
index 0ee8599..3528db6 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js
@@ -1,128 +1,125 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
try { if (typeof(Clipperz.PM.DataModel.User) == 'undefined') { throw ""; }} catch (e) {
throw "Clipperz.PM.DataModel.User.Header.OneTimePasswords depends on Clipperz.PM.DataModel.User!";
}
if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; }
//-----------------------------------------------------------------------------
Clipperz.PM.DataModel.User.Header.OneTimePasswords = function(args) {
Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.constructor.apply(this, arguments);
this._oneTimePasswords = null;
return this;
}
//-----------------------------------------------------------------------------
Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.OneTimePasswords, Clipperz.PM.DataModel.EncryptedRemoteObject, {
'toString': function() {
return "Clipperz.PM.DataModel.User.Header.OneTimePasswords";
},
//-------------------------------------------------------------------------
/*
'packData': function (someData) { // ++
var result;
console.log(">>> OneTimePasswords.packData", someData);
result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.packData.apply(this, arguments);
console.log("<<< OneTimePasswords.packData");
return result;
},
*/
//-------------------------------------------------------------------------
/*
'packRemoteData': function (someData) {
var result;
console.log(">>> OneTimePasswords.packRemoteData", someData);
result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.packRemoteData.apply(this, arguments);
console.log("<<< OneTimePasswords.packRemoteData");
return result;
},
*/
//-------------------------------------------------------------------------
/*
'prepareRemoteDataWithKey': function (aKey) {
var result;
console.log(">>> OneTimePasswords.prepareRemoteDataWithKey");
result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.prepareRemoteDataWithKey.apply(this, arguments);
console.log("<<< OneTimePasswords.prepareRemoteDataWithKey");
return result;
},
*/
//=========================================================================
'oneTimePasswords': function () {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("User.Header.OneTimePasswords.oneTimePasswords", {trace:false});
if (this._oneTimePasswords == null) {
deferredResult.addMethod(this, 'values')
deferredResult.addCallback(MochiKit.Base.bind(function (someData) {
var otpKey;
this._oneTimePasswords = {};
for (otpKey in someData) {
var otp;
var otpParameters;
otpParameters = Clipperz.Base.deepClone(someData[otpKey]);
otpParameters['reference'] = otpKey;
otp = new Clipperz.PM.DataModel.OneTimePassword(otpParameters);
this._oneTimePasswords[otpKey] = otp;
}
return this._oneTimePasswords;
}, this));
deferredResult.callback();
} else {
deferredResult = MochiKit.Async.succeed(this._oneTimePasswords);
}
return deferredResult;
},
//=========================================================================
__syntaxFix__: "syntax fix"
});
//-----------------------------------------------------------------------------
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Preferences.js b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Preferences.js
index 91b981e..b164889 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Preferences.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Preferences.js
@@ -1,53 +1,50 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
try { if (typeof(Clipperz.PM.DataModel.User) == 'undefined') { throw ""; }} catch (e) {
throw "Clipperz.PM.DataModel.User.Header.Preferences depends on Clipperz.PM.DataModel.User!";
}
if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; }
Clipperz.PM.DataModel.User.Header.Preferences = function(args) {
Clipperz.PM.DataModel.User.Header.Preferences.superclass.constructor.apply(this, arguments);
return this;
}
Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.Preferences, Clipperz.PM.DataModel.EncryptedRemoteObject, {
'toString': function() {
return "Clipperz.PM.DataModel.User.Header.Preferences";
},
//-------------------------------------------------------------------------
//=========================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.RecordIndex.js b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.RecordIndex.js
index 6ba58a8..f77ea80 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.RecordIndex.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.RecordIndex.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
try { if (typeof(Clipperz.PM.DataModel.User) == 'undefined') { throw ""; }} catch (e) {
throw "Clipperz.PM.DataModel.User.Header.RecordIndex depends on Clipperz.PM.DataModel.User!";
}
if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; }
Clipperz.PM.DataModel.User.Header.RecordIndex = function(args) {
Clipperz.PM.DataModel.User.Header.RecordIndex.superclass.constructor.apply(this, arguments);
//console.log("NEW Clipperz.PM.DataModel.User.Header.RecordIndex", args);
this._recordsData = new Clipperz.PM.DataModel.EncryptedRemoteObject({
'name': 'recordsData',
'retrieveKeyFunction': args.retrieveKeyFunction,
'remoteData': {
'data': args.recordsData['data'],
'version': args.encryptedDataVersion,
'recordsStats': args.recordsStats
}//,
// 'encryptedDataKeypath': 'data',
// 'encryptedVersionKeypath': 'version'
});
this._directLoginsData = new Clipperz.PM.DataModel.EncryptedRemoteObject({
'name': 'directLoginsData',
'retrieveKeyFunction': args.retrieveKeyFunction,
'remoteData': {
'data': args.directLoginsData['data'],
'version': args.encryptedDataVersion
}//,
// 'encryptedDataKeypath': 'data',
// 'encryptedVersionKeypath': 'version'
});
this._lock = new MochiKit.Async.DeferredLock();
this._transientState = null;
this._retrieveRecordDetailFunction = args.retrieveRecordDetailFunction || Clipperz.Base.exception.raise('MandatoryParameter');
this._recordsIndex = args.recordsData['index'] || Clipperz.Base.exception.raise('MandatoryParameter');
this._directLoginsIndex = args.directLoginsData['index'] || Clipperz.Base.exception.raise('MandatoryParameter');
this._records = null;
return this;
}
Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.RecordIndex, Object, {
'toString': function() {
return "Clipperz.PM.DataModel.User.Header.RecordIndex";
},
//-------------------------------------------------------------------------
'retrieveRecordDetailFunction': function () {
return this._retrieveRecordDetailFunction;
},
//-------------------------------------------------------------------------
'recordsIndex': function () {
return this._recordsIndex;
},
'recordsData': function () {
return this._recordsData;
},
//-------------------------------------------------------------------------
'directLoginsIndex': function () {
return this._directLoginsIndex;
},
'directLoginsData': function () {
return this._directLoginsData;
},
//-------------------------------------------------------------------------
'lock': function () {
return this._lock;
},
//-------------------------------------------------------------------------
'transientState': function () {
if (this._transientState == null) {
this._transientState = new Clipperz.KeyValueObjectStore(/*{'name':'User.Header.RecordIndex.transientState [1]'}*/);
}
return this._transientState;
},
'resetTransientState': function (isCommitting) {
//console.log("######## UserHeaderRecordIndex - resetTransientState", Clipperz.Base.deepClone(this._transientState));
if (this._transientState != null) {
this._transientState.removeAllData();
}
this._transientState = null;
},
//-------------------------------------------------------------------------
'getRecordKey': function (aRecordReference) {
return Clipperz.Async.callbacks("User.Header.RecordIndex.getRecordKey", [
MochiKit.Base.method(this, 'getRecordIndexData', aRecordReference),
MochiKit.Base.itemgetter('key')
], {trace:false});
},
'setRecordKey': function (aRecordReference, aValue) {
return this.updateRecordIndexData(aRecordReference, 'key', aValue);
},
//-------------------------------------------------------------------------
'getRecordIndexData': function (aRecordReference) {
return this.recordsData().getValue(this.recordsIndex()[aRecordReference]);
},
//.........................................................................
'updateRecordIndexData': function (aRecordReference, aKey, aValue) {
return this.recordsData().setValue(this.recordsIndex()[aRecordReference]+'.'+aKey, aValue);
},
//-------------------------------------------------------------------------
'getDirectLoginIndexData': function (aDirectLoginReference) {
return this.directLoginsData().getValue(this.directLoginsIndex()[aDirectLoginReference]);
},
'setDirectLoginIndexData': function (aDirectLoginReference, aKey, aValue) {
//console.log("UserHeaderRecordIndex.setDirectLoginIndexData", aDirectLoginReference, this.directLoginsIndex()[aDirectLoginReference], aKey);
//if (MochiKit.Base.isUndefinedOrNull(this.directLoginsIndex()[aDirectLoginReference])) {
// throw "PIPPO";
//}
return this.directLoginsData().setValue(this.directLoginsIndex()[aDirectLoginReference] + '.' + aKey, aValue);
},
'addDirectLoginIndexData': function (aDirectLoginReference) {
//console.log("UserHeaderRecordIndex.addDirectLoginIndexData", aDirectLoginReference, this.directLoginsIndex()[aDirectLoginReference]);
return this.directLoginsData().setValue(this.directLoginsIndex()[aDirectLoginReference], {});
},
'removeDirectLoginIndexData': function (aDirectLoginReference) {
return this.directLoginsData().removeValue(this.directLoginsIndex()[aDirectLoginReference])
},
//-------------------------------------------------------------------------
'records': function () {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("User.Header.RecordIndex.records", {trace:false});
deferredResult.acquireLock(this.lock());
deferredResult.addCallback(MochiKit.Base.bind(function () {
var innerDeferredResult;
if (this._records == null) {
innerDeferredResult = new Clipperz.Async.Deferred("User.Header.RecordIndex.records <inner deferred>", {trace:false});
innerDeferredResult.collectResults({
'records': [
// MochiKit.Base.method(this.recordsData(), 'getObjectDataStore'),
// MochiKit.Base.methodcaller('values')
MochiKit.Base.method(this.recordsData(), 'values')
],
'recordsStats': [
MochiKit.Base.method(this.recordsData(), 'getRemoteData'),
MochiKit.Base.itemgetter('recordsStats')
],
'directLogins': [
// MochiKit.Base.method(this.directLoginsData(), 'getObjectDataStore'),
// MochiKit.Base.methodcaller('values')
MochiKit.Base.method(this.directLoginsData(), 'values')
]
})
innerDeferredResult.addCallback(MochiKit.Base.bind(function (someData) {
var indexReference;
var recordsInvertedIndex;
var directLoginsInvertedIndex;
recordsInvertedIndex = Clipperz.PM.DataModel.User.Header.RecordIndex.invertIndex(this.recordsIndex());
directLoginsInvertedIndex = Clipperz.PM.DataModel.User.Header.RecordIndex.invertIndex(this.directLoginsIndex());
this._records = {};
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/User.js b/frontend/gamma/js/Clipperz/PM/DataModel/User.js
index e8afa97..72d4006 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/User.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/User.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
//#############################################################################
Clipperz.PM.DataModel.User = function (args) {
args = args || {};
Clipperz.PM.DataModel.User.superclass.constructor.apply(this, arguments);
this._username = args.username || null;
this._getPassphraseFunction = args.getPassphraseFunction || null;
this._data = null;
this._connection = null;
this._connectionVersion = 'current';
this._serverData = null;
this._serverLockValue = null;
this._transientState = null;
this._deferredLocks = {
'passphrase': new MochiKit.Async.DeferredLock(),
'serverData': new MochiKit.Async.DeferredLock(),
// 'recordsIndex': new MochiKit.Async.DeferredLock(),
// 'directLoginsIndex': new MochiKit.Async.DeferredLock()
// 'preferences': new MochiKit.Async.DeferredLock()
// 'oneTimePasswords': new MochiKit.Async.DeferredLock()
'__syntaxFix__': 'syntax fix'
};
return this;
}
Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
'toString': function () {
return "Clipperz.PM.DataModel.User - " + this.username();
},
//-------------------------------------------------------------------------
'username': function () {
return this._username;
},
'setUsername': function (aValue) {
this._username = aValue;
},
//-------------------------------------------------------------------------
'displayName': function() {
return "" + this.username() + "";
},
//-------------------------------------------------------------------------
'data': function () {
if (this._data == null) {
this._data = new Clipperz.KeyValueObjectStore(/*{'name':'User.data [1]'}*/);
};
return this._data;
},
//-------------------------------------------------------------------------
'serverLockValue': function () {
return this._serverLockValue;
},
'setServerLockValue': function (aValue) {
this._serverLockValue = aValue;
},
//-------------------------------------------------------------------------
'transientState': function () {
if (this._transientState == null) {
this._transientState = {}
}
return this._transientState;
},
'resetTransientState': function (isCommitting) {
this._transientState = null;
},
//-------------------------------------------------------------------------
'deferredLockForSection': function(aSectionName) {
return this._deferredLocks[aSectionName];
},
//-------------------------------------------------------------------------
'getPassphrase': function() {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("User.getPassphrase", {trace:false});
deferredResult.acquireLock(this.deferredLockForSection('passphrase'));
deferredResult.addMethod(this.data(), 'deferredGetOrSet', 'passphrase', this.getPassphraseFunction());
deferredResult.releaseLock(this.deferredLockForSection('passphrase'));
deferredResult.callback();
return deferredResult;
},
'getPassphraseFunction': function () {
return this._getPassphraseFunction;
},
//-------------------------------------------------------------------------
'getCredentials': function () {
return Clipperz.Async.collectResults("User; get username and passphrase", {
'username': MochiKit.Base.method(this, 'username'),
'password': MochiKit.Base.method(this, 'getPassphrase')
}, {trace:false})();
},
//-------------------------------------------------------------------------
'changePassphrase': function (aNewValue) {
return this.updateCredentials(this.username(), aNewValue);
},
//.........................................................................
'updateCredentials': function (aUsername, aPassphrase) {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("User.updateCredentials", {trace:false});
// deferredResult.addMethod(this, 'getPassphrase');
// deferredResult.setValue('currentPassphrase');
deferredResult.addMethod(this.connection(), 'ping');
deferredResult.addMethod(this, 'setUsername', aUsername)
deferredResult.acquireLock(this.deferredLockForSection('passphrase'));
deferredResult.addMethod(this.data(), 'deferredGetOrSet', 'passphrase', aPassphrase);
deferredResult.releaseLock(this.deferredLockForSection('passphrase'));
// deferredResult.getValue('currentPassphrase');
deferredResult.addMethod(this, 'prepareRemoteDataWithKey', aPassphrase);
deferredResult.addMethod(this.connection(), 'updateCredentials', aUsername, aPassphrase);
deferredResult.callback();
return deferredResult;
},
//-------------------------------------------------------------------------
'initialSetupWithNoData': function () {
this._serverData = {
'version': '0.1',
'statistics': "",
'header': {
'data': null,
'version': Clipperz.PM.Crypto.encryptingFunctions.currentVersion,
'recordsIndex': new Clipperz.PM.DataModel.User.Header.RecordIndex({
'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase'),
'recordsData': {'data':null, 'index':{}},
'recordsStats': null,
'directLoginsData': {'data':null, 'index':{}},
'encryptedDataVersion': Clipperz.PM.Crypto.encryptingFunctions.currentVersion,
'retrieveRecordDetailFunction': MochiKit.Base.method(this, 'getRecordDetail')
}),
'preferences': new Clipperz.PM.DataModel.User.Header.Preferences({
'name': 'preferences',
'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase')
}),
'oneTimePasswords': new Clipperz.PM.DataModel.User.Header.OneTimePasswords({
'name': 'preferences',
'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase')
})
}
};
// this._serverLockValue = Clipperz.PM.Crypto.randomKey();
},
//.........................................................................
'registerAsNewAccount': function () {
diff --git a/frontend/gamma/js/Clipperz/PM/Date.js b/frontend/gamma/js/Clipperz/PM/Date.js
index a131357..96a2700 100644
--- a/frontend/gamma/js/Clipperz/PM/Date.js
+++ b/frontend/gamma/js/Clipperz/PM/Date.js
@@ -1,201 +1,198 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
if (typeof(Clipperz.PM.Date) == 'undefined') { Clipperz.PM.Date = {}; }
Clipperz.PM.Date.VERSION = "0.1";
Clipperz.PM.Date.NAME = "Clipperz.PM.Date";
MochiKit.Base.update(Clipperz.PM.Date, {
'__repr__': function () {
return "[" + this.NAME + " " + this.VERSION + "]";
},
//-------------------------------------------------------------------------
'toString': function () {
return this.__repr__();
},
//-------------------------------------------------------------------------
'locale': function() {
return {
'amDesignation': Clipperz.PM.Strings.getValue('calendarStrings.amDesignation'),
'pmDesignation': Clipperz.PM.Strings.getValue('calendarStrings.pmDesignation'),
'days': Clipperz.PM.Strings.getValue('calendarStrings.days'),
'shortDays': Clipperz.PM.Strings.getValue('calendarStrings.shortDays'),
'shortMonths': Clipperz.PM.Strings.getValue('calendarStrings.shortMonths'),
'months': Clipperz.PM.Strings.getValue('calendarStrings.months')
}
},
//=========================================================================
/*
'formatDateWithPHPLikeTemplate': function(aDate, aTemplate) {
return Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale());
},
'parseDateWithPHPLikeTemplate': function(aDate, aTemplate) {
return Clipperz.Date.parseDateWithPHPTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale());
},
//=========================================================================
'formatDateWithJavaLikeTemplate': function(aDate, aTemplate) {
return Clipperz.Date.formatDateWithJavaLikeTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale());
},
'parseDateWithJavaLikeTemplate': function(aDate, aTemplate) {
return Clipperz.Date.parseDateWithJavaLikeTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale());
},
*/
//=========================================================================
'formatWithTemplate': function (aTemplate, aDate) {
return Clipperz.PM.Date.formatDateWithTemplate(aDate, aTemplate);
},
'formatDateWithTemplate': function(aDate, aTemplate) {
var result;
if (aDate == null) {
result = ""
} else {
result = Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale());
};
return result;
},
'parseDateWithTemplate': function(aValue, aTemplate) {
return Clipperz.Date.parseDateWithPHPTemplateAndLocale(aValue, aTemplate, Clipperz.PM.Date.locale());
},
//=========================================================================
'formatDateWithUTCFormat': function(aDate) {
return Clipperz.Date.formatDateWithUTCFormatAndLocale(aDate, Clipperz.PM.Date.locale());
},
'parseDateWithUTCFormat': function(aValue) {
var result;
if (aValue == null) {
result = null;
} else {
result = Clipperz.Date.parseDateWithUTCFormatAndLocale(aValue, Clipperz.PM.Date.locale());
}
return result;
},
//=========================================================================
'getElapsedTimeDescription': function(aDate) {
var result;
result = ""
if (aDate != null) {
var now;
var elapsedTime;
var millisencondsInAMinute;
var millisencondsInAnHour;
var millisencondsInADay;
var millisencondsInAWeek;
var millisencondsInAMonth;
now = new Date();
elapsedTime = now.getTime() - aDate.getTime();
millisencondsInAMinute = 60 * 1000;
millisencondsInAnHour = millisencondsInAMinute * 60;
millisencondsInADay = millisencondsInAnHour * 24;
millisencondsInAWeek = millisencondsInADay * 7;
millisencondsInAMonth = millisencondsInAWeek * 5;
if ((elapsedTime / millisencondsInAMonth) > 1) {
result = Clipperz.PM.Strings.getValue('elapsedTimeDescriptions.MORE_THAN_A_MONTH_AGO');
} else if ((elapsedTime / millisencondsInAWeek) > 1) {
var elapsedWeeks;
elapsedWeeks = Math.floor((elapsedTime / millisencondsInAWeek));
if (elapsedWeeks == 1) {
result = Clipperz.PM.Strings.getValue('elapsedTimeDescriptions.MORE_THAN_A_WEEK_AGO');
} else {
result = Clipperz.PM.Strings.getValue('elapsedTimeDescriptions.MORE_THAN_*_WEEKS_AGO').replace(/__elapsed__/, elapsedWeeks);
}
} else if ((elapsedTime / millisencondsInADay) > 1) {
var elapsedDays;
elapsedDays = Math.floor((elapsedTime / millisencondsInADay));
if (elapsedDays == 1) {
result = Clipperz.PM.Strings.getValue('elapsedTimeDescriptions.YESTERDAY');
} else {
result = Clipperz.PM.Strings.getValue('elapsedTimeDescriptions.*_DAYS_AGO').replace(/__elapsed__/, elapsedDays);
}
} else if ((elapsedTime / millisencondsInAnHour) > 1) {
var elapsedHours;
elapsedHours = Math.floor((elapsedTime / millisencondsInAnHour));
if (elapsedHours == 1) {
result = Clipperz.PM.Strings.getValue('elapsedTimeDescriptions.ABOUT_AN_HOUR_AGO');
} else {
result = Clipperz.PM.Strings.getValue('elapsedTimeDescriptions.*_HOURS_AGO').replace(/__elapsed__/, elapsedHours);
}
} else {
var elapsed10Minutes;
elapsed10Minutes = (Math.floor((elapsedTime / millisencondsInAMinute) / 10)) * 10;
if (elapsed10Minutes == 0) {
result = Clipperz.PM.Strings.getValue('elapsedTimeDescriptions.JUST_A_FEW_MINUTES_AGO');
} else {
result = Clipperz.PM.Strings.getValue('elapsedTimeDescriptions.ABOUT_*_MINUTES_AGO').replace(/__elapsed__/, elapsed10Minutes+"");
}
}
}
return result;
},
//-------------------------------------------------------------------------
'parse': function (aValue) {
return Clipperz.PM.Date.parseDateWithUTCFormat(aValue);
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/Proxy.js b/frontend/gamma/js/Clipperz/PM/Proxy.js
index d90bcb7..190bffd 100644
--- a/frontend/gamma/js/Clipperz/PM/Proxy.js
+++ b/frontend/gamma/js/Clipperz/PM/Proxy.js
@@ -1,172 +1,169 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
//=============================================================================
Clipperz.PM.Proxy = function(args) {
args = args || {};
this._shouldPayTolls = args.shouldPayTolls || false;
this._tolls = {
'CONNECT': [],
'REGISTER': [],
'MESSAGE': []
};
if (args.isDefault === true) {
Clipperz.PM.Proxy.defaultProxy = this;
}
return this;
}
Clipperz.PM.Proxy.prototype = MochiKit.Base.update(null, {
'toString': function() {
return "Clipperz.PM.Proxy";
},
//=========================================================================
'shouldPayTolls': function() {
return this._shouldPayTolls;
},
//-------------------------------------------------------------------------
'tolls': function() {
return this._tolls;
},
//-------------------------------------------------------------------------
'payToll': function(aRequestType, someParameters) {
var deferredResult;
//console.log(">>> Proxy.payToll", aRequestType, someParameters);
if (this.shouldPayTolls()) {
deferredResult = new Clipperz.Async.Deferred("Proxy.payToll", {trace:false});
if (this.tolls()[aRequestType].length == 0) {
deferredResult.addMethod(this, 'sendMessage', 'knock', {requestType:aRequestType});
deferredResult.addMethod(this, 'setTollCallback');
}
deferredResult.addMethod(this.tolls()[aRequestType], 'pop');
deferredResult.addCallback(MochiKit.Base.methodcaller('deferredPay'));
deferredResult.addCallback(function(aToll) {
var result;
result = {
parameters: someParameters,
toll: aToll
}
return result;
});
deferredResult.callback();
} else {
deferredResult = MochiKit.Async.succeed({parameters:someParameters});
}
//console.log("<<< Proxy.payToll");
return deferredResult;
},
//-------------------------------------------------------------------------
'addToll': function(aToll) {
//console.log(">>> Proxy.addToll", aToll);
this.tolls()[aToll.requestType()].push(aToll);
//console.log("<<< Proxy.addToll");
},
//=========================================================================
'setTollCallback': function(someParameters) {
//console.log(">>> Proxy.setTollCallback", someParameters);
if (typeof(someParameters['toll']) != 'undefined') {
//console.log("added a new toll", someParameters['toll']);
this.addToll(new Clipperz.PM.Toll(someParameters['toll']));
}
//console.log("<<< Proxy.setTallCallback", someParameters['result']);
return someParameters['result'];
},
//=========================================================================
'registration': function (someParameters) {
return this.processMessage('registration', someParameters, 'REGISTER');
},
'handshake': function (someParameters) {
return this.processMessage('handshake', someParameters, 'CONNECT');
},
'message': function (someParameters) {
return this.processMessage('message', someParameters, 'MESSAGE');
},
'logout': function (someParameters) {
return this.processMessage('logout', someParameters, 'MESSAGE');
},
//=========================================================================
'processMessage': function (aFunctionName, someParameters, aRequestType) {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("Proxy.processMessage", {trace:false});
deferredResult.addMethod(this, 'payToll', aRequestType);
deferredResult.addMethod(this, 'sendMessage', aFunctionName);
deferredResult.addMethod(this, 'setTollCallback');
deferredResult.callback(someParameters);
return deferredResult;
},
//=========================================================================
'sendMessage': function () {
throw Clipperz.Base.exception.AbstractMethod;
},
//=========================================================================
'isReadOnly': function () {
return false;
},
//=========================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.JSON.js b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.JSON.js
index 65b46de..5b39b4a 100755
--- a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.JSON.js
+++ b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.JSON.js
@@ -1,94 +1,91 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
//=============================================================================
Clipperz.PM.Proxy.JSON = function(args) {
Clipperz.PM.Proxy.JSON.superclass.constructor.call(this, args);
this._url = args.url || Clipperz.Base.exception.raise('MandatoryParameter');
return this;
}
Clipperz.Base.extend(Clipperz.PM.Proxy.JSON, Clipperz.PM.Proxy, {
'toString': function() {
return "Clipperz.PM.Proxy.JSON";
},
//=========================================================================
'url': function () {
return this._url;
},
//=========================================================================
'sendMessage': function(aFunctionName, someParameters) {
var deferredResult;
var parameters;
parameters = {
method: aFunctionName,
// version: someParameters['version'],
// message: someParameters['message'],
parameters: Clipperz.Base.serializeJSON(someParameters)
};
deferredResult = new Clipperz.Async.Deferred("Proxy.JSON.sendMessage", {trace:false});
deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'remoteRequestSent');
deferredResult.addCallback(MochiKit.Async.doXHR, this.url(), {
method:'POST',
sendContent:MochiKit.Base.queryString(parameters),
headers:{"Content-Type":"application/x-www-form-urlencoded"}
});
deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'remoteRequestReceived');
// deferredResult.addCallback(MochiKit.Async.evalJSONRequest);
deferredResult.addCallback(MochiKit.Base.itemgetter('responseText'));
deferredResult.addCallback(Clipperz.Base.evalJSON);
deferredResult.addCallback(function (someValues) {
if (someValues['result'] == 'EXCEPTION') {
throw someValues['message'];
}
return someValues;
})
// return MochiKit.Base.evalJSON(req.responseText);
deferredResult.callback();
return deferredResult;
},
//=========================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js
index de8e7f6..01ba122 100644
--- a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js
+++ b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
try { if (typeof(Clipperz.PM.Proxy.Offline) == 'undefined') { throw ""; }} catch (e) {
throw "Clipperz.PM.Proxy.Offline.DataStore depends on Clipperz.PM.Proxy.Offline!";
}
//=============================================================================
Clipperz.PM.Proxy.Offline.DataStore = function(args) {
args = args || {};
this._data = args.data || (typeof(_clipperz_dump_data_) != 'undefined' ? _clipperz_dump_data_ : null);
this._isReadOnly = (typeof(args.readOnly) == 'undefined' ? true : args.readOnly);
this._shouldPayTolls = args.shouldPayTolls || false;
this._tolls = {};
this._currentStaticConnection = null;
return this;
}
Clipperz.Base.extend(Clipperz.PM.Proxy.Offline.DataStore, Object, {
//-------------------------------------------------------------------------
'isReadOnly': function () {
return this._isReadOnly;
},
//-------------------------------------------------------------------------
'shouldPayTolls': function() {
return this._shouldPayTolls;
},
//-------------------------------------------------------------------------
'data': function () {
return this._data;
},
//-------------------------------------------------------------------------
'tolls': function () {
return this._tolls;
},
//=========================================================================
'resetData': function() {
this._data = {
'users': {
'catchAllUser': {
__masterkey_test_value__: 'masterkey',
s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
}
}
};
},
//-------------------------------------------------------------------------
'setupWithEncryptedData': function(someData) {
this._data = Clipperz.Base.deepClone(someData);
},
//-------------------------------------------------------------------------
'setupWithData': function(someData) {
var deferredResult;
var resultData;
var i, c;
//Clipperz.log(">>> Proxy.Test.setupWithData");
resultData = this._data;
deferredResult = new Clipperz.Async.Deferred("Proxy.Test.seupWithData", {trace:false});
c = someData['users'].length;
for (i=0; i<c; i++) {
var newConnection;
var recordConfiguration;
deferredResult.addMethod(this, 'userSerializedEncryptedData', someData['users'][i]);
deferredResult.addCallback(MochiKit.Base.bind(function(aUserSerializationContext) {
//console.log("SERIALIZED USER", aUserSerializationContext);
resultData['users'][aUserSerializationContext['credentials']['C']] = {
's': aUserSerializationContext['credentials']['s'],
'v': aUserSerializationContext['credentials']['v'],
'version': aUserSerializationContext['data']['connectionVersion'],
'userDetails': aUserSerializationContext['encryptedData']['user']['header'],
'userDetailsVersion': aUserSerializationContext['encryptedData']['user']['version'],
'statistics': aUserSerializationContext['encryptedData']['user']['statistics'],
'lock': aUserSerializationContext['encryptedData']['user']['lock'],
'records': this.rearrangeRecordsData(aUserSerializationContext['encryptedData']['records'])
}
}, this));
}
deferredResult.addCallback(MochiKit.Base.bind(function() {
//console.log("this._data", resultData);
this._data = resultData;
}, this));
deferredResult.callback();
//Clipperz.log("<<< Proxy.Test.setupWithData");
return deferredResult;
},
//=========================================================================
'getTollForRequestType': function (aRequestType) {
var result;
var targetValue;
var cost;
targetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2);
switch (aRequestType) {
case 'REGISTER':
cost = 5;
break;
case 'CONNECT':
cost = 5;
break;
case 'MESSAGE':
cost = 2;
break;
}
result = {
requestType: aRequestType,
targetValue: targetValue,
cost: cost
}
if (this.shouldPayTolls()) {
this.tolls()[targetValue] = result;
}
return result;
},
//-------------------------------------------------------------------------
'checkToll': function (aFunctionName, someParameters) {
if (this.shouldPayTolls()) {
var localToll;
var tollParameters;
tollParameters = someParameters['toll'];
localToll = this.tolls()[tollParameters['targetValue']];
if (localToll != null) {
if (! Clipperz.PM.Toll.validate(tollParameters['targetValue'], tollParameters['toll'], localToll['cost'])) {
throw "Toll value too low.";
};
} else {
throw "Missing toll";
}
}
},
//=========================================================================
'currentStaticConnection': function () {
if (this._currentStaticConnection == null) {
this._currentStaticConnection = {};
}
return this._currentStaticConnection;
},
//-------------------------------------------------------------------------
'getConnectionForRequest': function (aFunctionName, someParameters) {
var result;
if (this.shouldPayTolls()) {
if ((typeof(someParameters['toll']) != 'undefined') && (typeof(someParameters['toll']['targetValue']) != 'undefined')) {
result = this.tolls()[someParameters['toll']['targetValue']]['connection'];
if (typeof(result) == 'undefined') {
result = {};
}
} else {
result = {};
}
} else {
result = this.currentStaticConnection();
diff --git a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.js b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.js
index a15b223..a86ac4f 100644
--- a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.js
+++ b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.js
@@ -1,67 +1,64 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
//=============================================================================
Clipperz.PM.Proxy.Offline = function(args) {
args = args || {};
Clipperz.PM.Proxy.Offline.superclass.constructor.call(this, args);
this._dataStore = args.dataStore || new Clipperz.PM.Proxy.Offline.DataStore(args);
return this;
}
Clipperz.Base.extend(Clipperz.PM.Proxy.Offline, Clipperz.PM.Proxy, {
'toString': function () {
return "Clipperz.PM.Proxy.Offline";
},
//-------------------------------------------------------------------------
'dataStore': function () {
return this._dataStore;
},
//-------------------------------------------------------------------------
'sendMessage': function(aFunctionName, someParameters) {
return this.dataStore().processMessage(aFunctionName, someParameters);
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Test.js b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Test.js
index be1c337..d554c6a 100644
--- a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Test.js
+++ b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Test.js
@@ -1,167 +1,164 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
if (typeof(Clipperz.PM.Proxy) == 'undefined') { Clipperz.PM.Proxy = {}; }
//=============================================================================
Clipperz.PM.Proxy.Test = function(args) {
Clipperz.PM.Proxy.Test.superclass.constructor.call(this, args);
args = args || {};
this._expectedRequests = (args.shouldCheckExpectedRequests === true) ? [] : null;
this._isExpectingRequests = true;
this._unexpectedRequests = [];
this.dataStore().resetData();
return this;
}
Clipperz.Base.extend(Clipperz.PM.Proxy.Test, Clipperz.PM.Proxy.Offline, {
'toString': function() {
return "Clipperz.PM.Proxy.Test";
},
//=========================================================================
'expectedRequests': function () {
return this._expectedRequests;
},
//-------------------------------------------------------------------------
'shouldCheckExpectedRequests': function () {
return (this._expectedRequests != null);
},
'setShouldCheckExpectedRequests': function(aValue) {
if (aValue) {
this._expectedRequests = aValue;
} else {
this._expectedRequests = null;
}
},
//-------------------------------------------------------------------------
'shouldNotReceiveAnyFurtherRequest': function () {
this._isExpectingRequests = false;
},
'mayReceiveMoreRequests': function () {
this._isExpectingRequests = true;
this.resetUnexpectedRequests();
},
'isExpectingRequests': function () {
return this._isExpectingRequests;
},
//-------------------------------------------------------------------------
'unexpectedRequests': function () {
return this._unexpectedRequests;
},
'resetUnexpectedRequests': function () {
this._unexpectedRequests = [];
},
//-------------------------------------------------------------------------
'testExpectedRequestParameters': function (aPath, anActualRequest, anExpectedRequest) {
var aKey;
//console.log(">>> Proxy.testExpectedRequestParameters [" + aPath + "]", anActualRequest, anExpectedRequest);
for (aKey in anExpectedRequest) {
if (typeof(anActualRequest[aKey]) == 'undefined') {
throw "the expected paramter [" + aKey + "] is missing from the actual request";
}
if (typeof(anExpectedRequest[aKey]) == 'object') {
this.testExpectedRequestParameters(aPath + "." + aKey, anActualRequest[aKey], anExpectedRequest[aKey])
} else {
if (! anExpectedRequest[aKey](anActualRequest[aKey])) {
throw "wrong value for paramter [" + aKey + "]; got '" + anActualRequest[aKey] + "'";
}
}
}
//console.log("<<< Proxy.testExpectedRequestParameters");
},
//-------------------------------------------------------------------------
'checkRequest': function(aFunctionName, someParameters) {
if (this.shouldCheckExpectedRequests()) {
var expectedRequest;
//console.log(">>> Proxy.Test.checkRequest - " + aFunctionName, someParameters);
expectedRequest = this.expectedRequests().pop();
//console.log("--- Proxy.Test.checkRequest - expectedRequest", expectedRequest);
if (expectedRequest == null) {
throw "Proxy.Test.sentMessage: no expected result specified. Got request '" + aFunctionName + "': " + someParameters;
}
try {
if (aFunctionName != expectedRequest.functionName) {
throw "wrong function name. Got '" + aFunctionName + "', expected '" + expectedRequest.request.functionName + "'";
}
this.testExpectedRequestParameters("parameters", someParameters, expectedRequest.parameters);
} catch(exception) {
//console.log("EXCEPTION: Proxy.Test.sentMessage[" + expectedRequest.name + "]", exception)
throw "Proxy.Test.sentMessage[" + expectedRequest.name + "]: " + exception;
}
}
//console.log("<<< Proxy.Test.checkRequest");
},
//=========================================================================
'sendMessage': function(aFunctionName, someParameters) {
var result;
if (this.isExpectingRequests() == false) {
// throw Clipperz.PM.Connection.exception.UnexpectedRequest;
Clipperz.log("UNEXPECTED REQUEST " + aFunctionName /* + ": " + Clipperz.Base.serializeJSON(someParameters) */);
this.unexpectedRequests().push({'functionName':aFunctionName, 'someParameters': someParameters});
};
this.checkRequest(aFunctionName, someParameters);
result = Clipperz.PM.Proxy.Test.superclass.sendMessage.call(this, aFunctionName, someParameters);
return result;
},
//=========================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/Strings.js b/frontend/gamma/js/Clipperz/PM/Strings.js
index 43ef21f..a051365 100644
--- a/frontend/gamma/js/Clipperz/PM/Strings.js
+++ b/frontend/gamma/js/Clipperz/PM/Strings.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
if (typeof(Clipperz.PM.Strings) == 'undefined') { Clipperz.PM.Strings = {}; }
if (typeof(Clipperz.PM.Strings.Languages) == 'undefined') { Clipperz.PM.Strings.Languages = {}; }
//-----------------------------------------------------------------------------
/*
Clipperz.PM.Strings.standardStrings = {
'loginPanelSwitchLanguageSelectOptions': [
/ *
{tag:'option', html:"Arabic (Oman) (العربية)", value:'ar-OM', disabled:true},
{tag:'option', html:"Arabic (Syria) (العربية)", value:'ar-SY', disabled:true},
{tag:'option', html:"Bahasa Indonesia", value:'id-ID', disabled:true},
{tag:'option', html:"Bulgarian (Български)", value:'bg-BG', disabled:true},
{tag:'option', html:"Català", value:'ca-ES', disabled:true},
{tag:'option', html:"Chinese (Simplified) (简体中文)", value:'zh-CN', disabled:true},
{tag:'option', html:"Chinese (Traditional) (正體中文)", value:'zh-TW', disabled:true},
{tag:'option', html:"Czech (Česky)", value:'cs-CZ', disabled:true},
{tag:'option', html:"Dansk", value:'da-DK', disabled:true},
{tag:'option', html:"Deutsch", value:'de-DE'/ *, disabled:true* /},
{tag:'option', html:"English (American)", value:'en-US'/ *, disabled:true* /},
{tag:'option', html:"English (British)", value:'en-GB'/ *, disabled:true* /},
{tag:'option', html:"English (Canadian)", value:'en-CA'/ *, disabled:true* /},
{tag:'option', html:"Español", value:'es-ES', disabled:true},
{tag:'option', html:"Eesti", value:'et-EE', disabled:true},
{tag:'option', html:"Français", value:'fr-FR', disabled:true},
{tag:'option', html:"Galego", value:'gl-ES', disabled:true},
{tag:'option', html:"Greek (Ελληνικά)", value:'el-GR', disabled:true},
{tag:'option', html:"Íslenska", value:'is-IS', disabled:true},
{tag:'option', html:"Italiano", value:'it-IT'/ *, disabled:true* /},
{tag:'option', html:"Japanese (日本語)", value:'ja-JP', disabled:true},
{tag:'option', html:"Korean (한국어)", value:'ko-KR', disabled:true},
{tag:'option', html:"Latviešu", value:'lv-LV', disabled:true},
{tag:'option', html:"Lietuvių", value:'lt-LT', disabled:true},
{tag:'option', html:"Macedonian (Македонски)", value:'mk-MK', disabled:true},
{tag:'option', html:"Magyar", value:'hu-HU', disabled:true},
{tag:'option', html:"Nederlands", value:'nl-NL', disabled:true},
{tag:'option', html:"Norsk bokmål", value:'nb-NO', disabled:true},
{tag:'option', html:"Norsk nynorsk", value:'nn-NO', disabled:true},
{tag:'option', html:"Persian (Western) (فارسى)", value:'fa-IR', disabled:true},
{tag:'option', html:"Polski", value:'pl-PL', disabled:true},
{tag:'option', html:"Português", value:'pt-PT'/ *, disabled:true* /},
{tag:'option', html:"Português Brasileiro", value:'pt-BR'/ *, disabled:true* /},
{tag:'option', html:"Românä", value:'ro-RO', disabled:true},
{tag:'option', html:"Russian (Русский)", value:'ru-RU', disabled:true},
{tag:'option', html:"Slovak (Slovenčina)", value:'sk-SK', disabled:true},
{tag:'option', html:"Slovenian (Slovenščina)", value:'sl-SI', disabled:true},
{tag:'option', html:"Suomi", value:'fi-FI', disabled:true},
{tag:'option', html:"Svenska", value:'sv-SE', disabled:true},
{tag:'option', html:"Thai (ไทย)", value:'th-TH', disabled:true},
{tag:'option', html:"Türkçe", value:'tr-TR', disabled:true},
{tag:'option', html:"Ukrainian (Українська)", value:'uk-UA', disabled:true}
* /
{tag:'option', html:"Arabic (العربية)", value:"ar", disabled:true, cls:'disabledOption'},
// {tag:'option', html:"Chinese (中文)", value:"zh", disabled:true},
{tag:'option', html:"Chinese (Simplified) (简体中文)", value:'zh-CN'},
{tag:'option', html:"Dutch (Nederlands)", value:"nl-NL", disabled:true, cls:'disabledOption'},
{tag:'option', html:"English", value:"en-US"},
{tag:'option', html:"French (Français)", value:"fr-FR"},
{tag:'option', html:"German (Deutsch)", value:"de-DE", disabled:true, cls:'disabledOption'},
{tag:'option', html:"Greek (Ελληνικά)", value:"el-GR", disabled:true, cls:'disabledOption'},
{tag:'option', html:"Hebrew (עברית)", value:"he-IL", disabled:true, cls:'disabledOption'},
{tag:'option', html:"Italian (Italiano)", value:"it-IT"},
{tag:'option', html:"Japanese (日本語)", value:"ja-JP"},
{tag:'option', html:"Korean (한국어)", value:"ko-KR", disabled:true, cls:'disabledOption'},
{tag:'option', html:"Norwegian (Norsk)", value:"no", disabled:true, cls:'disabledOption'},
{tag:'option', html:"Persian (فارسی)", value:"fa-IR", disabled:true, cls:'disabledOption'},
{tag:'option', html:"Polish (Polski)", value:"pl-PL", disabled:true, cls:'disabledOption'},
{tag:'option', html:"Portuguese (Português)", value:"pt-BR"},
{tag:'option', html:"Russian (Русский)", value:"ru-RU", disabled:true, cls:'disabledOption'},
{tag:'option', html:"Spanish (Español)", value:"es-ES"},
{tag:'option', html:"Swedish (Svenska)", value:"sv-SE", disabled:true, cls:'disabledOption'},
{tag:'option', html:"Turkish (Türkçe)", value:"tr-TR", disabled:true, cls:'disabledOption'},
{tag:'option', html:"Vietnamese (Tiếng Việt)", value:"vi-VN", disabled:true, cls:'disabledOption'}
]
}
*/
Clipperz.PM.Strings.GeneralSettings = {
'defaults': {
// 'loginFormAarghThatsBadUrl': "http://www.clipperz.com/support/faq/account_faq",
// 'loginFormVerifyTheCodeUrl': "http://www.clipperz.com/learn_more/reviewing_the_code",
// 'donateHeaderLinkUrl': "http://www.clipperz.com/donations",
// 'creditsHeaderLinkUrl': "http://www.clipperz.com/credits",
// 'feedbackHeaderLinkUrl': "http://www.clipperz.com/contact",
// 'helpHeaderLinkUrl': "http://www.clipperz.com/support/user_guide",
// 'forumHeaderLinkUrl': "http://www.clipperz.com/forum",
// 'httpAuthBookmarkletConfiguration': {tag:'textarea', id:'httpAuthDefaultConfiguration', html:"" +
// "{ \"page\":{\"title\":\"HTTP authentication\"}," + "\n" +
// " \"form\":{\"attributes\": {" + "\n" +
// " \"action\":\"\"," + "\n" +
// " \"type\":\"http_auth\"" + "\n" +
// " }, \"inputs\": [" + "\n" +
// " {\"type\":\"text\",\"name\":\"url\",\"value\":\"\"}," + "\n" +
// " {\"type\":\"text\",\"name\":\"username\",\"value\":\"\"}," + "\n" +
// " {\"type\":\"password\",\"name\":\"password\",\"value\":\"\"}" + "\n" +
// " ]}, \"version\":\"0.2.3\"}"
// },
'directLoginJumpPageUrl': "",
'defaultFaviconUrl': "data:application/octet-stream;charset=utf-8;base64,AAABAAEAFxcAAAEAGAD8BgAAFgAAACgAAAAXAAAALgAAAAEAGAAAAAAAAAAAABIXAAASFwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////9zAC////////////////////////////////////////////////////////////////////////////////////////////9pAG////////////////////////////////////////////////////////////////////////////////////////////9rAC////////////////////////////////////////////////////////////////////////////////////////////9yAHP////////////////////////IyMizs7O6urrq6ur////////////Ozs6zs7Ozs7Pq6ur///////////////////////8AAAD////////////////////V1dWXl5eXl5eXl5elpaX4+Pj////Ozs6Xl5eXl5eXl5eenp7///////////////////////8AAAD////////////////////Ozs6Xl5eXl5eXl5eXl5fBwcHq6uqenp6Xl5eXl5eXl5eXl5f///////////////////////8AAAD////////////////////j4+OXl5eXl5eXl5eXl5eXl5elpaWXl5eXl5eXl5eXl5ezs7P///////////////////////8AAAD////////////////////////IyMiXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eenp7x8fH////////////////////////////////////////////////////4+PilpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5fOzs7////////////////////////////////////////////////////////q6uq6urqXl5eXl5eXl5eXl5eXl5eXl5eenp7V1dX4+Pj///////////////////////8AAAD////////////4+PjOzs6lpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e6urrj4+P///////////////8AAAD////////////BwcGXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fx8fH///////////8AAAD///////////+zs7OXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fj4+P///////////8AAAD////////////IyMiXl5eXl5eXl5eXl5e6urqXl5eXl5eXl5eXl5esrKylpaWXl5eXl5eXl5eenp7x8fH///////////8AAAD////////////////Ozs7Ozs7V1dX4+Pj///+Xl5eXl5eXl5eXl5fOzs7////q6urOzs7Ozs7q6ur///////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD////////////////////////////////////IyMiXl5eXl5eenp7x8fH///////////////////////////////////8AAAD////////////////////////////////////////j4+Pj4+Px8fH///////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo=",
'defaultFaviconUrl_IE': "https://www.clipperz.com/images/icons/misc/favicon.ico",
// 'icons_baseUrl': "https://www.clipperz.com/images/icons",
// 'passwordGeneratorLowercaseCharset': "abcdefghijklmnopqrstuvwxyz",
// 'passwordGeneratorUppercaseCharset': "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
// 'passwordGeneratorNumberCharset': "0123456789",
// 'passwordGeneratorSymbolCharset': "!@#$%^&*+?[]{}/|\\<>,.;:~=-_",
// 'passwordGenerator': {
// 'lowercaseCharset': "abcdefghijklmnopqrstuvwxyz",
// 'uppercaseCharset': "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
// 'numberCharset': "0123456789",
// 'symbolCharset': "!@#$%^&*+?[]{}/|\\<>,.;:~=-_",
// },
'_': ""
}
}
Clipperz.PM.Strings.defaultLanguages = {
'default': "en-us",
// 'de': "de-de",
// 'el': "el-gr",
// 'he': "he-il",
// 'ru': "ru-ru",
'fr': "fr-fr",
'es': "es-es",
'zh': "zh-cn",
'ja': "ja-jp",
'pt': "pt-br",
'it': "it-it",
'en': "en-us"
}
Clipperz.PM.Strings.inputTypeToRecordFieldType = {
'text': 'TXT',
'password': 'PWD',
'checkbox': 'CHECK',
'radio': 'RADIO',
'select': 'SELECT'
};
//-----------------------------------------------------------------------------
Clipperz.PM.Strings.translateBookmarklet = function (aBookmarkletString) {
var result;
result = aBookmarkletString;
result = result.replace(/@BOOKMARKLET_NO_EXCEPTION_MESSAGE@/, Clipperz.PM.Strings.getValue('bookmarkletCopy.noExceptionMessage'));
result = result.replace(/@BOOKMARKLET_EXCEPTION_MESSAGE@/, Clipperz.PM.Strings.getValue('bookmarkletCopy.exceptionMessage'));
result = result.replace(/@BOOKMARKLET_COPY@/, Clipperz.PM.Strings.getValue('bookmarkletCopy.copy'));
result = result.replace(/@BOOKMARKLET_SUCCESSFUL_MESSAGE@/, Clipperz.PM.Strings.getValue('bookmarkletCopy.successfulMessage'));
result = result.replace(/@BOOKMARKLET_FAIL_MESSAGE@/, Clipperz.PM.Strings.getValue('bookmarkletCopy.failMessage'));
return result;
}
//-----------------------------------------------------------------------------
Clipperz.PM.Strings.Languages.setSelectedLanguage = function(aLanguage) {
var language;
var selectedLanguage;
language = (aLanguage || Clipperz.PM.Strings.preferredLanguage || 'default').toLowerCase();
if (typeof(Clipperz.PM.Strings.defaultLanguages[language]) != 'undefined') {
language = Clipperz.PM.Strings.defaultLanguages[language];
}
if (typeof(Clipperz.PM.Strings.Languages[language]) != 'undefined') {
selectedLanguage = language;
} else if (typeof(Clipperz.PM.Strings.defaultLanguages[language.substr(0,2)]) != 'undefined') {
selectedLanguage = Clipperz.PM.Strings.defaultLanguages[language.substr(0,2)];
} else {
selectedLanguage = Clipperz.PM.Strings.defaultLanguages['default'];
}
if (selectedLanguage != Clipperz.PM.Strings.selectedLanguage) {
var translations;
Clipperz.PM.Strings.selectedLanguage = selectedLanguage;
diff --git a/frontend/gamma/js/Clipperz/PM/Strings/MessagePanelConfigurations.js b/frontend/gamma/js/Clipperz/PM/Strings/MessagePanelConfigurations.js
index 446e96c..7f6c52f 100644
--- a/frontend/gamma/js/Clipperz/PM/Strings/MessagePanelConfigurations.js
+++ b/frontend/gamma/js/Clipperz/PM/Strings/MessagePanelConfigurations.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
if (typeof(Clipperz.PM.Strings) == 'undefined') { Clipperz.PM.Strings = {}; }
Clipperz.PM.Strings.messagePanelConfigurations = {
//-------------------------------------------------------------------------
//
// Registration - connection
//
'registration_verify': function() {
return {
'title': null,
'text': Clipperz.PM.Strings['connectionRegistrationSendingRequestMessageText']
}
},
'registration_sendingCredentials': function() {
return {
'title': null,
'text': Clipperz.PM.Strings['connectionRegistrationSendingCredentialsMessageText']
}
},
//-------------------------------------------------------------------------
//
// One Time Password login message panel
//
'OTP_login_start': function() {
return {
'title': Clipperz.PM.Strings['OTPloginMessagePanelInitialTitle'],
'text': Clipperz.PM.Strings['OTPloginMessagePanelInitialText'],
'steps': '+3',
'buttons': {}
}
},
'OTP_login_loadingOTP': function() {
return {
'title': Clipperz.PM.Strings['OTPloginMessagePanelLoadingTitle'],
'text': Clipperz.PM.Strings['OTPloginMessagePanelLoadingText']
}
},
'OTP_login_extractingPassphrase': function() {
return {
'title': Clipperz.PM.Strings['OTPloginMessagePanelProcessingTitle'],
'text': Clipperz.PM.Strings['OTPloginMessagePanelProcessingText']
}
},
//-------------------------------------------------------------------------
//
// Login message panel
//
'login_start': function() {
return {
'title': Clipperz.PM.Strings['loginMessagePanelInitialTitle'],
'text': Clipperz.PM.Strings['loginMessagePanelInitialText'],
'steps': '+7',
'buttons': {
'ok': Clipperz.PM.Strings['loginMessagePanelInitialButtonLabel']
}
}
},
'login_connected': function() {
return {
'title': Clipperz.PM.Strings['loginMessagePanelConnectedTitle'],
'text': Clipperz.PM.Strings['loginMessagePanelConnectedText'],
'buttons': {}
}
},
'login_failed': function() {
return {
'title': Clipperz.PM.Strings['loginMessagePanelFailureTitle'],
'text': Clipperz.PM.Strings['loginMessagePanelFailureText'],
'button': Clipperz.PM.Strings['loginMessagePanelFailureButtonLabel']
}
},
//-------------------------------------------------------------------------
//
// Login message panel - connection
//
'connection_sendingCredentials': function() {
return {
'title': Clipperz.PM.Strings['connectionLoginSendingCredentialsMessageTitle'],
'text': Clipperz.PM.Strings['connectionLoginSendingCredentialsMessageText']
}
},
'connection_credentialVerification': function() {
return {
'title': Clipperz.PM.Strings['connectionLoginCredentialsVerificationMessageTitle'],
'text': Clipperz.PM.Strings['connectionLoginCredentialsVerificationMessageText']
}
},
'connection_loggedIn': function() {
return {
'title': Clipperz.PM.Strings['connectionLoginDoneMessageTitle'],
'text': Clipperz.PM.Strings['connectionLoginDoneMessageText']
}
},
//-------------------------------------------------------------------------
//
// Login message panel - user
//
'connection_upgrading': function() {
return {
'title': Clipperz.PM.Strings['userLoginPanelUpgradingUserCredentialsMessageTitle'],
'text': Clipperz.PM.Strings['userLoginPanelUpgradingUserCredentialsMessageText'],
'steps': '+1'
}
},
'connection_done': function() {
return {
'title': Clipperz.PM.Strings['userLoginPanelConnectedMessageTitle'],
'text': Clipperz.PM.Strings['userLoginPanelConnectedMessageText']
}
},
'connection_tryOlderSchema': function() {
return {
'title': Clipperz.PM.Strings['userLoginPanelTryingAnOlderConnectionSchemaMessageTitle'],
'text': Clipperz.PM.Strings['userLoginPanelTryingAnOlderConnectionSchemaMessageText'],
'steps': '+4'
}
},
'connection_loadingUserData': function() {
return {
'title': Clipperz.PM.Strings['userLoginPanelLoadingUserDataMessageTitle'],
'text': Clipperz.PM.Strings['userLoginPanelLoadingUserDataMessageText']
}
},
'connection_decryptingUserData': function() {
return {
'title': Clipperz.PM.Strings['userLoginPanelDecryptingUserDataMessageTitle'],
'text': Clipperz.PM.Strings['userLoginPanelDecryptingUserDataMessageText'],
'steps': '+1'
}
},
'connection_decryptingUserStatistics': function() {
return {
'title': Clipperz.PM.Strings['userLoginPanelDecryptingUserStatisticsMessageTitle'],
'text': Clipperz.PM.Strings['userLoginPanelDecryptingUserStatisticsMessageText']
}
},
'collectingEntropy': function() {
return {
'text': Clipperz.PM.Strings['panelCollectingEntryopyMessageText'],
'steps': '+1'
}
},
//-------------------------------------------------------------------------
//
// Cards block - delete card panel
//
'deleteRecord_collectData': function() {
return {
'title': Clipperz.PM.Strings['deleteRecordPanelCollectRecordDataMessageTitle'],
'text': Clipperz.PM.Strings['deleteRecordPanelCollectRecordDataMessageText']
}
},
'deleteRecord_encryptData': function() {
return {
'title': Clipperz.PM.Strings['deleteRecordPanelEncryptUserDataMessageTitle'],
'text': Clipperz.PM.Strings['deleteRecordPanelEncryptUserDataMessageText']
}
},
'deleteRecord_sendingData': function() {
return {
'title': Clipperz.PM.Strings['deleteRecordPanelSendingDataToTheServerMessageTitle'],
'text': Clipperz.PM.Strings['deleteRecordPanelSendingDataToTheServerMessageText']
diff --git a/frontend/gamma/js/Clipperz/PM/Strings/Strings_defaults.js b/frontend/gamma/js/Clipperz/PM/Strings/Strings_defaults.js
index 1ad2696..101ed3f 100644
--- a/frontend/gamma/js/Clipperz/PM/Strings/Strings_defaults.js
+++ b/frontend/gamma/js/Clipperz/PM/Strings/Strings_defaults.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
if (typeof(Clipperz.PM.Strings) == 'undefined') { Clipperz.PM.Strings = {}; }
if (typeof(Clipperz.PM.Strings.Languages) == 'undefined') { Clipperz.PM.Strings.Languages = {}; }
//=============================================================================
//
// D E F A U L T S ( defaults )
//
//=============================================================================
Clipperz.PM.Strings.Languages['defaults'] = {
'elapsedTimeDescriptions': {
'MORE_THAN_A_MONTH_AGO': "more than a month ago",
'MORE_THAN_A_WEEK_AGO': "more than a week ago",
'MORE_THAN_*_WEEKS_AGO': "more than __elapsed__ weeks ago",
'YESTERDAY': "yesterday",
'*_DAYS_AGO': "__elapsed__ days ago",
'ABOUT_AN_HOUR_AGO': "about an hour ago",
'*_HOURS_AGO': "__elapsed__ hours ago",
'JUST_A_FEW_MINUTES_AGO': "just a few minutes ago",
'ABOUT_*_MINUTES_AGO': "about __elapsed__ minutes ago"
},
/*
'unknown_ip': "unknown",
'countries': {
'--': "unknown",
'AD': "Andorra",
'AE': "United Arab Emirates",
'AF': "Afghanistan",
'AG': "Antigua and Barbuda",
'AI': "Anguilla",
'AL': "Albania",
'AM': "Armenia",
'AN': "Netherlands Antilles",
'AO': "Angola",
'AP': "Non-Spec Asia Pas Location",
'AR': "Argentina",
'AS': "American Samoa",
'AT': "Austria",
'AU': "Australia",
'AW': "Aruba",
'AX': "Aland Islands",
'AZ': "Azerbaijan",
'BA': "Bosnia and Herzegowina",
'BB': "Barbados",
'BD': "Bangladesh",
'BE': "Belgium",
'BF': "Burkina Faso",
'BG': "Bulgaria",
'BH': "Bahrain",
'BI': "Burundi",
'BJ': "Benin",
'BM': "Bermuda",
'BN': "Brunei Darussalam",
'BO': "Bolivia",
'BR': "Brazil",
'BS': "Bahamas",
'BT': "Bhutan",
'BW': "Botswana",
'BY': "Belarus",
'BZ': "Belize",
'CA': "Canada",
'CD': "Congo the Democratic Republic of the",
'CF': "Central African Republic",
'CH': "Switzerland",
'CI': "Cote D'ivoire",
'CK': "Cook Islands",
'CL': "Chile",
'CM': "Cameroon",
'CN': "China",
'CO': "Colombia",
'CR': "Costa Rica",
'CS': "Serbia and Montenegro",
'CU': "Cuba",
'CY': "Cyprus",
'CZ': "Czech Republic",
'DE': "Germany",
'DJ': "Djibouti",
'DK': "Denmark",
'DO': "Dominican Republic",
'DZ': "Algeria",
'EC': "Ecuador",
'EE': "Estonia",
'EG': "Egypt",
'ER': "Eritrea",
'ES': "Spain",
'ET': "Ethiopia",
'EU': "European Union",
'FI': "Finland",
'FJ': "Fiji",
'FM': "Micronesia Federated States of",
'FO': "Faroe Islands",
'FR': "France",
'GA': "Gabon",
'GB': "United Kingdom",
'GD': "Grenada",
'GE': "Georgia",
'GF': "French Guiana",
'GG': "Guernsey",
'GH': "Ghana",
'GI': "Gibraltar",
'GL': "Greenland",
'GM': "Gambia",
'GP': "Guadeloupe",
'GR': "Greece",
'GT': "Guatemala",
'GU': "Guam",
'GW': "Guinea-Bissau",
'GY': "Guyana",
'HK': "Hong Kong",
'HN': "Honduras",
'HR': "Croatia (Local Name: Hrvatska)",
'HT': "Haiti",
'HU': "Hungary",
'ID': "Indonesia",
'IE': "Ireland",
'IL': "Israel",
'IM': "Isle of Man",
'IN': "India",
'IO': "British Indian Ocean Territory",
'IQ': "Iraq",
'IR': "Iran (Islamic Republic of)",
'IS': "Iceland",
'IT': "Italy",
'JE': "Jersey",
'JM': "Jamaica",
'JO': "Jordan",
'JP': "Japan",
'KE': "Kenya",
'KG': "Kyrgyzstan",
'KH': "Cambodia",
'KI': "Kiribati",
'KN': "Saint Kitts and Nevis",
'KR': "Korea Republic of",
'KW': "Kuwait",
'KY': "Cayman Islands",
'KZ': "Kazakhstan",
'LA': "Lao People's Democratic Republic",
'LB': "Lebanon",
'LC': "Saint Lucia",
'LI': "Liechtenstein",
'LK': "Sri Lanka",
'LR': "Liberia",
'LS': "Lesotho",
'LT': "Lithuania",
'LU': "Luxembourg",
'LV': "Latvia",
'LY': "Libyan Arab Jamahiriya",
'MA': "Morocco",
'MC': "Monaco",
'MD': "Moldova Republic of",
'MG': "Madagascar",
'MH': "Marshall Islands",
'MK': "Macedonia the Former Yugoslav Republic of",
'ML': "Mali",
'MM': "Myanmar",
'MN': "Mongolia",
'MO': "Macau",
'MP': "Northern Mariana Islands",
'MR': "Mauritania",
'MS': "Montserrat",
'MT': "Malta",
'MU': "Mauritius",
'MV': "Maldives",
'MW': "Malawi",
'MX': "Mexico",
'MY': "Malaysia",
'MZ': "Mozambique",
'NA': "Namibia",
'NC': "New Caledonia",
'NF': "Norfolk Island",
'NG': "Nigeria",
'NI': "Nicaragua",
'NL': "Netherlands",
'NO': "Norway",
'NP': "Nepal",
'NR': "Nauru",
'NU': "Niue",
'NZ': "New Zealand",
'OM': "Oman",
'PA': "Panama",
'PE': "Peru",
'PF': "French Polynesia",
'PG': "Papua New Guinea",
'PH': "Philippines",
diff --git a/frontend/gamma/js/Clipperz/PM/Strings/Strings_en-US.js b/frontend/gamma/js/Clipperz/PM/Strings/Strings_en-US.js
index eebdb16..b540633 100644
--- a/frontend/gamma/js/Clipperz/PM/Strings/Strings_en-US.js
+++ b/frontend/gamma/js/Clipperz/PM/Strings/Strings_en-US.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//=============================================================================
//
// E N G L I S H A M E R I C A N ( en_US )
//
//=============================================================================
Clipperz.PM.Strings.Languages['en-us'] = {
/*
// Login page - description
'clipperzServiceDescription': "\
<!-- FIX CSS DONE --> \
<h2>Keep it to yourself!</h2>\
<ul>\
<li>\
<h3>Clipperz is:</h3>\
<ul>\
<li><p>a secure and simple password manager</p></li>\
<li><p>an effective single sign-on solution</p></li>\
<li><p>a digital vault for your personal data</p></li>\
</ul>\
</li>\
<li>\
<h3>With Clipperz you can:</h3>\
<ul>\
<li><p>store and manage your passwords and online credentials</p></li>\
<li><p>login to your web services without entering any username or password</p></li>\
<li><p>protect all your sensitive data: codes for burglar alarms, PINs, credit card numbers, …</p></li>\
<li><p>share secrets with family members and associates (coming soon)</p></li>\
</ul>\
</li>\
<li>\
<h3>Clipperz benefits:</h3>\
<ul>\
<li><p>free and completely anonymous</p></li>\
<li><p>access it any time from any computer</p></li>\
<li><p>no software to download and nothing to install</p></li>\
<li><p>avoid keeping secrets on your PC or on paper</p></li>\
</ul>\
</li>\
<li>\
<h3>Clipperz security:</h3>\
<ul>\
<li><p>your secrets are locally encrypted by your browser before being uploaded to Clipperz</p></li>\
<li><p>the encryption key is a passphrase known only to you</p></li>\
<li><p>Clipperz hosts your sensitive data in encrypted form and could never actually access the data in its plain form</p></li>\
<li><p>Clipperz is built upon standard encryption schemes, nothing fancies or homemade</p></li>\
<li><p>you can review the source code anytime you like, but you need to know nothing about cryptography to be an happy user!</p></li>\
</ul>\
</li>\
<li>\
<a href=\"http://www.clipperz.com\" target=\"_blank\">Learn more</a>\
</li>\
</ul>",
'loginFormTitle': "login with your Clipperz account",
'loginFormUsernameLabel': "username",
'loginFormPassphraseLabel': "passphrase",
'loginFormDontHaveAnAccountLabel': "don\'t have an account?",
'loginFormCreateOneLabel': "create one",
'loginFormForgotYourCredentialsLabel': "forgot your credentials?",
'loginFormAarghThatsBadLabel': "aargh! that\'s bad!",
'loginFormAfraidOfMaliciousScriptsLabel': "afraid of malicious scripts?",
'loginFormVerifyTheCodeLabel': "verify the code",
'loginFormButtonLabel': "Login",
'loginFormOneTimePasswordCheckboxLabel': "use a one-time passphrase",
'loginFormOneTimePasswordCheckboxDescription': "",
// Login page - language selection
'loginPanelSwithLanguageDescription': "<h5>Switch to your preferred language</h5>",
// Login page - browser compatibility
'browserCompatibilityDescription': "<p>Have a better and safer Clipperz experience with Firefox. However Clipperz works just fine also with Opera, Safari and MS Internet Explorer!</p>",
// Login with OTP - message panel
'OTPloginMessagePanelInitialTitle': "Logging in using a one-time passphrase",
'OTPloginMessagePanelInitialText': "Sending OTP credentials …",
'OTPloginMessagePanelLoadingTitle': "Logging in using a one-time passphrase",
'OTPloginMessagePanelLoadingText': "Fetching encrypted authentication data from the server …",
'OTPloginMessagePanelProcessingTitle': "Logging in using a one-time passphrase",
'OTPloginMessagePanelProcessingText': "Local decryption of authentication data",
// Regular login - message panel
'loginMessagePanelInitialTitle': "Logging in …",
'loginMessagePanelInitialText': "---",
'loginMessagePanelInitialButtonLabel': "Cancel",
'loginMessagePanelConnectedTitle': "Connected",
'loginMessagePanelConnectedText': "Done",
'loginMessagePanelFailureTitle': "Error",
'loginMessagePanelFailureText': "Login failed",
'loginMessagePanelFailureButtonLabel': "Close",
// Regular login - message panel - connection
'connectionLoginSendingCredentialsMessageTitle': "Verifying credentials",
'connectionLoginSendingCredentialsMessageText': "Sending credentials",
'connectionLoginCredentialsVerificationMessageTitle': "Verifying credentials",
'connectionLoginCredentialsVerificationMessageText': "Performing SRP authentication",
'connectionLoginDoneMessageTitle': "Verifying credentials",
'connectionLoginDoneMessageText': "Connected",
// Regular login - message panel - user
'userLoginPanelUpgradingUserCredentialsMessageTitle': "Verifying credentials",
'userLoginPanelUpgradingUserCredentialsMessageText': "Upgrading your credentials to a new authentication schema",
'userLoginPanelConnectedMessageTitle': "User authenticated",
'userLoginPanelConnectedMessageText': "Successfully logged in",
'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle': "Verifying credentials",
'userLoginPanelTryingAnOlderConnectionSchemaMessageText': "Trying an older authentication schema",
'userLoginPanelLoadingUserDataMessageTitle': "User authenticated",
'userLoginPanelLoadingUserDataMessageText': "Downloading encrypted card headers from Clipperz",
'userLoginPanelDecryptingUserDataMessageTitle': "User authenticated",
'userLoginPanelDecryptingUserDataMessageText': "Local decryption of card headers",
'userLoginPanelDecryptingUserStatisticsMessageTitle': "User authenticated",
'userLoginPanelDecryptingUserStatisticsMessageText': "Local decryption of usage statistics",
// Registration page - splash alert
'splashAlertTitle': "Welcome to Clipperz!",
'splashAlertText': "\
<!-- FIX CSS DONE! --> \
<p>Some security advice</p>\
<ul>\
<li><p>Storing your data at Clipperz is as secure as the passphrase you choose to protect them. Nobody can access them unless they know your passphrase.</p></li>\
<li><p>If you are going to use Clipperz for safeguarding sensitive and critical information please make sure to use a strong passphrase. The longer the better!</p></li>\
<li><p>Clipperz will not be able to recover a lost passphrase!</p></li>\
</ul>\
<p>For any further information, please refer to <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a> website.</p>",
'splashAlertCloseButtonLabel': "Ok",
// Registration page - form
'registrationFormTitle': "create your account",
'registrationFormUsernameLabel': "username",
'registrationFormPassphraseLabel': "passphrase",
'registrationFormRetypePassphraseLabel': "re-enter passphrase",
'registrationFormSafetyCheckLabel': "I understand that Clipperz will not be able to recover a lost passphrase.",
'registrationFormTermsOfServiceCheckLabel': "I have read and agreed to the <a href='http://www.clipperz.com/terms_of_service' target='_blank'>Terms of Service</a>.",
'registrationFormDoYouAlreadyHaveAnAccountLabel': "do you already have an account?",
'registrationFormSimplyLoginLabel': "simply login",
'registrationFormButtonLabel': "Register",
// Registration page - warning messages
'registrationFormWarningMessageNotMatchingPassphrases': "Your passphrases don't match, please re-type them.",
'registrationFormWarningMessageSafetyCheckNotSelected': "Please read and check all the boxes below.",
'registrationFormWarningMessageTermsOfServiceCheckNotSelected': "You need to agree to the Terms of Service.",
// Registration page - message panel
'registrationMessagePanelInitialTitle': "Creating account …",
'registrationMessagePanelInitialText': "---",
'registrationMessagePanelInitialButtonLabel': "Cancel",
'registrationMessagePanelRegistrationDoneTitle': "Registration",
'registrationMessagePanelRegistrationDoneText': "Done",
'registrationMessagePanelFailureTitle': "Registration failed",
'registrationMessagePanelFailureButtonLabel': "Close",
// Registration page - message panel - connection
'connectionRegistrationSendingRequestMessageText': "Verifying credentials",
'connectionRegistrationSendingCredentialsMessageText': "Sending credentials",
// Registration page - splash panel
'registrationSplashPanelTitle': "Security advice",
'registrationSplashPanelDescription': "<p>These are your Clipperz credentials, take good care of them. Clipperz will never display your username and passphrase a second time!</p>",
'registrationSplashPanelUsernameLabel': "username",
'registrationSplashPanelPassphraseLabel': "passphrase",
'registrationSplashPanelShowPassphraseButtonLabel': "show passphrase",
// Header links
'donateHeaderLinkLabel': "donate",
'creditsHeaderLinkLabel': "credits",
'feedbackHeaderLinkLabel': "feedback",
'helpHeaderLinkLabel': "help",
'forumHeaderLinkLabel': "forum",
// Menu labels
'recordMenuLabel': "cards",
'accountMenuLabel': "account",
'dataMenuLabel': "data",
'contactsMenuLabel': "contacts",
'toolsMenuLabel': "tools",
'logoutMenuLabel': "logout",
'lockMenuLabel': "lock",
// Lock dialog
'lockTitle': "The account is locked",
'lockDescription': "<p>To unlock your account, please enter your passphrase.</p>",
'unlockButtonLabel': "Unlock",
// Account panel - change passphrase
'changePasswordTabLabel': "Change your passphrase",
'changePasswordTabTitle': "Change your passphrase",
diff --git a/frontend/gamma/js/Clipperz/PM/Toll.js b/frontend/gamma/js/Clipperz/PM/Toll.js
index a533f51..bb31c43 100644
--- a/frontend/gamma/js/Clipperz/PM/Toll.js
+++ b/frontend/gamma/js/Clipperz/PM/Toll.js
@@ -1,194 +1,191 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
//=============================================================================
Clipperz.PM.Toll = function(args) {
args = args || {};
this._requestType = args.requestType;
this._targetValue = args.targetValue;
this._cost = args.cost;
this._toll = null;
return this;
}
Clipperz.PM.Toll.prototype = MochiKit.Base.update(null, {
'toString': function() {
return "Clipperz.PM.Toll (" + this.requestType() + ": " + this.cost() + " - " + ((this.toll() == null)? 'UNPAID' : 'PAID') + ")";
},
//-------------------------------------------------------------------------
'requestType': function() {
return this._requestType;
},
//-------------------------------------------------------------------------
'targetValue': function() {
return this._targetValue;
},
//-------------------------------------------------------------------------
'cost': function() {
return this._cost;
},
//-------------------------------------------------------------------------
'toll': function() {
return this._toll;
},
//-------------------------------------------------------------------------
/*
'__pay': function() {
var result;
var targetData;
var targetMatchSize;
var prefixMatchingBits;
var payment;
var i;
if (this.toll() == null) {
i = 0;
targetData = new Clipperz.ByteArray("0x" + this.targetValue());
targetMatchSize = this.cost();
payment = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
do {
var paymentData;
//payment = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
payment.increment();
paymentData = Clipperz.Crypto.SHA.sha256(payment);
// prefixMatchingBits = this.prefixMatchingBits(targetData, paymentData);
prefixMatchingBits = Clipperz.ByteArray.prefixMatchingBits(targetData, paymentData);
i++;
} while (prefixMatchingBits < targetMatchSize);
this._toll = payment.toHexString().substring(2)
}
return this;
},
*/
//-------------------------------------------------------------------------
'innerDeferredPay': function (aTargetValue, aCost, aPayment) {
var deferredResult;
var result;
var payment;
var i;
result = null;
payment = aPayment;
i = 0;
while ((result == null) && (i < Clipperz.PM.Toll.numberOfCloseLoopIterations)) {
if (Clipperz.ByteArray.prefixMatchingBits(aTargetValue, Clipperz.Crypto.SHA.sha256(payment)) > aCost) {
result = payment;
} else {
payment.increment();
}
i ++;
}
if (result == null) {
deferredResult = MochiKit.Async.callLater(Clipperz.PM.Toll.pauseBetweenEachCloseLoop, MochiKit.Base.method(this, 'innerDeferredPay', aTargetValue, aCost, aPayment));
} else {
deferredResult = MochiKit.Async.succeed(result);
}
return deferredResult;
},
'deferredPay': function () {
var deferredResult;
var toll;
toll = this;
deferredResult = new Clipperz.Async.Deferred("Toll.deferredPay");
//deferredResult.addLog("--->>> deferredPay - " + this.cost());
deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'getRandomBytes', 32);
deferredResult.addMethod(toll, 'innerDeferredPay', new Clipperz.ByteArray("0x" + this.targetValue()), this.cost());
deferredResult.addCallback(MochiKit.Base.bind(function(aPayment) {
var result;
result = {
targetValue: this.targetValue(),
toll: aPayment.toHexString().substr(2)
};
return result;
}, this));
//deferredResult.addLog("<<<--- deferredPay - " + this.cost());
deferredResult.callback();
return deferredResult;
},
//=========================================================================
__syntaxFix__: "syntax fix"
});
Clipperz.PM.Toll.validate = function(aTargetValue, aToll, aCost) {
var result;
var tollValue;
var targetValue;
var hashedTollValue;
var payedToll;
tollValue = new Clipperz.ByteArray("0x" + aToll);
targetValue = new Clipperz.ByteArray("0x" + aTargetValue);
hashedTollValue = Clipperz.Crypto.SHA.sha256(tollValue);
payedToll = Clipperz.ByteArray.prefixMatchingBits(targetValue, hashedTollValue);
if (payedToll < aCost) {
result = false;
} else {
result = true;
}
return result;
};
Clipperz.PM.Toll.numberOfCloseLoopIterations = 50;
Clipperz.PM.Toll.pauseBetweenEachCloseLoop = 0.5; \ No newline at end of file
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/download.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/download.js
index 169946a..25e82ca 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/download.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/download.js
@@ -1,120 +1,117 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//
// download.js
// Download
//
// Created by Giulio Cesare Solaroli on 3/15/10
// Copyright 2010 Clipperz
// This code was generated by Opacity. You may use or modify it in any way.
//
var kClipperz_PM_UI_Canvas_CoverActions_downloadWidth = 46.0;
var kClipperz_PM_UI_Canvas_CoverActions_downloadHeight = 46.0;
function Clipperz_PM_UI_Canvas_CoverActions_download(canvas, aColor, aFillColor, aThickness)
{
var context = canvas.getContext("2d");
var alignStroke;
var resolution;
var stroke;
var path;
var pointX;
var pointY;
if (window.devicePixelRatio)
resolution = window.devicePixelRatio;
else
resolution = 1.0;
resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_CoverActions_downloadWidth + canvas.height / kClipperz_PM_UI_Canvas_CoverActions_downloadHeight);
context.save();
context.scale(canvas.width / kClipperz_PM_UI_Canvas_CoverActions_downloadWidth, canvas.height / kClipperz_PM_UI_Canvas_CoverActions_downloadHeight);
context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_CoverActions_downloadWidth, kClipperz_PM_UI_Canvas_CoverActions_downloadHeight);
// arrow
stroke = aThickness;
stroke *= resolution;
if (stroke < 1.0)
stroke = Math.ceil(stroke);
else
stroke = Math.round(stroke);
stroke /= resolution;
alignStroke = (0.5 * stroke * resolution) % 1.0;
context.beginPath();
pointX = 16.5;
pointY = 22.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 19.5;
pointY = 8.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 30.038;
pointY = 10.605;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 27.354;
pointY = 24.354;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 33.28;
pointY = 25.293;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 19.81;
pointY = 36.828;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 10.07;
pointY = 21.617;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 16.5;
pointY = 22.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aFillColor;
context.fill();
context.strokeStyle = aColor;
context.lineWidth = stroke;
context.lineCap = "square";
context.stroke();
context.restore();
}
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/look.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/look.js
index b8e535b..ba425ec 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/look.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/look.js
@@ -1,208 +1,205 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//
// look.js
// Look
//
// Created by Giulio Cesare Solaroli on 3/15/10
// Copyright 2010 Clipperz
// This code was generated by Opacity. You may use or modify it in any way.
//
var kClipperz_PM_UI_Canvas_CoverActions_lookWidth = 46.0;
var kClipperz_PM_UI_Canvas_CoverActions_lookHeight = 46.0;
function Clipperz_PM_UI_Canvas_CoverActions_look(canvas, aColor, aFillColor, aThickness)
{
var context = canvas.getContext("2d");
var alignStroke;
var resolution;
var stroke;
var path;
var pointX;
var pointY;
if (window.devicePixelRatio)
resolution = window.devicePixelRatio;
else
resolution = 1.0;
resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_CoverActions_lookWidth + canvas.height / kClipperz_PM_UI_Canvas_CoverActions_lookHeight);
context.save();
context.scale(canvas.width / kClipperz_PM_UI_Canvas_CoverActions_lookWidth, canvas.height / kClipperz_PM_UI_Canvas_CoverActions_lookHeight);
context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_CoverActions_lookWidth, kClipperz_PM_UI_Canvas_CoverActions_lookHeight);
// Layer 6
stroke = aThickness;
stroke *= resolution;
if (stroke < 1.0)
stroke = Math.ceil(stroke);
else
stroke = Math.round(stroke);
stroke /= resolution;
alignStroke = (0.5 * stroke * resolution) % 1.0;
context.save();
context.translate(17.5, 23.0);
context.rotate(-0.503);
context.translate(-17.5, -23.0);
context.beginPath();
pointX = 28.5;
pointY = 31.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 28.5;
pointY = 14.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 6.5;
pointY = 14.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 6.5;
pointY = 31.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 28.5;
pointY = 31.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aFillColor;
context.fill();
context.strokeStyle = aColor;
context.lineWidth = stroke;
context.lineCap = "square";
context.stroke();
context.restore();
// Layer 3
stroke = aThickness;
stroke *= resolution;
if (stroke < 1.0)
stroke = Math.ceil(stroke);
else
stroke = Math.round(stroke);
stroke /= resolution;
alignStroke = (0.5 * stroke * resolution) % 1.0;
context.save();
context.translate(22.5, 20.0);
context.rotate(-0.071);
context.translate(-22.5, -20.0);
context.beginPath();
pointX = 33.5;
pointY = 28.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 33.5;
pointY = 11.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 11.5;
pointY = 11.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 11.5;
pointY = 28.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 33.5;
pointY = 28.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aFillColor;
context.fill();
context.strokeStyle = aColor;
context.lineWidth = stroke;
context.lineCap = "square";
context.stroke();
context.restore();
// Layer 4
stroke = aThickness;
stroke *= resolution;
if (stroke < 1.0)
stroke = Math.ceil(stroke);
else
stroke = Math.round(stroke);
stroke /= resolution;
alignStroke = (0.5 * stroke * resolution) % 1.0;
context.save();
context.translate(27.5, 18.0);
context.rotate(0.232);
context.translate(-27.5, -18.0);
context.beginPath();
pointX = 38.5;
pointY = 26.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 38.5;
pointY = 9.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 16.5;
pointY = 9.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 16.5;
pointY = 26.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 38.5;
pointY = 26.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aFillColor;
context.fill();
context.strokeStyle = aColor;
context.lineWidth = stroke;
context.lineCap = "square";
context.stroke();
context.restore();
context.restore();
}
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/directLogin.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/directLogin.js
index 9c4e5ba..5c1f860 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/directLogin.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/directLogin.js
@@ -1,209 +1,206 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//
// directLogin.js
// directLogin
//
// Created by Giulio Cesare Solaroli on 3/7/10
// Copyright 2010 Clipperz
// This code was generated by Opacity. You may use or modify it in any way.
//
var kClipperz_PM_UI_Canvas_Features_directLoginWidth = 76.0;
var kClipperz_PM_UI_Canvas_Features_directLoginHeight = 76.0;
function Clipperz_PM_UI_Canvas_Features_directLogin(canvas, aColor, aBannerColor, aBannerBackgroundColor)
{
var context = canvas.getContext("2d");
var alignStroke;
var resolution;
var stroke;
var path;
var pointX;
var pointY;
if (window.devicePixelRatio)
resolution = window.devicePixelRatio;
else
resolution = 1.0;
resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Features_directLoginWidth + canvas.height / kClipperz_PM_UI_Canvas_Features_directLoginHeight);
context.save();
context.scale(canvas.width / kClipperz_PM_UI_Canvas_Features_directLoginWidth, canvas.height / kClipperz_PM_UI_Canvas_Features_directLoginHeight);
context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Features_directLoginWidth, kClipperz_PM_UI_Canvas_Features_directLoginHeight);
// Layer 2
stroke = 6.0;
stroke *= resolution;
if (stroke < 1.0)
stroke = Math.ceil(stroke);
else
stroke = Math.round(stroke);
stroke /= resolution;
alignStroke = (0.5 * stroke * resolution) % 1.0;
context.beginPath();
pointX = 30.0;
pointY = 41.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 45.579;
pointY = 25.451;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.strokeStyle = aColor;
context.lineWidth = stroke;
context.lineCap = "square";
context.stroke();
alignStroke = 0.0;
context.beginPath();
pointX = 34.207;
pointY = 45.697;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 24.101;
pointY = 37.52;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 24.122;
pointY = 47.828;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 34.207;
pointY = 45.697;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aColor;
context.fill();
stroke = 6.0;
stroke *= resolution;
if (stroke < 1.0)
stroke = Math.ceil(stroke);
else
stroke = Math.round(stroke);
stroke /= resolution;
alignStroke = (0.5 * stroke * resolution) % 1.0;
context.beginPath();
pointX = 24.631;
pointY = 28.971;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 46.497;
pointY = 26.451;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.strokeStyle = aColor;
context.stroke();
alignStroke = 0.0;
context.beginPath();
pointX = 25.014;
pointY = 35.265;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 22.166;
pointY = 22.58;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 15.784;
pointY = 30.675;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 25.014;
pointY = 35.265;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aColor;
context.fill();
stroke = 6.0;
stroke *= resolution;
if (stroke < 1.0)
stroke = Math.ceil(stroke);
else
stroke = Math.round(stroke);
stroke /= resolution;
alignStroke = (0.5 * stroke * resolution) % 1.0;
context.beginPath();
pointX = 42.282;
pointY = 47.03;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 47.771;
pointY = 25.714;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.strokeStyle = aColor;
context.stroke();
alignStroke = 0.0;
context.beginPath();
pointX = 48.294;
pointY = 48.929;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 35.432;
pointY = 47.039;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 40.7;
pointY = 55.899;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 48.294;
pointY = 48.929;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aColor;
context.fill();
context.restore();
}
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/protect.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/protect.js
index 501b69b..b829ed6 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/protect.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/protect.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//
// protect.js
// protect
//
// Created by Giulio Cesare Solaroli on 3/7/10
// Copyright 2010 Clipperz
// This code was generated by Opacity. You may use or modify it in any way.
//
var kClipperz_PM_UI_Canvas_Features_protectWidth = 76.0;
var kClipperz_PM_UI_Canvas_Features_protectHeight = 76.0;
function Clipperz_PM_UI_Canvas_Features_protect(canvas, aColor, aBannerColor, aBannerBackgroundColor)
{
var context = canvas.getContext("2d");
var alignStroke;
var resolution;
var path;
var pointX;
var pointY;
var controlPoint1X;
var controlPoint1Y;
var controlPoint2X;
var controlPoint2Y;
var stroke;
if (window.devicePixelRatio)
resolution = window.devicePixelRatio;
else
resolution = 1.0;
resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Features_protectWidth + canvas.height / kClipperz_PM_UI_Canvas_Features_protectHeight);
context.save();
context.scale(canvas.width / kClipperz_PM_UI_Canvas_Features_protectWidth, canvas.height / kClipperz_PM_UI_Canvas_Features_protectHeight);
context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Features_protectWidth, kClipperz_PM_UI_Canvas_Features_protectHeight);
// Layer 1
alignStroke = 0.0;
context.beginPath();
pointX = 38.5;
pointY = 36.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 37.068;
pointY = 38.816;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 37.41;
controlPoint1Y = 36.234;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 37.175;
controlPoint2Y = 37.907;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 37.031;
pointY = 40.802;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 36.991;
controlPoint1Y = 39.474;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 36.98;
controlPoint2Y = 40.141;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 37.258;
pointY = 42.23;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 37.068;
controlPoint1Y = 41.283;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 37.139;
controlPoint2Y = 41.762;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 38.348;
pointY = 43.979;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 37.402;
controlPoint1Y = 42.799;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 37.682;
controlPoint2Y = 43.798;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 38.5;
pointY = 36.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 40.249;
controlPoint1Y = 44.497;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 40.723;
controlPoint2Y = 36.303;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 38.5;
pointY = 36.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
pointX = 50.0;
pointY = 52.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 26.0;
pointY = 52.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 26.0;
pointY = 33.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 50.0;
pointY = 33.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 50.0;
pointY = 52.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aColor;
context.fill();
alignStroke = 0.0;
context.beginPath();
pointX = 47.0;
pointY = 32.463;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 38.0;
pointY = 52.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 47.0;
controlPoint1Y = 52.925;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 38.0;
controlPoint2Y = 52.0;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 29.0;
pointY = 32.463;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 38.0;
controlPoint1Y = 52.0;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 29.0;
controlPoint2Y = 52.925;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 47.0;
pointY = 32.463;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 29.0;
controlPoint1Y = 12.0;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 47.0;
controlPoint2Y = 12.0;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/share.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/share.js
index 825a17e..8d73cc7 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/share.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/share.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//
// share.js
// share
//
// Created by Giulio Cesare Solaroli on 3/7/10
// Copyright 2010 Clipperz
// This code was generated by Opacity. You may use or modify it in any way.
//
var kClipperz_PM_UI_Canvas_Features_shareWidth = 76.0;
var kClipperz_PM_UI_Canvas_Features_shareHeight = 76.0;
function Clipperz_PM_UI_Canvas_Features_share(canvas, aColor, aBannerColor, aBannerBackgroundColor)
{
var context = canvas.getContext("2d");
var alignStroke;
var resolution;
var path;
var pointX;
var pointY;
var controlPoint1X;
var controlPoint1Y;
var controlPoint2X;
var controlPoint2Y;
var stroke;
if (window.devicePixelRatio)
resolution = window.devicePixelRatio;
else
resolution = 1.0;
resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Features_shareWidth + canvas.height / kClipperz_PM_UI_Canvas_Features_shareHeight);
context.save();
context.scale(canvas.width / kClipperz_PM_UI_Canvas_Features_shareWidth, canvas.height / kClipperz_PM_UI_Canvas_Features_shareHeight);
context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Features_shareWidth, kClipperz_PM_UI_Canvas_Features_shareHeight);
// Layer 1
alignStroke = 0.0;
context.beginPath();
pointX = 43.179;
pointY = 18.621;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 37.163;
pointY = 12.605;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 43.179;
controlPoint1Y = 15.32;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 40.463;
controlPoint2Y = 12.605;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 31.147;
pointY = 18.621;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 33.863;
controlPoint1Y = 12.605;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 31.147;
controlPoint2Y = 15.32;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 37.163;
pointY = 24.637;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 31.147;
controlPoint1Y = 21.921;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 33.863;
controlPoint2Y = 24.637;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 43.179;
pointY = 18.621;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 40.463;
controlPoint1Y = 24.637;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 43.179;
controlPoint2Y = 21.921;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
context.closePath();
context.fillStyle = aColor;
context.fill();
alignStroke = 0.0;
context.beginPath();
pointX = 56.548;
pointY = 53.379;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 51.2;
pointY = 48.032;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 56.548;
controlPoint1Y = 50.446;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 54.134;
controlPoint2Y = 48.032;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 45.853;
pointY = 53.379;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 48.267;
controlPoint1Y = 48.032;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 45.853;
controlPoint2Y = 50.446;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 51.2;
pointY = 58.727;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 45.853;
controlPoint1Y = 56.313;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 48.267;
controlPoint2Y = 58.727;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 56.548;
pointY = 53.379;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 54.134;
controlPoint1Y = 58.727;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 56.548;
controlPoint2Y = 56.313;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
context.closePath();
context.fillStyle = aColor;
context.fill();
alignStroke = 0.0;
context.beginPath();
pointX = 31.147;
pointY = 38.674;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 25.8;
pointY = 33.326;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 31.147;
controlPoint1Y = 35.74;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 28.733;
controlPoint2Y = 33.326;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 20.452;
pointY = 38.674;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 22.866;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/store.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/store.js
index eaeb7f1..572d9be 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/store.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/store.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//
// store.js
// store
//
// Created by Giulio Cesare Solaroli on 3/7/10
// Copyright 2010 Clipperz
// This code was generated by Opacity. You may use or modify it in any way.
//
var kClipperz_PM_UI_Canvas_Features_storeWidth = 76.0;
var kClipperz_PM_UI_Canvas_Features_storeHeight = 76.0;
function Clipperz_PM_UI_Canvas_Features_store(canvas, aColor, aBannerColor, aBannerBackgroundColor)
{
var context = canvas.getContext("2d");
var alignStroke;
var resolution;
var path;
var pointX;
var pointY;
if (window.devicePixelRatio)
resolution = window.devicePixelRatio;
else
resolution = 1.0;
resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Features_storeWidth + canvas.height / kClipperz_PM_UI_Canvas_Features_storeHeight);
context.save();
context.scale(canvas.width / kClipperz_PM_UI_Canvas_Features_storeWidth, canvas.height / kClipperz_PM_UI_Canvas_Features_storeHeight);
context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Features_storeWidth, kClipperz_PM_UI_Canvas_Features_storeHeight);
// Layer 1
alignStroke = 0.0;
context.beginPath();
pointX = 27.0;
pointY = 29.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 27.0;
pointY = 24.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 22.0;
pointY = 24.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 22.0;
pointY = 29.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 27.0;
pointY = 29.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aColor;
context.fill();
alignStroke = 0.0;
context.beginPath();
pointX = 54.0;
pointY = 29.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 54.0;
pointY = 24.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 29.0;
pointY = 24.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 29.0;
pointY = 29.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 54.0;
pointY = 29.5;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aColor;
context.fill();
alignStroke = 0.0;
context.beginPath();
pointX = 43.0;
pointY = 37.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 43.0;
pointY = 32.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 29.0;
pointY = 32.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 29.0;
pointY = 37.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 43.0;
pointY = 37.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aColor;
context.fill();
alignStroke = 0.0;
context.beginPath();
pointX = 27.0;
pointY = 37.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 27.0;
pointY = 32.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 22.0;
pointY = 32.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 22.0;
pointY = 37.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 27.0;
pointY = 37.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aColor;
context.fill();
alignStroke = 0.0;
context.beginPath();
pointX = 27.0;
pointY = 44.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 27.0;
pointY = 39.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 22.0;
pointY = 39.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 22.0;
pointY = 44.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 27.0;
pointY = 44.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aColor;
context.fill();
alignStroke = 0.0;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/GraphicFunctions.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/GraphicFunctions.js
index 5de2e96..b9443bd 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/GraphicFunctions.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/GraphicFunctions.js
@@ -1,68 +1,65 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Canvas');
MochiKit.Base.update(Clipperz.PM.UI.Canvas , {
'marks': {
'!': Clipperz_PM_UI_Canvas_Marks_exclamationMark,
'?': Clipperz_PM_UI_Canvas_Marks_questionMark,
'i': Clipperz_PM_UI_Canvas_Marks_info
},
'features': {
'store': Clipperz_PM_UI_Canvas_Features_store,
'protect': Clipperz_PM_UI_Canvas_Features_protect,
'directLogin': Clipperz_PM_UI_Canvas_Features_directLogin,
'share': Clipperz_PM_UI_Canvas_Features_share
},
'tips': {
'open': Clipperz_PM_UI_Canvas_Tips_open,
'close': Clipperz_PM_UI_Canvas_Tips_close
},
'star': {
'normal': Clipperz_PM_UI_Canvas_Star_normal
},
'coverActions': {
'look': Clipperz_PM_UI_Canvas_CoverActions_look,
'download': Clipperz_PM_UI_Canvas_CoverActions_download
},
'registerButton': {
'normal': Clipperz_PM_UI_Canvas_RegisterButton_normal
},
'logo': {
'normal': Clipperz_PM_UI_Canvas_Logo_normal
},
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Logo/normal.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Logo/normal.js
index e0bea36..de9d3aa 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Logo/normal.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Logo/normal.js
@@ -1,65 +1,62 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//
// normal.js
// normal
//
// Created by Giulio Cesare Solaroli on 3/25/10
// Copyright 2010 Clipperz
// This code was generated by Opacity. You may use or modify it in any way.
//
var kClipperz_PM_UI_Canvas_Logo_normalWidth = 150.0;
var kClipperz_PM_UI_Canvas_Logo_normalHeight = 39.0;
function Clipperz_PM_UI_Canvas_Logo_normal(canvas, aMainColor, aSecondaryColor)
{
var context = canvas.getContext("2d");
var string;
context.save();
context.scale(canvas.width / kClipperz_PM_UI_Canvas_Logo_normalWidth, canvas.height / kClipperz_PM_UI_Canvas_Logo_normalHeight);
context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Logo_normalWidth, kClipperz_PM_UI_Canvas_Logo_normalHeight);
// clipper…
string = "clipper";
context.font = "38.0pt Helvetica-Bold";
context.fillStyle = aMainColor;
context.fillText(string, -9.0, -9.0);
// …z
string = "z";
context.font = "38.0pt Helvetica-Bold";
context.fillStyle = aSecondaryColor;
context.fillText(string, 125.0, -9.0);
context.restore();
}
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/exclamationMark.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/exclamationMark.js
index f3ae04d..02f2f80 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/exclamationMark.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/exclamationMark.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//
// exclamationMark.js
// !
//
// Created by Giulio Cesare Solaroli on 3/7/10
// Copyright 2010 Clipperz
// This code was generated by Opacity. You may use or modify it in any way.
//
var kClipperz_PM_UI_Canvas_Marks_exclamationMarkWidth = 50.0;
var kClipperz_PM_UI_Canvas_Marks_exclamationMarkHeight = 50.0;
function Clipperz_PM_UI_Canvas_Marks_exclamationMark(canvas, aColor)
{
var context = canvas.getContext("2d");
var alignStroke;
var resolution;
var path;
var pointX;
var pointY;
var controlPoint1X;
var controlPoint1Y;
var controlPoint2X;
var controlPoint2Y;
if (window.devicePixelRatio)
resolution = window.devicePixelRatio;
else
resolution = 1.0;
resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Marks_exclamationMarkWidth + canvas.height / kClipperz_PM_UI_Canvas_Marks_exclamationMarkHeight);
context.save();
context.scale(canvas.width / kClipperz_PM_UI_Canvas_Marks_exclamationMarkWidth, canvas.height / kClipperz_PM_UI_Canvas_Marks_exclamationMarkHeight);
context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Marks_exclamationMarkWidth, kClipperz_PM_UI_Canvas_Marks_exclamationMarkHeight);
// Layer 1
alignStroke = 0.0;
context.beginPath();
pointX = 26.499;
pointY = 10.848;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 20.887;
pointY = 11.584;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 25.395;
controlPoint1Y = 10.802;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 22.175;
controlPoint2Y = 11.078;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 20.013;
pointY = 13.194;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 20.335;
controlPoint1Y = 11.814;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 19.921;
controlPoint2Y = 12.826;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 23.049;
pointY = 28.788;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 20.243;
controlPoint1Y = 15.448;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 22.589;
controlPoint2Y = 26.35;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 25.027;
pointY = 29.156;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 23.279;
controlPoint1Y = 29.018;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 24.705;
controlPoint2Y = 29.202;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 27.971;
pointY = 11.354;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 25.809;
controlPoint1Y = 25.384;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 27.971;
controlPoint2Y = 12.826;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 26.499;
pointY = 10.848;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 27.557;
controlPoint1Y = 11.032;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 26.913;
controlPoint2Y = 10.848;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 26.499;
pointY = 10.848;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
pointX = 24.337;
pointY = 31.962;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 21.899;
pointY = 32.882;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 23.463;
controlPoint1Y = 31.962;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 22.589;
controlPoint2Y = 32.284;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 20.703;
pointY = 35.458;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 21.163;
controlPoint1Y = 33.572;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 20.703;
controlPoint2Y = 34.538;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 21.669;
pointY = 38.08;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 20.703;
controlPoint1Y = 36.47;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 20.979;
controlPoint2Y = 37.344;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 24.015;
pointY = 39.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 22.405;
controlPoint1Y = 38.77;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 23.325;
controlPoint2Y = 39.0;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 26.821;
pointY = 38.034;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/info.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/info.js
index adab74f..fad5c10 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/info.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/info.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//
// info.js
// i
//
// Created by Giulio Cesare Solaroli on 3/7/10
// Copyright 2010 Clipperz
// This code was generated by Opacity. You may use or modify it in any way.
//
var kClipperz_PM_UI_Canvas_Marks_infoWidth = 50.0;
var kClipperz_PM_UI_Canvas_Marks_infoHeight = 50.0;
function Clipperz_PM_UI_Canvas_Marks_info(canvas, aColor)
{
var context = canvas.getContext("2d");
var alignStroke;
var resolution;
var path;
var pointX;
var pointY;
var controlPoint1X;
var controlPoint1Y;
var controlPoint2X;
var controlPoint2Y;
var color;
if (window.devicePixelRatio)
resolution = window.devicePixelRatio;
else
resolution = 1.0;
resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Marks_infoWidth + canvas.height / kClipperz_PM_UI_Canvas_Marks_infoHeight);
context.save();
context.scale(canvas.width / kClipperz_PM_UI_Canvas_Marks_infoWidth, canvas.height / kClipperz_PM_UI_Canvas_Marks_infoHeight);
context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Marks_infoWidth, kClipperz_PM_UI_Canvas_Marks_infoHeight);
// Layer 1
alignStroke = 0.0;
context.beginPath();
pointX = 30.253;
pointY = 37.436;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 28.505;
pointY = 37.022;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 27.677;
pointY = 35.09;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 27.953;
controlPoint1Y = 36.792;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 27.677;
controlPoint2Y = 36.47;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 27.631;
pointY = 27.546;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 27.631;
controlPoint1Y = 32.974;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 27.631;
controlPoint2Y = 29.892;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 27.677;
pointY = 19.726;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 27.631;
controlPoint1Y = 24.97;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 27.677;
controlPoint2Y = 21.612;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 19.535;
pointY = 21.336;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 25.331;
controlPoint1Y = 20.692;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 20.593;
controlPoint2Y = 21.336;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 19.443;
pointY = 22.762;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 19.397;
controlPoint1Y = 21.52;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 19.305;
controlPoint2Y = 22.532;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 21.283;
pointY = 23.82;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 20.639;
controlPoint1Y = 23.222;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 20.961;
controlPoint2Y = 23.452;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 21.605;
pointY = 24.97;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 21.513;
controlPoint1Y = 24.05;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 21.605;
controlPoint2Y = 24.602;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 21.651;
pointY = 29.156;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 21.651;
controlPoint1Y = 25.752;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 21.651;
controlPoint2Y = 27.592;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 21.605;
pointY = 35.228;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 21.651;
controlPoint1Y = 31.364;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 21.651;
controlPoint2Y = 34.216;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 20.823;
pointY = 37.022;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 21.559;
controlPoint1Y = 36.332;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 21.467;
controlPoint2Y = 36.838;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 19.121;
pointY = 37.436;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 20.363;
controlPoint1Y = 37.206;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 19.857;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/questionMark.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/questionMark.js
index 003c4c2..5842828 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/questionMark.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/questionMark.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//
// questionMark.js
// ?
//
// Created by Giulio Cesare Solaroli on 3/7/10
// Copyright 2010 Clipperz
// This code was generated by Opacity. You may use or modify it in any way.
//
var kClipperz_PM_UI_Canvas_Marks_questionMarkWidth = 50.0;
var kClipperz_PM_UI_Canvas_Marks_questionMarkHeight = 50.0;
function Clipperz_PM_UI_Canvas_Marks_questionMark(canvas, aColor)
{
var context = canvas.getContext("2d");
var alignStroke;
var resolution;
var path;
var pointX;
var pointY;
var controlPoint1X;
var controlPoint1Y;
var controlPoint2X;
var controlPoint2Y;
var color;
if (window.devicePixelRatio)
resolution = window.devicePixelRatio;
else
resolution = 1.0;
resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Marks_questionMarkWidth + canvas.height / kClipperz_PM_UI_Canvas_Marks_questionMarkHeight);
context.save();
context.scale(canvas.width / kClipperz_PM_UI_Canvas_Marks_questionMarkWidth, canvas.height / kClipperz_PM_UI_Canvas_Marks_questionMarkHeight);
context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Marks_questionMarkWidth, kClipperz_PM_UI_Canvas_Marks_questionMarkHeight);
// Layer 1
alignStroke = 0.0;
context.beginPath();
pointX = 24.118;
pointY = 24.464;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 24.854;
pointY = 23.406;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 24.118;
controlPoint1Y = 24.05;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 24.44;
controlPoint2Y = 23.636;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 29.454;
pointY = 20.6;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 26.418;
controlPoint1Y = 22.532;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 28.534;
controlPoint2Y = 21.566;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 30.282;
pointY = 17.794;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 29.868;
controlPoint1Y = 20.232;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 30.282;
controlPoint2Y = 19.082;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 27.2;
pointY = 12.688;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 30.282;
controlPoint1Y = 16.322;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 29.454;
controlPoint2Y = 14.344;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 21.312;
pointY = 10.664;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 25.636;
controlPoint1Y = 11.492;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 23.382;
controlPoint2Y = 10.664;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 19.886;
pointY = 11.124;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 20.898;
controlPoint1Y = 10.664;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 20.162;
controlPoint2Y = 10.894;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 18.0;
pointY = 14.666;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 19.104;
controlPoint1Y = 11.676;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 18.0;
controlPoint2Y = 14.068;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 18.598;
pointY = 15.586;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 18.0;
controlPoint1Y = 14.896;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 18.138;
controlPoint2Y = 15.494;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 19.794;
pointY = 15.908;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 19.012;
controlPoint1Y = 15.678;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 19.426;
controlPoint2Y = 15.77;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 25.36;
pointY = 20.002;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 22.508;
controlPoint1Y = 16.644;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 25.36;
controlPoint2Y = 17.886;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 24.21;
pointY = 21.704;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 25.36;
controlPoint1Y = 20.738;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 25.084;
controlPoint2Y = 21.198;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 19.058;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/RegisterButton/normal.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/RegisterButton/normal.js
index 288e0be..2462d0e 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/RegisterButton/normal.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/RegisterButton/normal.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//
// normal.js
// normal
//
// Created by Giulio Cesare Solaroli on 3/24/10
// Copyright 2010 Clipperz
// This code was generated by Opacity. You may use or modify it in any way.
//
var kClipperz_PM_UI_Canvas_RegisterButton_normalWidth = 282.0;
var kClipperz_PM_UI_Canvas_RegisterButton_normalHeight = 93.0;
function Clipperz_PM_UI_Canvas_RegisterButton_normal(canvas, aBackgroundColor, aDarkBackgroundColor, aLightColor, aDarkColor, aStarColor)
{
var context = canvas.getContext("2d");
var alignStroke;
var resolution;
var path;
var pointX;
var pointY;
var controlPoint1X;
var controlPoint1Y;
var controlPoint2X;
var controlPoint2Y;
var gradient;
var color;
if (window.devicePixelRatio)
resolution = window.devicePixelRatio;
else
resolution = 1.0;
resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_RegisterButton_normalWidth + canvas.height / kClipperz_PM_UI_Canvas_RegisterButton_normalHeight);
context.save();
context.scale(canvas.width / kClipperz_PM_UI_Canvas_RegisterButton_normalWidth, canvas.height / kClipperz_PM_UI_Canvas_RegisterButton_normalHeight);
context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_RegisterButton_normalWidth, kClipperz_PM_UI_Canvas_RegisterButton_normalHeight);
// background
alignStroke = 0.0;
context.beginPath();
pointX = 241.0;
pointY = 80.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 274.0;
pointY = 47.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 259.103;
controlPoint1Y = 80.0;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 274.0;
controlPoint2Y = 65.103;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 274.0;
pointY = 45.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 241.0;
pointY = 12.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 274.0;
controlPoint1Y = 26.897;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 259.103;
controlPoint2Y = 12.0;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 60.0;
pointY = 12.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 27.0;
pointY = 45.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 41.897;
controlPoint1Y = 12.0;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 27.0;
controlPoint2Y = 26.897;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 27.0;
pointY = 47.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 60.0;
pointY = 80.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 27.0;
controlPoint1Y = 65.103;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 41.897;
controlPoint2Y = 80.0;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 241.0;
pointY = 80.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
gradient = context.createLinearGradient(150.5, 12.0, 150.5, 80.0);
gradient.addColorStop(0.0, aBackgroundColor);
gradient.addColorStop(1.0, aDarkBackgroundColor);
context.fillStyle = gradient;
context.fill();
// round
alignStroke = 0.0;
context.beginPath();
pointX = 44.103;
pointY = 4.014;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 65.629;
pointY = 10.515;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 51.706;
controlPoint1Y = 4.217;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 59.185;
controlPoint2Y = 6.475;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 78.65;
pointY = 70.918;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 43.0;
pointY = 90.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 70.676;
controlPoint1Y = 82.788;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 57.23;
controlPoint2Y = 89.817;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 0.056;
pointY = 44.801;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 18.834;
controlPoint1Y = 90.07;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = -1.18;
controlPoint2Y = 68.879;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
pointX = 44.103;
pointY = 4.014;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
controlPoint1X = 1.242;
controlPoint1Y = 21.708;
controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
controlPoint2X = 21.202;
controlPoint2Y = 3.72;
controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Star/normal.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Star/normal.js
index e70e3b5..cf475c6 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Star/normal.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Star/normal.js
@@ -1,153 +1,150 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//
// normal.js
// normal
//
// Created by Giulio Cesare Solaroli on 3/15/10
// Copyright 2010 Clipperz
// This code was generated by Opacity. You may use or modify it in any way.
//
var kClipperz_PM_UI_Canvas_Star_normalWidth = 46.0;
var kClipperz_PM_UI_Canvas_Star_normalHeight = 46.0;
function Clipperz_PM_UI_Canvas_Star_normal(canvas, aColor)
{
var context = canvas.getContext("2d");
var alignStroke;
var resolution;
var path;
var pointX;
var pointY;
if (window.devicePixelRatio)
resolution = window.devicePixelRatio;
else
resolution = 1.0;
resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Star_normalWidth + canvas.height / kClipperz_PM_UI_Canvas_Star_normalHeight);
context.save();
context.scale(canvas.width / kClipperz_PM_UI_Canvas_Star_normalWidth, canvas.height / kClipperz_PM_UI_Canvas_Star_normalHeight);
context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Star_normalWidth, kClipperz_PM_UI_Canvas_Star_normalHeight);
// *
alignStroke = 0.0;
context.beginPath();
pointX = 8.613;
pointY = 15.583;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 18.563;
pointY = 18.821;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 18.563;
pointY = 7.347;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 26.799;
pointY = 7.347;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 26.799;
pointY = 18.821;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 36.749;
pointY = 15.583;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 38.986;
pointY = 22.677;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 28.846;
pointY = 25.819;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 35.463;
pointY = 35.293;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 29.369;
pointY = 39.625;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 22.752;
pointY = 30.675;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 15.944;
pointY = 39.625;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 9.85;
pointY = 35.293;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 16.515;
pointY = 25.819;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 6.375;
pointY = 22.677;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 8.613;
pointY = 15.583;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
pointX = 42.081;
pointY = 77.949;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
context.fillStyle = aColor;
context.fill();
context.restore();
}
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/close.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/close.js
index 216fd24..cd7ed90 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/close.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/close.js
@@ -1,156 +1,153 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//
// close.js
// close
//
// Created by Giulio Cesare Solaroli on 3/14/10
// Copyright 2010 Clipperz
// This code was generated by Opacity. You may use or modify it in any way.
//
var kClipperz_PM_UI_Canvas_Tips_closeWidth = 310.0;
var kClipperz_PM_UI_Canvas_Tips_closeHeight = 6.0;
function Clipperz_PM_UI_Canvas_Tips_close(canvas, aColor, aBackgroundColor)
{
var context = canvas.getContext("2d");
var alignStroke;
var resolution;
var path;
var pointX;
var pointY;
if (window.devicePixelRatio)
resolution = window.devicePixelRatio;
else
resolution = 1.0;
resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Tips_closeWidth + canvas.height / kClipperz_PM_UI_Canvas_Tips_closeHeight);
context.save();
context.scale(canvas.width / kClipperz_PM_UI_Canvas_Tips_closeWidth, canvas.height / kClipperz_PM_UI_Canvas_Tips_closeHeight);
context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Tips_closeWidth, kClipperz_PM_UI_Canvas_Tips_closeHeight);
// background
alignStroke = 0.0;
context.beginPath();
pointX = 310.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 310.0;
pointY = 0.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 0.0;
pointY = 0.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 0.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 310.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aBackgroundColor;
context.fill();
// grid
// background
alignStroke = 0.0;
context.beginPath();
pointX = 310.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 310.0;
pointY = 0.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 0.0;
pointY = 0.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 0.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 310.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aBackgroundColor;
context.fill();
// toggle
alignStroke = 0.0;
context.beginPath();
pointX = 149.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 161.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 155.0;
pointY = 0.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 149.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aColor;
context.fill();
context.restore();
}
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/open.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/open.js
index f1bdaa9..30c1c69 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/open.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/open.js
@@ -1,163 +1,160 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
//
// open.js
// open
//
// Created by Giulio Cesare Solaroli on 3/14/10
// Copyright 2010 Clipperz
// This code was generated by Opacity. You may use or modify it in any way.
//
var kClipperz_PM_UI_Canvas_Tips_openWidth = 310.0;
var kClipperz_PM_UI_Canvas_Tips_openHeight = 6.0;
function Clipperz_PM_UI_Canvas_Tips_open(canvas, aColor, aBackgroundColor)
{
var context = canvas.getContext("2d");
var alignStroke;
var resolution;
var path;
var pointX;
var pointY;
var color;
if (window.devicePixelRatio)
resolution = window.devicePixelRatio;
else
resolution = 1.0;
resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Tips_openWidth + canvas.height / kClipperz_PM_UI_Canvas_Tips_openHeight);
context.save();
context.scale(canvas.width / kClipperz_PM_UI_Canvas_Tips_openWidth, canvas.height / kClipperz_PM_UI_Canvas_Tips_openHeight);
context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Tips_openWidth, kClipperz_PM_UI_Canvas_Tips_openHeight);
// background
alignStroke = 0.0;
context.beginPath();
pointX = 310.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 310.0;
pointY = 0.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 0.0;
pointY = 0.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 0.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 310.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aBackgroundColor;
context.fill();
// grid
// background
alignStroke = 0.0;
context.beginPath();
pointX = 310.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 310.0;
pointY = 0.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 0.0;
pointY = 0.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 0.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 310.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
context.fillStyle = aBackgroundColor;
context.fill();
// Layer 1
alignStroke = 0.0;
context.save();
context.translate(155.0, 3.0);
context.rotate(-3.142);
context.translate(-155.0, -3.0);
context.beginPath();
pointX = 149.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.moveTo(pointX, pointY);
pointX = 161.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 155.0;
pointY = 0.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
pointX = 149.0;
pointY = 6.0;
pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
context.lineTo(pointX, pointY);
context.closePath();
color = "#FFFFFF";
context.fillStyle = color;
context.fill();
context.restore();
context.restore();
}
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js
index 26f2fc4..2a03fdf 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
//#############################################################################
var _Clipperz_PM_Components_base_id_ = 0;
//#############################################################################
Clipperz.PM.UI.Common.Components.BaseComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Common.Components.BaseComponent.superclass.constructor.call(this, args);
this._element = args.element || null;
this._ids = {};
this._slots = {};
this._slotComponents = {};
this._components = {};
this._cachedSlots = {};
this._isModal = false;
this._isActive = false;
this._elementUsedToEnterModalState;
this._isFullyRendered = false;
this._renderingWaitingQueue = [];
// this._slots = {
// 'header': 'header',
// 'body': 'body',
// 'footer': 'footer'
// };
return this;
}
//=============================================================================
//TODO get back to MochiKit.Base.update as we are not extending anything
//MochiKit.Base.update(Clipperz.PM.UI.Common.Components.BaseComponent.prototype, {
Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.BaseComponent, /*Ext.Component*/ Object, {
'isClipperzPMComponent': true,
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Common.Components.BaseComponent component";
},
'componentId': function () {
return this.getId('_id_');
},
//-------------------------------------------------------------------------
/*
'slots': function() {
return this._slots;
},
*/
'slotComponents': function() {
return this._slotComponents;
},
//-------------------------------------------------------------------------
'components': function () {
return this._components;
},
'addComponent': function (aComponent) {
this.components()[aComponent.componentId()] = aComponent;
},
'removeComponent': function (aComponent) {
var componentId;
componentId = aComponent.componentId();
this.components()[componentId].remove();
delete this.components()[componentId];
},
//-------------------------------------------------------------------------
/*
'domHelper': function() {
return Clipperz.YUI.DomHelper;
},
*/
//-------------------------------------------------------------------------
/*
'domHelperAppend': function(aValue) {
Clipperz.YUI.DomHelper.append(this.element().dom, aValue);
},
*/
//-------------------------------------------------------------------------
'element': function() {
//MochiKit.Logging.logDebug(">>> BaseComponent.element");
return MochiKit.DOM.getElement(this._element);
},
'setElement': function(aNode) {
this._element = aNode;
},
//-----------------------------------------------------
'displayElement': function() {
return this.element();
},
//-------------------------------------------------------------------------
'renderInNode': function(aDomNode) {
this.setElement(aDomNode);
this.render();
},
'render': function() {
this.clear();
this.renderSelf();
this.renderComponents();
if (this.shouldShowTranslationHints()) {
this.renderTranslationHints();
}
if (this.shouldShowElementWhileRendering()) {
MochiKit.Style.showElement(this.displayElement());
};
this._isFullyRendered = true;
MochiKit.Iter.forEach(this.renderingWaitingQueue(), MochiKit.Base.methodcaller('callback'));
this.resetRenderingWaitingQueue();
},
'renderSelf': function() {
throw Clipperz.Base.exception.AbstractMethod;
},
'renderComponents': function() {
var slotName;
for (slotName in this.slotComponents()) {
this.slotComponents()[slotName].renderInNode(this.elementForSlotNamed(slotName));
}
},
//.........................................................................
'isFullyRendered': function () {
return this._isFullyRendered;
},
//.........................................................................
'renderingWaitingQueue': function () {
return this._renderingWaitingQueue;
},
'resetRenderingWaitingQueue': function () {
this._renderingWaitingQueue = [];
},
//.........................................................................
'waitUntilFullyRendered': function () {
var deferredResult;
if (this.isFullyRendered() == true) {
deferredResult = MochiKit.Async.succeed
} else {
deferredResult = new Clipperz.Async.Deferred("BaseComponent.waitUntilFullyRendered", {trace:false});
this.renderingWaitingQueue().push(deferredResult);
}
return deferredResult;
},
//-----------------------------------------------------
'renderTranslationHints': function () {
var translatableItems;
translatableItems = MochiKit.Selector.findChildElements(this.displayElement(), ['[stringID]']);
MochiKit.Iter.forEach(translatableItems, MochiKit.Base.method(this, 'enhanceTranslatableElement'))
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js
index b2761ea..716d851 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js
@@ -1,108 +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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
Clipperz.PM.UI.Common.Components.Button = function(args) {
args = args || {};
Clipperz.PM.UI.Common.Components.Button.superclass.constructor.apply(this, arguments);
this._element = args.element || Clipperz.Base.exception.raise('MandatoryParameter');
this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter');
this._isDefault = args.isDefault || false;
this.render();
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.Button, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Common.Components.Button component";
},
//-------------------------------------------------------------------------
'text': function () {
return this._text;
},
'isDefault': function () {
return this._isDefault;
},
//-------------------------------------------------------------------------
'renderSelf': function () {
this.append(this.element(), {tag:'div', id:this.getId('wrapper'), cls:'button_wrapper', children:[
{tag:'div', id:this.getId('bodyWrapper'), cls:'button_bodyWrapper', children:[
{tag:'div', id:this.getId('body'), cls:'button_body', children:[
{tag:'span', html:this.text()}
]},
{tag:'div', id:this.getId('footer'), cls:'button_footer'}
]}
]});
if (this.isDefault()) {
MochiKit.DOM.addElementClass(this.getId('wrapper'), 'default');
}
MochiKit.Signal.connect(this.getId('wrapper'), 'onmouseenter', this, 'handleOnMouseEnter');
MochiKit.Signal.connect(this.getId('wrapper'), 'onmouseleave', this, 'handleOnMouseLeave');
MochiKit.Signal.connect(this.getId('wrapper'), 'onmousedown', this, 'handleOnMouseDown');
MochiKit.Signal.connect(this.getId('wrapper'), 'onclick', this, 'handleOnClick');
},
//-------------------------------------------------------------------------
'handleOnMouseEnter': function (anEvent) {
MochiKit.DOM.addElementClass(this.getId('wrapper'), 'hover');
},
'handleOnMouseLeave': function (anEvent) {
MochiKit.DOM.removeElementClass(this.getId('wrapper'), 'hover');
MochiKit.DOM.removeElementClass(this.getId('wrapper'), 'clicked');
},
'handleOnMouseDown': function (anEvent) {
MochiKit.DOM.addElementClass(this.getId('wrapper'), 'clicked');
},
'handleOnClick': function (anEvent) {
MochiKit.Signal.signal(this, 'onclick', anEvent);
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ComponentSlot.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ComponentSlot.js
index 0c6e221..7f56c1e 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ComponentSlot.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ComponentSlot.js
@@ -1,64 +1,61 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
//#############################################################################
Clipperz.PM.UI.Common.Components.ComponentSlot = function(aComponent, aSlotName) {
this._component = aComponent;
this._slotName = aSlotName;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.ComponentSlot, Object, {
//-------------------------------------------------------------------------
'slotName': function() {
return this._slotName;
},
'component': function() {
return this._component;
},
//-------------------------------------------------------------------------
'setContent': function(aComponent) {
this.component().setComponentForSlotNamed(aComponent, this.slotName());
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/FaviconComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/FaviconComponent.js
index 4735f5c..2db2489 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/FaviconComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/FaviconComponent.js
@@ -1,91 +1,88 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
Clipperz.PM.UI.Common.Components.FaviconComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Common.Components.FaviconComponent.superclass.constructor.apply(this, arguments);
this.render();
this.setSrc(args.src);
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.FaviconComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Common.Components.FaviconComponent component";
},
//-------------------------------------------------------------------------
'src': function () {
return this.element().src;
},
'setSrc': function (aValue) {
this.element().src = (aValue || Clipperz.PM.Strings.getValue('defaultFaviconUrl'));
},
//-------------------------------------------------------------------------
'clear': function () {},
//-------------------------------------------------------------------------
'renderSelf': function () {
MochiKit.Signal.connect(this.element(), 'onerror', this, 'setDefaultFavicon');
MochiKit.Signal.connect(this.element(), 'onabort', this, 'setDefaultFavicon');
MochiKit.Signal.connect(this.element(), 'onload', this, 'handleOnLoad');
},
//-------------------------------------------------------------------------
'setDefaultFavicon': function (anEvent) {
MochiKit.Signal.disconnectAll(anEvent.src());
this.setSrc(null);
},
'handleOnLoad': function (anEvent) {
MochiKit.Signal.disconnectAll(anEvent.src());
//console.log("HANDLE ON LOAD", anEvent, anEvent.src().src);
if (anEvent.src().complete == false) {
this.setSrc(null);
}
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js
index 275bbed..2788b79 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js
@@ -1,164 +1,161 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar = function(args) {
args = args || {};
Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar.superclass.constructor.apply(this, arguments);
// this._openFromElement = args.openFromElement || null;
this._onOkCloseToElement = args.onOkCloseToElement || null;
this._onCancelCloseToElement = args.onCancelCloseToElement || null;
this._canCancelWhileProcessing = ((typeof(args.canCancelWhileProcessing) == 'undefined') ? true : args.canCancelWhileProcessing);
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar, Clipperz.PM.UI.Common.Components.SimpleMessagePanel, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar component";
},
//-------------------------------------------------------------------------
/*
'openFromElement': function () {
return this._openFromElement;
},
*/
//-------------------------------------------------------------------------
'onOkCloseToElement': function () {
return this._onOkCloseToElement;
},
'setOnOkCloseToElement': function (anElement) {
this._onOkCloseToElement = anElement;
},
//-------------------------------------------------------------------------
'onCancelCloseToElement': function () {
return this._onCancelCloseToElement;
},
'setOnCancelCloseToElement': function (anElement) {
this._onCancelCloseToElement = anElement;
},
//-------------------------------------------------------------------------
'canCancelWhileProcessing': function () {
return this._canCancelWhileProcessing;
},
//-------------------------------------------------------------------------
'deferredShowModal': function (someArgs, aResult) {
if (someArgs['onOkCloseToElement'] != null) {
this.setOnOkCloseToElement(someArgs['onOkCloseToElement']);
}
if (someArgs['onCancelCloseToElement'] != null) {
this.setOnCancelCloseToElement(someArgs['onCancelCloseToElement']);
}
Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar.superclass.deferredShowModal.apply(this, arguments);
return this.deferred();
},
//-------------------------------------------------------------------------
'showProgressBar': function () {
var progressBarElement;
this.getElement('container').innerHTML = '';
progressBarElement = this.append(this.getElement('container'), {tag:'div', cls:'progressBarWrapper'});
this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':progressBarElement}));
if (this.canCancelWhileProcessing() == true) {
this.setButtons([{text:"Cancel", result:'CANCEL'}]);
} else {
this.setButtons([]);
}
},
//-------------------------------------------------------------------------
'showFailure': function (someParameters) {
// this.setType('ALERT');
this.setType(someParameters['type']);
// this.setTitle("Login failed");
this.setTitle(someParameters['title']);
// this.setText("Wrong passphrase; the unlock has failed.");
this.setText(someParameters['text']);
// this.getElement('container').innerHTML = '';
this.getElement('container').innerHTML = '';
// this.setButtons([{text:"Close", result:'CANCEL', isDefault:true}]);
this.setButtons(someParameters['buttons']);
},
//-------------------------------------------------------------------------
'closeOk': function () {
//console.log("=== closeOk");
this.showProgressBar();
MochiKit.Async.callLater(0.5, MochiKit.Base.method(this.deferred(), 'callback'));
this._deferred = null;
},
'closeCancel': function () {
//console.log("=== closeCancel");
this.deferredHideModal({closeToElement:this.onCancelCloseToElement()});
this.deferred().cancel();
this._deferred = null;
},
//-------------------------------------------------------------------------
'deferredDone': function () {
//console.log("=== deferredDone");
return this.deferredHideModal({closeToElement:this.onOkCloseToElement()});
},
'deferredError': function (someParameters) {
//console.log("=== deferredError");
this.showFailure(someParameters);
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js
index c1b4f13..089e3d4 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js
@@ -1,140 +1,137 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay = function(anElement, args) {
args = args || {};
//MochiKit.Logging.logDebug(">>> new TextFormField");
Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay.superclass.constructor.call(this, anElement, args);
this._wrapperElement = null;
this._entropyElement = null;
this.render();
//MochiKit.Logging.logDebug("<<< new TextFormField");
return this;
};
Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay, Clipperz.PM.UI.Common.Components.BaseComponent, {
'toString': function() {
return "Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay";
},
//-----------------------------------------------------
'wrapperElement': function() {
return this._wrapperElement;
},
'setWrapperElement': function(aValue) {
this._wrapperElement = aValue;
},
//-----------------------------------------------------
'passwordElement': function() {
return this.element();
},
//-----------------------------------------------------
'entropyElement': function() {
return this._entropyElement;
},
'setEntropyElement': function(aValue) {
this._entropyElement = aValue;
},
//-----------------------------------------------------
'render': function() {
/*
MochiKit.Signal.disconnectAllTo(this);
this.setWrapperElement(this.element().wrap({tag:'div'}));
this.setEntropyElement(Clipperz.DOM.Helper.append(this.wrapperElement().dom, {tag:'div', cls:'passwordEntropy', html:"&nbsp;"}, true));
// this.setEntropyElement(Clipperz.DOM.Helper.insertBefore(this.element(), {tag:'div', cls:'passwordEntropy', html:"&nbsp;"}, true));
this.entropyElement().wrap({tag:'div', cls:'passwordEntropyWrapper'});
this.updateEntropyElement();
this.connect('onkeyup', 'updateEntropyElement');
this.connect('onchange', 'updateEntropyElement');
this.connect('onblur', 'updateEntropyElement');
*/
MochiKit.Signal.disconnectAllTo(this);
this.setEntropyElement(this.element());
this.entropyElement().addClass("entropyLevelIndicator");
this.updateEntropyElement();
this.connect('onkeyup', 'updateEntropyElement');
this.connect('onchange', 'updateEntropyElement');
this.connect('onblur', 'updateEntropyElement');
},
//-----------------------------------------------------
'computeEntropyForString': function(aValue) {
return Clipperz.PM.Crypto.passwordEntropy(aValue);
},
//-----------------------------------------------------
'updateEntropyElement': function(anEvent) {
/*
//MochiKit.Logging.logDebug(">>> PasswordEntropyDisplay.updateEntropyElement");
var maxExtent;
var entropy;
entropy = Math.min(128, this.computeEntropyForString(this.passwordElement().dom.value));
//MochiKit.Logging.logDebug("--- PasswordEntropyDisplay.updateEntropyElement - entropy: " + entropy);
this.entropyElement().setStyle('background-position', "0px " + -entropy + "px");
this.entropyElement().setWidth(this.passwordElement().getWidth() * (entropy/128));
//MochiKit.Logging.logDebug("<<< PasswordEntropyDisplay.updateEntropyElement");
*/
var entropy;
entropy = Math.min(128, this.computeEntropyForString(this.passwordElement().dom.value));
if (entropy == 0) {
this.entropyElement().setStyle('background-position', "0px 26px");
} else {
this.entropyElement().setStyle('background-position', "0px -" + (128-entropy)*26 + "px");
}
},
//-----------------------------------------------------
__syntaxFix__: '__syntaxFix__'
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ProgressBar.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ProgressBar.js
index 7e7f8fe..5991530 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ProgressBar.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ProgressBar.js
@@ -1,73 +1,70 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
Clipperz.PM.UI.Common.Components.ProgressBar = function(args) {
args = args || {};
Clipperz.PM.UI.Common.Components.ProgressBar.superclass.constructor.apply(this, arguments);
this._element = args.element || Clipperz.Base.exception.raise('MandatoryParameter');
this.renderSelf();
MochiKit.Signal.connect(Clipperz.PM.UI.Common.Controllers.ProgressBarController.defaultController, 'updateProgress', this, 'updateProgressHandler')
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.ProgressBar, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Common.Components.ProgressBar component";
},
//-------------------------------------------------------------------------
'renderSelf': function() {
this.append(this.element(), {tag:'div', cls:'loadingBar', children:[
{tag:'div', cls:'loadingBarProgressBox', children:[
{tag:'div', id:this.getId('loadingBarProgress'), cls:'loadingBarProgress'}
]}
]});
},
//-------------------------------------------------------------------------
'updateProgressHandler': function (anEvent) {
MochiKit.Style.setElementDimensions(this.getId('loadingBarProgress'), {w:anEvent}, '%');
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js
index b9bb850..1992154 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Common.Components.SimpleMessagePanel = function(args) {
args = args || {};
Clipperz.PM.UI.Common.Components.SimpleMessagePanel.superclass.constructor.apply(this, arguments);
this._title = args.title || Clipperz.Base.exception.raise('MandatoryParameter');
this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter');
this._type = args.type || Clipperz.Base.exception.raise('MandatoryParameter'); // ALERT, INFO, ERROR
this._buttons = args.buttons || Clipperz.Base.exception.raise('MandatoryParameter');
this._buttonComponents = [];
this._deferred = null;
this.renderModalMask();
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.SimpleMessagePanel, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Common.Components.SimpleMessagePanel component";
},
//-------------------------------------------------------------------------
'deferred': function() {
if (this._deferred == null) {
this._deferred = new Clipperz.Async.Deferred("SimpleMessagePanel.deferred", {trace:false});
}
return this._deferred;
},
//-------------------------------------------------------------------------
'title': function () {
return this._title;
},
'setTitle': function (aValue) {
this._title = aValue;
if (this.getElement('title') != null) {
this.getElement('title').innerHTML = aValue;
}
},
//-------------------------------------------------------------------------
'text': function () {
return this._text;
},
'setText': function (aValue) {
this._text = aValue;
if (this.getElement('text') != null) {
this.getElement('text').innerHTML = aValue;
}
},
//-------------------------------------------------------------------------
'type': function () {
return this._type;
},
'setType': function (aValue) {
if (this.getElement('icon') != null) {
MochiKit.DOM.removeElementClass(this.getId('icon'), this._type);
MochiKit.DOM.addElementClass(this.getId('icon'), aValue);
}
this._type = aValue;
},
//-------------------------------------------------------------------------
'buttons': function () {
return this._buttons;
},
'setButtons': function (someValues) {
MochiKit.Iter.forEach(this.buttonComponents(), MochiKit.Base.methodcaller('clear'));
this._buttons = someValues;
if (this.getElement('buttonArea') != null) {
this.renderButtons();
}
},
//.........................................................................
'buttonComponents': function () {
return this._buttonComponents;
},
//-------------------------------------------------------------------------
'renderSelf': function() {
this.append(this.element(), {tag:'div', cls:'SimpleMessagePanel', id:this.getId('panel'), children: [
{tag:'div', cls:'header', children:[]},
{tag:'div', cls:'body', children:[
{tag:'div', id:this.getId('icon'), cls:'img ' + this.type(), children:[{tag:'div'}]},
{tag:'h3', id:this.getId('title'), html:this.title()},
{tag:'p', id:this.getId('text'), html:this.text()},
{tag:'div', id:this.getId('container')},
{tag:'div', id:this.getId('buttonArea'), cls:'buttonArea', children:[]}
]},
{tag:'div', cls:'footer', children:[]}
]});
MochiKit.Signal.connect(this.getId('panel'), 'onkeydown', this, 'keyDownHandler');
this.renderButtons();
},
//-------------------------------------------------------------------------
'renderButtons': function () {
this.getElement('buttonArea').innerHTML = '';
MochiKit.Base.map(MochiKit.Base.bind(function (aButton) {
var buttonElement;
var buttonComponent;
// element = this.append(this.getElement('buttonArea'), {tag:'div', cls:'button' + (aButton['isDefault'] === true ? ' default' : ''), children:[
// {tag:'a', href:'#'/*, id:this.getId('buttonLink')*/, html:aButton['text']}
// ]});
buttonElement = this.append(this.getElement('buttonArea'), {tag:'div'});
buttonComponent = new Clipperz.PM.UI.Common.Components.Button({'element':buttonElement, 'text':aButton['text'], 'isDefault':aButton['isDefault']});
this.buttonComponents().push(buttonComponent);
MochiKit.Signal.connect(buttonComponent, 'onclick', MochiKit.Base.method(this, 'buttonEventHandler', aButton));
}, this), MochiKit.Iter.reversed(this.buttons()));
},
//-------------------------------------------------------------------------
'displayElement': function() {
return this.getElement('panel');
},
//-------------------------------------------------------------------------
'closeOk': function () {
this.deferred().callback();
this._deferred = null;
},
'closeCancel': function () {
this.deferred().cancel();
this._deferred = null;
},
'closeError': function () {
this.deferred().errback();
this._deferred = null;
},
//-------------------------------------------------------------------------
'buttonEventHandler': function(aButton, anEvent) {
anEvent.preventDefault();
// MochiKit.Signal.signal(this, 'cancelEvent');
switch (aButton['result']) {
case 'OK':
//console.log("==> OK");
this.closeOk();
break;
case 'CANCEL':
//console.log("==> CANCEL");
this.closeCancel();
break;
default:
//console.log("==> ????");
this.closeError();
break;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js
index afb3bf9..936514a 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js
@@ -1,69 +1,66 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
Clipperz.PM.UI.Common.Components.TabPanelComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Common.Components.TabPanelComponent.superclass.constructor.call(this, args);
this._tabPanelController = null;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.TabPanelComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
'toString': function () {
return "Clipperz.PM.UI.Common.Components.TabPanelComponent component";
},
//-------------------------------------------------------------------------
'tabPanelControllerConfiguration': function() {
return this._tabPanelControllerConfiguration;
},
'tabPanelController': function() {
if (this._tabPanelController == null) {
this._tabPanelController = new Clipperz.PM.UI.Common.Controllers.TabPanelController({component:this, configuration:this.tabPanelControllerConfiguration()});
}
return this._tabPanelController;
},
'initiallySelectedTab': function() {
return this._initiallySelectedTab;
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Tooltip.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Tooltip.js
index 7507b86..095e8ed 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Tooltip.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Tooltip.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
Clipperz.PM.UI.Common.Components.Tooltip = function(args) {
args = args || {};
Clipperz.PM.UI.Common.Components.Tooltip.superclass.constructor.apply(this, arguments);
this._element = args.element || Clipperz.Base.exception.raise('MandatoryParameter');
this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter');
this._position = args.position || 'BELOW'; // 'BELOW', 'ABOVE', 'LEFT', 'RIGHT'
this._boxDimensions = null;
this._enabled = (typeof(args.enabled) == 'undefined' ? true : args.enabled);
this._isVisible = false;
this.renderSelf();
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.Tooltip, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Common.Components.Tooltip component";
},
//-------------------------------------------------------------------------
'text': function () {
return this._text;
},
'setText': function (aValue) {
this._text = aValue;
},
//-------------------------------------------------------------------------
'position': function () {
return this._position;
},
'setPosition': function (aValue) {
this._position = aValue;
},
//-------------------------------------------------------------------------
'enabled': function () {
return this._enabled;
},
'setIsEnabled': function (aValue) {
this._enabled = aValue;
},
//-------------------------------------------------------------------------
'isVisible': function () {
return this._isVisible;
},
'setIsVisible': function (aValue) {
this._isVisible = aValue;
},
//-------------------------------------------------------------------------
'renderSelf': function() {
// this.append(this.element(), {tag:'div', id:this.getId('tooltip'), cls:'tooltip ' + this.position(), children:[
// this.append(MochiKit.DOM.currentDocument().body, {tag:'div', id:this.getId('tooltip'), cls:'tooltip ' + this.position(), children:[
this.append(MochiKit.DOM.getElement('Clipperz_PM_UI_Common_Components_Tooltip_wrapperNode'), {tag:'div', id:this.getId('tooltip'), cls:'tooltip ' + this.position(), children:[
{tag:'div', id:this.getId('body'), cls:'tooltip_body', children:[
{tag:'div', cls:'tooltip_text', children:[
{tag:'span', html:this.text()}
]},
{tag:'div', id:this.getId('footer'), cls:'tooltip_footer'}
]},
{tag:'div', id:this.getId('arrow'), cls:'tooltip_arrow'}
]});
this._boxDimensions = MochiKit.Style.getElementDimensions(this.getId('body'));
// this._boxDimensions.h += MochiKit.Style.getElementDimensions(this.getId('footer')).h;
MochiKit.Style.hideElement(this.displayElement());
MochiKit.Signal.connect(this.element(), 'onmouseenter', this, 'show');
MochiKit.Signal.connect(this.element(), 'onmouseleave', this, 'hide');
},
//-----------------------------------------------------
'displayElement': function() {
return this.getElement('tooltip');
},
//-------------------------------------------------------------------------
'boxDimensions': function () {
return this._boxDimensions;
},
//-------------------------------------------------------------------------
'show': function () {
var elementSizeAndPosition;
var arrowPosition;
var bodyPosition;
if (this.isVisible() == false) {
arrowPosition = {};
bodyPosition = {};
this.setIsVisible(true);
elementSizeAndPosition = Clipperz.Style.getSizeAndPosition(this.element());
//console.log("ELEMENT SIZE AND POSITION", Clipperz.Base.serializeJSON(elementSizeAndPosition));
//console.log("BOX DIMENSIONS", Clipperz.Base.serializeJSON(this.boxDimensions()));
switch (this.position()) {
case 'ABOVE':
//console.log("ABOVE");
MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:36, h:13}, 'px');
bodyPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - this.boxDimensions().w/2);
bodyPosition.y = elementSizeAndPosition.position.y - this.boxDimensions().h - 13;
arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2);
arrowPosition.y = elementSizeAndPosition.position.y - 13;
break;
case 'BELOW':
//console.log("BELOW");
MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:36, h:13}, 'px');
bodyPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - this.boxDimensions().w/2);
bodyPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h + 13;
arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2);
arrowPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h;
break;
case 'LEFT':
//console.log("LEFT");
MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:13, h:36}, 'px');
bodyPosition.x = elementSizeAndPosition.position.x - this.boxDimensions().w - 13;
bodyPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - this.boxDimensions().h/2);
arrowPosition.x = elementSizeAndPosition.position.x -13;
arrowPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - 36/2);
break;
case 'RIGHT':
//console.log("RIGHT");
MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:13, h:36}, 'px');
bodyPosition.x = elementSizeAndPosition.position.x + elementSizeAndPosition.dimensions.w + 13;
bodyPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - this.boxDimensions().h/2);
arrowPosition.x = elementSizeAndPosition.position.x + elementSizeAndPosition.dimensions.w;
arrowPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - 36/2);
break;
}
//console.log("X: " + bodyPosition.x + ", Y: " + bodyPosition.y);
MochiKit.Style.setElementPosition(this.getId('body'), bodyPosition);
MochiKit.Style.setElementPosition(this.getId('arrow'), arrowPosition);
MochiKit.Visual.appear(this.displayElement(), {duration:0.4});
}
},
'hide': function () {
if (this.isVisible() == true) {
MochiKit.Visual.fade(this.displayElement(), {duration:0.4});
this.setIsVisible(false);
}
},
//-------------------------------------------------------------------------
/*
'shouldRemoveElementWhenClearningUp': function () {
return false;
},
*/
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
Clipperz.PM.UI.Common.Components.Tooltip.initTooltips = function () {
Clipperz.DOM.Helper.insertBefore(MochiKit.DOM.currentDocument().body.childNodes[0], {tag:'div', id:'Clipperz_PM_UI_Common_Components_Tooltip_wrapperNode'});
}
MochiKit.DOM.addLoadEvent(Clipperz.PM.UI.Common.Components.Tooltip.initTooltips);
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js
index c31969e..c41fc7c 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js
@@ -1,170 +1,167 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
Clipperz.PM.UI.Common.Components.TranslatorWidget = function(args) {
Clipperz.log(">>> TranslatorWidget.new");
args = args || {};
Clipperz.PM.UI.Common.Components.TranslatorWidget.superclass.constructor.apply(this, arguments);
// this._element = args.element || Clipperz.Base.exception.raise('MandatoryParameter');
// this._stringID = args.stringID || MochiKit.DOM.getNodeAttribute(this.element(), 'stringID') || Clipperz.Base.exception.raise('MandatoryParameter');
// MochiKit.Signal.connect(this.element(), 'onmouseenter', this, 'show');
// MochiKit.Signal.connect(this.element(), 'onmouseleave', this, 'hide');
Clipperz.log("<<< TranslatorWidget.new");
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.TranslatorWidget, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Common.Components.TranslatorWidget component";
},
//-------------------------------------------------------------------------
/*
'renderSelf': function() {
this.append(this.element(), {tag:'div', id:this.getId('tooltip'), cls:'tooltip ' + this.position(), children:[
{tag:'div', id:this.getId('body'), cls:'tooltip_body', children:[
{tag:'div', cls:'tooltip_text', children:[
{tag:'span', html:this.text()}
]},
{tag:'div', id:this.getId('footer'), cls:'tooltip_footer'}
]},
{tag:'div', id:this.getId('arrow'), cls:'tooltip_arrow'}
]});
this._boxDimensions = MochiKit.Style.getElementDimensions(this.getId('body'));
// this._boxDimensions.h += MochiKit.Style.getElementDimensions(this.getId('footer')).h;
MochiKit.Style.hideElement(this.displayElement());
MochiKit.Signal.connect(this.element(), 'onmouseenter', this, 'show');
MochiKit.Signal.connect(this.element(), 'onmouseleave', this, 'hide');
},
*/
//-----------------------------------------------------
/*
'displayElement': function() {
return this.getElement('tooltip');
},
*/
//-------------------------------------------------------------------------
/*
'boxDimensions': function () {
return this._boxDimensions;
},
*/
//-------------------------------------------------------------------------
'show': function (anElement, aStringID) {
Clipperz.log(">>> Clipperz.PM.UI.Common.Components.TranslatorWidget.show: " + aStringID);
/*
var elementSizeAndPosition;
var arrowPosition;
var bodyPosition;
arrowPosition = {};
bodyPosition = {};
elementSizeAndPosition = Clipperz.Style.getSizeAndPosition(this.element());
switch (this.position()) {
case 'ABOVE':
MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:36, h:13}, 'px');
bodyPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - this.boxDimensions().w/2);
bodyPosition.y = elementSizeAndPosition.position.y - this.boxDimensions().h - 13;
arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2);
arrowPosition.y = elementSizeAndPosition.position.y - 13;
break;
case 'BELOW':
MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:36, h:13}, 'px');
bodyPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - this.boxDimensions().w/2);
bodyPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h + 13;
arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2);
arrowPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h;
break;
case 'LEFT':
MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:13, h:36}, 'px');
bodyPosition.x = elementSizeAndPosition.position.x - this.boxDimensions().w - 13;
bodyPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - this.boxDimensions().h/2);
arrowPosition.x = elementSizeAndPosition.position.x -13;
arrowPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - 36/2);
break;
case 'RIGHT':
MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:13, h:36}, 'px');
break;
}
// MochiKit.Style.setElementPosition(this.getId('body'), bodyPosition);
MochiKit.Style.setElementPosition(this.getId('body'), bodyPosition);
MochiKit.Style.setElementPosition(this.getId('arrow'), arrowPosition);
MochiKit.Visual.appear(this.displayElement(), {duration:0.4});
*/
},
//-------------------------------------------------------------------------
'hide': function () {
Clipperz.log("<<< Clipperz.PM.UI.Common.Components.TranslatorWidget.hide");
// MochiKit.Visual.fade(this.displayElement(), {duration:0.4});
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
//#############################################################################
Clipperz.PM.UI.Common.Components.TranslatorWidget._widget = null;
Clipperz.PM.UI.Common.Components.TranslatorWidget.widget = function () {
if (Clipperz.PM.UI.Common.Components.TranslatorWidget._widget == null) {
Clipperz.PM.UI.Common.Components.TranslatorWidget._widget = new Clipperz.PM.UI.Common.Components.TranslatorWidget();
}
return Clipperz.PM.UI.Common.Components.TranslatorWidget._widget;
}
Clipperz.PM.UI.Common.Components.TranslatorWidget.show = function (anElement, aStringID) {
Clipperz.PM.UI.Common.Components.TranslatorWidget.widget().show(anElement, aStringID);
}
Clipperz.PM.UI.Common.Components.TranslatorWidget.hide = function () {
Clipperz.PM.UI.Common.Components.TranslatorWidget.widget().hide();
}
//#############################################################################
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js
index e534435..5fd10f9 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Common.Controllers');
Clipperz.PM.UI.Common.Controllers.DirectLoginRunner = function(args) {
this._directLogin = args['directLogin'] || Clipperz.Base.exception.raise('MandatoryParameter');
this._target = Clipperz.PM.Crypto.randomKey();
return this;
}
MochiKit.Base.update(Clipperz.PM.UI.Common.Controllers.DirectLoginRunner.prototype, {
'toString': function() {
return "Clipperz.PM.UI.Common.Controllers.DirectLoginRunner";
},
//-----------------------------------------------------------------------------
'directLogin': function () {
return this._directLogin;
},
//-----------------------------------------------------------------------------
'target': function () {
return this._target;
},
//=============================================================================
'setWindowTitle': function (aWindow, aTitle) {
aWindow.document.title = aTitle;
},
'setWindowBody': function (aWindow, anHTML) {
aWindow.document.body.innerHTML = anHTML;
},
//=============================================================================
'initialWindowSetup': function (aWindow) {
this.setWindowTitle(aWindow, "Loading Clipperz Direct Login");
this.setWindowBody (aWindow, MochiKit.DOM.toHTML(MochiKit.DOM.H3("Loading Clipperz Direct Login ...")));
},
//-----------------------------------------------------------------------------
'updateWindowWithDirectLoginLabel': function (aWindow, aLabel) {
var titleText;
var bodyText;
titleText = "Loading '__label__' Direct Login".replace(/__label__/, aLabel)
bodyText = "Loading '__label__' Direct Login... ".replace(/__label__/, aLabel)
this.setWindowTitle(aWindow, titleText);
this.setWindowBody (aWindow, MochiKit.DOM.toHTML(MochiKit.DOM.H3(bodyText)));
},
//-----------------------------------------------------------------------------
'updateWindowWithHTMLContent': function (aWindow, anHtml) {
this.setWindowBody(aWindow, anHtml);
},
//=============================================================================
'submitLoginForm': function(aWindow, aSubmitFunction) {
MochiKit.DOM.withWindow(aWindow, MochiKit.Base.bind(function () {
var formElement;
var submitButtons;
formElement = MochiKit.DOM.getElement('directLoginForm');
submitButtons = MochiKit.Base.filter(function(anInputElement) {
return ((anInputElement.tagName.toLowerCase() == 'input') && (anInputElement.getAttribute('type').toLowerCase() == 'submit'));
}, formElement.elements);
if (submitButtons.length == 0) {
if (typeof(formElement.submit) == 'function') {
formElement.submit();
} else {
aSubmitFunction.apply(formElement);
}
/*
var formSubmitFunction;
formSubmitFunction = MochiKit.Base.method(formElement, 'submit');
if (Clipperz_IEisBroken == true) {
formElement.submit();
} else {
formSubmitFunction();
}
*/
} else {
submitButtons[0].click();
}
}, this));
},
//-------------------------------------------------------------------------
'runSubmitFormDirectLogin': function (aWindow, someAttributes) {
var html;
var formElement;
var submitFunction;
formElement = MochiKit.DOM.FORM({
'id':'directLoginForm',
'method':someAttributes['formAttributes']['method'],
'action':someAttributes['formAttributes']['action']
});
submitFunction = formElement.submit;
MochiKit.DOM.appendChildNodes(formElement, MochiKit.Base.map(function (anInputAttributes) {
return MochiKit.DOM.INPUT({'type':'hidden', 'name':anInputAttributes[0], 'value':anInputAttributes[1]});
}, MochiKit.Base.items(someAttributes['inputValues'])));
html = '';
html += '<h3>Loading ' + someAttributes['label'] + ' ...</h3>';
html += MochiKit.DOM.appendChildNodes(MochiKit.DOM.DIV(), MochiKit.DOM.appendChildNodes(MochiKit.DOM.DIV({style:'display:none; visibility:hidden;'}), formElement)).innerHTML;
this.updateWindowWithHTMLContent(aWindow, html);
this.submitLoginForm(aWindow, submitFunction);
},
//-------------------------------------------------------------------------
'runHttpAuthDirectLogin': function(aWindow, someAttributes) {
var completeUrl;
var url;
//console.log("runHttpAuthDirectLogin", someAttributes);
url = someAttributes['inputValues']['url'];
if (/^https?\:\/\//.test(url) == false) {
url = 'http://' + url;
}
if (Clipperz_IEisBroken === true) {
completeUrl = url;
} else {
var username;
var password;
username = someAttributes['inputValues']['username'];
password = someAttributes['inputValues']['password'];
/(^https?\:\/\/)?(.*)/.test(url);
completeUrl = RegExp.$1 + username + ':' + password + '@' + RegExp.$2;
}
window.open(completeUrl, this.target());
},
//=============================================================================
'runDirectLogin': function (aWindow) {
var deferredResult;
//console.log(">>> runDirectLogin");
deferredResult = new Clipperz.Async.Deferred("DirectLoginRunner.openDirectLogin", {trace:false});
deferredResult.addMethod(this, 'initialWindowSetup', aWindow);
deferredResult.addMethod(this.directLogin(), 'label');
deferredResult.addMethod(this, 'updateWindowWithDirectLoginLabel', aWindow);
deferredResult.collectResults({
'type': MochiKit.Base.method(this.directLogin(), 'type'),
'label': MochiKit.Base.method(this.directLogin(), 'label'),
'formAttributes': MochiKit.Base.method(this.directLogin(), 'formAttributes'),
'inputValues': MochiKit.Base.method(this.directLogin(), 'inputValues')
});
//deferredResult.addCallback(function (aValue) { console.log("SOME ATTRIBUTES", aValue); return aValue; });
deferredResult.addCallback(MochiKit.Base.bind(function (someAttributes) {
//console.log("SOME ATTRIBUTES", someAttributes);
switch (someAttributes['type']) {
case 'http_auth':
this.runHttpAuthDirectLogin(aWindow, someAttributes);
break;
case 'simple_url':
this.runSimpleUrlDirectLogin(aWindow, someAttributes);
break;
default:
this.runSubmitFormDirectLogin(aWindow, someAttributes);
break;
}
}, this));
deferredResult.callback();
//console.log("<<< runDirectLogin");
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js
index a4fa400..41fe17f 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js
@@ -1,143 +1,140 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Common.Controllers');
Clipperz.PM.UI.Common.Controllers.ProgressBarController = function(args) {
args = args || {};
this._numberOfSteps = 0;
this._currentStep = 0;
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'initProgress', this, 'initProgressHandle');
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'updateProgress', this, 'updateProgressHandle');
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'advanceProgress', this, 'advanceProgressHandle');
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'progressDone', this, 'progressDoneHandle');
return this;
}
MochiKit.Base.update(Clipperz.PM.UI.Common.Controllers.ProgressBarController.prototype, {
'toString': function() {
return "Clipperz.PM.UI.Common.Controllers.ProgressBarController";
},
//-----------------------------------------------------------------------------
'numberOfSteps': function() {
return this._numberOfSteps;
},
'setNumberOfSteps': function (aValue) {
this._numberOfSteps = aValue;
},
'updateNumberOfSteps': function (aValue) {
this._numberOfSteps += aValue;
},
//-----------------------------------------------------------------------------
'currentStep': function() {
return this._currentStep;
},
'advanceCurrentStep': function () {
this._currentStep ++;
},
//-----------------------------------------------------------------------------
'completedPercentage': function () {
var result;
//Clipperz.log(">>> completedPercentage" + this.currentStep() + "/" + this.numberOfSteps(), this.currentStep() / this.numberOfSteps());
if (this.numberOfSteps() == 0) {
result = 0;
} else {
result = (Math.min(100, 100 * (this.currentStep() / this.numberOfSteps())));
}
//Clipperz.log("<<< completedPercentage", result);
return result;
},
//-----------------------------------------------------------------------------
'resetStatus': function () {
this._numberOfSteps = 0;
this._currentStep = 0;
},
//-----------------------------------------------------------------------------
'updateProgress': function () {
//Clipperz.log(">>> updateProgress: " + this.completedPercentage() + "%");
MochiKit.Signal.signal(this, 'updateProgress', this.completedPercentage());
},
//=============================================================================
'initProgressHandle': function (anEvent) {
//Clipperz.log(">>> initProgressHandle - steps: " + (anEvent != null ? anEvent['steps'] : 0));
this.resetStatus();
if (anEvent != null) {
this.setNumberOfSteps(anEvent['steps']);
}
MochiKit.Signal.signal(this, 'initProgress');
this.updateProgress();
},
//.............................................................................
'updateProgressHandle': function (anEvent) {
this.updateNumberOfSteps(anEvent['extraSteps']);
//Clipperz.log("=== updateProgressHandle - steps: " + this.numberOfSteps() + " (extra " + anEvent['extraSteps'] + ")");
this.updateProgress();
},
//.............................................................................
'advanceProgressHandle': function (anEvent) {
this.advanceCurrentStep();
//Clipperz.log("--- advanceProgressHandle: " + this.currentStep() + "/" + this.numberOfSteps());
this.updateProgress();
},
//.............................................................................
'progressDoneHandle': function (anEvent) {
//Clipperz.log("<<< progressDoneHandle: " + this.currentStep() + "/" + this.numberOfSteps());
this.resetStatus();
MochiKit.Signal.signal(this, 'progressDone');
},
//=============================================================================
__syntaxFix__: "syntax fix"
});
Clipperz.PM.UI.Common.Controllers.ProgressBarController.defaultController = new Clipperz.PM.UI.Common.Controllers.ProgressBarController();
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js
index fbc5929..341fde9 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js
@@ -1,188 +1,185 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Common.Controllers');
Clipperz.PM.UI.Common.Controllers.TabPanelController = function(args) {
args = args || {};
this._component = args.component;
this._configuration = args.configuration;
this._isEnabled = args.enabled || true;
this._selectedTab = null;
return this;
}
MochiKit.Base.update(Clipperz.PM.UI.Common.Controllers.TabPanelController.prototype, {
'toString': function() {
return "Clipperz.PM.UI.Common.Controllers.TabPanelController";
},
//-----------------------------------------------------------------------------
'component': function() {
return this._component;
},
'configuration': function() {
return this._configuration;
},
//-----------------------------------------------------------------------------
'getElement': function(anElementID) {
return this.component().getElement(anElementID);
},
'tabForTabElement': function(anElement) {
var result;
for (result in this.configuration()) {
if (this.getElement(this.configuration()[result]['tab']) == anElement) {
break;
}
}
return result;
},
//-----------------------------------------------------------------------------
'setupTab': function(aConfiguration) {
var tabElement;
tabElement = this.getElement(aConfiguration['tab']);
MochiKit.DOM.removeElementClass(tabElement, 'selected');
MochiKit.Signal.connect(tabElement, 'onclick', this, 'handleTabClick')
},
'setupPanel': function(aConfiguration) {
this.hidePanel(aConfiguration['panel']);
},
'setup': function(args) {
args = args || {};
MochiKit.Base.map(MochiKit.Base.method(this, 'setupTab'), MochiKit.Base.values(this.configuration()));
MochiKit.Base.map(MochiKit.Base.method(this, 'setupPanel'), MochiKit.Base.values(this.configuration()));
this.selectTab(args.selected);
},
//-----------------------------------------------------------------------------
'hidePanel': function(aPanel) {
MochiKit.DOM.removeElementClass(this.getElement(aPanel), 'selected');
},
'selectTab': function(aTab) {
if ((aTab != this.selectedTab()) && (this.isEnabled())) {
if (this.selectedTab() != null) {
MochiKit.DOM.removeElementClass(this.getElement(this.configuration()[this.selectedTab()]['tab']), 'selected');
MochiKit.DOM.removeElementClass(this.getElement(this.configuration()[this.selectedTab()]['panel']), 'selected');
}
if (aTab != null) {
MochiKit.DOM.addElementClass(this.getElement(this.configuration()[aTab]['tab']), 'selected');
MochiKit.DOM.addElementClass(this.getElement(this.configuration()[aTab]['panel']), 'selected');
}
this.setSelectedTab(aTab);
MochiKit.Signal.signal(this, 'tabSelected', aTab);
}
},
//-----------------------------------------------------------------------------
'selectedTab': function() {
return this._selectedTab;
},
'setSelectedTab': function(aTab) {
this._selectedTab = aTab;
},
//-----------------------------------------------------------------------------
'selectedTabElement': function() {
var result;
if (this.selectedTab() != null) {
result = this.getElement(this.configuration()[this.selectedTab()]['tab']);
} else {
result = null;
}
return null;
},
'selectedTabPanelElement': function() {
var result;
if (this.selectedTab() != null) {
result = this.getElement(this.configuration()[this.selectedTab()]['panel']);
} else {
result = null;
}
return result;
},
//-----------------------------------------------------------------------------
'handleTabClick': function(anEvent) {
this.selectTab(this.tabForTabElement(anEvent.src()));
anEvent.preventDefault();
},
//=============================================================================
'isEnabled': function () {
return this._isEnabled;
},
'enable': function () {
this._isEnabled = true;
MochiKit.Base.map(MochiKit.Base.bind(function (aTabComponentID) {
MochiKit.DOM.removeElementClass(this.getElement(this.configuration()[aTabComponentID]['tab']), 'disabled');
}, this), MochiKit.Base.keys(this.configuration()));
},
'disable': function () {
this._isEnabled = false;
MochiKit.Base.map(MochiKit.Base.bind(function (aTabComponentID) {
MochiKit.DOM.addElementClass(this.getElement(this.configuration()[aTabComponentID]['tab']), 'disabled');
}, this), MochiKit.Base.keys(this.configuration()));
},
//=============================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/WizardController.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/WizardController.js
index 868cea6..ef38bc6 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/WizardController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/WizardController.js
@@ -1,31 +1,28 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
// Still empty, but here it should be reasonable to factor in code duplicated between
// - DirectLoginWizardController
// - NewUserWizardController \ No newline at end of file
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Compact/MainController.js b/frontend/gamma/js/Clipperz/PM/UI/Compact/MainController.js
index 22258f6..ea987cd 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Compact/MainController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Compact/MainController.js
@@ -1,59 +1,56 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Compact');
Clipperz.PM.UI.Compact.MainController = function() {
// this._loginPanel = null;
// this._user = null;
//
// this._isRunningCompact = false;
//
// Clipperz.NotificationCenter.register(null, 'userConnected', this, 'userConnectedCallback');
// Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler');
//
// Clipperz.NotificationCenter.register(null, 'EXCEPTION', this, 'reportException');
return this;
}
MochiKit.Base.update(Clipperz.PM.UI.Compact.MainController.prototype, {
'toString': function() {
return "Clipperz.PM.UI.Compact.MainController";
},
//-----------------------------------------------------------------------------
'run': function(shouldShowRegistrationForm) {
MochiKit.Logging.logDebug("running " + this.toString());
},
//-----------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
}); \ No newline at end of file
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js
index 4378b19..ee6d7a3 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js
@@ -1,148 +1,145 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.AccountPanel = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.AccountPanel.superclass.constructor.apply(this, arguments);
// this._initiallySelectedTab = args.selected || 'ACCOUNT';
this._initiallySelectedTab = args.selected || 'PASSPHRASE';
this._tabPanelControllerConfiguration = {
// 'ACCOUNT': {
// tab: 'accountTab',
// panel: 'accountPanel'
// },
'PASSPHRASE': {
tab: 'passphraseTab',
panel: 'passphrasePanel'
},
'PREFERENCES': {
tab: 'preferencesTab',
panel: 'preferencesPanel'
},
'LOGIN_HISTORY': {
tab: 'loginHistoryTab',
panel: 'loginHistoryPanel'
}
};
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.AccountPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.AccountPanel component";
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
//Clipperz.log("AccountPanel.renderSelf element", this.element());
this.append(this.element(), [
{tag:'div', cls:'header', children:[
{tag:'div', cls:'subPanelTabs', children:[
{tag:'ul', children:[
// {tag:'li', id:this.getId('accountTab'), children:[{tag:'a', href:'#', html:'Account'}], cls:'first'},
{tag:'li', id:this.getId('passphraseTab'), children:[{tag:'a', href:'#', html:'Passphrase'}], cls:'first'},
{tag:'li', id:this.getId('preferencesTab'), children:[{tag:'a', href:'#', html:'Preferences'}]},
{tag:'li', id:this.getId('loginHistoryTab'), children:[{tag:'a', href:'#', html:'Login history'}]}
]}
]}
]},
{tag:'div', cls:'body', children:[
{tag:'div', cls:'accountPanel', children:[
{tag:'div', cls:'subPanelContent', children:[
{tag:'ul', children:[
// {tag:'li', id:this.getId('accountPanel'), children:[
// {tag:'h3', html:"-- Account --"}
// ]},
{tag:'li', id:this.getId('passphrasePanel'), children:[
{tag:'h3', cls:'changePassphrase', html:"Change passphrase"},
{tag:'form', id:this.getId('changePassphrase'), cls:'changePassphrase', children:[
{tag:'div', cls:'currentCredentials', children:[
{tag:'div', cls:'field username', children:[
{tag:'label', html:"username", 'for':this.getId('currentUsername')},
{tag:'input', id:this.getId('currentUsername')}
]},
{tag:'div', cls:'field passphrase', children:[
{tag:'label', html:"passphrase", 'for':this.getId('currentPassphrase')},
{tag:'input', id:this.getId('currentPassphrase')}
]}
]},
{tag:'div', cls:'newPassphrase', children:[
{tag:'div', cls:'field', children:[
{tag:'label', html:"new passphrase", 'for':this.getId('newPassphrase')},
{tag:'input', id:this.getId('newPassphrase')}
]},
{tag:'div', cls:'field', children:[
{tag:'label', html:"re-new passphrase", 'for':this.getId('reNewPassphrase')},
{tag:'input', id:this.getId('reNewPassphrase')}
]}
]},
{tag:'div', cls:'confirm', children:[
{tag:'input', type:'checkbox', id:this.getId('confirm')},
{tag:'label', html:"I understand that Clipperz will not be able to recover a lost passphrase", 'for':this.getId('confirm')}
]}
]},
{tag:'div', cls:'clear'},
{tag:'div', cls:'confirmButton', id:this.getId('confirmationButton'), children:[
{tag:'span', html:"change passphrase"}
]},
{tag:'h3', cls:'manageOTP', html:"Manage One-Time Passphrases"},
{}
]},
{tag:'li', id:this.getId('preferencesPanel'), children:[
{tag:'h3', html:"-- Preferences --"}
]},
{tag:'li', id:this.getId('loginHistoryPanel'), children:[
{tag:'h3', html:"-- Login History --"}
]}
]}
]}
]}
]},
{tag:'div', cls:'footer'}
]);
this.tabPanelController().setup({selected:this.initiallySelectedTab()});
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AppPage.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AppPage.js
index 67247df..3b3c8b4 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AppPage.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AppPage.js
@@ -1,78 +1,75 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.AppPage = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.AppPage.superclass.constructor.call(this, args);
this._element = args.element || null;
this._slots = {
'cardGrid' : this.getId('cardGrid'),
// 'directLoginGrid' : this.getId('directLoginGrid'),
'accountPanel': this.getId('accountPanel'),
'dataPanel': this.getId('dataPanel'),
'toolsPanel': this.getId('toolsPanel'),
'userInfoBox': this.getId('userInfoBox'),
'tabSidePanel': this.getId('tabSidePanel')
};
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.AppPage, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.AppPage component";
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
this.append(this.element(), {tag:'div', id:this.getId('userInfoBox'), cls:'userInfoBox'});
this.append(this.element(), {tag:'div', id:this.getId('sidePanels'), cls:'sidePanels'});
this.append(this.getId('sidePanels'), {tag:'div', id:this.getId('tabSidePanel'), cls:'tabSidePanel', children:[]});
this.append(this.element(), {tag:'div', id:this.getId('mainPanels'), cls:'mainPanels'});
this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('cardGrid'), cls:'gridComponent cardGrid'});
// this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('directLoginGrid'), cls:'gridComponent directLoginGrid'});
this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('accountPanel'), cls:'otherPanel'});
this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('dataPanel'), cls:'otherPanel'});
this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('toolsPanel'), cls:'otherPanel'});
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js
index 42a6052..1835ca9 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js
@@ -1,109 +1,106 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.BookmarkletComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.BookmarkletComponent.superclass.constructor.apply(this, arguments);
MochiKit.Signal.connect(Clipperz.PM.Strings.Languages, 'switchLanguage', this, 'updateBookmarkletURLs');
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.BookmarkletComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.BookmarkletComponent component";
},
//-------------------------------------------------------------------------
'renderSelf': function() {
// var bookmarkletUrl;
//
// if (Clipperz_IEisBroken == true) {
// bookmarkletUrl = bookmarklet_ie;
// } else {
/// bookmarkletUrl = bookmarklet;
// bookmarkletUrl = Clipperz.PM.Strings['bookmarklet'];
// }
this.append(this.element(), {tag:'div', cls:'bookmarklet', children: [
{tag:'div', id:this.getId('linkBlock'), cls:'bookmarklet_link', children:[
// {tag:'a', id:this.getId('link'), href:bookmarkletUrl, children:[
{tag:'a', id:this.getId('link'), href:'#', children:[
{tag:'div', cls:'icon'},
{tag:'div', cls:'text', children:[
{tag:'span', html:"add to Clipperz"}
]}
]}
]}
]});
new Clipperz.PM.UI.Common.Components.Tooltip({
element: this.getElement('linkBlock'),
text: "Drag and drop the \"add to Clipperz\" link above to the bookmark bar.",
position: 'BELOW'
});
MochiKit.Signal.connect(this.getId('link'), 'onclick', this, 'handleOnclick');
this.updateBookmarkletURLs();
},
//-------------------------------------------------------------------------
'handleOnclick': function (anEvent) {
anEvent.preventDefault();
Clipperz.log("BOOKMARKLET CLICK");
},
//-------------------------------------------------------------------------
'updateBookmarkletURLs': function () {
var bookmarkletUrl;
if (Clipperz_IEisBroken == true) {
bookmarkletUrl = bookmarklet_ie;
} else {
// bookmarkletUrl = bookmarklet;
bookmarkletUrl = Clipperz.PM.Strings.getValue('bookmarklet');
}
this.getElement('link').href = bookmarkletUrl;
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js
index e3238ca..af33d85 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.CardDialogComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.CardDialogComponent.superclass.constructor.apply(this, arguments);
this._tabPanelController = null;
this._tabPanelControllerConfiguration = {
'DETAILS': {
tab: 'detailTab',
panel: 'detailTabpanel'
},
'DIRECT_LOGINS': {
tab: 'directLoginTab',
panel: 'directLoginTabpanel'
},
'SHARING': {
tab: 'sharingTab',
panel: 'sharingTabpanel'
}
};
this._tooltips = null;
this._isSavingEnabled = false;
this._hintMode = 'OFF'; // 'ON'
this._fieldComponents = {};
this._directLoginComponents = {};
this._displayMode = 'fixed'; // 'scrollable';
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.CardDialogComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.CardDialogComponent component";
},
//-------------------------------------------------------------------------
'tabPanelController': function () {
if (this._tabPanelController == null) {
this._tabPanelController = new Clipperz.PM.UI.Common.Controllers.TabPanelController({
component:this,
configuration:this._tabPanelControllerConfiguration
});
MochiKit.Signal.connect(this._tabPanelController, 'tabSelected', this, 'handleTabSelected')
}
return this._tabPanelController;
},
//-------------------------------------------------------------------------
'renderSelf': function() {
this.append(this.element(), {tag:'div', cls:'CardDialog mainDialog loading', id:this.getId('panel'), children: [
{tag:'form', id:this.getId('form'), children:[
// {tag:'input', type:'text', id:this.getId('hidden'), cls:'hidden'},
{tag:'div', cls:'header', children:[
{tag:'div', cls:'title', children:[
{tag:'input', type:'text', id:this.getId('title')}
]}
]},
{tag:'div', id:this.getId('body'), cls:'body', children:[
{tag:'div', cls:'tabs', children:[
{tag:'ul', cls:'tabs', children:[
{tag:'li', id:this.getId('detailTab'), children:[{tag:'span', html:"details"}]},
{tag:'li', id:this.getId('directLoginTab'), children:[
{tag:'span', html:"direct logins"}//,
// {tag:'div', id:this.getId('addDirectLoginButton'), cls:'addDirectLoginButton', children:[
// {tag:'span', html:"+"}
// ]}
]},
{tag:'li', id:this.getId('sharingTab'), children:[{tag:'span', html:"sharing"}]}
]}
]},
{tag:'div', cls:'tabPanels', children:[
{tag:'ul', cls:'tabPanels', children:[
{tag:'li', id:this.getId('detailTabpanel'), cls:'tabPanel', children:[
{tag:'div', id:this.getId('recordFields'), children:[
{tag:'table', cls:'fields', cellpadding:'0', id:this.getId('fieldTable'), cellspacing:'0', children:[
{tag:'thead', children:[
{tag:'tr', children:[
{tag:'th', cls:'fieldStateTH', html:""},
{tag:'th', cls:'fieldLabelTH', html:"label"},
{tag:'th', cls:'fieldLockTH', html:""},
{tag:'th', cls:'fieldValueTH', html:"value"},
{tag:'th', cls:'fieldActionTH', html:""},
{tag:'th', cls:'fieldDeleteTH', html:""}
]}
]},
{tag:'tfoot'},
{tag:'tbody', id:this.getId('tableBody'), children:[
{tag:'tr', id:this.getId('newFieldTR'), cls:'newFieldTR', children:[
{tag:'td', cls:'fieldState'},
{tag:'td', cls:'fieldLabel', children:[
{tag:'input', cls:'label', id:this.getId('newFieldLabel')}
]},
{tag:'td', cls:'fieldLock', children:[
{tag:'div', cls:'unlocked', id:this.getId('newFieldIsLocked')}
]},
{tag:'td', cls:'fieldValue', children:[
{tag:'div', cls:'unlocked', id:this.getId('newFieldValueWrapper'), children:[
{tag:'input', type:'text', cls:'value', id:this.getId('newFieldValue')}
]}
]},
{tag:'td', cls:'fieldAction', children:[
{tag:'div', html:'&nbsp;'}
]},
{tag:'td', cls:'fieldAddDelete', children:[
{tag:'div', cls:'new', children:[
{tag:'span', children:[
{tag:'a', href:'#', id:this.getId('newFieldAddButton'), html:"add"}
]}
]}
]}
]}
]}
]}
]},
{tag:'div', cls:'notes', children:[
{tag:'div', children:[
{tag:'textarea', id:this.getId('recordNote'), value:""}
]}
]}
]},
{tag:'li', id:this.getId('directLoginTabpanel'), cls:'tabPanel', children:[
{tag:'div', id:this.getId('directLoginsComponentContainer'), cls:'directLoginsComponentContainer', children:[
{tag:'div', id:this.getId('directLogins'), cls:'directLogins', children:[
{tag:'div', id:this.getId('addNewDirectLoginSplash'), cls:'addNewDirectLoginSplash', children:[
{tag:'h3', html:"Here you can add a Direct Login for this card: instant access to your favorit website!"},
{tag:'a', href:'#', id:this.getId('addNewDirectLoginSplashButton'), children:[{tag:'span', html:"Add Direct Login"}]}
]},
{tag:'div', id:this.getId('directLoginsList')},
{tag:'div', cls:'addDirectLoginListItem', id:this.getId('addDirectLoginListItem'), children:[{tag:'a', href:'#', id:this.getId('addNewDirectLoginListItemButton'), children:[{tag:'span', html:"Add Direct Login"}]}]}
]},
{tag:'div', id:this.getId('directLoginEditDetail'), cls:'directLoginEditDetail'}
]}
]},
{tag:'li', id:this.getId('sharingTabpanel'), cls:'tabPanel', children:[
{tag:'h2', html:"Coming soon!"}
]}
]}
]},
{tag:'div', cls:'mask', children:[
{tag:'div', id:this.getId('progress'), children:[
{tag:'h3', id:this.getId('progressDescription'), cls:'progressDescription', html:"Loading"},
{tag:'div', id:this.getId('progressBar')}
]},
{tag:'div', id:this.getId('error'), cls:'error', children:[
{tag:'div', cls:'img'},
{tag:'p', id:this.getId('errorMessage')}
]}
]}
]},
{tag:'div', cls:'footer', children:[
{tag:'div', cls:'buttonArea', children:[
{tag:'div', cls:'cancel', id:this.getId('cancelButton'), html:"cancel"},
{tag:'div', cls:'save disabled', id:this.getId('saveButton'), html:"save"}
]}
]}
]}
]});
this.insertAllTooltips();
this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')}));
this.tabPanelController().setup({selected:'DETAILS'});
// this.tabPanelController().setup({selected:'DIRECT_LOGINS'});
MochiKit.Style.hideElement(this.getId('error'));
MochiKit.Style.hideElement(this.getElement('directLoginEditDetail'));
MochiKit.Style.hideElement(this.getElement('addDirectLoginListItem'));
this.plumbDetailsPanel();
MochiKit.Signal.connect(this.getId('cancelButton'), 'onclick', this, 'handleCancelEvent');
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js
index 126c5b1..2e61f5f 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js
@@ -1,182 +1,179 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.CardDialogRecordDirectLoginComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.CardDialogRecordDirectLoginComponent.superclass.constructor.apply(this, arguments);
this._reference = args.reference || Clipperz.Base.exception.raise('MandatoryParameter');
this._faviconComponent = null;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.CardDialogRecordDirectLoginComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.CardDialogRecordDirectLoginComponent component";
},
//-------------------------------------------------------------------------
'reference': function () {
return this._reference;
},
//-------------------------------------------------------------------------
'renderSelf': function() {
//console.log(">>> CardDialogRecordDirectLoginComponent.renderSelf");
this.append(this.element(), [
{tag:'div', cls:'cardDialogRecordDirectLoginComponent_favicon', children:[
{tag:'img', cls:'favicon', id:this.getId('favicon')}
]},
{tag:'div', cls:'cardDialogRecordDirectLoginComponent_label', children:[
{tag:'input', id:this.getId('label'), type:'text'}
]},
{tag:'div', cls:'open', children:[
{tag:'span', children:[
{tag:'a', href:'open', id:this.getId('open'), html:'&nbsp;'}
]}
]},
{tag:'div', cls:'edit', children:[
{tag:'span', children:[
{tag:'a', href:'edit', id:this.getId('edit'), html:"edit"}
]}
]},
{tag:'div', cls:'delete', children:[
{tag:'span', children:[
{tag:'a', href:'delete', id:this.getId('delete'), html:"delete"}
]}
]}
/*
{tag:'td', cls:'fieldState'},
{tag:'td', cls:'fieldLabel', children:[
{tag:'input', cls:'label', id:this.getId('label')}
]},
{tag:'td', cls:'fieldLock', children:[
{tag:'div', cls:'unlocked', id:this.getId('isHidden')}
]},
{tag:'td', cls:'fieldValue', children:[
{tag:'div', cls:'unlocked', id:this.getId('valueWrapper'), children:[
{tag:'input', type:'text', cls:'value', id:this.getId('value')}
]}
]},
{tag:'td', cls:'fieldAddDelete', children:[
{tag:'div', cls:'delete', children:[
{tag:'span', children:[
{tag:'a', href:'#', id:this.getId('delete'), html:"delete"}
]}
]}
]}
*/
]);
MochiKit.Signal.connect(this.getId('label'), 'onkeyup', MochiKit.Base.partial(MochiKit.Signal.signal, this, 'changedValue'));
MochiKit.Signal.connect(this.getId('open'), 'onclick', this, 'openDirectLogin');
MochiKit.Signal.connect(this.getId('edit'), 'onclick', this, 'editDirectLogin');
MochiKit.Signal.connect(this.getId('delete'), 'onclick', this, 'deleteDirectLogin');
},
//-------------------------------------------------------------------------
'shouldShowElementWhileRendering': function () {
return false;
},
//-------------------------------------------------------------------------
'faviconComponent': function () {
if (this._faviconComponent == null) {
//console.log("created the FAVICON component");
this._faviconComponent = new Clipperz.PM.UI.Common.Components.FaviconComponent({element:this.getId('favicon')});
}
return this._faviconComponent;
},
//=========================================================================
'label': function () {
return this.getElement('label').value;
},
'setLabel': function (aValue) {
this.getElement('label').value = Clipperz.Base.sanitizeString(aValue);
},
//-------------------------------------------------------------------------
'favicon': function () {
// return this.getElement('favicon').src;
return this.faviconComponent().src();
},
'setFavicon': function (aValue) {
// this.getElement('favicon').src = Clipperz.Base.sanitizeString(aValue);
this.faviconComponent().setSrc(Clipperz.Base.sanitizeString(aValue));
},
//=========================================================================
'openDirectLogin': function (anEvent) {
anEvent.preventDefault();
MochiKit.Signal.signal(this, 'openDirectLogin', this.reference());
},
//-------------------------------------------------------------------------
'editDirectLogin': function (anEvent) {
anEvent.preventDefault();
MochiKit.Signal.signal(this, 'editDirectLogin', this.reference());
//console.log("EDIT DIRECT LOGIN");
},
//-------------------------------------------------------------------------
'deleteDirectLogin': function (anEvent) {
anEvent.preventDefault();
MochiKit.Signal.signal(this, 'deleteDirectLogin', this.reference());
//console.log("DELETE DIRECT LOGIN");
},
//=========================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js
index c1a7c13..b58062c 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js
@@ -1,190 +1,187 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.CardDialogRecordFieldComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.CardDialogRecordFieldComponent.superclass.constructor.apply(this, arguments);
this._reference = args.reference || Clipperz.Base.exception.raise('MandatoryParameter');
this._actionType = null;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.CardDialogRecordFieldComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.CardDialogRecordFieldComponent component";
},
//-------------------------------------------------------------------------
'renderSelf': function() {
this.append(this.element(), [
{tag:'td', cls:'fieldState'},
{tag:'td', cls:'fieldLabel', children:[
{tag:'input', cls:'label', id:this.getId('label')}
]},
{tag:'td', cls:'fieldLock', children:[
{tag:'div', cls:'unlocked', id:this.getId('isHidden')}
]},
{tag:'td', cls:'fieldValue', children:[
{tag:'div', cls:'unlocked', id:this.getId('valueWrapper'), children:[
{tag:'input', type:'text', cls:'value', id:this.getId('value')}
]}
]},
{tag:'td', cls:'fieldAction', children:[
{tag:'a', href:'#', id:this.getId('actionLink'), html:'&nbsp;'}
]},
{tag:'td', cls:'fieldAddDelete', children:[
{tag:'div', cls:'delete', children:[
{tag:'span', children:[
{tag:'a', href:'#', id:this.getId('delete'), html:"delete"}
]}
]}
]}
]);
MochiKit.Signal.connect(this.getId('label'), 'onkeyup', MochiKit.Base.partial(MochiKit.Signal.signal, this, 'changedValue'));
MochiKit.Signal.connect(this.getId('isHidden'), 'onclick', this, 'toggleIsHidden');
MochiKit.Signal.connect(this.getId('value'), 'onkeyup', MochiKit.Base.partial(MochiKit.Signal.signal, this, 'changedValue'));
MochiKit.Signal.connect(this.getId('actionLink'), 'onclick', this, 'handleActionLink');
MochiKit.Signal.connect(this.getId('delete'), 'onclick', this, 'deleteField');
// MochiKit.Signal.connect(this.getId('delete'), 'onclick', MochiKit.Base.partial(MochiKit.Signal.signal, this, 'deleteField', this.reference()));
},
//-------------------------------------------------------------------------
'shouldShowElementWhileRendering': function () {
return false;
},
//=========================================================================
'reference': function () {
return this._reference;
},
//=========================================================================
'label': function () {
return this.getElement('label').value;
},
'setLabel': function (aValue) {
// this.getElement('label').value = Clipperz.Base.sanitizeString(aValue);
this.getElement('label').value = aValue;
},
//=========================================================================
'value': function () {
return this.getElement('value').value;
},
'setValue': function (aValue) {
// this.getElement('value').value = Clipperz.Base.sanitizeString(aValue);
this.getElement('value').value = aValue;
},
//-------------------------------------------------------------------------
'actionType': function () {
return this._actionType;
},
'setActionType': function (anActionType) {
this._actionType = anActionType;
switch (this._actionType) {
case 'NONE':
MochiKit.Style.hideElement(this.getId('actionLink'));
MochiKit.DOM.setElementClass(this.getId('actionLink'), '');
break;
case 'URL':
MochiKit.Style.showElement(this.getId('actionLink'));
MochiKit.DOM.setElementClass(this.getId('actionLink'), 'url');
break;
case 'EMAIL':
MochiKit.Style.showElement(this.getId('actionLink'));
MochiKit.DOM.setElementClass(this.getId('actionLink'), 'email');
break;
case 'PASSWORD':
MochiKit.Style.showElement(this.getId('actionLink'));
MochiKit.DOM.setElementClass(this.getId('actionLink'), 'password');
break;
}
},
//=========================================================================
'isHidden': function () {
// return this.getElement('value').value;
return MochiKit.DOM.hasElementClass(this.getElement('isHidden'), 'locked');
},
'setIsHidden': function (aValue) {
// this.getElement('value').value = Clipperz.Base.sanitizeString(aValue);
MochiKit.DOM.setElementClass(this.getElement('isHidden'), (aValue ? 'locked': 'unlocked'));
MochiKit.DOM.setElementClass(this.getElement('valueWrapper'), (aValue ? 'locked': 'unlocked'));
},
'toggleIsHidden': function (anEvent) {
anEvent.preventDefault();
this.setIsHidden(! this.isHidden());
MochiKit.Signal.signal(this, 'changedValue');
},
//=========================================================================
'handleActionLink': function (anEvent) {
anEvent.preventDefault();
//console.log("ACTION LINK - " + this.actionType());
MochiKit.Signal.signal(this, 'performAction', this.reference(), anEvent.target());
},
//=========================================================================
'deleteField': function (anEvent) {
anEvent.preventDefault();
MochiKit.Signal.signal(this, 'deleteField', this.reference());
},
//=========================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ColumnManager.js
index bfc7e61..391c379 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ColumnManager.js
@@ -1,203 +1,200 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
//#############################################################################
Clipperz.PM.UI.Web.Components.ColumnManager = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.ColumnManager.superclass.constructor.call(this, args);
this._name = args.name || Clipperz.Base.exception.raise('MandatoryParameter');
this._selector = args.selector || Clipperz.Base.exception.raise('MandatoryParameter');;
this._label = args.label || null;
this._isSortable = args.sortable || false;
this._comparator = args.comparator || null;
this._sorted = args.sorted || 'UNSORTED'; // 'ASCENDING' | 'DESCENDING' | 'UNSORTED'
this._cssClass = args.cssClass || '';
this._signalIdentifiers = [];
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.ColumnManager, Clipperz.PM.UI.Common.Components.BaseComponent, {
'toString': function () {
return "Clipperz.PM.UI.Web.Components.ColumnManager - " + this._name;
},
'name': function () {
return this._name;
},
'label': function () {
return this._label;
},
'selector': function () {
return this._selector;
},
'comparator': function() {
return this._comparator;
},
'cssClass': function() {
return this._cssClass;
},
//-------------------------------------------------------------------------
'isSortable': function () {
return this._isSortable;
},
//-------------------------------------------------------------------------
'sorted': function () {
return this._sorted;
},
'isSorted': function () {
return (this.sorted() != 'UNSORTED');
},
'setSorted': function(aValue) {
this._sorted = aValue;
this.updateSortIcon();
},
//-------------------------------------------------------------------------
'signalIdentifiers': function () {
return this._signalIdentifiers;
},
'resetSignalIdentifiers': function () {
this._signalIdentifiers = [];
},
//-------------------------------------------------------------------------
'disconnectRowsSignals': function () {
MochiKit.Base.map(MochiKit.Signal.disconnect, this.signalIdentifiers());
this.resetSignalIdentifiers();
},
'connectEvent': function () {
var ident;
ident = MochiKit.Signal.connect.apply(null, arguments);
this.signalIdentifiers().push(ident);
},
//-------------------------------------------------------------------------
'renderHeader': function(aTRElement) {
var thElement;
thElement = Clipperz.DOM.Helper.append(aTRElement, {tag:'th', cls:(this.cssClass() + 'TH'), id:this.getId('sortLink'), children:[
{tag:'span', html:this.label() ? this.label() : '&nbsp;'}
]});
if (this.isSortable()) {
Clipperz.DOM.Helper.append(thElement, {tag:'span', cls:'sortable', children:[
{tag:'a', href:'#'/*, id:this.getId('sortLink')*/, html:'&nbsp;'}
]});
MochiKit.DOM.addElementClass(thElement, 'sortable');
MochiKit.Signal.connect(thElement, 'onclick', this, 'handleClickOnSortingCriteria');
};
this.updateSortIcon();
},
//-------------------------------------------------------------------------
'toggleSorting': function () {
var result;
switch (this.sorted()) {
case 'UNSORTED':
result = 'ASCENDING';
break;
case 'ASCENDING':
result = 'DESCENDING';
break;
case 'DESCENDING':
result = 'ASCENDING';
break;
default:
result = 'UNSORTED';
break;
}
this.setSorted(result);
return result;
},
//-------------------------------------------------------------------------
'sortElementClass': function () {
return this.sorted().toLowerCase();
},
//-------------------------------------------------------------------------
'updateSortIcon': function () {
if (this.isSortable()) {
MochiKit.DOM.removeElementClass(this.getId('sortLink'), 'ascending');
MochiKit.DOM.removeElementClass(this.getId('sortLink'), 'descending');
MochiKit.DOM.removeElementClass(this.getId('sortLink'), 'unsorted');
MochiKit.DOM.addElementClass(this.getId('sortLink'), this.sortElementClass());
}
},
//-------------------------------------------------------------------------
'renderCell': function(aRowElement, anObject) {
Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[{tag:'span', html:anObject[this.name()]}]});
},
//-----------------------------------------------------
'handleClickOnSortingCriteria': function (anEvent) {
anEvent.preventDefault();
MochiKit.Signal.signal(this, 'sort', this);
},
//-----------------------------------------------------
'__syntax_fix__' : 'syntax fix'
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.js
index 61d6ead..d3aa175 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.js
@@ -1,71 +1,68 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent.superclass.constructor.apply(this, arguments);
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent component";
},
//-------------------------------------------------------------------------
'renderSelf': function() {
this.append(this.element(), [
{tag:'div', cls:'createNewCardSplash', id:this.getId('button'), children:[
{tag:'span', html:"Create New Card"}
]}
]);
MochiKit.Signal.connect(this.getElement('button'), 'onclick', this, 'handleClick');
},
//-------------------------------------------------------------------------
'handleClick': function (anEvent) {
anEvent.preventDefault();
MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'addCard', this.element());
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js
index 91d99e3..d2f1045 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js
@@ -1,111 +1,108 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.DataPanel = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.DataPanel.superclass.constructor.apply(this, arguments);
this._initiallySelectedTab = args.selected || 'OFFLINE_COPY';
this._tabPanelControllerConfiguration = {
'OFFLINE_COPY': {
tab: 'offlineCopyTab',
panel: 'offlineCopyPanel'
},
'SHARING': {
tab: 'sharingTab',
panel: 'sharingPanel'
},
'IMPORT': {
tab: 'importTab',
panel: 'importPanel'
},
'EXPORT': {
tab: 'exportTab',
panel: 'exportPanel'
}
};
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DataPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.DataPanel component";
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
this.append(this.element(), [
{tag:'div', cls:'header', children:[
{tag:'div', cls:'subPanelTabs', children:[
{tag:'ul', children:[
{tag:'li', id:this.getId('offlineCopyTab'), children:[{tag:'a', href:'#', html:'Offline copy'}], cls:'first'},
{tag:'li', id:this.getId('sharingTab'), children:[{tag:'a', href:'#', html:'Sharing'}]},
{tag:'li', id:this.getId('importTab'), children:[{tag:'a', href:'#', html:'Import'}]},
{tag:'li', id:this.getId('exportTab'), children:[{tag:'a', href:'#', html:'Export'}]}
]}
]}
]},
{tag:'div', cls:'body', children:[
{tag:'div', cls:'accountPanel', children:[
{tag:'div', cls:'subPanelContent', children:[
{tag:'ul', children:[
{tag:'li', id:this.getId('offlineCopyPanel'), children:[
{tag:'h3', html:"Offline copy"}
]},
{tag:'li', id:this.getId('sharingPanel'), children:[
{tag:'h3', html:"Sharing"}
]},
{tag:'li', id:this.getId('importPanel'), children:[
{tag:'h3', html:"Import"}
]},
{tag:'li', id:this.getId('exportPanel'), children:[
{tag:'h3', html:"Export"}
]}
]}
]}
]}
]},
{tag:'div', cls:'footer'}
]);
this.tabPanelController().setup({selected:this.initiallySelectedTab()});
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DateColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DateColumnManager.js
index 3f8aa88..ea55ba4 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DateColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DateColumnManager.js
@@ -1,72 +1,69 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
//#############################################################################
Clipperz.PM.UI.Web.Components.DateColumnManager = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.DateColumnManager.superclass.constructor.call(this, args);
this._format = args.format || Clipperz.Base.exception.raise('MandatoryParameter');
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DateColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
'toString': function () {
return "Clipperz.PM.UI.Web.Components.DateColumnManager component";
},
//-------------------------------------------------------------------------
'format': function () {
return this._format;
},
//-------------------------------------------------------------------------
'renderCell': function(aRowElement, anObject) {
Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[
{
tag:'span',
title:Clipperz.PM.Date.formatDateWithTemplate(anObject[this.name()], "D, d M Y H:i:s"),
html:Clipperz.PM.Date.formatDateWithTemplate(anObject[this.name()], this.format())
}
]});
},
//-----------------------------------------------------
'__syntax_fix__' : 'syntax fix'
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js
index ee60f2f..fe59494 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js
@@ -1,70 +1,67 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
//#############################################################################
Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager.superclass.constructor.call(this, args);
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager, Clipperz.PM.UI.Web.Components.LinkColumnManager, {
'toString': function () {
return "Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager component";
},
//-------------------------------------------------------------------------
'renderCell': function(aRowElement, anObject) {
var tdElement;
var linkElement;
tdElement = Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[
{tag:'div', cls:'delete', children:[
{tag:'span', children:[
{tag:'a', href:'delete', html:"delete"}
]}
]}
]});
linkElement = MochiKit.DOM.getFirstElementByTagAndClassName('a', null, tdElement);
// MochiKit.Signal.connect(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject']));
this.connectEvent(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject']));
},
//-----------------------------------------------------
'__syntax_fix__' : 'syntax fix'
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js
index 4bf9020..a1f0f9f 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js
@@ -1,90 +1,87 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
/*
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
//#############################################################################
Clipperz.PM.UI.Web.Components.DirectLoginColumnManager = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.DirectLoginColumnManager.superclass.constructor.call(this, args);
this._actionMethod = args.actionMethod || null;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
'toString': function () {
return "Clipperz.PM.UI.Web.Components.DateColumnManager component";
},
//-------------------------------------------------------------------------
'actionMethod': function () {
return this._actionMethod;
},
//-------------------------------------------------------------------------
'renderCell': function(aRowElement, anObject) {
var tdElement;
var linkElement;
tdElement = Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[
{tag:'div', cls:'directLogin_directLogin', children:[
{tag:'div', cls:'directLogin_directLogin_body', children:[
{tag:'a', href:'#', html:anObject[this.name()]}
]}
]}
]});
linkElement = MochiKit.DOM.getFirstElementByTagAndClassName('a', null, tdElement);
// MochiKit.Signal.connect(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject']));
this.connectEvent(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject']));
},
//-----------------------------------------------------
'handleLinkClick': function (anObject, anEvent) {
anEvent.preventDefault();
if (this.actionMethod() != null) {
this.actionMethod()(anObject, anEvent);
}
},
//-----------------------------------------------------
'__syntax_fix__' : 'syntax fix'
});
*/ \ No newline at end of file
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js
index 9a9c0b2..1a76b0c 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js
@@ -1,168 +1,165 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.DirectLoginEditingBindingComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.DirectLoginEditingBindingComponent.superclass.constructor.apply(this, arguments);
this._formFieldName = args.formFieldName || Clipperz.Base.exception.raise('MandatoryParameter');
this._fields = args.fields || Clipperz.Base.exception.raise('MandatoryParameter');
this._initiallySelectedFieldKey = args.selectedFieldKey || null;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginEditingBindingComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.DirectLoginEditingBindingComponent component";
},
//-------------------------------------------------------------------------
'formFieldName': function () {
return this._formFieldName;
},
//-------------------------------------------------------------------------
'fields': function () {
return this._fields;
},
//-------------------------------------------------------------------------
'selectedValue': function () {
var result;
result = this.getElement('select').value;
if (result == '---') {
result = null;
}
return result;
},
'initiallySelectedFieldKey': function () {
return this._initiallySelectedFieldKey;
},
//=========================================================================
'renderSelf': function() {
var initiallySelectedOptions;
this.append(this.element(), {tag:'div', id:this.getId('div'), cls:'binding', children:[
{tag:'span', cls:'formFieldName', html:this.formFieldName()},
{tag:'span', cls:'fieldLock', id:this.getId('isHidden'), children:[
{tag:'a', href:'#', id:this.getId('showHide'), html:'&nbsp;'}
]},
{tag:'input', id:this.getId('input'), cls:'formFieldExampleValue', disabled:true, value:''},
{tag:'select', name:this.formFieldName(), id:this.getId('select'), cls:'formFieldMatchinCardField', children:
MochiKit.Base.flattenArguments(
{tag:'option', value:'---', html:"---"},
MochiKit.Base.map(
MochiKit.Base.bind(function (aField) { return {tag:'option', value:aField['reference'], html:aField['label']}; }, this),
this.fields()
)
)
}
]});
MochiKit.Signal.connect(this.getElement('select'), 'onchange', this, 'handleSelectChange');
MochiKit.Signal.connect(this.getElement('showHide'), 'onclick', this, 'handleShowHide');
if (! MochiKit.Base.isUndefinedOrNull(this.initiallySelectedFieldKey())) {
initiallySelectedOptions = MochiKit.Selector.findChildElements(this.element(), ['option[value=' + this.initiallySelectedFieldKey() + ']']);
if (initiallySelectedOptions.length == 1) {
MochiKit.DOM.updateNodeAttributes(initiallySelectedOptions[0], {selected:true});
this.handleSelectChange();
}
}
},
//-------------------------------------------------------------------------
'setFieldValue': function (aValue) {
this.getElement('input').value = aValue;
},
'isHidden': function () {
return MochiKit.DOM.hasElementClass(this.getElement('div'), 'locked');
},
'setIsHidden': function (aValue) {
if (aValue == true) {
MochiKit.DOM.addElementClass(this.getElement('div'), 'locked');
MochiKit.DOM.addElementClass(this.getElement('div'), 'showLocked');
} else {
MochiKit.DOM.removeElementClass(this.getElement('div'), 'locked');
MochiKit.DOM.removeElementClass(this.getElement('div'), 'showLocked');
}
},
'isShowLocked': function () {
return MochiKit.DOM.hasElementClass(this.getElement('div'), 'showLocked');
},
//-------------------------------------------------------------------------
'handleSelectChange': function (anEvent) {
// this.getElement('input').value = this.valueOfField(anEvent.src().value);
MochiKit.Signal.signal(this, 'bindChange', this);
},
'handleShowHide': function (anEvent) {
anEvent.preventDefault();
if (this.isShowLocked()) {
MochiKit.DOM.removeElementClass(this.getElement('div'), 'showLocked');
} else {
MochiKit.DOM.addElementClass(this.getElement('div'), 'showLocked');
}
},
//=========================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js
index d254c29..5114b1d 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent.superclass.constructor.apply(this, arguments);
this._tabPanelController = null;
this._initiallySelectedTab = args.selected || 'TYPE';
this._tabPanelControllerConfiguration = {
'LABEL': {
tab: 'labelTab',
panel: 'labelTabpanel'
},
'TYPE': {
tab: 'typeTab',
panel: 'typeTabpanel'
},
'CONFIGURATION': {
tab: 'configurationTab',
panel: 'configurationTabpanel'
},
'BINDINGS': {
tab: 'bindingsTab',
panel: 'bindingsTabpanel'
},
'FAVICON': {
tab: 'faviconTab',
panel: 'faviconTabpanel'
},
'DONE': {
tab: 'doneTab',
panel: 'doneTabpanel'
}
};
this._directLoginReference = null;
this._directLoginFavicon = null;
this._updateFaviconCounter = 0;
this._faviconComponent = null;
this._bindingComponents = [];
this._formValueComponents = [];
return this;
}
//=============================================================================
//Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent, Clipperz.PM.UI.Common.Components.TabPanelComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent component";
},
//=========================================================================
'directLoginReference': function () {
return this._directLoginReference;
},
//-------------------------------------------------------------------------
'setDirectLoginReference': function (aDirectLoginReference) {
this._directLoginReference = aDirectLoginReference;
return this._directLoginReference;
},
//=========================================================================
'label': function () {
return this.getElement('label').value
},
'setLabel': function (aValue) {
//console.log("##> LABEL: " + aValue);
this.getElement('label').value = (aValue ? aValue : '');
},
//-------------------------------------------------------------------------
'favicon': function () {
return this.getElement('faviconURL').value;
},
'setFavicon': function (aValue) {
var regexp;
var displayValue;
regexp = new RegExp('^data\:\/\/.*', 'i');
if (regexp.test(aValue)) {
displayValue = ''
} else {
displayValue = (aValue ? aValue : '');
}
this.getElement('faviconURL').value = displayValue;
this.faviconComponent().setSrc(aValue);
},
// 'setFaviconData': function (aValue) {
// this.getElement('faviconIcon').src = aValue;
// },
'directLoginFavicon': function () {
return this._directLoginFavicon;
},
'setDirectLoginFavicon': function (aValue) {
this._directLoginFavicon = aValue;
this.setFavicon(aValue);
},
//-------------------------------------------------------------------------
'bookmarkletConfiguration': function () {
return this.getElement('bookmarkletConfiguration').value
},
'setBookmarkletConfiguration': function (aValue) {
this.getElement('bookmarkletConfiguration').value = aValue;
},
'highlightConfigurationSyntaxError': function () {
MochiKit.DOM.addElementClass(this.getElement('bookmarkletConfiguration'), 'error');
},
'removeHighlightConfigurationSyntaxError': function () {
MochiKit.DOM.removeElementClass(this.getElement('bookmarkletConfiguration'), 'error');
},
//=========================================================================
'disableAllPanels': function () {
this.getElement('label').disabled = true;
MochiKit.DOM.addElementClass(this.getElement('label').parentNode, 'disabled');
this.tabPanelController().selectTab(null);
},
//-------------------------------------------------------------------------
// 'disableLabelField': function () {
// this.getElement('label').disabled = true;
// MochiKit.DOM.addElementClass(this.getElement('label').parentNode, 'disabled');
// },
'enableLabelField': function () {
this.getElement('label').disabled = false;
MochiKit.DOM.removeElementClass(this.getElement('label').parentNode, 'disabled');
this.tabPanelController().selectTab('LABEL');
},
//-------------------------------------------------------------------------
// 'disableTypeField': function () {
// this.tabPanelController().selectTab(null);
// },
'enableTypeField': function () {
this.tabPanelController().selectTab('TYPE');
},
//-------------------------------------------------------------------------
// 'disableConfigurationField': function () {
// this.tabPanelController().selectTab(null);
// },
'enableConfigurationField': function () {
this.tabPanelController().selectTab('CONFIGURATION');
},
//-------------------------------------------------------------------------
// 'disableBindingFields': function () {
// this.tabPanelController().selectTab(null);
// },
'enableBindingFields': function () {
this.tabPanelController().selectTab('BINDINGS');
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js
index b91eb98..fa57233 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js
@@ -1,179 +1,176 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.DirectLoginEditingFormValueComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.DirectLoginEditingFormValueComponent.superclass.constructor.apply(this, arguments);
this._formFieldName = args.formFieldName || Clipperz.Base.exception.raise('MandatoryParameter');
this._fieldOptions = args.fieldOptions || Clipperz.Base.exception.raise('MandatoryParameter');
this._initialValue = args.initialValue || null;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginEditingFormValueComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.DirectLoginEditingFormValueComponent component";
},
//-------------------------------------------------------------------------
'formFieldName': function () {
return this._formFieldName;
},
//-------------------------------------------------------------------------
'fieldOptions': function () {
return this._fieldOptions;
},
'fieldType': function () {
return this.fieldOptions()['type'];
},
'optionValues': function () {
return MochiKit.Base.map(function (anOptionValue) {
return {
'label': anOptionValue['label'] || anOptionValue['value'],
'value': anOptionValue['value']
}
}, this.fieldOptions()['options']);
},
//-------------------------------------------------------------------------
'selectedValue': function () {
var result;
result = this.getElement('select').value;
if (result == '---') {
result = null;
}
return result;
},
'initialValue': function () {
return this._initialValue;
},
//=========================================================================
'renderSelf': function() {
//console.log(">>> DirectLoginEditingFormValueComponent.renderSelf");
//console.log("FIELD OPTIONS", this.fieldOptions());
//console.log("OPTION VALUES", this.optionValues());
this.append(this.element(), {tag:'div', id:this.getId('div'), cls:'formValue', children:[
{tag:'span', cls:'formFieldName', html:this.formFieldName()},
{tag:'div', id:this.getId('values')}
]});
if ((this.fieldType() == 'radio') || (this.fieldType() == 'select')) {
this.append(this.getElement('values'),
{tag:'select', name:this.formFieldName(), id:this.getId('select'), cls:'formFieldMatchinCardField', children:
MochiKit.Base.flattenArguments(
// {tag:'option', value:'---', html:"---"},
MochiKit.Base.map(
MochiKit.Base.bind(function (aValue) { return {tag:'option', value:aValue['value'], html:aValue['label']}; }, this),
this.optionValues()
)
)
}
);
MochiKit.Signal.connect(this.getElement('select'), 'onchange', this, 'handleSelectChange');
if (! MochiKit.Base.isUndefinedOrNull(this.initialValue())) {
var initiallySelectedOptions;
initiallySelectedOptions = MochiKit.Selector.findChildElements(this.element(), ['option[value=' + this.initialValue() + ']']);
if (initiallySelectedOptions.length == 1) {
MochiKit.DOM.updateNodeAttributes(initiallySelectedOptions[0], {selected:true});
this.handleSelectChange();
} else {
Clipperz.DOM.Helper.insertBefore(this.getElement('select').childNodes[0], {tag:'option', value:'---', html:"", selected:true});
}
} else {
Clipperz.DOM.Helper.insertBefore(this.getElement('select').childNodes[0], {tag:'option', value:'---', html:"", selected:true});
}
} else if (this.fieldType() == 'checkbox') {
this.append(this.getElement('values'),
{tag:'input', type:'checkbox', name:this.formFieldName(), id:this.getId('checkbox'), cls:'formFieldMatchinCardField'}
);
MochiKit.Signal.connect(this.getElement('checkbox'), 'onchange', this, 'handleSelectChange');
if (this.initialValue()) {
MochiKit.DOM.updateNodeAttributes(this.getElement('checkbox'), {checked:true});
}
} else {
WTF = TODO;
}
//console.log("<<< DirectLoginEditingFormValueComponent.renderSelf");
},
//=========================================================================
'handleSelectChange': function (anEvent) {
//console.log("handleSelectChange", anEvent, anEvent.src(), anEvent.src().value);
var options;
options = {};
options['fieldName'] = this.formFieldName();
if (this.fieldType() == 'checkbox') {
options['selectedValue'] = (this.getElement('checkbox').checked ? 1 : null);
} else {
options['selectedValue'] = this.selectedValue();
}
MochiKit.Signal.signal(this, 'formValueChange', options);
},
//=========================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js
index 1f49575..d8dc941 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
//#############################################################################
Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager.superclass.constructor.call(this, args);
this._enterLeaveCounter = 0;
this._selectedRowObject = null;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
'toString': function () {
return "Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager component";
},
//-------------------------------------------------------------------------
'renderHeader': function(aTRElement) {
Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager.superclass.renderHeader.call(this, aTRElement);
Clipperz.DOM.Helper.append(MochiKit.DOM.currentDocument().body, {tag:'div', cls:'DirectLoginListPopup', id:this.getId('DirectLoginListPopup'), children:[
{tag:'div', cls:'DirectLoginListPopup_body', children:[
{tag:'ul', id:this.getId('DirectLoginListPopup_list'), children:[
// {tag:'li', children:[
// {tag:'img', cls:'favicon', src:'http://www.microsoft.com/favicon.ico'},
// {tag:'a', href:'#', html:"Google Mail"}
// ]},
// ...
]}
]},
{tag:'div', cls:'DirectLoginListPopup_footer'}
]});
MochiKit.Style.hideElement(this.getId('DirectLoginListPopup'));
// BEWARE: use MochiKit.Signal.connect instead of this.connectEvent, as the HEADER is NOT redrawn after each refresh
MochiKit.Signal.connect(this.getId('DirectLoginListPopup'), 'onmouseenter', this, 'handleDirectLoginListPopupEnter');
MochiKit.Signal.connect(this.getId('DirectLoginListPopup'), 'onmouseleave', this, 'handleDirectLoginListPopupLeave');
},
//-------------------------------------------------------------------------
'renderCell': function(aRowElement, anObject) {
var i,c;
var directLoginsInfo;
directLoginsInfo = anObject[this.name()];
TDElement = Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:'card_directLogins'});
c = Math.min(2, directLoginsInfo.length);
for (i=0; i<c; i++) {
var elementID;
elementID = 'directLogin_' + directLoginsInfo[i]['_reference'];
Clipperz.DOM.Helper.append(TDElement, {tag:'div', cls:'card_directLogin', children:[
{tag:'div', cls:'card_directLogin_body', children:[
{tag:'a', href:'#', id:elementID, html:directLoginsInfo[i]['label']}
]}
]});
// MochiKit.Signal.connect(elementID, 'onclick', MochiKit.Base.method(this, 'handleDirectLoginClick', directLoginsInfo[i]['_rowObject']));
this.connectEvent(elementID, 'onclick', MochiKit.Base.method(this, 'handleDirectLoginClick', directLoginsInfo[i]['_rowObject']));
}
if (directLoginsInfo.length > 2) {
var ellipsesElement;
ellipsesElement = Clipperz.DOM.Helper.append(TDElement, {tag:'div', cls:'card_directLogin_ellipses', children:[
{tag:'div', cls:'card_directLogin_ellipses_body', children:[
{tag:'span', html:'&hellip;'}
]}
]});
/// MochiKit.Signal.connect(ellipsesElement, 'onmouseenter', MochiKit.Base.method(this, 'handleEllipsesEnter', anObject));
/// MochiKit.Signal.connect(ellipsesElement, 'onmouseleave', MochiKit.Base.method(this, 'handleEllipsesLeave'));
// MochiKit.Signal.connect(TDElement, 'onmouseleave', MochiKit.Base.method(this, 'handleTDLeave'));
this.connectEvent(TDElement, 'onmouseleave', MochiKit.Base.method(this, 'handleTDLeave'));
}
// MochiKit.Signal.connect(TDElement, 'onmouseenter', MochiKit.Base.method(this, 'handleTDEnter', anObject));
this.connectEvent(TDElement, 'onmouseenter', MochiKit.Base.method(this, 'handleTDEnter', anObject));
},
//=========================================================================
/*
'handleEllipsesEnter': function (aRecordInfo, anEvent) {
this._enterLeaveCounter ++;
if (this._enterLeaveCounter > 2) {
this._enterLeaveCounter = 2;
}
if (this._enterLeaveCounter == 1) {
this.showDirectLoginListPopup(aRecordInfo, anEvent.src());
}
},
'handleEllipsesLeave': function (anEvent) {
this._enterLeaveCounter --;
MochiKit.Async.callLater(0.3, MochiKit.Base.bind(function () {
if (this._enterLeaveCounter == 0) {
this.hideDirectLoginListPopup();
}
}, this))
},
*/
//-------------------------------------------------------------------------
'handleTDEnter': function (aRecordInfo, anEvent) {
if (MochiKit.Selector.findChildElements(anEvent.src(), ['div.card_directLogin_ellipses']).length > 0) {
this._enterLeaveCounter ++;
if (this._enterLeaveCounter > 2) {
this._enterLeaveCounter = 2;
}
if (this._enterLeaveCounter == 1) {
this.showDirectLoginListPopup(aRecordInfo, anEvent.src());
}
} else {
if (this._selectedRowObject != null) {
this.hideDirectLoginListPopup();
}
}
},
'handleTDLeave': function (anEvent) {
this._enterLeaveCounter --;
if (this._enterLeaveCounter < 0) {
this._enterLeaveCounter = 0;
}
MochiKit.Async.callLater(0.3, MochiKit.Base.bind(function () {
if (this._enterLeaveCounter == 0) {
this.hideDirectLoginListPopup();
}
}, this))
},
//-------------------------------------------------------------------------
'handleDirectLoginListPopupEnter': function (anEvent) {
this._enterLeaveCounter ++;
if (this._enterLeaveCounter > 2) {
this._enterLeaveCounter = 2;
}
},
'handleDirectLoginListPopupLeave': function (anEvent) {
this._enterLeaveCounter --;
if (this._enterLeaveCounter < 0) {
this._enterLeaveCounter = 0;
}
MochiKit.Async.callLater(0.3, MochiKit.Base.bind(function () {
if (this._enterLeaveCounter == 0) {
this.hideDirectLoginListPopup();
}
}, this))
},
//=========================================================================
'showDirectLoginListPopup': function (aRecordInfo, anElement) {
var position;
var directLoginsInfo;
var directLoginsListElement;
var ellipsesElement;
ellipsesElement = MochiKit.Selector.findChildElements(anElement, ['div.card_directLogin_ellipses'])[0];
position = MochiKit.Style.getElementPosition(ellipsesElement);
// position = MochiKit.Style.getElementPosition(anElement);
position.x += 14;
position.y -= 26;
MochiKit.Style.setElementPosition(this.getId('DirectLoginListPopup'), position /*[, units='px'] */);
directLoginsListElement = this.getElement('DirectLoginListPopup_list');
directLoginsListElement.innerHTML = '';
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/FaviconColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/FaviconColumnManager.js
index 19d1635..6297002 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/FaviconColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/FaviconColumnManager.js
@@ -1,89 +1,86 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
//#############################################################################
Clipperz.PM.UI.Web.Components.FaviconColumnManager = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.FaviconColumnManager.superclass.constructor.call(this, args);
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.FaviconColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
'toString': function () {
return "Clipperz.PM.UI.Web.Components.FaviconColumnManager component";
},
//-------------------------------------------------------------------------
'renderCell': function(aRowElement, anObject) {
var faviconImageElement;
var faviconUrl;
faviconImageElement = this.getId('favicon');
faviconUrl = anObject[this.name()];
if (faviconUrl == null) {
faviconUrl = Clipperz.PM.Strings.getValue('defaultFaviconUrl');
}
Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[
{tag:'img', id:faviconImageElement, src:faviconUrl}
]});
MochiKit.Signal.connect(faviconImageElement, 'onload', this, 'handleLoadedFaviconImage');
MochiKit.Signal.connect(faviconImageElement, 'onerror', this, 'handleMissingFaviconImage');
MochiKit.Signal.connect(faviconImageElement, 'onabort', this, 'handleMissingFaviconImage');
},
//-----------------------------------------------------
'handleLoadedFaviconImage': function(anEvent) {
MochiKit.Signal.disconnectAllTo(anEvent.src());
if (anEvent.src().complete == false) {
anEvent.src().src = Clipperz.PM.Strings.getValue('defaultFaviconUrl');
}
},
//-----------------------------------------------------
'handleMissingFaviconImage': function(anEvent) {
MochiKit.Signal.disconnectAllTo(anEvent.src());
anEvent.src().src = Clipperz.PM.Strings.getValue('defaultFaviconUrl');
},
//-----------------------------------------------------
'__syntax_fix__' : 'syntax fix'
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/GridComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/GridComponent.js
index 8b3e6c9..51d55f4 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/GridComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/GridComponent.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.GridComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.GridComponent.superclass.constructor.apply(this, arguments);
this._columnsManagers = args.columnsManagers;
this._rowsObjects = [];
this._noRowsGridComponent = null;
this._slots = {
'headerSlot': this.getId('headerSlot')
};
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.GridComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.GridComponent component";
},
//-------------------------------------------------------------------------
'rows': function () {
throw Clipperz.Base.exception.AbstractMethod;
// return this._rows;
},
//-------------------------------------------------------------------------
'columnsManagers': function () {
return this._columnsManagers;
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
this.append(this.element(), [
{tag:'div', cls:'header', children:[
{tag:'form', id:this.getId('searchForm'), cls:'search', children:[
{tag:'div', cls:'search', children:[
{tag:'input', type:'text', id:this.getId('search'), cls:'search', placeholder:"search", name:'textToSearch'/*, value:"clipperz"*/}
]},
{tag:'div', cls:'clearSearchButton', id:this.getId('clearSearch')},
// {tag:'input', type:'button', cls:'searchButton', name:'searchButton', value:"search"},
{tag:'div', cls:'headerSlot', id:this.getId('headerSlot')}
]}
]},
{tag:'div', cls:'body', children:[
{tag:'div', cls:'rows', id:this.getId('rows'), children:[
{tag:'table', cellpadding:'0', cellspacing:'0', cls:'rows', children:[
{tag:'thead', children:[
{tag:'tr', id:this.getId('thead_tr'), children:[]}
]},
{tag:'tbody', id:this.getId('gridRows'), children:[]}
]}
]},
{tag:'div', cls:'noRowsBlock', id:this.getId('noRowsBlock'), children:[]}
]},
{tag:'div', cls:'footer'}
]);
this.renderHeader();
MochiKit.Signal.connect(this.getId('clearSearch'), 'onclick', this, 'clearSearchHandler');
},
//-------------------------------------------------------------------------
'renderHeader': function () {
var headerElement;
headerElement = this.getElement('thead_tr');
headerElement.innerHTML = "";
MochiKit.Iter.forEach(this.columnsManagers(), function (aColumnManager) {
aColumnManager.renderHeader(headerElement);
});
},
//-------------------------------------------------------------------------
'update': function (someObjects) {
this._rowsObjects = someObjects
this.refresh();
this.focus();
},
'focus': function () {
this.getElement('search').focus();
},
//-------------------------------------------------------------------------
'startSearch': function () {
//console.log("--> startSearch");
MochiKit.DOM.addElementClass(this.getElement('search'), 'running');
},
'endSearch': function () {
MochiKit.DOM.removeElementClass(this.getElement('search'), 'running');
//console.log("<-- startSearch");
},
//-------------------------------------------------------------------------
'disconnectColumnManagersRowsSignals': function () {
MochiKit.Iter.forEach(this.columnsManagers(), function (aColumnManager) {
aColumnManager.disconnectRowsSignals();
});
},
//-------------------------------------------------------------------------
'refresh': function () {
var gridRowsElement;
var rowClass;
this.disconnectColumnManagersRowsSignals();
{
MochiKit.DOM.removeElementClass(this.getElement('search'), 'disabled');
// MochiKit.DOM.setNodeAttribute(this.getElement('search'), 'disabled', null);
MochiKit.DOM.removeElementClass(this.element(), 'empty');
MochiKit.DOM.removeElementClass(this.element(), 'noRows');
}
gridRowsElement = this.getElement('gridRows');
gridRowsElement.innerHTML = "";
MochiKit.DOM.removeElementClass(this.element(), 'empty');
rowClass = 'odd';
MochiKit.Iter.forEach(this._rowsObjects, MochiKit.Base.bind(function (aRowObject) {
var cardRowElement;
cardRowElement = this.append(gridRowsElement, {tag:'tr', id:this.getId(aRowObject['_reference']), cls:rowClass});
MochiKit.Iter.forEach(this.columnsManagers(), function (aColumnManager) {
aColumnManager.renderCell(cardRowElement, aRowObject);
});
rowClass = (rowClass == 'odd') ? 'even' : 'odd';
}, this));
},
//-----------------------------------------------------------------------------
'filterElement': function () {
return this.getElement('search');
},
//-------------------------------------------------------------------------
'shouldShowElementWhileRendering': function () {
return false;
},
//-------------------------------------------------------------------------
'selectRow': function (aRowObject) {
MochiKit.DOM.addElementClass(this.getId(aRowObject['_reference']), 'selected');
},
'unselectRow': function (aRowObject) {
MochiKit.DOM.removeElementClass(this.getId(aRowObject['_reference']), 'selected');
},
//-------------------------------------------------------------------------
/*
'passOpenDirectLogin': function(aDirectLoginReferenceId) {
MochiKit.Signal.signal(this, 'openDirectLogin', aDirectLoginReferenceId);
},
*/
//-------------------------------------------------------------------------
'clearSearchHandler': function (anEvent) {
var searchElement;
anEvent.preventDefault();
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ImageColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ImageColumnManager.js
index 07b8dcc..3e03fcf 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ImageColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ImageColumnManager.js
@@ -1,68 +1,65 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
//#############################################################################
Clipperz.PM.UI.Web.Components.ImageColumnManager = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.ImageColumnManager.superclass.constructor.call(this, args);
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.ImageColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
'toString': function () {
return "Clipperz.PM.UI.Web.Components.ImageColumnManager component";
},
//-------------------------------------------------------------------------
'renderCell': function(aRowElement, anObject) {
Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[
{tag:'img', src:anObject[this.name()]}
]});
// return Clipperz.Async.callbacks("ImageColumnManager.renderCell", [
// this.selector(),
// MochiKit.Base.bind(function (aValue) {
// Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[
// {tag:'img', src:aValue}
// ]});
// }, this)
// ], {trace:false}, anObject);
},
//-----------------------------------------------------
'__syntax_fix__' : 'syntax fix'
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LinkColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LinkColumnManager.js
index e833190..f3f9cd5 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LinkColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LinkColumnManager.js
@@ -1,92 +1,89 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
//#############################################################################
Clipperz.PM.UI.Web.Components.LinkColumnManager = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.LinkColumnManager.superclass.constructor.call(this, args);
this._actionMethod = args.actionMethod || null;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LinkColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
'toString': function () {
return "Clipperz.PM.UI.Web.Components.DateColumnManager component";
},
//-------------------------------------------------------------------------
'actionMethod': function () {
return this._actionMethod;
},
//-------------------------------------------------------------------------
'renderCell': function(aRowElement, anObject) {
var tdElement;
var linkElement;
tdElement = Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[
{tag:'span', children:[
{tag:'a', href:'#', html:anObject[this.name()]}
]}
]});
linkElement = MochiKit.DOM.getFirstElementByTagAndClassName('a', null, tdElement);
// MochiKit.Signal.connect(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject']));
this.connectEvent(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject']));
},
//-----------------------------------------------------
'handleLinkClick': function (anObject, anEvent) {
anEvent.preventDefault();
if (this.actionMethod() != null) {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("LinkColumnManager.handleLinkClick", {trace:false});
// deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'selectRow', anObject);
deferredResult.addCallback(this.actionMethod(), anObject, anEvent);
// deferredResult.addBothPass(MochiKit.Signal.signal, this, 'unselectRow', anObject);
deferredResult.callback();
}
},
//-----------------------------------------------------
'__syntax_fix__' : 'syntax fix'
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginForm.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginForm.js
index de20853..389d876 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginForm.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginForm.js
@@ -1,203 +1,200 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.LoginForm = function(args) {
args = args || {};
this._autocomplete = args.autocomplete || 'off';
Clipperz.PM.UI.Web.Components.LoginForm.superclass.constructor.apply(this, arguments);
this._slots = {
'passphraseEntropy': this.getId('passphraseEntropy')
};
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginForm, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.LoginForm component";
},
'autocomplete': function () {
return this._autocomplete;
},
//-------------------------------------------------------------------------
'renderSelf': function() {
this.append(this.element(), {tag:'div', id:'loginBox', children:[
{tag:'div', cls:'header'},
{tag:'div', cls:'body', id:this.getId('body'), children:[
{tag:'div', id:this.getId('loginForm'), children:[
{tag:'div', children:[
{tag:'h4', html:'Login'},
// {tag:'form', cls:'loginForm', autocomplete:this.autocomplete(), children:[
{tag:'form', id:this.getId('form'), cls:'loginForm', children:[
{tag:'label', html:'username', 'for':this.getId('usernameField')},
{tag:'input', id:this.getId('usernameField'), type:'text', cls:'username'/*, value:'joe'*/},
{tag:'ul', id:this.getId('passwordOptions'), children:[
{tag:'li', id:this.getId('passphraseOption'), children:[
{tag:'label', html:'passphrase / OTP', 'for':this.getId('passphraseField')},
{tag:'input', id:this.getId('passphraseField'), type:'password', cls:'password'/*, value:'clipperz'*/}
]} // ,
/*
{tag:'li', id:this.getId('otpOption'), children:[
{tag:'label', html:'one-time password', 'for':this.getId('otpField_1')},
{tag:'input', id:this.getId('otpField_1'), type:'text', cls:'otp', value:'abcd-efgh'},
{tag:'input', id:this.getId('otpField_2'), type:'text', cls:'otp', value:'abcd-efgh'},
{tag:'input', id:this.getId('otpField_3'), type:'text', cls:'otp', value:'abcd-efgh'},
{tag:'input', id:this.getId('otpField_4'), type:'text', cls:'otp', value:'abcd-efgh'}
]}
*/
]},
// {tag:'input', id:this.getId('otpCheckbox'), type:'checkbox', cls:'checkbox'},
// {tag:'label', html:'use a one-time passphrase', 'for':this.getId('otpCheckbox'), cls:'checkbox'},
{tag:'div', cls:'translations', children:[
{tag:'h4', html:'choose your language'},
{tag:'ul', children:[
{tag:'li', cls:'selected', html:'english'},
{tag:'li', html:'italiano'},
{tag:'li', html:'dutch'},
{tag:'li', html:'french'},
{tag:'li', html:'spanish'},
{tag:'li', html:'chinese'},
{tag:'li', html:'japanese'},
{tag:'li', html:'portugal'},
{tag:'li', html:'arabic'}
]}
]},
{tag:'input', id:this.getId('submitButton'), type:'submit', value:'login', cls:'submit'}
]}
]}
]}
]},
{tag:'div', cls:'footer'}
]});
if (this.autocomplete() == 'off') {
MochiKit.DOM.updateNodeAttributes(this.getElement('form'), {autocomplete:'off'});
}
// Clipperz.Style.setBackgroundGradient(this.getElement('body'), {from:"#ff9955", to:"#ff6622"})
// this.setEntropyDisplay(new Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay(this.getElement('passphraseField')));
// MochiKit.Signal.connect(this.getId('otpCheckbox'), 'onclick', this, 'togglePasswordFields');
// this.showPassphraseField();
this.getElement('usernameField').focus();
MochiKit.Signal.connect(this.getElement('loginForm'), 'onsubmit', this, 'loginEventHandler');
},
//-----------------------------------------------------------------------------
/*
'togglePasswordFields': function(anEvent) {
var shouldUseOTP;
shouldUseOTP = this.getElement('otpCheckbox').checked;
if (shouldUseOTP == false) {
this.showPassphraseField();
} else {
this.showOTPFields();
}
},
*/
//-----------------------------------------------------------------------------
/*
'showPassphraseField': function() {
this.showElement('passphraseOption');
this.hideElement('otpOption');
},
*/
//-----------------------------------------------------------------------------
'focusOnPassphraseField': function () {
this.getElement('passphraseField').focus();
this.getElement('passphraseField').select();
},
//-----------------------------------------------------------------------------
/*
'showOTPFields': function() {
this.hideElement('passphraseOption');
this.showElement('otpOption');
},
*/
//-------------------------------------------------------------------------
'loginEventHandler': function(anEvent) {
var username;
var passphrase;
// var shouldUseOTP;
// var otp;
var signalArguments;
anEvent.preventDefault();
username = this.getElement('usernameField').value;
passphrase = this.getElement('passphraseField').value;
// otp = this.getElement('otpField_1').value +
// this.getElement('otpField_2').value +
// this.getElement('otpField_3').value +
// this.getElement('otpField_4').value;
// shouldUseOTP = this.getElement('otpCheckbox').checked;
signalArguments = {username:username};
// if (shouldUseOTP) {
// signalArguments.otp = otp;
// } else {
signalArguments.passphrase = passphrase;
// }
MochiKit.Signal.signal(this, 'doLogin', signalArguments);
},
//-------------------------------------------------------------------------
'submitButtonElement': function() {
return this.getElement('submitButton');
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginPage.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginPage.js
index 49c030d..2894af8 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginPage.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginPage.js
@@ -1,206 +1,203 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.LoginPage = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.LoginPage.superclass.constructor.apply(this, arguments);
this._slots = {
'loginForm': this.getId('loginBoxSlot')
};
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginPage, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.LoginPage component";
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
this.append(this.element(), [
{tag:'div', id:this.getId('loginBoxSlot')},
{tag:'div', id:'main', children:[
{tag:'div', id:'featurePoints', children:[
{tag:'table', children:[
{tag:'tr', children:[
{tag:'td', children:[
{tag:'div', cls:'block', children:[
{tag:'h3', html:'Clipperz is:'},
{tag:'ul', children:[
{tag:'li', html:'a secure and simple password manager'},
{tag:'li', html:'an effective single sign-on solution'},
{tag:'li', html:'a digital vault for your personal data'}
]}
]},
{tag:'div', cls:'block', children:[
{tag:'h3', html:'Clipperz benefits:'},
{tag:'ul', children:[
{tag:'li', html:'free and completely anonymous'},
{tag:'li', html:'access it any time from any computer'},
{tag:'li', html:'no software to download and nothing to install'},
{tag:'li', html:'avoid keeping secrets on your PC or on paper'}
]}
]}
]}, {tag:'td', children:[
{tag:'div', cls:'block', children:[
{tag:'h3', html:'Clipperz security:'},
{tag:'ul', children:[
{tag:'li', html:'your secretes are locally encrypted by your browser before being uploaded to Clipperz'},
{tag:'li', html:'the encryption key is a passphrase known only to you'},
{tag:'li', html:'Clipperz hosts your sensitive data in an encrypted form and could never access the data in its plain form'},
{tag:'li', html:'Clipperz is built upon standard encryption schemes, nothing fancies of homemade'},
{tag:'li', html:'you can review the source code anytime you like, but you need to know nothing about cryptography to be an happy user!'}
]}
]}
]}
]}
]}
]},
{tag:'div', cls:'activeFeatures', children:[
{tag:'div', id:this.getId('registerButton'), cls:'createAccountLink', children:[
{tag:'canvas', id:this.getId('registerButtonIcon')},
{tag:'a', href:'#', id:this.getId('createAccountLink'), cls:'createAccountLink', children:[
{tag:'span', cls:'payoff', html:"Free sign up!"},
{tag:'span', cls:'link', html:"Create account >>"}
]}
]},
{tag:'div', cls:'keepTogether', children:[
{tag:'div', id:this.getId('screenshotLink'), cls:'screenshotLink', children:[
{tag:'canvas', id:this.getId('lookIcon')},
{tag:'a', href:'#', cls:'screenshotLink', children:[
{tag:'span', cls:'payoff', html:"Look Clipperz!"},
{tag:'span', cls:'link', html:"screenshot tour >>"}
]}
]},
{tag:'div', id:this.getId('offlineLink'), cls:'offlineLink', children:[
{tag:'canvas', id:this.getId('downloadIcon')},
{tag:'a', href:'#', cls:'offlineLink', children:[
{tag:'span', cls:'payoff', html:"Download!"},
{tag:'span', cls:'link', html:"Offline version >>"}
]}
]}
]}
]}
]}
]);
this.setRegistrationButtonIconDefaultColors();
this.setLookIconDefaultColors();
this.setDownloadIconDefaultColors();
// MochiKit.Signal.connect(this.getElement('createAccountLink'), 'onclick', this, 'handleCreateAccountLink')
MochiKit.Signal.connect(this.getElement('registerButton'), 'onmouseenter', this, 'handleMouseEnterOnRegisterButtonIcon');
MochiKit.Signal.connect(this.getElement('registerButton'), 'onmouseleave', this, 'handleMouseLeaveOnRegisterButtonIcon');
MochiKit.Signal.connect(this.getElement('screenshotLink'), 'onmouseenter', this, 'handleMouseEnterOnLookIcon');
MochiKit.Signal.connect(this.getElement('screenshotLink'), 'onmouseleave', this, 'handleMouseLeaveOnLookIcon');
MochiKit.Signal.connect(this.getElement('offlineLink'), 'onmouseenter', this, 'handleMouseEnterOnDownloadIcon');
MochiKit.Signal.connect(this.getElement('offlineLink'), 'onmouseleave', this, 'handleMouseLeaveOnDownloadIcon');
MochiKit.Signal.connect(this.getElement('createAccountLink'), 'onclick', this, 'handleCreateAccountLink')
},
//-------------------------------------------------------------------------
'setRegistrationButtonIconDefaultColors': function () {
Clipperz.PM.UI.Canvas.registerButton.normal(this.getElement('registerButtonIcon'), "#eeeeee", "#eeeeee", "#ecab12", "#e14624", "#ffffff");
},
'setRegistrationButtonIconHoverColors': function () {
Clipperz.PM.UI.Canvas.registerButton.normal(this.getElement('registerButtonIcon'), "#cccccc", "#999999", "#ffb710", "#ff4d27", "#ffffff");
},
'handleMouseEnterOnRegisterButtonIcon': function (anEvent) {
this.setRegistrationButtonIconHoverColors();
},
'handleMouseLeaveOnRegisterButtonIcon': function (anEvent) {
this.setRegistrationButtonIconDefaultColors();
},
//-------------------------------------------------------------------------
'setLookIconDefaultColors': function () {
Clipperz.PM.UI.Canvas.coverActions.look(this.getElement('lookIcon'), "#7e7e7e", "#ffffff", 1);
},
'setLookIconHoverColors': function () {
Clipperz.PM.UI.Canvas.coverActions.look(this.getElement('lookIcon'), "#666666", "#ffffff", 2);
},
'handleMouseEnterOnLookIcon': function (anEvent) {
this.setLookIconHoverColors();
},
'handleMouseLeaveOnLookIcon': function (anEvent) {
this.setLookIconDefaultColors();
},
//-------------------------------------------------------------------------
'setDownloadIconDefaultColors': function () {
Clipperz.PM.UI.Canvas.coverActions.download(this.getElement('downloadIcon'), "#7e7e7e", "#ffffff", 1);
},
'setDownloadIconHoverColors': function () {
Clipperz.PM.UI.Canvas.coverActions.download(this.getElement('downloadIcon'), "#666666", "#ffffff", 2);
},
'handleMouseEnterOnDownloadIcon': function (anEvent) {
this.setDownloadIconHoverColors();
},
'handleMouseLeaveOnDownloadIcon': function (anEvent) {
this.setDownloadIconDefaultColors();
},
//-------------------------------------------------------------------------
'handleCreateAccountLink': function (anEvent) {
anEvent.preventDefault();
MochiKit.Signal.signal(this, 'createNewAccountClick', anEvent.src());
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js
index 03c7b9e..5d082b5 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js
@@ -1,155 +1,152 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.LoginProgress = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.LoginProgress.superclass.constructor.apply(this, arguments);
this._deferred = null;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginProgress, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.LoginProgress component";
},
//-------------------------------------------------------------------------
'deferred': function() {
return this._deferred;
},
'setDeferred': function(aValue) {
this._deferred = aValue;
},
//-------------------------------------------------------------------------
'renderSelf': function() {
// var loginProgressElement;
//
// loginProgressElement = MochiKit.DOM.getElement('loginProgress');
//
// if (loginProgressElement == null) {
// loginProgressElement = this.append(this.element(), {tag:'div', id:'loginProgress', cls:'LoginProgress'}, true);
// }
//console.log(">> LoginProgress.renderSelf", this.element());
this.append(this.element(), {tag:'div', id:'loginProgress', cls:'LoginProgress', children: [
// this.append(loginProgressElement, [
{tag:'div', cls:'header', children:[
{tag:'h3', id:this.getId('title'), html:"login progress"}
]},
{tag:'div', cls:'body', children:[
{tag:'div', id:this.getId('progressBar')},
{tag:'div', id:this.getId('errorBox'), cls:'errorBox', children:[
// {tag:'div', cls:'img ALERT', children:[{tag:'div'}]},
{tag:'div', cls:'img ALERT', children:[{tag:'canvas', id:this.getId('canvas')}]},
{tag:'p', html:"Login failed"}
]}
]},
{tag:'div', cls:'footer', children:[
{tag:'div', cls:'buttonArea', id:this.getId('buttonArea'), children:[
{tag:'div', cls:'button', id:this.getId('button'), children:[
{tag:'a', href:'#', id:this.getId('buttonLink'), html:"cancel"}
]}
]}
]}
]});
// ]);
Clipperz.PM.UI.Canvas.marks['!'](this.getElement('canvas'), "#ffffff");
this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')}));
MochiKit.Style.hideElement(this.getElement('errorBox'));
MochiKit.Signal.connect(this.getId('buttonLink'), 'onclick', this, 'cancelEventHandler');
},
//-------------------------------------------------------------------------
'displayElement': function() {
return MochiKit.DOM.getElement('loginProgress');
},
//-------------------------------------------------------------------------
'cancelEventHandler': function(anEvent) {
anEvent.preventDefault();
MochiKit.Signal.signal(this, 'cancelEvent');
},
//-------------------------------------------------------------------------
'disableCancel': function() {
MochiKit.Style.hideElement(this.getElement('buttonArea'));
},
//-------------------------------------------------------------------------
'showErrorMessage': function() {
this.getElement('buttonLink').innerHTML = "close";
MochiKit.Style.hideElement(this.getElement('progressBar'));
this.getElement('title').innerHTML = "Error";
MochiKit.Style.showElement(this.getElement('errorBox'));
MochiKit.Style.showElement(this.getElement('buttonArea'));
},
//-------------------------------------------------------------------------
'deferredHideModalAndRemove': function(someParameters, aResult) {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("LoginProgress.deferredHideModalAndRemove", {trace:false});
deferredResult.addMethod(this, 'deferredHideModal');
deferredResult.addMethod(this, 'remove');
deferredResult.addCallback(function () {
return aResult;
});
deferredResult.callback(someParameters);
return deferredResult;
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js
index b40d1f3..feb16ad 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.NewUserCreationComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.NewUserCreationComponent.superclass.constructor.apply(this, arguments);
this._tabPanelController = null;
this._initiallySelectedTab = args.selected || 'CREDENTIALS';
this._tabPanelControllerConfiguration = {
'CREDENTIALS': {
tab: 'credentialsTab',
panel: 'credentialsTabpanel'
},
'CHECK_CREDENTIALS': {
tab: 'checkCredentialsTab',
panel: 'checkCredentialsTabpanel'
},
'TERMS_OF_SERVICE': {
tab: 'termsOfServiceTab',
panel: 'termsOfServiceTabpanel'
},
'CREATE_USER': {
tab: 'createUserTab',
panel: 'createUserTabpanel'
} //,
/*
'LOGIN': {
tab: 'loginTab',
panel: 'loginTabpanel'
}
*/
};
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.NewUserCreationComponent, Clipperz.PM.UI.Common.Components.TabPanelComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.NewUserCreationComponent component";
},
//=========================================================================
'disableAllPanels': function () {
this.tabPanelController().selectTab(null);
},
//-------------------------------------------------------------------------
'enableCredentialsPanel': function () {
this.tabPanelController().selectTab('CREDENTIALS');
},
'enableCheckCredentialsPanel': function () {
this.tabPanelController().selectTab('CHECK_CREDENTIALS');
},
'enableTermsOfServicePanel': function () {
this.tabPanelController().selectTab('TERMS_OF_SERVICE');
},
'enableCreateUserPanel': function () {
this.tabPanelController().selectTab('CREATE_USER');
},
// 'enableLoginPanel': function () {
// this.tabPanelController().selectTab('LOGIN');
// },
//=========================================================================
'shouldShowElementWhileRendering': function() {
return false;
},
//=========================================================================
'tabPanelController': function () {
if (this._tabPanelController == null) {
this._tabPanelController = new Clipperz.PM.UI.Common.Controllers.TabPanelController({
component:this,
configuration:this._tabPanelControllerConfiguration
});
MochiKit.Signal.connect(this._tabPanelController, 'tabSelected', this, 'handleTabSelected')
}
return this._tabPanelController;
},
//-------------------------------------------------------------------------
'renderSelf': function() {
//console.log('** Clipperz.targetModalDimensionsAndPosition', Clipperz.Base.serializeJSON(Clipperz.PM.UI.Common.Components.BaseComponent.targetModalDimensionsAndPosition));
this.append(this.element(), {tag:'div', cls:'NewUserCreation mainDialog', id:this.getId('panel'), children: [
{tag:'form', id:this.getId('form'), cls:'newUserCreationForm', children:[
{tag:'div', cls:'header', children:[
{tag:'div', cls:'title', children:[
{tag:'h3', id:this.getId('title'), html:"Create new user"}
]}
]},
{tag:'div', id:this.getId('body'), cls:'body', children:[
{tag:'div', cls:'tabContainer', children:[
{tag:'ul', cls:'tabs', children:[
{tag:'li', id:this.getId('credentialsTab'), children:[{tag:'span', html:"credentials"}]},
{tag:'li', id:this.getId('checkCredentialsTab'), children:[{tag:'span', html:"credentials check"}]},
{tag:'li', id:this.getId('termsOfServiceTab'), children:[{tag:'span', html:"terms of service"}]},
{tag:'li', id:this.getId('createUserTab'), children:[{tag:'span', html:"create user"}]} //,
// {tag:'li', id:this.getId('loginTab'), children:[{tag:'span', html:"login"}]},
]},
{tag:'ul', cls:'tabPanels', children:[
{tag:'li', id:this.getId('credentialsTabpanel'), cls:'tabPanel credentials', children:[
{tag:'div', cls:'wizardStepDescription', children:[{tag:'span', html:Clipperz.PM.Strings.getValue('Wizards.NewUserWizard.CREDENTIALS.description')}]},
{tag:'ul', cls:'credentials', children:[
{tag:'li', children:[{tag:'span', cls:'label', html:"username"}, {tag:'input', type:'text', id:this.getId('username')/*, value:'test'*/}]},
{tag:'li', children:[{tag:'span', cls:'label', html:"passphrase"}, {tag:'input', type:'password', id:this.getId('passphrase')/*, value:'test'*/}]}
]}
]},
{tag:'li', id:this.getId('checkCredentialsTabpanel'), cls:'tabPanel checkCredentials', children:[
{tag:'div', cls:'wizardStepDescription', children:[{tag:'span', html:Clipperz.PM.Strings.getValue('Wizards.NewUserWizard.CHECK_CREDENTIALS.description')}]},
{tag:'ul', cls:'credentials', children:[
{tag:'li', children:[{tag:'span', cls:'label', html:"re-passphrase"}, {tag:'input', type:'password', id:this.getId('re-passphrase')/*, value:'test'*/}]}
]}
]},
{tag:'li', id:this.getId('termsOfServiceTabpanel'), cls:'tabPanel termsOfService', children:[
{tag:'div', cls:'wizardStepDescription', children:[{tag:'span', html:Clipperz.PM.Strings.getValue('Wizards.NewUserWizard.TERMS_OF_SERVICE.description')}]},
{tag:'ul', cls:'termsOfService', children:[
{tag:'li', children:[{tag:'input', type:'checkbox', id:this.getId('awareOfUnrecoverablePassphrase')/*, checked:true*/}, {tag:'label', cls:'label', 'for':this.getId('awareOfUnrecoverablePassphrase'), html:"I understand that Clipperz will not be able to recover a lost passphrase."}]},
{tag:'li', children:[{tag:'input', type:'checkbox', id:this.getId('readTermsOfService')/*, checked:true*/}, {tag:'label', cls:'label', 'for':this.getId('readTermsOfService'), htmlString:"I have read and agreed to the <a href='http://www.clipperz.com/terms_of_service' target='_blank'>Terms of Service</a>."}]}
]}
]},
{tag:'li', id:this.getId('createUserTabpanel'), cls:'tabPanel createUser', children:[
{tag:'div', cls:'wizardStepDescription', children:[{tag:'span', html:Clipperz.PM.Strings.getValue('Wizards.NewUserWizard.CREATE_USER.description')}]},
{tag:'ul', cls:'createUserStates', children:[
{tag:'li', cls:'creating', id:this.getId('creatingRegistering'), children:[{tag:'span', html:"registering user"}]},
{tag:'li', cls:'done', id:this.getId('creatingDone'), children:[{tag:'span', html:"done"}]},
{tag:'li', cls:'fail', id:this.getId('creatingFailed'), children:[{tag:'span', html:"fail"}]}
]}
]} //,
// {tag:'li', id:this.getId('loginTabpanel'), cls:'tabPanel login', children:[
// {tag:'div', cls:'wizardStepDescription', children:[{tag:'span', html:Clipperz.PM.Strings.getValue('Wizards.NewUserWizard.LOGIN.description')}]},
// ]}
]}
]}
]},
{tag:'div', id:this.getId('footer'), cls:'footer', children:[
{tag:'div', cls:'buttonArea', children:[
// {tag:'div', cls:'cancel', id:this.getId('cancelButton'), html:"cancel"},
// {tag:'div', cls:'save disabled', id:this.getId('saveButton'), html:"save"}
]}
]}
]},
{tag:'div', cls:'clear'}
]});
this.tabPanelController().setup();
// MochiKit.Signal.connect(this.getId('panel'), 'onkeydown', this, 'handleKeyEvent');
MochiKit.Signal.connect(MochiKit.DOM.currentDocument().body, 'onkeydown', this, 'handleKeyEvent');
MochiKit.Signal.connect(this.getId('awareOfUnrecoverablePassphrase'), 'onchange', this, 'handleTermsOfServiceCheckboxChange');
MochiKit.Signal.connect(this.getId('readTermsOfService'), 'onchange', this, 'handleTermsOfServiceCheckboxChange');
},
//-------------------------------------------------------------------------
/*
'resetContent': function () {
this.getElement('username').value = '';
this.getElement('passphrase').value = '';
},
*/
//-------------------------------------------------------------------------
'displayElement': function() {
return this.getElement('panel');
},
//-------------------------------------------------------------------------
'handleTabSelected': function (aSelectedTab) {
/*
switch (aSelectedTab) {
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/Page.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/Page.js
index bed6675..3cc5a37 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/Page.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/Page.js
@@ -1,71 +1,68 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.Page = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.Page.superclass.constructor.apply(this, arguments);
this._slots = {
'header': 'pageHeader',
'body': 'pageBody',
'footer': 'pageFooter'
};
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.Page, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.Page component";
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
this.append(this.element(), [
{tag:'div', id:'pageHeaderAndBody', cls:'pageHeaderAndBody', children:[
{tag:'div', id:'pageHeader', cls:'pageHeader'},
{tag:'div', id:'pageBody', cls:'pageBody'}
]},
{tag:'div', id:'pageFooter', cls:'pageFooter'}
]);
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageFooter.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageFooter.js
index 11135d8..5e8cd7f 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageFooter.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageFooter.js
@@ -1,71 +1,68 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.PageFooter = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.PageFooter.superclass.constructor.apply(this, arguments);
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.PageFooter, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.PageFooter component";
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
this.append(this.element(), [
{tag:'div', cls:'footerWrapper', children:[
{tag:'div', cls:'footerContent', children:[
// {tag:'div', cls:'footerStarIcon'},
{tag:'canvas', id:this.getId('footerStarIcon'), cls:'footerStarIcon'},
{tag:'span', cls:'copyright', html:'Copyright &copy; 2009 Clipperz Srl'},
{tag:'a', href:'http://www.clipperz.com/terms_of_service', target:'_blank', html:'terms of service'},
{tag:'a', href:'http://www.clipperz.com/privacy_policy', target:'_blank', html:'privacy policy'},
{tag:'span', cls:'applicationVersion', html:'application version: [1992]'}
]}
]}
]);
Clipperz.PM.UI.Canvas.star.normal(this.getElement('footerStarIcon'), "#7e7e7e");
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js
index 3924434..bce8395 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js
@@ -1,184 +1,181 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.PageHeader = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.PageHeader.superclass.constructor.apply(this, arguments);
this._newsIsOpen = args.newsIsOpen || false;
this._animationDuration = args.animationDuration || 0.5;
this._offset = 82;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.PageHeader, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.PageHeader component";
},
//-------------------------------------------------------------------------
'iframeURL': function () {
// return './rss_view.html';
return 'http://www.clipperz.com/files/clipperz.com/appTips/index.html';
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
this.append(this.element(), [
{tag:'div', id:'miscLinks', children:[
{tag:'ul', children:[
{tag:'li', children:[{tag:'a', id:'donateHeaderLink', stringID:'pageHeader.donation', href:'http://www.clipperz.com/donations', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.donation')}]},
{tag:'li', children:[{tag:'a', id:'forumHeaderLink', stringID:'pageHeader.forum', href:'http://www.clipperz.com/forum', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.forum')}]},
{tag:'li', children:[{tag:'a', id:'creditsHeaderLink', stringID:'pageHeader.credits', href:'http://www.clipperz.com/credits', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.credits')}]},
{tag:'li', children:[{tag:'a', id:'feedbackHeaderLink', stringID:'pageHeader.feedback', href:'http://www.clipperz.com/contact', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.feedback')}]},
{tag:'li', children:[{tag:'a', id:'helpHeaderLink', stringID:'pageHeader.help', href:'http://www.clipperz.com/support/user_guide', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.help')}]}
]}
]},
{tag:'div', id:'logoFrame', children:[
{tag:'a', href:'http://www.clipperz.com', target:'_blank', children:[{tag:'div', id:'logo'}]},
{tag:'h5', cls:'clipperzPayoff', html:'keep it to yourself!'}
]},
{tag:'div', id:'news', cls:'hidden', children:[
// {tag:'div', cls:'close', children:[
// {tag:'a', href:'#', id:this.getId('closeTips'), html:'x'}
// ]},
{tag:'div', id:'newsframe', children:[
{tag:'iframe', id:this.getId('iframe'), src:this.iframeURL()}
]},
{tag:'div', id:this.getId('newsGrip'), cls:'grip', children:[]}
]},
{tag:'div', id:'featureTabs', children:[
{tag:'table', children:[{tag:'tr', children:[
{tag:'td', children:[{tag:'div', id:'feature_store', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('storeIcon')}, {tag:'span', html:"Store and manage your password and online credentials"}]}]},
{tag:'td', children:[{tag:'div', id:'feature_protect', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('protectIcon')}, {tag:'span', html:"Protect all your sensitive data"}]}]},
{tag:'td', children:[{tag:'div', id:'feature_directLogin', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('directLoginIcon')}, {tag:'span', html:"Login to your web services without entering any username or password"}]}]},
{tag:'td', children:[{tag:'div', id:'feature_share', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('shareIcon')}, {tag:'span', html:"Share secret with family members and associates"}]}]}
]}]}
]}
]);
Clipperz.PM.UI.Canvas.features.store(this.getElement('storeIcon'), "#ffffff");
Clipperz.PM.UI.Canvas.features.protect(this.getElement('protectIcon'), "#ffffff");
Clipperz.PM.UI.Canvas.features.directLogin(this.getElement('directLoginIcon'), "#ffffff");
Clipperz.PM.UI.Canvas.features.share(this.getElement('shareIcon'), "#ffffff", "#ffffff", "#ff0000");
MochiKit.Signal.connect(this.getElement('newsGrip'), 'onclick', this, 'toggleTips');
MochiKit.Signal.connect(this.getElement('iframe'), 'onload', this, 'handleIframeDidLoad');
},
//-------------------------------------------------------------------------
'switchToLoggedMode': function() {
// MochiKit.Style.addElementClass(this.element(), 'logged');
MochiKit.Style.hideElement('featureTabs');
},
//-------------------------------------------------------------------------
'animationDuration': function () {
return this._animationDuration;
},
'offset': function () {
return this._offset;
},
//-------------------------------------------------------------------------
'isNewsOpen': function () {
return this._newsIsOpen;
},
'toggleNewsIsOpen': function () {
this._newsIsOpen = !this._newsIsOpen;
},
'toggleTips': function(anEvent) {
anEvent.preventDefault();
if (this.isNewsOpen() == true) {
MochiKit.Visual.Move(Clipperz.DOM.get('news'), {
x: 0,
y: -this.offset(),
mode: 'relative',
duration: this.animationDuration(),
beforeStart: function () {
MochiKit.DOM.setElementClass(Clipperz.DOM.get('news'), 'hiding');
},
afterFinish: function () {
Clipperz.DOM.get('newsframe').innerHTML = "";
MochiKit.DOM.setElementClass(Clipperz.DOM.get('news'), 'hidden');
}
})
this.toggleNewsIsOpen();
} else {
MochiKit.DOM.addElementClass('newsframe', 'loading');
MochiKit.Visual.Move(Clipperz.DOM.get('news'), {
x: 0,
y: this.offset(),
mode: 'relative',
duration: this.animationDuration(),
beforeStart: MochiKit.Base.bind(function () {
this.append(Clipperz.DOM.get('newsframe'), {tag:'iframe', id:this.getId('iframe'), src:this.iframeURL()});
MochiKit.Signal.connect(this.getElement('iframe'), 'onload', this, 'handleIframeDidLoad');
MochiKit.DOM.setElementClass(Clipperz.DOM.get('news'), 'opening');
}, this),
afterFinish: function () {
MochiKit.DOM.setElementClass(Clipperz.DOM.get('news'), 'open');
}
})
this.toggleNewsIsOpen();
}
},
//-------------------------------------------------------------------------
'handleIframeDidLoad': function (anEvent) {
if (this.isNewsOpen() == false) {
this.toggleTips(anEvent);
}
MochiKit.DOM.removeElementClass('newsframe', 'loading');
MochiKit.Signal.disconnectAllTo(this.getElement('iframe'));
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PasswordTooltip.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PasswordTooltip.js
index 79c8d4f..987e51e 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PasswordTooltip.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PasswordTooltip.js
@@ -1,164 +1,161 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
Clipperz.PM.UI.Web.Components.PasswordTooltip = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.PasswordTooltip.superclass.constructor.apply(this, arguments);
this._referenceElement = args.referenceElement || Clipperz.Base.exception.raise('MandatoryParameter');
this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter');
this._boxDimensions = null;
this._isVisible = false;
this.renderSelf();
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.PasswordTooltip, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.PasswordTooltip component";
},
//-------------------------------------------------------------------------
'referenceElement': function () {
return this._referenceElement;
},
//-------------------------------------------------------------------------
'text': function () {
return this._text;
},
'setText': function (aValue) {
this._text = aValue;
},
//-------------------------------------------------------------------------
'isVisible': function () {
return this._isVisible;
},
'setIsVisible': function (aValue) {
this._isVisible = aValue;
},
//-------------------------------------------------------------------------
'renderSelf': function() {
this.append(MochiKit.DOM.getElement('Clipperz_PM_UI_Common_Components_Tooltip_wrapperNode'), {tag:'div', id:this.getId('tooltip'), cls:'passwordTooltip', children:[
{tag:'div', id:this.getId('body'), cls:'passwordTooltip_body', children:[
{tag:'div', cls:'passwordTooltip_text', children:[
{tag:'span', html:this.text()}
]},
{tag:'div', id:this.getId('footer'), cls:'passwordTooltip_footer'}
]},
{tag:'div', id:this.getId('arrow'), cls:'passwordTooltip_arrow'}
]});
this._boxDimensions = MochiKit.Style.getElementDimensions(this.getId('body'));
// this._boxDimensions.h += MochiKit.Style.getElementDimensions(this.getId('footer')).h;
MochiKit.Style.hideElement(this.displayElement());
MochiKit.Signal.connect(this.element(), 'onmouseenter', this, 'show');
MochiKit.Signal.connect(this.element(), 'onmouseleave', this, 'hide');
},
//-----------------------------------------------------
'displayElement': function() {
return this.getElement('tooltip');
},
//-------------------------------------------------------------------------
'boxDimensions': function () {
return this._boxDimensions;
},
//-------------------------------------------------------------------------
'show': function () {
var elementSizeAndPosition;
var arrowPosition;
var bodyPosition;
if (this.isVisible() == false) {
arrowPosition = {};
bodyPosition = {};
this.setIsVisible(true);
elementSizeAndPosition = Clipperz.Style.getSizeAndPosition(this.element());
MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:36, h:13}, 'px');
bodyPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - this.boxDimensions().w/2);
bodyPosition.y = elementSizeAndPosition.position.y - this.boxDimensions().h - 13;
arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2);
arrowPosition.y = elementSizeAndPosition.position.y - 13;
MochiKit.Style.setElementPosition(this.getId('body'), bodyPosition);
MochiKit.Style.setElementPosition(this.getId('arrow'), arrowPosition);
MochiKit.Visual.appear(this.displayElement(), {duration:0.4});
}
},
'hide': function () {
if (this.isVisible() == true) {
MochiKit.Visual.fade(this.displayElement(), {duration:0.4});
this.setIsVisible(false);
}
},
//-------------------------------------------------------------------------
/*
'shouldRemoveElementWhenClearningUp': function () {
return false;
},
*/
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
Clipperz.PM.UI.Web.Components.PasswordTooltip.initTooltips = function () {
Clipperz.DOM.Helper.insertBefore(MochiKit.DOM.currentDocument().body.childNodes[0], {tag:'div', id:'Clipperz_PM_UI_Web_Components_PasswordTooltip_wrapperNode'});
}
MochiKit.DOM.addLoadEvent(Clipperz.PM.UI.Web.Components.PasswordTooltip.initTooltips);
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/RulerComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/RulerComponent.js
index ab8a38c..69c1ede 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/RulerComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/RulerComponent.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.RulerComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.RulerComponent.superclass.constructor.apply(this, arguments);
this._translationContext = args.translationContext || Clipperz.Base.exception.raise('MandatoryParameter');
// this._steps = args.steps || Clipperz.Base.exception.raise('MandatoryParameter');
this._steps = args.steps;
this._currentStep = -1;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.RulerComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.RulerComponent component";
},
//-------------------------------------------------------------------------
'resetStatus': function (args) {
args = args || {};
if (this.currentStep() != 0) {
var shouldAnimateTransition;
shouldAnimateTransition = args.animateTransition || false;
if (shouldAnimateTransition) {
this.moveToFirstStep(MochiKit.Base.method(this, 'cursorMoved'));
} else {
this._currentStep = 0;
this.cursorMoved();
}
}
},
//-------------------------------------------------------------------------
'translationContext': function () {
return this._translationContext;
},
'steps': function () {
return this._steps;
},
'setSteps': function (aValue) {
this._steps = aValue;
this.renderStepsComponents();
this.resetStatus();
},
'translatedStepDescription': function (aStep) {
return Clipperz.PM.Strings.getValue(this.translationContext() + '.' + aStep + '.' + 'name');
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
this.setElement(this.append(MochiKit.DOM.currentDocument().body, [
{tag:'div', id:this.getId('rulerWrapper'), cls:'rulerWrapper fixed', children:[
{tag:'div', cls:'ruler', children:[
{tag:'a', href:'#', id:this.getId('exit'), cls:'exit', html:'&nbsp;'},
{tag:'a', href:'#', id:this.getId('smallPreviousButton'), cls:'smallButton previous', html:'&nbsp;'},
{tag:'a', href:'#', id:this.getId('smallNextButton'), cls:'smallButton next', html:'&nbsp;'},
{tag:'div', cls:'marker', id:this.getId('marker'), children:[
{tag:'div', cls:'previous', id:this.getId('previousButton')},
{tag:'div', cls:'markerBody'},
{tag:'div', cls:'next', id:this.getId('nextButton')}
]},
{tag:'div', cls:'steps', id:this.getId('stepsFrame')},
// {tag:'div', cls:'steps' + ' ' + 'steps_' + this.steps().length, children:[
// {tag:'ul', id:this.getId('steps'), children:MochiKit.Base.map(MochiKit.Base.bind(function (aStep) { return {tag:'li', children:[{tag:'span', html:this.translatedStepDescription(aStep)}]}}, this), this.steps())}
// ]},
{tag:'div', cls:'dots', id:this.getId('dotsFrame')}
// {tag:'div', cls:'dots' + ' ' + 'steps_' + this.steps().length, children:[
// {tag:'ul', id:this.getId('dots'), children:MochiKit.Base.map(function (aStep) { return {tag:'li', children:[{tag:'span', html:'*'}]}}, this.steps())}
// ]}
]}
]}
]));
//console.log("ELEMENT", this.element());
MochiKit.Signal.connect(this.getElement('exit'), 'onclick', this, 'handleExit');
MochiKit.Signal.connect(this.getElement('previousButton'), 'onclick', this, 'handlePrevious');
MochiKit.Signal.connect(this.getElement('smallPreviousButton'), 'onclick', this, 'handlePrevious');
MochiKit.Signal.connect(this.getElement('nextButton'), 'onclick', this, 'handleNext');
MochiKit.Signal.connect(this.getElement('smallNextButton'), 'onclick', this, 'handleNext');
this.enablePrevious(false);
this.enableNext(false);
// this.cursorMoved();
},
//.........................................................................
'renderStepsComponents': function () {
var stepsFrame;
var dotsFrame;
stepsFrames = this.getElement('stepsFrame');
MochiKit.DOM.setElementClass(stepsFrames, 'steps');
MochiKit.DOM.addElementClass(stepsFrames, 'steps_' + this.steps().length);
stepsFrames.innerHTML = "";
this.append(stepsFrames, {tag:'ul', id:this.getId('steps'), children:MochiKit.Base.map(
MochiKit.Base.bind(function (aStep) { return {tag:'li', children:[{tag:'span', html:this.translatedStepDescription(aStep)}]}}, this),
this.steps())}
);
dotsFrames = this.getElement('dotsFrame');
MochiKit.DOM.setElementClass(dotsFrames, 'dots');
MochiKit.DOM.addElementClass(dotsFrames, 'steps_' + this.steps().length);
dotsFrames.innerHTML = "";
this.append(dotsFrames, {tag:'ul', id:this.getId('dots'), children:MochiKit.Base.map(
function (aStep) { return {tag:'li', children:[{tag:'span', html:'*'}]}; },
this.steps())}
);
},
//-------------------------------------------------------------------------
'handleExit': function (anEvent) {
anEvent.preventDefault();
MochiKit.Signal.signal(this, 'exit');
},
//-------------------------------------------------------------------------
'handlePrevious': function (anEvent) {
anEvent.preventDefault();
// if (!MochiKit.DOM.hasElementClass(this.getElement('previousButton'), 'disabled')) {
// this.moveBackward();
// }
MochiKit.Signal.signal(this, 'moveBackward');
},
'handleNext': function (anEvent) {
anEvent.preventDefault();
// if (!MochiKit.DOM.hasElementClass(this.getElement('nextButton'), 'disabled')) {
// this.moveForward();
// }
MochiKit.Signal.signal(this, 'moveForward');
},
//-------------------------------------------------------------------------
'currentStep': function () {
return this._currentStep;
},
'markerInitialOffset': function () {
return -246;
},
'markerStepOffset': function () {
return 410 / (this.steps().length - 1);
// return 100;
},
//-------------------------------------------------------------------------
'moveToFirstStep': function (aCallback) {
var stepsToMove;
stepsToMove = this._currentStep;
this._currentStep = 0;
this.enablePrevious(false);
this.enableNext(false);
// MochiKit.Signal.signal(this, 'moveBackward');
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TabSidePanel.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TabSidePanel.js
index 39a1ccb..666afe9 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TabSidePanel.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TabSidePanel.js
@@ -1,193 +1,190 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.TabSidePanel = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.TabSidePanel.superclass.constructor.call(this, args);
this._element = args.element || null;
this._slots = {
};
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.TabSidePanel, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.TabSidePanel component";
},
//-------------------------------------------------------------------------
'deselectAllTabs': function() {
var tabListItems;
tabListItems = [
'cardsLI',
// 'directLoginLI',
'accountLI',
'dataLI',
'toolsLI'
];
//Clipperz.log("=== TabSidePanel.tabSelected anEvent.src().id", anEvent.src().id);
for (var i in tabListItems) {
//Clipperz.log("=== TabSidePanel.tabSelected aTabListItem", tabListItems[i]);
MochiKit.DOM.removeElementClass(this.getId(tabListItems[i]), 'selected');
}
},
'selectTab': function(aTabName) {
this.deselectAllTabs();
MochiKit.DOM.addElementClass(this.getId(this.listItemIdForTabNamed(aTabName)), 'selected');
MochiKit.Signal.signal(this, 'tabSelected', aTabName);
},
'tabNameForAnchorId': function(anId) {
var result;
switch(anId) {
case 'cards_tabSidePanel':
result = 'cards';
break;
// case 'directLogins_tabSidePanel':
// result = 'directLogins';
// break;
case 'account_tabSidePanel':
result = 'account';
break;
case 'data_tabSidePanel':
result = 'data';
break;
case 'tools_tabSidePanel':
result = 'tools';
break;
}
return result;
},
'listItemIdForTabNamed': function(aTabName) {
var result;
switch (aTabName) {
case 'cards':
result = 'cardsLI';
break;
// case 'directLogins':
// result = 'directLoginLI';
// break;
case 'account':
result = 'accountLI';
break;
case 'data':
result = 'dataLI';
break;
case 'tools':
result = 'toolsLI';
break;
}
return result;
},
'tabSelected': function (anEvent) {
this.selectTab(this.tabNameForAnchorId(anEvent.src().id));
// anEvent.stop();
anEvent.preventDefault();
},
//-------------------------------------------------------------------------
'addCard': function (anEvent) {
anEvent.stop();
MochiKit.Signal.signal(this, 'addCard', anEvent.src());
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
this.append(this.element(), [
{tag:'div', cls:'header'},
{tag:'div', cls:'body', children:[
{tag:'ul', cls:'mainTabs', children:[
{tag:'li', id:this.getId('cardsLI'), cls:'cards', children:[
{tag:'a', id:'cards_tabSidePanel', href:'#', html:"cards"},
{tag:'div', cls:'selectionHighlighter', children:[
{tag:'img', src:'./images/old/main/tabs/selectionHighligher.png'},
{tag:'a', id:this.getId('addCardA'), cls:'add', href:'#', children:[
{tag:'span', html:"add"},
{tag:'h3', html:"+"}
]}
]}
]}
]},
{tag:'ul', cls:'otherTabs', children:[
{tag:'li', id:this.getId('accountLI'), children:[
{tag:'a', id:'account_tabSidePanel', href:'#', html:"account"},
{tag:'div', cls:'selectionHighlighter', children:[
{tag:'img', src:'./images/old/main/tabs/selectionHighligherGray.png'}
]}
]},
{tag:'li', id:this.getId('dataLI'), children:[
{tag:'a', id:'data_tabSidePanel', href:'#', html:"data"},
{tag:'div', cls:'selectionHighlighter', children:[
{tag:'img', src:'./images/old/main/tabs/selectionHighligherGray.png'}
]}
]},
{tag:'li', id:this.getId('toolsLI'), children:[
{tag:'a', id:'tools_tabSidePanel', href:'#', html:"tools"},
{tag:'div', cls:'selectionHighlighter', children:[
{tag:'img', src:'./images/old/main/tabs/selectionHighligherGray.png'}
]}
]}
]}
]},
{tag:'div', cls:'footer'}
]);
MochiKit.Signal.connect('cards_tabSidePanel', 'onclick', this, 'tabSelected');
// MochiKit.Signal.connect('directLogins_tabSidePanel', 'onclick', this, 'tabSelected');
MochiKit.Signal.connect('account_tabSidePanel', 'onclick', this, 'tabSelected');
MochiKit.Signal.connect('data_tabSidePanel', 'onclick', this, 'tabSelected');
MochiKit.Signal.connect('tools_tabSidePanel', 'onclick', this, 'tabSelected');
MochiKit.Signal.connect(this.getId('addCardA'), 'onclick', this, 'addCard');
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TextColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TextColumnManager.js
index 97e81b4..3dc9ce9 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TextColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TextColumnManager.js
@@ -1,53 +1,50 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
//#############################################################################
Clipperz.PM.UI.Web.Components.TextColumnManager = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.TextColumnManager.superclass.constructor.call(this, args);
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.TextColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
'toString': function () {
return "Clipperz.PM.UI.Web.Components.TextColumnManager component";
},
//-----------------------------------------------------
'__syntax_fix__' : 'syntax fix'
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.js
index 179c495..3ee6189 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.js
@@ -1,113 +1,110 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.ToolsPanel = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.ToolsPanel.superclass.constructor.apply(this, arguments);
this._initiallySelectedTab = args.selected || 'PASSWORD_GENERATOR';
this._tabPanelControllerConfiguration = {
'PASSWORD_GENERATOR': {
tab: 'passwordGeneratorTab',
panel: 'passwordGeneratorPanel'
},
'BOOKMARKLET': {
tab: 'bookmarkletTab',
panel: 'bookmarkletPanel'
},
'COMPACT_EDITION': {
tab: 'compactEditionTab',
panel: 'compactEditionPanel'
},
'HTTP_AUTH': {
tab: 'httpAuthTab',
panel: 'httpAuthPanel'
}
};
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.ToolsPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.ToolsPanel component";
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
this.append(this.element(), [
{tag:'div', cls:'header', children:[
{tag:'div', cls:'subPanelTabs', children:[
{tag:'ul', children:[
{tag:'li', id:this.getId('passwordGeneratorTab'), children:[{tag:'a', href:'#', html:'Password generator'}], cls:'first'},
{tag:'li', id:this.getId('bookmarkletTab'), children:[{tag:'a', href:'#', html:'Bookmarklet'}]},
{tag:'li', id:this.getId('compactEditionTab'), children:[{tag:'a', href:'#', html:'Compact edition'}]},
{tag:'li', id:this.getId('httpAuthTab'), children:[{tag:'a', href:'#', html:'HTTP Auth'}]}
]}
]}
]},
{tag:'div', cls:'body', children:[
{tag:'div', cls:'accountPanel', children:[
{tag:'div', cls:'subPanelContent', children:[
{tag:'ul', children:[
{tag:'li', id:this.getId('passwordGeneratorPanel'), children:[
{tag:'h3', html:"Password generator"}
]},
{tag:'li', id:this.getId('bookmarkletPanel'), children:[
{tag:'h3', html:"Bookmarklet"}
]},
{tag:'li', id:this.getId('compactEditionPanel'), children:[
{tag:'h3', html:"Compact edition"}
]},
{tag:'li', id:this.getId('httpAuthPanel'), children:[
{tag:'h3', html:"HTTP Auth"}
]}
]}
]}
]}
]},
{tag:'div', cls:'footer'}
]);
this.tabPanelController().setup({selected:this.initiallySelectedTab()});
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js
index 5b9d522..21ccf2a 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js
@@ -1,184 +1,181 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.UnlockPasswordComponent = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.UnlockPasswordComponent.superclass.constructor.apply(this, arguments);
this._openFromElement = args.openFromElement || null;
this._onOkCloseToElement = args.onOkCloseToElement || null;
this._onCancelCloseToElement = args.onCancelCloseToElement || null;
this._progressBarComponent = null;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.UnlockPasswordComponent, Clipperz.PM.UI.Common.Components.SimpleMessagePanel, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.UnlockPasswordComponent component";
},
//-------------------------------------------------------------------------
'getPassphrase': function () {
/* var deferredResult;
if (this.passphrase() == null) {
this.deferredShowModal({'openFromElement': this.openFromElement()});
deferredResult = this.deferred();
} else {
deferredResult = MochiKit.Async.succeed(this.passphrase());
}
return deferredResult;
*/
this.deferredShowModal({'openFromElement': this.openFromElement()});
return this.deferred();
},
//-------------------------------------------------------------------------
'deferredShowModal': function (someParameters) {
return Clipperz.Async.callbacks("UnlockPasswordComponent.deferredShowModal", [
MochiKit.Base.bind(Clipperz.PM.UI.Web.Components.UnlockPasswordComponent.superclass.deferredShowModal, this, someParameters),
MochiKit.Base.method(this, 'getElement', 'passphrase'),
MochiKit.Base.methodcaller('focus')
], {trace:false})
},
//-------------------------------------------------------------------------
'openFromElement': function () {
return this._openFromElement;
},
'onOkCloseToElement': function () {
return this._onOkCloseToElement;
},
'onCancelCloseToElement': function () {
return this._onCancelCloseToElement;
},
//-------------------------------------------------------------------------
'renderSelf': function() {
Clipperz.PM.UI.Web.Components.UnlockPasswordComponent.superclass.renderSelf.apply(this, arguments);
this.append(this.getElement('container'), {tag:'div', cls:'passphrase', children: [
// {tag:'form', id:this.getId('passphraseForm'), children:[
{tag:'input', id:this.getId('passphrase'), type:'password', name:'passphrase', value:''}
// ]}
]});
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'userSuccessfullyLoggedIn', this, 'userSuccessfullyLoggedInHandler');
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'userLoginFailed', this, 'userLoginFailedHandler');
// MochiKit.Async.callLater(0.1, MochiKit.Base.method(this.getElement('passphrase'), 'focus'));
// this.getElement('passphrase').select();
},
//-------------------------------------------------------------------------
'showProgressBar': function () {
var progressBarElement;
this.getElement('container').innerHTML = '';
progressBarElement = this.append(this.getElement('container'), {tag:'div', cls:'progressBarWrapper'});
this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':progressBarElement}));
this.setButtons([{text:"Cancel", result:'CANCEL'}]);
},
//-------------------------------------------------------------------------
'showFailure': function () {
this.setType('ALERT');
this.setTitle("Login failed");
this.setText("Wrong passphrase; the unlock has failed.");
this.getElement('container').innerHTML = '';
this.setButtons([{text:"Close", result:'CANCEL', isDefault:true}]);
},
//-------------------------------------------------------------------------
'closeOk': function () {
var passphrase;
passphrase = this.getElement('passphrase').value;
this.showProgressBar();
// this.deferred().callback(passphrase);
MochiKit.Async.callLater(0.5, MochiKit.Base.method(this.deferred(), 'callback', passphrase));
this._deferred = null;
},
'closeCancel': function () {
this.deferredHideModal({closeToElement:this.onCancelCloseToElement()});
this.deferred().cancel();
this._deferred = null;
},
//-------------------------------------------------------------------------
'userSuccessfullyLoggedInHandler': function (anEvent) {
this.deferredHideModal({closeToElement:this.onOkCloseToElement()});
},
'userLoginFailedHandler': function (anEvent) {
//console.log("############### FAILED LOGIN ################");
this.showFailure();
},
//-------------------------------------------------------------------------
/*
'deferredShow': function (someArgs, aResult) {
this.deferredShowModal(someArgs);
// this.deferred().addMethod(this, 'deferredHideModal', {closeToElement:someArgs.onOkCloseToElement });
// this.deferred().addErrback (MochiKit.Base.method(this, 'deferredHideModal', {closeToElement:someArgs.onCancelCloseToElement }));
// this.deferred().addCallback(MochiKit.Async.succeed, aResult);
return this.deferred();
},
*/
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js
index f26118e..d699dc6 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.UserInfoBox = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.UserInfoBox.superclass.constructor.apply(this, arguments);
this._slots = { };
this._isLocked = false;
this._lockTooltip = null;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.UserInfoBox, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.UserInfoBox component";
},
//-------------------------------------------------------------------------
'handleLogout': function(anEvent) {
//Clipperz.log(">>> UserInfoBox.handleLogout");
anEvent.preventDefault();
MochiKit.Signal.signal(this, 'logout');
//Clipperz.log("<<< UserInfoBox.handleLogout");
},
//-------------------------------------------------------------------------
'lockTooltip': function () {
return this._lockTooltip;
},
//-------------------------------------------------------------------------
'isLocked': function () {
return this._isLocked;
},
'setIsLocked': function (aValue) {
this._isLocked = aValue;
},
'toggleLock': function(anEvent) {
var deferredResult;
var shouldLock;
//console.log(">>> UserInfoBox.toggleLock [locked: " + this.isLocked() + "]");
anEvent.preventDefault();
this.lockTooltip().hide();
shouldLock = (this.isLocked() == false);
if (shouldLock) {
var maskElement;
this.setIsLocked(true);
maskElement = this.getId('modalDialogMask');
deferredResult = Clipperz.Async.callbacks("UserInfoBox.toggleLock [lock]", [
MochiKit.Base.partial(MochiKit.DOM.addElementClass, this.element(), 'locked'),
MochiKit.Base.partial(Clipperz.Visual.deferredAnimation, MochiKit.Visual.appear, maskElement, {from:0.0, to:0.75, duration:0.5}),
MochiKit.Base.method(Clipperz.PM.RunTime.mainController, 'setPassphraseDelegate', MochiKit.Base.method(this, 'askForPassphrase')),
MochiKit.Base.partial(MochiKit.Signal.signal, this, 'lock')
], {trace:false});
} else {
deferredResult = Clipperz.Async.callbacks("UserInfoBox.toggleLock [unlock]", [
MochiKit.Base.partial(MochiKit.Signal.signal, this, 'unlock')
], {trace:false});
}
//console.log("<<< UserInfoBox.toggleLock");
return deferredResult;
},
//-------------------------------------------------------------------------
'unlock': function () {
var deferredResult;
var maskElement;
this.setIsLocked(false);
maskElement = this.getId('modalDialogMask');
deferredResult = Clipperz.Async.callbacks("UserInfoBox.unlock", [
MochiKit.Base.partial(Clipperz.Visual.deferredAnimation, MochiKit.Visual.fade, maskElement, {from:0.75, to:0.0, duration:0.5}),
// Clipperz.Visual.deferredAnimation(MochiKit.Visual.fade, maskElement, {from:0.75, to:0.0, duration:0.5}),
MochiKit.Base.partial(MochiKit.DOM.removeElementClass, this.element(), 'locked')
], {trace:false});
},
//-------------------------------------------------------------------------
'askForPassphrase': function () {
var unlockPasswordComponent;
/*
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("UserInfoBox.askForPassphrase", {trace:false});
deferredResult.addCallback(MochiKit.Async.succeed, 'test');
deferredResult.callback();
return deferredResult;
*/
//console.log(">>> UserInfoBox.askForPassphrase");
unlockPasswordComponent = new Clipperz.PM.UI.Web.Components.UnlockPasswordComponent({
'title': "Unlock account",
'text': "Insert the passprase to unlock the account",
'type': 'INFO',
'buttons': [
{text:"Cancel", result:'CANCEL'},
{text:"Unlock", result:'OK', isDefault:true}
],
'openFromElement': this.getElement('lock'),
'onOkCloseToElement': null,
'onCancelCloseToElement': this.getId('lock')
});
//console.log("<<< UserInfoBox.askForPassphrase");
return unlockPasswordComponent.getPassphrase();
},
//=========================================================================
'renderSelf': function(/*aContainer, aPosition*/) {
this.append(this.element(), [
// {tag:'canvas', id:this.getId('canvas'), cls:'canvas', width:'188', height:'154'},
{tag:'div', cls:'header', children:[
{tag:'h1', html:"Welcome"},
{tag:'a', cls:'lockButton', href:'#', id:this.getId('lock'), html:'&nbsp;'}
]},
{tag:'div', cls:'body', children:[
{tag:'h3', id:this.getId('username'), html:""},
{tag:'ul', children:[
{tag:'li', id:this.getId('cards'), children:[
{tag:'span', id:this.getId('cardsNumber'), cls:'number', html:"-"},
{tag:'span', id:this.getId('cardsLabel'), html:"cards"}
]},
{tag:'li', id:this.getId('directLogins'), children:[
{tag:'span', id:this.getId('directLoginsNumber'), cls:'number', html:"-"},
{tag:'span', id:this.getId('directLoginsLabel'), html:"direct logins"}
]}
]},
{tag:'a', href:'#', id:this.getId('logout'), html:"logout >"}
]},
{tag:'div', cls:'footer'}
]);
MochiKit.Signal.connect(this.getElement('logout'), 'onclick', this, 'handleLogout');
MochiKit.Signal.connect(this.getElement('lock'), 'onclick', this, 'toggleLock');
this._lockTooltip = new Clipperz.PM.UI.Common.Components.Tooltip({
element: this.getElement('lock'),
text: "Click here to lock/unlock your account.",
position: 'RIGHT'
});
Clipperz.DOM.Helper.append(MochiKit.DOM.currentDocument().body,
{tag:'div', id:this.getId('modalDialogWrapper'), cls:'modalDialogWrapper', children:[
{tag:'div', id:this.getId('modalDialogMask'), cls:'modalDialogMask userInfoBoxMask'}
]}
);
MochiKit.Style.hideElement(this.getId('modalDialogMask'));
// this.drawUserInfoBackground(this.getElement('canvas'));
},
//-------------------------------------------------------------------------
/*
'drawUserInfoBackground': function (canvas) {
var kMyDrawingFunctionWidth = 188.0;
var kMyDrawingFunctionHeight = 154.0;
var context = canvas.getContext("2d");
var color;
var resolution;
var alignStroke;
var path;
var pointX;
var pointY;
var controlPoint1X;
var controlPoint1Y;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js
index 05563bf..9a0e744 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
Clipperz.PM.UI.Web.Controllers.AppController = function(args) {
this._user = null;
this._tabSlotNames = {
//tabName: slotName
'cards': 'cardGrid',
// 'directLogins': 'directLoginGrid',
'account': 'accountPanel',
'data': 'dataPanel',
'tools': 'toolsPanel'
};
//controllers
this._cardsController = null;
// this._directLoginsController = null;
this._filterController = null; // new Clipperz.PM.UI.Web.Controllers.FilterController();
//components
this._appPage = null;
this._userInfoBox = null;
this._tabSidePanel = null;
// MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'editCard', this, 'handleEditCard');
// MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'deleteCard', this, 'handleDeleteCard');
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'userDataSuccessfullySaved', this, 'userDataSuccessfullySavedHandler');
return this;
}
MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.AppController.prototype, {
'toString': function() {
return "Clipperz.PM.UI.Web.Controllers.AppController";
},
//-----------------------------------------------------------------------------
'setUser': function(anUser) {
this._user = anUser;
},
'user': function() {
return this._user;
},
//-----------------------------------------------------------------------------
/*
'tabSlotNames': function() {
return this._tabSlotNames;
},
*/
'slotNameForTab': function(aTabName) {
return this._tabSlotNames[aTabName];
},
'hideAllAppPageTabSlots': function() {
var aTabName;
for (aTabName in this._tabSlotNames) {
this.appPage().hideSlot(this.slotNameForTab(aTabName));
}
},
//-----------------------------------------------------------------------------
'appPage': function() {
if (this._appPage == null) {
this._appPage = new Clipperz.PM.UI.Web.Components.AppPage();
}
return this._appPage;
},
//-----------------------------------------------------------------------------
'tabSidePanel': function() {
if (this._tabSidePanel == null) {
this._tabSidePanel = new Clipperz.PM.UI.Web.Components.TabSidePanel();
}
return this._tabSidePanel;
},
//-----------------------------------------------------------------------------
'userInfoBox': function() {
if (this._userInfoBox == null) {
this._userInfoBox = new Clipperz.PM.UI.Web.Components.UserInfoBox();
MochiKit.Signal.connect(this._userInfoBox, 'logout', this, 'handleLogout');
MochiKit.Signal.connect(this._userInfoBox, 'lock', this, 'handleLock');
MochiKit.Signal.connect(this._userInfoBox, 'unlock', this, 'handleUnlock');
}
return this._userInfoBox;
},
//-----------------------------------------------------------------------------
'accountPanel': function () {
if (this._accountPanel == null) {
this._accountPanel = new Clipperz.PM.UI.Web.Components.AccountPanel(/*{selected:'Preferences'}*/);
}
return this._accountPanel;
},
//.........................................................................
'dataPanel': function () {
if (this._dataPanel == null) {
this._dataPanel = new Clipperz.PM.UI.Web.Components.DataPanel();
}
return this._dataPanel;
},
//.........................................................................
'toolsPanel': function () {
if (this._toolsPanel == null) {
this._toolsPanel = new Clipperz.PM.UI.Web.Components.ToolsPanel();
}
return this._toolsPanel;
},
//-----------------------------------------------------------------------------
'filterController': function () {
if (this._filterController == null) {
this._filterController = new Clipperz.PM.UI.Web.Controllers.FilterController();
}
return this._filterController;
},
'cardsController': function() {
if (this._cardsController == null) {
this._cardsController = new Clipperz.PM.UI.Web.Controllers.CardsController({'filterController':this._filterController});
}
return this._cardsController;
},
//-----------------------------------------------------------------------------
/*
'directLoginsController': function() {
//Clipperz.log(">>> AppController.directLoginsController");
if (this._directLoginsController == null) {
this._directLoginsController = new Clipperz.PM.UI.Web.Controllers.DirectLoginsController({'filterController':this._filterController});
}
//Clipperz.log("<<< AppController.directLoginsController");
return this._directLoginsController;
},
*/
//-----------------------------------------------------------------------------
'populateUserInfo': function() {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("AppController.populateUserInfo", {trace:false});
deferredResult.collectResults({
'username': MochiKit.Base.methodcaller('displayName'),
'cardsNumber': [
MochiKit.Base.methodcaller('getRecords'),
function (someResults) { return someResults.length; }
],
'directLoginsNumber': [
MochiKit.Base.methodcaller('getDirectLogins'),
function (someResults) { return someResults.length; }
]
})
deferredResult.addMethod(this.userInfoBox(), 'updateUserDetails');
deferredResult.callback(this.user());
return deferredResult;
},
//-----------------------------------------------------------------------------
'run': function(args) {
var deferredResult;
var slot;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js
index 2340aeb..effde31 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
Clipperz.PM.UI.Web.Controllers.CardDialogController = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Controllers.CardDialogController.superclass.constructor.call(this, args);
this._record = args.record || Clipperz.Base.exception.raise('MandatoryParameter');
this._delegate = args.delegate || Clipperz.Base.exception.raise('MandatoryParameter');
this._referenceElement = null;
this._cardDialogComponent = null;
this._fieldsReferences = {};
this._directLoginReferences = {};
this._directLoginWizardController = null;
this._directLoginEditingComponent = null;
this._isDirectLoginEditingComponentVisible = false;
return this;
};
Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.CardDialogController, Object, {
'toString': function() {
return "Clipperz.PM.UI.Web.Controllers.CardDialogController";
},
//-------------------------------------------------------------------------
'record': function () {
return this._record;
},
'delegate': function () {
return this._delegate;
},
//-------------------------------------------------------------------------
'fieldsReferences': function () {
return this._fieldsReferences;
},
'directLoginReferences': function () {
return this._directLoginReferences;
},
//-------------------------------------------------------------------------
'referenceElement': function () {
return this._referenceElement;
},
'setReferenceElement': function (anElement) {
this._referenceElement = anElement;
},
//-------------------------------------------------------------------------
'cardDialogComponent': function () {
if (this._cardDialogComponent == null) {
this._cardDialogComponent = new Clipperz.PM.UI.Web.Components.CardDialogComponent();
MochiKit.Signal.connect(this._cardDialogComponent, 'cancel', this, 'handleCancel');
MochiKit.Signal.connect(this._cardDialogComponent, 'save', this, 'handleSave');
MochiKit.Signal.connect(this._cardDialogComponent, 'addField', this, 'handleAddField');
MochiKit.Signal.connect(this._cardDialogComponent, 'changedValue', this, 'handleChangedValue');
MochiKit.Signal.connect(this._cardDialogComponent, 'addDirectLogin',this, 'handleAddDirectLogin');
MochiKit.Signal.connect(this._cardDialogComponent, 'keyPressed', this, 'handleCardDialogComponentKeyPressed');
}
return this._cardDialogComponent;
},
//=========================================================================
'directLoginWizardController': function () {
if (this._directLoginWizardController == null) {
this._directLoginWizardController = new Clipperz.PM.UI.Web.Controllers.DirectLoginWizardController({
'cardLabel': this.cardDialogComponent().title(),
'directLoginEditingComponent': this.directLoginEditingComponent()
})
MochiKit.Signal.connect(this._directLoginWizardController, 'exit', this, 'handleHideDirectLoginEditingComponent');
MochiKit.Signal.connect(this._directLoginWizardController, 'done', this, 'handleCompleteDirectLoginEditingComponent');
}
return this._directLoginWizardController;
},
//-------------------------------------------------------------------------
'directLoginEditingComponent': function () {
if (this._directLoginEditingComponent == null) {
this._directLoginEditingComponent = new Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent();
this.cardDialogComponent().renderDirectLoginEditingComponent(this._directLoginEditingComponent);
// MochiKit.Signal.connect(this._directLoginEditingComponent, 'back', this, 'handleHideDirectLoginEditingComponent')
// MochiKit.Signal.connect(this._directLoginEditingComponent, 'changedValue', this, 'handleChangedValue');
// MochiKit.Signal.connect(this.__directLoginEditingComponent, 'keyPressed', this, 'handleDirectLoginEditingComponentKeyPressed');
}
return this._directLoginEditingComponent;
},
//-------------------------------------------------------------------------
'isDirectLoginEditingComponentVisible': function () {
return this._isDirectLoginEditingComponentVisible;
},
'setIsDirectLoginEditingComponentVisible': function (aValue) {
this._isDirectLoginEditingComponentVisible = aValue;
},
//=========================================================================
'run': function (anElement) {
var deferredResult;
this.setReferenceElement(anElement);
deferredResult = new Clipperz.Async.Deferred("CardDialogController.run", {trace:false});
deferredResult.addCallback(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'initProgress', {'steps':11});
deferredResult.addMethod(this.cardDialogComponent(), 'deferredShowModal', {openFromElement:this.referenceElement()});
deferredResult.addCallback(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress');
deferredResult.addMethod(this.record(), 'label');
deferredResult.addMethod(this.cardDialogComponent(), 'setTitle');
deferredResult.addCallback(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress');
deferredResult.addMethod(this, 'updateComponentState');
deferredResult.addCallback(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress');
deferredResult.addCallback(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'progressDone');
deferredResult.addMethod(this.cardDialogComponent(), 'fixRendering');
deferredResult.addMethod(this.cardDialogComponent(), 'hideProgressMask');
if (this.record().isBrandNew()) {
deferredResult.addMethod(this.cardDialogComponent(), 'setHintMode', 'ON');
deferredResult.addMethod(this.cardDialogComponent(), 'setFocusOnTitleField');
}
deferredResult.addErrback(MochiKit.Base.method(this.cardDialogComponent(), 'showError'));
deferredResult.callback();
return deferredResult;
},
//=========================================================================
'updateComponentState': function () {
return Clipperz.Async.callbacks("CardDialogController.updateComponentState", [
MochiKit.Base.method(this.record(), 'hasPendingChanges'),
MochiKit.Base.method(this.cardDialogComponent(), 'setShouldEnableSaving'),
MochiKit.Base.method(this.record(), 'label'),
MochiKit.Base.method(this.cardDialogComponent(), 'setTitle'),
MochiKit.Base.method(this.record(), 'notes'),
MochiKit.Base.method(this.cardDialogComponent(), 'setNotes'),
MochiKit.Base.method(this.record(), 'fields'),
MochiKit.Base.values,
MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this, 'addCardDialogComponentWithField')),
MochiKit.Base.method(this.record(), 'directLogins'),
MochiKit.Base.values,
MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this, 'addCardDialogComponentWithDirectLogin')),
MochiKit.Base.method(this.cardDialogComponent(), 'resetNewFieldInputs'),
MochiKit.Base.noop
], {trace:false});
},
//-------------------------------------------------------------------------
'addCardDialogComponentWithField': function (aField) {
var fieldComponent;
fieldComponent = new Clipperz.PM.UI.Web.Components.CardDialogRecordFieldComponent({reference: aField.reference()});
MochiKit.Signal.connect(fieldComponent, 'changedValue', this, 'handleChangedValue');
MochiKit.Signal.connect(fieldComponent, 'performAction',this, 'handlePerformFieldAction');
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardsController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardsController.js
index b1a34b2..f58f0b8 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardsController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardsController.js
@@ -1,207 +1,204 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
Clipperz.PM.UI.Web.Controllers.CardsController = function() {
Clipperz.PM.UI.Web.Controllers.CardsController.superclass.constructor.apply(this, arguments);
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'cardDialogComponentClosed', this, 'handleHideCard');
return this;
}
Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.CardsController, Clipperz.PM.UI.Web.Controllers.GridController, {
'toString': function() {
return "Clipperz.PM.UI.Web.Controllers.CardsController";
},
'createGrid': function () {
var grid;
grid = new Clipperz.PM.UI.Web.Components.GridComponent({columnsManagers: [
new Clipperz.PM.UI.Web.Components.FaviconColumnManager({
'name': 'Cards.favicon',
'selector': MochiKit.Base.methodcaller('favicon'),
'cssClass': 'favicon'
}),
new Clipperz.PM.UI.Web.Components.LinkColumnManager({
'name': 'Cards.title',
'selector': MochiKit.Base.methodcaller('label'),
'label': 'title',
'cssClass': 'title',
'comparator': Clipperz.Base.caseInsensitiveCompare,
'sortable': true,
'sorted': 'ASCENDING',
// 'actionMethod': function(anObject, anEvent) { MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'editCard', {objectData:anObject, element:anEvent.src()})}
'actionMethod': MochiKit.Base.method(this, 'handleShowCard')
}),
new Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager({
'name': 'Cards.directLogins',
'selector': MochiKit.Base.methodcaller('directLoginReferences'),
'label': 'direct logins',
'cssClass': 'directLogin'
}),
new Clipperz.PM.UI.Web.Components.DateColumnManager({
'name': 'Cards.latestUpdate',
'selector': MochiKit.Base.methodcaller('updateDate'),
'label': 'latest update',
'cssClass': 'latestUpdate',
'format': 'd-m-Y',
'comparator': MochiKit.Base.compare,
'sortable': true,
'sorted': 'UNSORTED'
}),
new Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager({
'name': 'Cards.delete',
'selector': MochiKit.Base.noop,
'cssClass': 'delete',
// 'actionMethod': function(anObject, anEvent) { MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'deleteCard', {objectData:anObject, element:anEvent.src()})}
'actionMethod': MochiKit.Base.method(this, 'handleDeleteCard')
})
]});
grid.setComponentForSlotNamed(new Clipperz.PM.UI.Web.Components.BookmarkletComponent(), 'headerSlot');
return grid;
},
//-----------------------------------------------------------------------------
'getRows': function () {
//TODO relying on user() in GridController, bad code smell :|
return this.user().getRecords();
},
//=============================================================================
'displayEmptyContent': function () {
var emptyGridComponent;
emptyGridComponent = new Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent();
return Clipperz.Async.callbacks("CardsController.displayEmptyContent", [
MochiKit.Base.method(this.grid(), 'setNoRowsGridComponent', emptyGridComponent),
MochiKit.Base.bind(Clipperz.PM.UI.Web.Controllers.CardsController.superclass.displayEmptyContent, this)
], {trace:false});
},
'displaySelectedRows': function (aFilter) {
this.columnManagerWithName('Cards.directLogins').hideDirectLoginListPopup();
return Clipperz.PM.UI.Web.Controllers.CardsController.superclass.displaySelectedRows.apply(this, arguments);
},
//=============================================================================
'handleShowCard': function (anObject, anEvent) {
var cardDialogController;
cardDialogController = new Clipperz.PM.UI.Web.Controllers.CardDialogController({record:anObject, delegate:this});
this.grid().selectRow(anObject);
cardDialogController.run(anEvent.src());
},
//.........................................................................
'handleHideCard': function () {
this.focus();
},
//-----------------------------------------------------------------------------
'addCard': function (aSourceElement) {
return Clipperz.Async.callbacks("CardsController.addCard", [
Clipperz.Async.collectResults("CardsController.addCard <inner results>", {
'record': MochiKit.Base.method(this.user(), 'createNewRecord'),
'delegate': MochiKit.Base.partial(MochiKit.Async.succeed, this)
}, {trace:false}),
function (someParameters) {
return new Clipperz.PM.UI.Web.Controllers.CardDialogController(someParameters);
},
MochiKit.Base.methodcaller('run', aSourceElement)
], {trace:false});
},
//-----------------------------------------------------------------------------
'handleDeleteCard': function (anObject, anEvent) {
var deferredResult;
var confirmationDialog;
// confirmationDialog = new Clipperz.PM.UI.Common.Components.SimpleMessagePanel({
confirmationDialog = new Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar({
'title': "Delete Card",
'text': "Do you want to delete …",
'type': 'ALERT',
'buttons': [
{text:"Cancel", result:'CANCEL'},
{text:"Delete", result:'OK', isDefault:true}
],
'canCancelWhileProcessing': false
});
deferredResult = new Clipperz.Async.Deferred("AppController.handleDeleteCard", {trace:false});
deferredResult.addCallback(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'initProgress', {'steps':5}),
deferredResult.addMethod(this.grid(), 'selectRow', anObject);
deferredResult.addMethod(confirmationDialog, 'deferredShowModal', {
'openFromElement': anEvent.src(),
'onOkCloseToElement': null, // MochiKit.DOM.currentDocument().body,
'onCancelCloseToElement': anEvent.src()
});
// deferredResult.addCallback(function () { Clipperz.log("DELETE: " + anObject.toString(), anObject); });
deferredResult.addMethod(this.user(), 'deleteRecord', anObject);
deferredResult.addBothPass(MochiKit.Base.method(this.grid(), 'unselectRow', anObject));
deferredResult.addMethod(this, 'saveChanges');
deferredResult.addMethod(confirmationDialog, 'deferredDone');
deferredResult.addErrbackPass(function (anError) {
var result;
if (! (anError instanceof MochiKit.Async.CancelledError)) {
result = confirmationDialog.deferredError({
'type': 'ALERT',
'title': "Error",
'text': Clipperz.PM.Strings.errorDescriptionForException(anError),
'buttons': [{text:"Close", result:'CANCEL', isDefault:true}]
})
} else {
result = anError;
}
return result;
});
deferredResult.callback();
return deferredResult;
},
//=============================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js
index 38fdc08..c025a51 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
Clipperz.PM.UI.Web.Controllers.DirectLoginWizardController = function(args) {
this._directLoginEditingComponent = args.directLoginEditingComponent || Clipperz.Base.exception.raise('MandatoryParameter');
this._cardLabel = args.cardLabel || Clipperz.Base.exception.raise('MandatoryParameter');
MochiKit.Signal.connect(this._directLoginEditingComponent, 'changedValue', this, 'handleChangedValue');
MochiKit.Signal.connect(this._directLoginEditingComponent, 'moveForward', this, 'handleMoveForward');
MochiKit.Signal.connect(this._directLoginEditingComponent, 'keyPressed', this, 'handleDirectLoginEditingComponentKeyPressed');
this._directLogin = null;
this._directLoginHasJustBeenAdded = false;
this._rulerComponent = null;
this._steps = null;
this._currentStepIndex = 0;
this._isNextEnabled = false;
this._recordFields = null;
this._originalBindings = null;
this._bindingComponents = [];
this._formValueComponents = [];
return this;
}
MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.DirectLoginWizardController.prototype, {
'toString': function() {
return "Clipperz.PM.UI.Web.Controllers.DirectLoginWizardController";
},
//-------------------------------------------------------------------------
'directLogin': function () {
return this._directLogin;
},
//-------------------------------------------------------------------------
'directLoginHasJustBeenAdded': function () {
return this._directLoginHasJustBeenAdded;
},
'setDirectLoginHasJustBeenAdded': function (aValue) {
this._directLoginHasJustBeenAdded = aValue;
},
//-------------------------------------------------------------------------
'directLoginEditingComponent': function () {
return this._directLoginEditingComponent;
},
//=============================================================================
'cardLabel': function () {
return this._cardLabel;
},
//=============================================================================
'resetCurrentStepIndex': function () {
this._currentStepIndex = 0;
this.rulerComponent().resetStatus();
},
//-----------------------------------------------------------------------------
'enableNext': function (aValue) {
this.rulerComponent().enableNext(aValue);
this._isNextEnabled = aValue;
},
'isNextEnabled': function () {
return this._isNextEnabled;
},
//-----------------------------------------------------------------------------
'enablePrevious': function (aValue) {
this.rulerComponent().enablePrevious(aValue);
},
//=============================================================================
'bindingComponents': function () {
return this._bindingComponents;
},
'resetBindingComponents': function () {
this.directLoginEditingComponent().clearAllBindingsComponents();
this._bindingComponents = [];
},
//=============================================================================
'formValueComponents': function () {
return this._formValueComponents;
},
'resetFormValueComponents': function () {
this.directLoginEditingComponent().clearAllFormValueComponents();
this._formValueComponents = [];
},
//=============================================================================
'recordFields': function () {
return this._recordFields;
},
'setRecordFields': function (aValue) {
this._recordFields = aValue;
},
'recordFieldWithReference': function (aReference) {
var matchingValues;
var result;
matchingValues = MochiKit.Base.filter(function (aField) { return aField['reference'] == aReference; }, this.recordFields());
if (matchingValues.length == 0) {
result = null;
} else {
result = matchingValues[0];
}
return result;
},
//-----------------------------------------------------------------------------
'originalBindings': function () {
return this._originalBindings;
},
'setOriginalBindings': function (aValue) {
//console.log("BINDINGS", aValue);
this._originalBindings = aValue;
},
//=============================================================================
'rulerComponent': function () {
if (this._rulerComponent == null) {
this._rulerComponent = new Clipperz.PM.UI.Web.Components.RulerComponent({
translationContext:'Wizards.DirectLoginWizard'
});
this._rulerComponent.render();
MochiKit.Signal.connect(this._rulerComponent, 'exit', this, 'handleExit');
MochiKit.Signal.connect(this._rulerComponent, 'done', this, 'done');
MochiKit.Signal.connect(this._rulerComponent, 'moveForward', this, 'handleMoveForward');
MochiKit.Signal.connect(this._rulerComponent, 'moveBackward', this, 'handleMoveBackward');
MochiKit.Signal.connect(this._rulerComponent, 'cursorMoved', this, 'handleCursorMoved');
}
return this._rulerComponent;
},
//-----------------------------------------------------------------------------
'showRuler': function (someSteps) {
var rulerElement;
this.setSteps(someSteps);
rulerElement = this.rulerComponent().element();
this.directLoginEditingComponent().disableAllPanels();
MochiKit.Style.showElement(rulerElement);
MochiKit.Style.setElementPosition(rulerElement, {x:-1000, y:this.directLoginEditingComponent().bottomMargin()});
new MochiKit.Visual.Move(rulerElement, {
x:0, y:this.directLoginEditingComponent().bottomMargin(),
mode:'absolute',
duration:1,
afterFinish:MochiKit.Base.method(this, 'handleCursorMoved')
});
},
'fixRulerRendering': function (aValue) {
this.rulerComponent().setDisplayMode(aValue);
},
//-----------------------------------------------------------------------------
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js
index 28401a2..6ca3be4 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js
@@ -1,145 +1,142 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
/*
Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
Clipperz.PM.UI.Web.Controllers.DirectLoginsController = function() {
Clipperz.PM.UI.Web.Controllers.DirectLoginsController.superclass.constructor.apply(this, arguments);
return this;
};
Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.DirectLoginsController, Clipperz.PM.UI.Web.Controllers.GridController, {
'createGrid': function () {
return new Clipperz.PM.UI.Web.Components.GridComponent({columnsManagers: [
new Clipperz.PM.UI.Web.Components.FaviconColumnManager({
'name': 'DirectLogins.favicon',
'selector': MochiKit.Base.methodcaller('favicon'),
'cssClass': 'favicon'
}),
// new Clipperz.PM.UI.Web.Components.LinkColumnManager({
new Clipperz.PM.UI.Web.Components.DirectLoginColumnManager({
'name': 'DirectLogins.title',
'selector': MochiKit.Base.methodcaller('label'),
'label': 'title',
'cssClass': 'title',
'comparator': Clipperz.Base.caseInsensitiveCompare,
'sortable': true,
'sorted': 'ASCENDING',
'actionMethod': MochiKit.Base.methodcaller('runDirectLogin')
}),
// new Clipperz.PM.UI.Web.Components.TextColumnManager({ //should be StrengthColumnManager
// 'label': 'strength',
// 'cssClass': 'title',
// 'selector': MochiKit.Base.methodcaller('label') //should be 'strength' or a strenght evaluation function
// }),
new Clipperz.PM.UI.Web.Components.LinkColumnManager({
'name': 'DirectLogins.cardTitle',
'selector': MochiKit.Base.compose(MochiKit.Base.methodcaller('label'), MochiKit.Base.methodcaller('record')),
'label': 'card',
'cssClass': 'cardTitle',
'comparator': Clipperz.Base.caseInsensitiveCompare,
'sortable': true,
'sorted': 'UNSORTED',
'actionMethod': MochiKit.Base.method(this, 'handleShowCard')
}),
// new Clipperz.PM.UI.Web.Components.TextColumnManager({ //should be StrengthColumnManager
// 'label': 'last access',
// 'cssClass': 'title',
// 'selector': MochiKit.Base.methodcaller('label')
// // 'sortable': true,
// // 'sorted': 'UNSORTED'
// }),
// new Clipperz.PM.UI.Web.Components.TextColumnManager({
// 'label': 'commands',
// 'cssClass': 'title',
// 'selector': MochiKit.Base.methodcaller('label'), //should be a function for commands display
// }),
new Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager({
'name': 'DirectLogins.delete',
'selector': MochiKit.Base.noop,
'cssClass': 'delete',
// 'actionMethod': function(anObject, anEvent) { MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'deleteDirectLogin', {objectData:anObject, element:anEvent.src()})}
'actionMethod': MochiKit.Base.method(this, 'handleDeleteDirectLogin')
})
]});
},
//-----------------------------------------------------------------------------
'getRows': function () {
// TODO: relying on user() in GridController, bad code smell :|
return this.user().getDirectLogins();
},
//-----------------------------------------------------------------------------
'handleShowCard': function (anObject, anEvent) {
var cardDialogController;
cardDialogController = new Clipperz.PM.UI.Web.Controllers.CardDialogController({record:anObject.record()})
cardDialogController.run(anEvent.src());
},
//-----------------------------------------------------------------------------
'handleDeleteDirectLogin': function (anObject, anEvent) {
var deferredResult;
var confirmationDialog;
confirmationDialog = new Clipperz.PM.UI.Common.Components.SimpleMessagePanel({
title: "Delete DirectLogin",
text: "Do you want to delete …",
type: 'ALERT',
buttons: [
{text:"Cancel", result:'CANCEL', isDefault:true},
{text:"Delete", result:'OK'}
]
});
deferredResult = new Clipperz.Async.Deferred("AppController.handleDeleteCard", {trace:false});
// deferredResult = confirmationDialog.deferredShow({openFromElement:anEvent.src(), onOkCloseToElement:MochiKit.DOM.currentDocument().body, onCancelCloseToElement:anEvent.src()});
deferredResult.addMethod(confirmationDialog, 'deferredShow', {
'openFromElement': anEvent.src(),
'onOkCloseToElement': null, // MochiKit.DOM.currentDocument().body,
'onCancelCloseToElement': anEvent.src()
});
deferredResult.addCallback(function () { Clipperz.log("DELETE: " + anObject.toString(), anObject); });
deferredResult.addErrbackPass(function () { Clipperz.log("skip deletion: " + anObject.toString(), anObject); });
deferredResult.callback();
return deferredResult;
},
//-----------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
*/ \ No newline at end of file
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/FilterController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/FilterController.js
index 13e02bc..bfc093a 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/FilterController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/FilterController.js
@@ -1,158 +1,155 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
Clipperz.PM.UI.Web.Controllers.FilterController = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Controllers.FilterController.superclass.constructor.call(this, args);
this._filterElements = [];
this._filter = "";
this._pendingSearchClicks = 0;
return this;
};
Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.FilterController, Object, {
//-----------------------------------------------------------------------------
'getFilter': function () {
return this._filter;
},
'_setFilter': function (aFilterElement, aFilter) {
if (aFilter != this._filter) {
this._filter = aFilter;
MochiKit.Signal.signal(this, 'filterUpdated', aFilter);
this.updateFilterElements(aFilterElement, aFilter);
}
},
'setFilter': function (aFilter) {
this._setFilter(null, aFilter);
},
//-----------------------------------------------------------------------------
'filterElements': function () {
return this._filterElements;
},
'registerFilterElement': function (aFilterElement) {
//Clipperz.log("=== FilterController.registerFilterElement", aFilterElement);
this._filterElements.push(aFilterElement);
MochiKit.Signal.connect(aFilterElement, 'onkeydown', this, 'searchClickHandler');
MochiKit.Signal.connect(aFilterElement, 'onfocus', this, 'searchClickHandler');
},
'removeFilterElement': function (aFilterElement) {
var i;
var filterElements;
for (i=0; i < filterElements; i++) {
if (filterElements[i] == aFilterElement);
filterElements.splice(i, 1);
// TODO unregister/disconnect filterElement ?? MochiKit.Signal.disconnect(this.grid().filterElement(), 'updateFilter', this.filterController(), 'handleUpdateFilter');
}
},
'updateFilterElements': function (aSourceElement, aFilterString) {
MochiKit.Iter.forEach(this.filterElements(),
function (aFilterElement) {
if (aFilterElement != aSourceElement) {
aFilterElement.value = aFilterString;
}
}
);
if (aSourceElement != null) {
aSourceElement.focus();
}
},
//-----------------------------------------------------------------------------
'run': function () {
//Clipperz.log("=== FilterController.run");
},
//-----------------------------------------------------------------------------
'pendingSearchClicks': function () {
return this._pendingSearchClicks;
},
'incrementPendingSearchClicks': function () {
this._pendingSearchClicks++;
},
'decrementPendingSearchClicks': function () {
this._pendingSearchClicks--;
},
//-----------------------------------------------------------------------------
'searchClickHandler': function (anEvent) {
if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ENTER')) {
anEvent.preventDefault();
} else {
var value;
if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ESCAPE')) {
value = ""
} else if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ARROW_UP')) {
} else if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ARROW_DOWN')) {
} else {
value = null;
}
this.incrementPendingSearchClicks();
MochiKit.Async.callLater(0.1, MochiKit.Base.method(this, "searchClickDeferredHandler", anEvent.src(), value));
}
},
//.........................................................................
'searchClickDeferredHandler': function (aFilterElement, aValue) {
if (aValue != null) {
aFilterElement.value = aValue;
}
this.decrementPendingSearchClicks();
if (this.pendingSearchClicks()==0) {
this._setFilter(aFilterElement, aFilterElement.value);
}
},
//-----------------------------------------------------------------------------
'syntaxFix': 'syntax fix'
}); \ No newline at end of file
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/GridController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/GridController.js
index 740a091..8bb3016 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/GridController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/GridController.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
Clipperz.PM.UI.Web.Controllers.GridController = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Controllers.GridController.superclass.constructor.call(this, args);
this._grid = null;
this._user = null;
this._sortedColumnManager = null;
this._cachedObjects = null;
this._filterController = args.filterController || null;
this._deferredDisplaySelectedRowsInvocation = null;
return this;
};
Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.GridController, Object, {
'toString': function() {
return "Clipperz.PM.UI.Web.Controllers.GridController";
},
//-----------------------------------------------------------------------------
'createGrid': function () {
throw Clipperz.Base.exception.AbstractMethod;
},
'setupWithGrid': function (aGrid) {
this._grid = aGrid;
if (this._grid != null) {
MochiKit.Iter.forEach(this.columnsManagers(), function (aColumnManager) {
if (aColumnManager.isSortable()) {
if (aColumnManager.isSorted()) {
this.setSortedColumnManager(aColumnManager);
}
MochiKit.Signal.connect(aColumnManager, 'sort', this, 'handleColumnManagerSort');
}
MochiKit.Signal.connect(aColumnManager, 'selectRow', this, 'handleColumnManagerSelectRow');
MochiKit.Signal.connect(aColumnManager, 'unselectRow', this, 'handleColumnManagerUnselectRow');
}, this);
}
},
'grid': function() {
if (this._grid == null) {
this.setupWithGrid(this.createGrid());
}
return this._grid;
},
'filterController': function () {
//Clipperz.log('GridController.filterController >>>', this._filterController);
if (this._filterController == null) {
this._filterController = new Clipperz.PM.UI.Web.Controllers.FilterController();
}
//Clipperz.log('GridController.filterController <<<', this._filterController);
return this._filterController;
},
//-----------------------------------------------------------------------------
'columnsManagers': function () {
return this.grid().columnsManagers();
},
'columnManagerWithName': function (aName) {
var managers;
var result;
managers = MochiKit.Base.filter(function (aManager) { return aManager.name() == aName; } , this.columnsManagers());
if (managers.length == 1) {
result = managers[0];
} else if (managers.length == 0) {
result = null;
} else {
throw "WTF!!!";
}
return result;
},
'sortedColumnManager': function () {
return this._sortedColumnManager;
},
'setSortedColumnManager': function(aValue) {
if (aValue.sorted() != 'UNSORTED') {
this._sortedColumnManager = aValue;
} else {
this._sortedColumnManager = null;
}
},
//-----------------------------------------------------------------------------
'handleColumnManagerSort': function(aSelectedColumnManager) {
MochiKit.Iter.forEach(this.columnsManagers(), function(aColumnManager) {
if (aSelectedColumnManager != aColumnManager) {
if (aColumnManager.isSortable()) {
aColumnManager.setSorted('UNSORTED');
}
}
});
aSelectedColumnManager.toggleSorting();
this.setSortedColumnManager(aSelectedColumnManager);
this.displaySelectedRows(this.filterController().getFilter());
},
'handleColumnManagerSelectRow': function (aRowObject) {
this.grid().selectRow(aRowObject);
},
'handleColumnManagerUnselectRow': function (aRowObject) {
this.grid().unselectRow(aRowObject);
},
//-----------------------------------------------------------------------------
'handleFilterUpdated': function (aFilter) {
if (this.grid().isActive()) {
this.displaySelectedRows(aFilter);
}
},
//-----------------------------------------------------------------------------
// TODO: relying on user() in GridController, bad code smell :|
// mhh: a controller should have access to business logic object too. Otherwise it will fail its controller role. [Giulio Cesare]
'setUser': function(anUser) {
this._user = anUser;
},
'user': function() {
return this._user;
},
//-----------------------------------------------------------------------------
'run': function(args) {
//Clipperz.log("=== GridController.run");
var deferredResult;
this.setUser(args.user);
args.slot.setContent(this.grid());
this.filterController().registerFilterElement(this.grid().filterElement());
MochiKit.Signal.connect(this.filterController(), 'filterUpdated', this, 'handleFilterUpdated');
return this.displaySelectedRows();
},
//-----------------------------------------------------------------------------
'handleGenericError': function(anError) {
var result;
if (anError instanceof MochiKit.Async.CancelledError) {
result = anError;
} else {
Clipperz.log("## GridController - GENERIC ERROR" + "\n" + "==>> " + anError + " <<==\n" + anError.stack);
result = new MochiKit.Async.CancelledError(anError);
}
return result;
},
//-----------------------------------------------------------------------------
'getRows': function () {
throw Clipperz.Base.AbstractMethod;
},
//-----------------------------------------------------------------------------
'setDeferredDisplaySelectedRowsInvocation': function (aDeferred) {
if (this._deferredDisplaySelectedRowsInvocation != null) {
this._deferredDisplaySelectedRowsInvocation.cancel();
}
this._deferredDisplaySelectedRowsInvocation = aDeferred;
},
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js
index d88af41..d0b378c 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
Clipperz.PM.UI.Web.Controllers.LoginController = function(args) {
this._args = args || {};
this._loginPage = null;
this._newUserWizardController = null;
this._newUserCreationComponent = null;
return this;
}
MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.LoginController.prototype, {
'toString': function() {
return "Clipperz.PM.UI.Web.Controllers.LoginController";
},
'args': function () {
return this._args;
},
//-----------------------------------------------------------------------------
'loginPage': function() {
if (this._loginPage == null) {
this._loginPage = new Clipperz.PM.UI.Web.Components.LoginPage();
MochiKit.Signal.connect(this._loginPage, 'createNewAccountClick', this, 'handleCreateNewAccountClick')
}
return this._loginPage;
},
//-----------------------------------------------------------------------------
'run': function(args) {
var slot;
var loginPage;
var loginForm;
slot = args.slot;
loginForm = new Clipperz.PM.UI.Web.Components.LoginForm({'autocomplete': this.args()['autocomplete']});
slot.setContent(this.loginPage());
this.loginPage().slotNamed('loginForm').setContent(loginForm);
MochiKit.Signal.connect(loginForm, 'doLogin', MochiKit.Base.method(this, 'doLogin', loginForm));
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'doLogin', MochiKit.Base.method(this, 'doLogin', loginForm));
},
//-----------------------------------------------------------------------------
'doLogin': function(aLoginForm, anEvent) {
var deferredResult;
var parameters;
// var shouldUseOTP;
var loginProgress;
var user;
var getPassphraseDelegate;
parameters = anEvent;
// shouldUseOTP = (typeof(parameters.passphrase) == 'undefined');
getPassphraseDelegate = MochiKit.Base.partial(MochiKit.Async.succeed, parameters.passphrase);
user = new Clipperz.PM.DataModel.User({'username':parameters.username, 'getPassphraseFunction':MochiKit.Base.method(Clipperz.PM.RunTime.mainController, 'getPassphrase')});
loginProgress = new Clipperz.PM.UI.Web.Components.LoginProgress();
deferredResult = new Clipperz.Async.Deferred("LoginController.doLogin", {trace:false});
deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'initProgress', {'steps':4});
deferredResult.addMethod(Clipperz.PM.RunTime.mainController, 'setPassphraseDelegate', getPassphraseDelegate);
deferredResult.addMethod(loginProgress, 'deferredShowModal', {deferredObject:deferredResult, openFromElement:aLoginForm.submitButtonElement()});
deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'deferredEntropyCollection');
// if (shouldUseOTP == false) {
deferredResult.addMethod(user, 'login');
// } else {
// deferredResult.addMethod(user, 'loginUsingOTP', parameters.username, parameters.otp);
// }
deferredResult.addCallback(function(aLoginProgress, res) {
aLoginProgress.disableCancel();
return res;
}, loginProgress);
deferredResult.addCallback(function () {
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'CARDS_CONTROLLER_DID_RUN', MochiKit.Base.method(loginProgress, 'deferredHideModalAndRemove', {closeToElement:MochiKit.DOM.currentDocument().body}));
})
deferredResult.addMethod(this, 'userLoggedIn', user, loginProgress, aLoginForm);
deferredResult.addErrback (MochiKit.Base.method(this, 'handleFailedLogin', loginProgress));
deferredResult.addErrback (MochiKit.Base.method(loginProgress, 'deferredHideModalAndRemove', {closeToElement:aLoginForm.submitButtonElement()}));
deferredResult.addErrbackPass (MochiKit.Base.method(aLoginForm, 'focusOnPassphraseField'));
deferredResult.addBoth(MochiKit.Base.method(Clipperz.PM.RunTime.mainController, 'removePassphraseDelegate', getPassphraseDelegate));
deferredResult.callback();
MochiKit.Signal.connect(loginProgress, 'cancelEvent', deferredResult, 'cancel');
return deferredResult;
},
//-----------------------------------------------------------------------------
'userLoggedIn': function(aUser) {
//Clipperz.log(">>> LoginController.userLoggedIn");
MochiKit.Signal.signal(this, 'userLoggedIn', {user: aUser});
//Clipperz.log("<<< LoginController.userLoggedIn");
},
//=========================================================================
'handleCreateNewAccountClick': function (aComponent) {
// return Clipperz.PM.DataModel.User.registerNewAccount("new", "user");
return Clipperz.Async.callbacks("LoginController.handleCreateNewAccountClick", [
//' MochiKit.Base.method(this, 'newUserCreationComponent'),
// MochiKit.Base.methodcaller('deferredShowModal', {openFromElement:aComponent}),
// MochiKit.Base.method(this.newUserWizardController(), 'run')
MochiKit.Base.method(this, 'newUserCreationComponent'),
Clipperz.Async.forkAndJoin("Async.test succeedingForkedAndWaitDeferrer", [
MochiKit.Base.method(this.newUserCreationComponent(), 'deferredShowModal', {openFromElement:aComponent, duration:0.5}),
MochiKit.Base.method(this.newUserWizardController(), 'run')
], {trace:false}),
// MochiKit.Base.method(this.newUserCreationComponent(), 'enableCredentialsField')
], {trace:false});
},
//-----------------------------------------------------------------------------
'newUserWizardController': function () {
if (this._newUserWizardController == null) {
this._newUserWizardController = new Clipperz.PM.UI.Web.Controllers.NewUserWizardController({
'newUserCreationComponent': this.newUserCreationComponent()
})
// MochiKit.Signal.connect(this._newUserWizardController, 'exit', this, 'handleHideNewUserCreationComponent');
MochiKit.Signal.connect(this._newUserWizardController, 'done', this, 'handleCompleteNewUserCreationComponent');
}
return this._newUserWizardController;
},
//-------------------------------------------------------------------------
'newUserCreationComponent': function () {
if (this._newUserCreationComponent == null) {
this._newUserCreationComponent = new Clipperz.PM.UI.Web.Components.NewUserCreationComponent();
}
return this._newUserCreationComponent;
},
'clearNewUserCreationComponent': function () {
if (this._newUserCreationComponent != null) {
this._newUserCreationComponent.clear();
}
this._newUserCreationComponent = null;
},
//-------------------------------------------------------------------------
'handleHideNewUserCreationComponent': function () {
this.clearNewUserCreationComponent();
},
'handleCompleteNewUserCreationComponent': function (someParameters) {
var deferredResult;
var user;
var newUserCreationComponent;
user = someParameters.user;
newUserCreationComponent = this.newUserCreationComponent();
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'CARDS_CONTROLLER_DID_RUN', MochiKit.Base.method(newUserCreationComponent, 'deferredHideModal', {closeToElement:MochiKit.DOM.currentDocument().body})),
deferredResult = new Clipperz.Async.Deferred("LoginController.handleCompleteNewUserCreationComponent", {trace:false});
deferredResult.addCallbackList([
MochiKit.Base.method(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'deferredEntropyCollection'),
MochiKit.Base.method(user, 'login'),
MochiKit.Base.method(this, 'userLoggedIn', user),
MochiKit.Base.method(this, 'clearNewUserCreationComponent')
]);
deferredResult.addErrback(function (aValue) { Clipperz.log("WTF!! Error doing the login after creating a new user" + aValue)});
deferredResult.callback();
return deferredResult;
},
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/MainController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/MainController.js
index aa0d6ad..c83e3c0 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/MainController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/MainController.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
Clipperz.PM.UI.Web.Controllers.MainController = function(args) {
this._args = args;
// controllers
this._loginController = null;
this._appController = null;
// components
this._headerComponent = null;
this._pageComponent = null;
this._footerComponent = null;
this._passphraseDelegateLock = new MochiKit.Async.DeferredLock();
this._passphraseDelegateLock.acquire();
//Clipperz.log('MainController init _passphraseDelegateLock', this._passphraseDelegateLock);
this._passphraseDelegate = null;
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'remoteRequestSent', this, 'handleRemoteRequestSent');
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'remoteRequestReceived', this, 'handleRemoteRequestReceived');
return this;
}
MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.MainController.prototype, {
'toString': function() {
return "Clipperz.PM.UI.Web.Controllers.MainController";
},
'args': function () {
return this._args;
},
//-----------------------------------------------------------------------------
'headerComponent': function() {
if (this._headerComponent == null) {
this._headerComponent = new Clipperz.PM.UI.Web.Components.PageHeader();
}
return this._headerComponent;
},
'footerComponent': function() {
if (this._footerComponent == null) {
this._footerComponent = new Clipperz.PM.UI.Web.Components.PageFooter();
}
return this._footerComponent;
},
//-----------------------------------------------------------------------------
'pageComponent': function() {
if (this._pageComponent == null) {
this._pageComponent = new Clipperz.PM.UI.Web.Components.Page({element:MochiKit.DOM.getElement('mainDiv')});
}
return this._pageComponent;
},
//-----------------------------------------------------------------------------
'loginController': function() {
if (this._loginController == null) {
this._loginController = new Clipperz.PM.UI.Web.Controllers.LoginController(this.args());
MochiKit.Signal.connect(this._loginController, 'userLoggedIn', this, 'loginControllerUserLoggedInCallback');
}
return this._loginController;
},
'appController': function() {
if (this._appController == null) {
this._appController = new Clipperz.PM.UI.Web.Controllers.AppController();
MochiKit.Signal.connect(this._appController, 'logout', this, 'handleLogout');
}
return this._appController;
},
//-----------------------------------------------------------------------------
'run': function(shoudShowRegistrationForm) {
this.pageComponent().slotNamed('header').setContent(this.headerComponent());
this.pageComponent().slotNamed('footer').setContent(this.footerComponent());
this.pageComponent().render();
this.loginController().run({slot:this.pageComponent().slotNamed('body')});
if (shoudShowRegistrationForm) {
MochiKit.Signal.signal(this.loginController().loginPage(), 'createNewAccountClick');
// this.loginController().handleCreateNewAccountClick();
}
},
//-----------------------------------------------------------------------------
'getPassphrase': function () {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("MainController.getPassphrase", {trace:false});
deferredResult.acquireLock(this._passphraseDelegateLock);
deferredResult.addMethod(this, 'invokePassphraseDelegate');
deferredResult.releaseLock(this._passphraseDelegateLock);
deferredResult.callback();
return deferredResult;
},
//.........................................................................
'invokePassphraseDelegate': function () {
return this._passphraseDelegate();
},
'passphraseDelegateLock': function () {
return this._passphraseDelegateLock;
},
//.........................................................................
'setPassphraseDelegate': function (aDelegate) {
var shouldReleaseLock;
shouldReleaseLock = (this._passphraseDelegate == null);
this._passphraseDelegate = aDelegate;
if (shouldReleaseLock) {
this._passphraseDelegateLock.release();
}
},
//.........................................................................
'removePassphraseDelegate': function (aDelegate) {
if (this._passphraseDelegate == aDelegate) {
this._passphraseDelegate = null;
this._passphraseDelegateLock.acquire();
}
},
//-------------------------------------------------------------------------
'loginControllerUserLoggedInCallback': function(anEvent) {
//Clipperz.log(">>> loginControllerUserLoggedInCallback", anEvent);
// this.setUser(anEvent.parameters()['user']);
//console.log("--- loginControllerUserLoggedInCallback - 1");
//console.log("--- loginControllerUserLoggedInCallback - 2");
this.headerComponent().switchToLoggedMode();
this.appController().run({slot:this.pageComponent().slotNamed('body'), user:anEvent['user']});
//Clipperz.log("<<< loginControllerUserLoggedInCallback");
},
//-----------------------------------------------------------------------------
'handleRemoteRequestSent': function () {
//Clipperz.log("REMOTE REQUEST sent >>>");
},
'handleRemoteRequestReceived': function () {
//Clipperz.log("REMOTE REQUEST received <<<");
},
//-----------------------------------------------------------------------------
'handleLogout': function(anEvent) {
this.exit('logout.html');
},
//-----------------------------------------------------------------------------
'exit': function(aPageName) {
//Clipperz.log("### exit " + aPageName);
MochiKit.Async.wait(0).addCallback(function() {
window.location.href = "./" + aPageName + "?ln=" + Clipperz.PM.Strings.selectedLanguage;
});
},
//-----------------------------------------------------------------------------
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js
index 28d9d20..7db6888 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
Clipperz.PM.UI.Web.Controllers.NewUserWizardController = function(args) {
this._newUserCreationComponent = args.newUserCreationComponent || Clipperz.Base.exception.raise('MandatoryParameter');
MochiKit.Signal.connect(this._newUserCreationComponent, 'changedValue', this, 'handleChangedValue');
MochiKit.Signal.connect(this._newUserCreationComponent, 'moveForward', this, 'handleMoveForward');
MochiKit.Signal.connect(this._newUserCreationComponent, 'keyPressed', this, 'handleNewUserCreationComponentKeyPressed');
this._rulerComponent = null;
this._steps = null;
this._currentStepIndex = 0;
this._isNextEnabled = false;
this._userCreationState = 'IDLE'; // 'IN PROGRESS', 'DONE', 'FAILED'
this._user = null;
return this;
}
MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.NewUserWizardController.prototype, {
'toString': function() {
return "Clipperz.PM.UI.Web.Controllers.NewUserWizardController";
},
//-------------------------------------------------------------------------
'newUserCreationComponent': function () {
return this._newUserCreationComponent;
},
//=============================================================================
'user': function () {
return this._user;
},
'setUser': function (aValue) {
this._user = aValue;
},
//-----------------------------------------------------------------------------
'userCreationState': function () {
return this._userCreationState;
},
'setUserCreationState': function (aValue) {
//console.log("+++ NewUserWizardController.setUserCreationState", aValue);
this._userCreationState = aValue;
this.checkState();
},
//=============================================================================
'resetCurrentStepIndex': function () {
this._currentStepIndex = 0;
this.rulerComponent().resetStatus({animateTransition:true});
},
//-----------------------------------------------------------------------------
'enableNext': function (aValue) {
this.rulerComponent().enableNext(aValue);
this._isNextEnabled = aValue;
},
'isNextEnabled': function () {
return this._isNextEnabled;
},
//-----------------------------------------------------------------------------
'enablePrevious': function (aValue) {
this.rulerComponent().enablePrevious(aValue);
},
//=============================================================================
'rulerComponent': function () {
if (this._rulerComponent == null) {
this._rulerComponent = new Clipperz.PM.UI.Web.Components.RulerComponent({
translationContext:'Wizards.NewUserWizard'
});
this._rulerComponent.render();
MochiKit.Signal.connect(this._rulerComponent, 'exit', this, 'handleExit');
MochiKit.Signal.connect(this._rulerComponent, 'done', this, 'done');
MochiKit.Signal.connect(this._rulerComponent, 'moveForward', this, 'handleMoveForward');
MochiKit.Signal.connect(this._rulerComponent, 'moveBackward', this, 'handleMoveBackward');
MochiKit.Signal.connect(this._rulerComponent, 'cursorMoved', this, 'handleCursorMoved');
}
return this._rulerComponent;
},
'resetRuler': function () {
// if (this._rulerComponent != null) {
// this._rulerComponent.clear();
// }
// this._rulerComponent = null;
},
//-----------------------------------------------------------------------------
'showRuler': function (someSteps) {
var rulerElement;
this.setSteps(someSteps);
rulerElement = this.rulerComponent().element();
this.newUserCreationComponent().disableAllPanels();
MochiKit.Style.showElement(rulerElement);
MochiKit.Style.setElementPosition(rulerElement, {x:-1000, y:this.newUserCreationComponent().bottomMargin()});
new MochiKit.Visual.Move(rulerElement, {
x:0, y:this.newUserCreationComponent().bottomMargin(),
mode:'absolute',
duration:0.5,
// afterFinish:MochiKit.Base.method(this, 'handleCursorMoved')
afterFinish:MochiKit.Base.method(this, 'handleRulerShowed')
});
},
//-----------------------------------------------------------------------------
'handleRulerShowed':function () {
return Clipperz.Async.callbacks("NewUserWizardController.handlerRulerShowed", [
MochiKit.Base.method(this.newUserCreationComponent(), 'waitUntilFullyRendered'),
MochiKit.Base.method(this, 'handleCursorMoved')
], {trace:false});
},
//-----------------------------------------------------------------------------
'hideRuler': function () {
new MochiKit.Visual.Move(this.rulerComponent().element(), {x:-1000, mode:'relative', duration:0.5});
},
'doneWithRuler': function () {
var rulerComponentElement;
rulerComponentElement = this.rulerComponent().element();
new MochiKit.Visual.Move(this.rulerComponent().element(), {
x:1000,
mode:'relative',
duration:1,
// afterFinish:MochiKit.Base.partial(MochiKit.Style.hideElement, rulerComponentElement)
afterFinish:function () { MochiKit.Style.hideElement(rulerComponentElement); }
});
},
//=============================================================================
'createNewUserRulerSteps': function () {
return [ 'CREDENTIALS', 'CHECK_CREDENTIALS', 'TERMS_OF_SERVICE', 'CREATE_USER'/*, 'LOGIN' */];
},
//-------------------------------------------------------------------------
'run': function () {
return Clipperz.Async.callbacks("NewUserWizardController.run", [
MochiKit.Base.method(this, 'createNewUserRulerSteps'),
MochiKit.Base.method(this, 'showRuler')
], {trace:false});
},
//-----------------------------------------------------------------------------
'checkState': function () {
var enablePrevious;
var enableNext;
enablePrevious = true;
enableNext = false;
this.newUserCreationComponent().disableAllPanels();
switch(this.currentStep()) {
case 'CREDENTIALS':
this.newUserCreationComponent().enableCredentialsPanel();
enableNext = (
(this.newUserCreationComponent().username() != '')
&&
(this.newUserCreationComponent().passphrase() != '')
);
diff --git a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardDetail.js b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardDetail.js
index 23fd236..5380aa1 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardDetail.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardDetail.js
@@ -1,166 +1,163 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components');
Clipperz.PM.UI.iPhone.Components.CardDetail = function(args) {
args = args || {};
Clipperz.PM.UI.iPhone.Components.CardDetail.superclass.constructor.apply(this, arguments);
this._cardReference = null;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardDetail, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.iPhone.Components.CardDetail component";
},
//-------------------------------------------------------------------------
'cardReference': function () {
return this._cardReference;
},
'setCardReference': function (aValue) {
this._cardReference = aValue;
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
this.append(this.element(), [
{tag:'div', cls:'cardDetail', id:this.getId('cardDetail'), children:[
{tag:'div', id:this.getId('progressBar')} //,
// {tag:'h1', cls:'loading', html:"loading"}
]}
]);
this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')}));
MochiKit.Signal.signal(Clipperz.PM.UI.Common.Controllers.ProgressBarController.defaultController, 'updateProgress', 0);
},
//=========================================================================
'showCardDetails': function (someData) {
this.element().innerHTML = '';
this.append(this.element(), [
{tag:'fieldset', id:this.getId('fields'), children:MochiKit.Base.map(function (aFieldData) {
return {tag:'div', cls:'row', children:[
{tag:'label', html:aFieldData['label']},
// {tag:'span', cls:('fieldValue ' + (aFieldData['isHidden'] ? 'password' : 'text')), html:aFieldData['value']}
{tag:'div', cls:('fieldValue ' + (aFieldData['isHidden'] ? 'password' : 'text')), children:[
{tag:'div', children:[{tag:'p', html:aFieldData['value']}]}
]}
// {tag:'input', type:'text', cls:('fieldValue ' + (aFieldData['isHidden'] ? 'password' : 'text')), value:aFieldData['value'], disabled:true}
]}
}, someData['fields'])}
]);
MochiKit.Iter.forEach(MochiKit.Selector.findChildElements(this.element(), ['span.password']), MochiKit.Base.bind(function (aPasswordElement) {
MochiKit.Signal.connect(aPasswordElement, 'onclick', function (anEvent) { alert(MochiKit.DOM.scrapeText(anEvent.src())); })
}, this));
if (someData['directLogins'].length > 0) {
this.append(this.element(), [
{tag:'h2', html:"Direct logins"},
{tag:'fieldset', id:this.getId('directLogins'), children:MochiKit.Base.map(function (aDirectLoginData) {
return {tag:'div', cls:'row', id:('directLogin_' + aDirectLoginData['_reference']), children:[
{tag:'img', cls:'favicon', src:aDirectLoginData['favicon']},
// {tag:'input', cls:'directLogin', disabled:'disabled', type:'text', name:aDirectLoginData['label'], value:aDirectLoginData['label']}
{tag:'span', cls:'directLogin', html:aDirectLoginData['label']}
]}
}, someData['directLogins'])}
]);
MochiKit.Base.map(MochiKit.Base.bind(function (aRowNode) {
MochiKit.Signal.connect(aRowNode, 'onclick', this, 'directLoginClickHandler');
}, this),
MochiKit.Selector.findChildElements(this.getElement('directLogins'), ['div.row'])
)
};
if (someData['notes'] != '') {
this.append(this.element(), [
{tag:'h2', html:"Notes"},
{tag:'fieldset', id:this.getId('fieldset'), children:[
{tag:'div', cls:'row notes', children:[
{tag:'span', html:someData['notes']}
]}
]}
]);
};
return true;
},
//-------------------------------------------------------------------------
/*
'toggleClickHandler': function (anEvent) {
var nextState;
var fieldValue;
//console.log("TOGGLE");
anEvent.preventDefault;
fieldValue = MochiKit.Selector.findChildElements(anEvent.src().parentNode.parentNode, ['span.password'])[0];
nextState = (MochiKit.DOM.getNodeAttribute(anEvent.src(), 'toggled') != 'true');
if (nextState) {
MochiKit.DOM.removeElementClass(fieldValue, 'clear');
} else {
MochiKit.DOM.addElementClass(fieldValue, 'clear');
}
MochiKit.DOM.setNodeAttribute(anEvent.src(), 'toggled', nextState);
},
*/
//=========================================================================
'directLoginClickHandler': function (anEvent) {
anEvent.preventDefault();
if (/(directLogin_)/.test(anEvent.src().id)) {
var directLoginReference;
directLoginReference = anEvent.src().id.match(/(directLogin_)(.*)/)[2];
MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'selectedDirectLogin', {cardReference:this.cardReference(), directLoginReference:directLoginReference});
}
},
//=========================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardList.js b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardList.js
index 770f983..c3f2701 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardList.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardList.js
@@ -1,204 +1,201 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components');
Clipperz.PM.UI.iPhone.Components.CardList = function(args) {
args = args || {};
Clipperz.PM.UI.iPhone.Components.CardList.superclass.constructor.apply(this, arguments);
this._cardDetail = null;
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardList, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.iPhone.Components.CardList component";
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
this.append(this.element(), [
{tag:'div', cls:'toolbar', id:'toolbar', children:[
{tag:'h1', id:'pageTitle', html:"cards"},
{tag:'a', id:'backButton', cls:'button', href:'#', html:"cards"}
]},
{tag:'div', cls:'cardList', id:this.getId('cardList'), children:[
{tag:'form', title:'search', cls:'panel cardListSearchForm', id:this.getId('cardListSearchForm'), children:[
{tag:'input', type:'search', name:'search', value:"", placeholder:"search", id:this.getId('searchField')}
]},
{tag:'ul', cls:'panel cardListPanel', id:this.getId('cardListPanel'), children:[]}
]},
{tag:'div', cls:'panel cardDetailPanel', id:this.getId('cardDetail')}
]);
MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onsubmit', this, 'searchHandler');
MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onkeydown', this, 'searchHandler');
MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onkeyup', this, 'searchHandler');
MochiKit.Signal.connect(this.getElement('cardListPanel'), 'onclick', this, 'cardListClickHandler');
MochiKit.Signal.connect('backButton', 'onclick', this, 'backButtonClickHandler');
MochiKit.Style.hideElement('backButton');
MochiKit.Style.hideElement(this.getElement('cardDetail'));
},
//-------------------------------------------------------------------------
'searchHandler': function (anEvent) {
if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ENTER')) { // RETURN
anEvent.preventDefault();
} else {
if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ESCAPE')) {
anEvent.target().value = "";
}
if (anEvent.type() == 'keyup') {
MochiKit.Signal.signal(this, 'searchEvent', anEvent.target().value);
}
}
},
//-------------------------------------------------------------------------
'update': function (someObjects) {
var cardListPanel;
var i,c;
cardListPanel = this.getElement('cardListPanel');
cardListPanel.innerHTML = '';
c = someObjects.length;
for (i=0; i<c; i++) {
this.append(cardListPanel, {tag:'li', cls:'cardListItem', id:('cardListItem_' + someObjects[i]['_reference']), children:[
{tag:'img', src:(someObjects[i]['favicon'] ? someObjects[i]['favicon'] : 'data:application/octet-stream;charset=utf-8;base64,AAABAAEAFxcAAAEAGAD8BgAAFgAAACgAAAAXAAAALgAAAAEAGAAAAAAAAAAAABIXAAASFwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////9zAC////////////////////////////////////////////////////////////////////////////////////////////9pAG////////////////////////////////////////////////////////////////////////////////////////////9rAC////////////////////////////////////////////////////////////////////////////////////////////9yAHP////////////////////////IyMizs7O6urrq6ur////////////Ozs6zs7Ozs7Pq6ur///////////////////////8AAAD////////////////////V1dWXl5eXl5eXl5elpaX4+Pj////Ozs6Xl5eXl5eXl5eenp7///////////////////////8AAAD////////////////////Ozs6Xl5eXl5eXl5eXl5fBwcHq6uqenp6Xl5eXl5eXl5eXl5f///////////////////////8AAAD////////////////////j4+OXl5eXl5eXl5eXl5eXl5elpaWXl5eXl5eXl5eXl5ezs7P///////////////////////8AAAD////////////////////////IyMiXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eenp7x8fH////////////////////////////////////////////////////4+PilpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5fOzs7////////////////////////////////////////////////////////q6uq6urqXl5eXl5eXl5eXl5eXl5eXl5eenp7V1dX4+Pj///////////////////////8AAAD////////////4+PjOzs6lpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e6urrj4+P///////////////8AAAD////////////BwcGXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fx8fH///////////8AAAD///////////+zs7OXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fj4+P///////////8AAAD////////////IyMiXl5eXl5eXl5eXl5e6urqXl5eXl5eXl5eXl5esrKylpaWXl5eXl5eXl5eenp7x8fH///////////8AAAD////////////////Ozs7Ozs7V1dX4+Pj///+Xl5eXl5eXl5eXl5fOzs7////q6urOzs7Ozs7q6ur///////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD////////////////////////////////////IyMiXl5eXl5eenp7x8fH///////////////////////////////////8AAAD////////////////////////////////////////j4+Pj4+Px8fH///////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo=')},
{tag:'a', id:('cardListReference_' + someObjects[i]['_reference']), href:'#', html:someObjects[i]['label']}
]})
MochiKit.Signal.connect('cardListItem_' + someObjects[i]['_reference'], 'onclick', this, 'cardListClickHandler');
}
},
'cardListClickHandler': function (anEvent) {
anEvent.preventDefault();
if (/(cardListReference_|cardListItem_)/.test(anEvent.target().id)) {
var cardListReference;
cardListReference = anEvent.target().id.match(/(cardListReference_|cardListItem_)(.*)/)[2];
//console.log("Showing detail for card named", cardListReference);
MochiKit.Signal.signal(this, 'selectedCard', cardListReference);
}
},
//=========================================================================
'cardDetail': function (someData) {
if (this._cardDetail == null) {
this._cardDetail = new Clipperz.PM.UI.iPhone.Components.CardDetail({element:this.getElement('cardDetail')});
}
return this._cardDetail;
},
//-------------------------------------------------------------------------
'removeCardDetail': function () {
if (this._cardDetail != null) {
this._cardDetail.remove();
this._cardDetail = null;
}
},
//=========================================================================
'showCard': function (someData) {
var deferredResult;
var offset;
offset = ((MochiKit.DOM.getNodeAttribute(MochiKit.DOM.currentDocument().body, 'orientation') == 'portrait') ? 320 : 480);
this.cardDetail().render();
this.cardDetail().setCardReference(someData['_reference']);
MochiKit.Style.setElementPosition(this.cardDetail().element(), {x:offset});
new MochiKit.Visual.Sequence([
// new MochiKit.Visual.Move(this.cardDetail().element(), {x:offset, y:45, mode:'absolute', duration:0, sync:true}),
new MochiKit.Visual.Parallel([
new MochiKit.Visual.Move(this.getElement('cardList'), {x:-offset, y:0, mode:'relative', transition:MochiKit.Visual.Transitions.linear, sync:true}),
new MochiKit.Visual.Move(this.getElement('cardDetail'), {x:0, y:45, mode:'absolute', transition:MochiKit.Visual.Transitions.linear, sync:true}),
// new MochiKit.Visual.ScrollTo('toolbar', {sync:true}),
MochiKit.Visual.appear ('backButton', { transition:MochiKit.Visual.Transitions.linear, sync:true})
], {duration:1, sync:true}),
MochiKit.Visual.fade(this.getElement('cardList'), {duration:0, sync:true})
], {})
MochiKit.DOM.getElement('pageTitle').innerHTML = someData['title'];
return true;
},
//-------------------------------------------------------------------------
'showCardDetails': function (someData) {
return this.cardDetail().showCardDetails(someData);
},
//=========================================================================
'backButtonClickHandler': function (anEvent) {
var offset;
anEvent.preventDefault();
MochiKit.DOM.getElement('pageTitle').innerHTML = "cards";
offset = ((MochiKit.DOM.getNodeAttribute(MochiKit.DOM.currentDocument().body, 'orientation') == 'portrait') ? 320 : 480);
MochiKit.Style.setElementPosition(this.getElement('cardList'), {x:-offset});
MochiKit.DOM.showElement(this.getElement('cardList'));
new MochiKit.Visual.Parallel([
new MochiKit.Visual.Move(this.getElement('cardList'), {x:offset, y:0, mode:'relative', transition:MochiKit.Visual.Transitions.linear, sync:true}),
new MochiKit.Visual.Move(this.getElement('cardDetail'), {x:offset, y:0, mode:'relative', transition:MochiKit.Visual.Transitions.linear, sync:true}),
MochiKit.Visual.fade (this.getElement('cardDetail'), { transition:MochiKit.Visual.Transitions.linear, sync:true}),
MochiKit.Visual.fade ('backButton', { transition:MochiKit.Visual.Transitions.linear, sync:true})
], {duration:1, afterFinish:MochiKit.Base.method(this, 'removeCardDetail')})
},
//=========================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/LoginForm.js b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/LoginForm.js
index eec83b0..5341878 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/LoginForm.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/LoginForm.js
@@ -1,181 +1,178 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components');
Clipperz.PM.UI.iPhone.Components.LoginForm = function(args) {
args = args || {};
Clipperz.PM.UI.iPhone.Components.LoginForm.superclass.constructor.apply(this, arguments);
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.LoginForm, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.iPhone.Components.LoginForm component";
},
//-------------------------------------------------------------------------
'focusOnUsername': function () {
this.getElement('username').focus();
},
//-------------------------------------------------------------------------
'username': function () {
return this.getElement('username').value;
},
'passphrase': function () {
return this.getElement('passphrase').value;
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
this.append(this.element(), [
{tag:'div', cls:'toolbar iPhoneClipperzToolbar', children:[
{tag:'h1', id:'pageTitle', html:'Clipperz'},
{tag:'a', id:'backButton', cls:'button', href:'#', html:"back"}
]},
{tag:'form', title:'Theaters', cls:'panel toolbarlessPanel loginForm', id:this.getId('loginFormPanel'), children:[
{tag:'fieldset', id:this.getId('fieldset'), children:[
{tag:'div', cls:'row', children:[
{tag:'label', html:"username"},
{tag:'input', type:'text', name:'username', value:"", autocorrect:'off', autocapitalize:'off', id:this.getId('username')}
]},
{tag:'div', cls:'row', children:[
{tag:'label', html:"passphrase"},
{tag:'input', type:'password', name:'passphrase', value:"", id:this.getId('passphrase')}
]}
]},
{tag:'a', cls:'whiteButton', type:'submit', href:'#', html:"Login", id:this.getId('submit')}
]},
{tag:'div', cls:'panel toolbarlessPanel loginProgressPanel', id:this.getId('loginProgressPanel'), children:[
{tag:'div', id:this.getId('progressBar')} //,
// {tag:'a', cls:'whiteButton', type:'submit', href:'#', html:"Cancel", id:this.getId('cancel')}
]},
{tag:'div', cls:'panel loginErrorPanel', id:this.getId('loginErrorPanel'), children:[
{tag:'div', cls:'errorMessage', id:this.getId('errorMessageBox'), children:[
{tag:'h2', id:this.getId('errorMessage'), html:"Login failed"}
]}
]}
]);
MochiKit.Signal.connect(this.getElement('submit'), 'onclick', this, 'submitHandler');
MochiKit.Signal.connect(this.getElement('loginFormPanel'), 'onsubmit', this, 'submitHandler');
// MochiKit.Signal.connect(this.getElement('cancel'), 'onclick', this, 'cancelHandler');
MochiKit.Signal.connect('backButton', 'onclick', this, 'backHandler');
this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')}));
// MochiKit.Style.hideElement(this.getElement('errorMessage'));
this.showLoginForm();
// MochiKit.Async.callLater(0.2, MochiKit.Base.method(this, 'focusOnUsername'));
},
//-------------------------------------------------------------------------
'showLoginForm': function () {
MochiKit.Style.showElement(this.getElement('loginFormPanel'));
MochiKit.Style.hideElement(this.getElement('loginProgressPanel'));
MochiKit.Style.hideElement(this.getElement('loginErrorPanel'));
MochiKit.Style.hideElement('backButton');
},
'slideInLoginForm': function () {
var offset;
offset = ((MochiKit.DOM.getNodeAttribute(MochiKit.DOM.currentDocument().body, 'orientation') == 'portrait') ? 320 : 480);
MochiKit.Style.showElement(this.getElement('loginFormPanel'));
MochiKit.Style.setElementPosition(this.getElement('loginFormPanel'), {x:-offset, y:0});
new MochiKit.Visual.Sequence([
new MochiKit.Visual.Parallel([
new MochiKit.Visual.Move(this.getElement('loginErrorPanel'), {x:offset, y:0, mode:'relative', transition:MochiKit.Visual.Transitions.linear, sync:true}),
new MochiKit.Visual.Move(this.getElement('loginFormPanel'), {x:0, y:0, mode:'absolute', transition:MochiKit.Visual.Transitions.linear, sync:true}),
MochiKit.Visual.fade ('backButton', { transition:MochiKit.Visual.Transitions.linear, sync:true})
], {duration:0.5, sync:true}),
MochiKit.Visual.fade(this.getElement('loginErrorPanel'), {duration:0, sync:true})
], {})
},
'showLoginProgress': function () {
MochiKit.Style.hideElement(this.getElement('loginFormPanel'));
MochiKit.Style.showElement(this.getElement('loginProgressPanel'));
},
'showLoginError': function (anError) {
this.getElement('errorMessage').innerHTML = "Login error";
MochiKit.Style.showElement('backButton');
MochiKit.Style.hideElement(this.getElement('loginProgressPanel'));
MochiKit.Style.showElement(this.getElement('loginErrorPanel'));
MochiKit.Style.setElementPosition(this.getElement('loginErrorPanel'), {x:0, y:45});
},
//-------------------------------------------------------------------------
/*
'disableCancelButton': function () {
MochiKit.DOM.hideElement(this.getElement('cancel'));
},
*/
//-------------------------------------------------------------------------
'submitHandler': function (anEvent) {
anEvent.preventDefault();
MochiKit.Signal.signal(this, 'doLogin', {'username':this.username(), 'passphrase':this.passphrase()});
},
'cancelHandler': function (anEvent) {
anEvent.preventDefault();
//console.log("CANCEL");
},
'backHandler': function (anEvent) {
anEvent.preventDefault();
this.slideInLoginForm();
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Controllers/MainController.js b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Controllers/MainController.js
index b43d877..3fcaae1 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Controllers/MainController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Controllers/MainController.js
@@ -1,216 +1,213 @@
/*
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.
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
For further information about its features and functionalities please
-refer to http://www.clipperz.com
+refer to http://www.clipperz.com.
-* Javascript Crypto Library is free software: you can redistribute
+* Clipperz Community Edition 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
+* Clipperz Community Edition 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
+ License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
Clipperz.Base.module('Clipperz.PM.UI.iPhone.Controllers');
// Some parts of this controller have been derived from the iUI library.
Clipperz.PM.UI.iPhone.Controllers.MainController = function() {
this._loginForm = null;
this._cardList = null;
this._cachedValues = null;
this._user = null;
if (typeof window.onorientationchange == 'object') {
MochiKit.Signal.connect(window, 'onorientationchange', this, 'orientationChangeHandler');
MochiKit.Async.callLater(0, MochiKit.Base.method(this, 'orientationChangeHandler'));
} else {
this.setOrientation('portrait');
// this.setOrientation('landscape');
}
this.addMetaTag('viewport', 'width=devicewidth; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;');
this.addMetaTag('apple-mobile-web-app-capable', 'yes');
this.addMetaTag('apple-mobile-web-app-status-bar-style', 'black');
this.addLinkTag('apple-touch-icon', 'data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAAACXBIWXMAAAsTAAALEwEAmpwYAAAQC0lEQVR4nO2ce3wU1b3AvzOzz2TzBpKQhIS3CnLxgYoPqAgiQS8igiAqiFprtT571YpKUa9tvVgrVvhc7IXS4lUUvGgR5CWIoiAIYoQgJGDI+0k2yW42szNz7h8pGBHIPmazqeb7+UD4DHt+vzPfPTnnzJkzIwGCLqKCHO0K/JTpkh9FuuRHkS75UaRLfhTpkh9FuuRHkS75UaRLfhTpkh9FLNGuwKnIzc3l9WXLQAIhQILWvwQnjn3vUNtjkoQQ4kSZr77KY+TIkR1/EgHQKeWnp6eTkJiI0P2gqyeOnxD7T+ttxf/wp4SwOOnTp0/UzqM9OqV8oFXygSVIm3/xvePSKf59up/cWfO9z3c2OnmfH646qVMv2XZa+RKtrT8cWruoztv2O6384/15OLSODZ237Xda+W1nMKEiROe+U9Rp5ZtFJ+51Oq/8E/P7MOjE3oFOLL/1Iik8fUJoCF03pT6RoNPKF4Q/2zF0P0J0yQ8aM/pqoesIXQs/UITotPKFYRDuXMXQ/dDV8oNECIShgRGmOKFjGIY5dYoAnVK+QCB0DSNM+Ybmb/0SOylhy8/NzWXYsGFm1OU7hGhd0RThtdrW2Y758kdcdhGLX30h7Dhhr2ouWrSI9PQ0ykrLeHn+fBYsWIDX6w0zqsAwNOQwW77QtbBnTMdJSkzgkfvuZPqkXOJi7SAMLhl2Htt37gk5ZlgtPycnh7TU7oiGo6TH6zz/3DPUVpXz3qp3+Lch54YeWLR2OyLcbkcPf9wY/bNL2fjuMg7uWM09t11PnE1FaSwADB65746wYofV8ufMeQph6MhfvoT09atIWWORBt7GNaOv5urRWyktLeWll//MXxb/FZ/PF3BcgcDQVeRwux1DQxjBz1m7JSfx2IM/Z/J1Y3A5LUiShFK3G3vpWuwVW9Bjs6i/eCGXnjcgrPqF1fJzrxkLuopUuAJJGMhH12LZMA3LG2ej7JxDZmwT//W7uVSVFPDW/y5l4ID+gQUWAmHo4V8g6VrAA64kSYwfM5It//g7+z9Zye2TxxJPDY7CpSRsnUrCzgdwlH2AZPiwNB5CajyMYqjkjhkRcvVCbvnnnzeUBJcDUbIFyVv+/RNprsKSNx/y5mP0uAS53zSuvWoc48duoqi4lD++vIC/vb4cVVVPHVyA0P1hLw0Yhh/EmU8xtXsyv3noHiaMu5xYmwXJ8GMr34ijfB3Wut2nvR3jKN9EU850fnXHNNZs2BpS/UKW/+QTj4GhIxe+fcbPyVXbsVVtR1ifRMueQE7fKbz0u6f5/dzfsGb9JuY8+wJHiopPKmXObAdDwzhFtyPLMhPGjeKRe2cyIDsVCYHiPoCjcB32qi3Imqfd0PaqrTRmTWFw31QURUbXg69ryPKvuOxihN+LXLQ6oM9L/kasBcuwFixDTzwbS+8buf6q8UwYu4bDR8t4cf5/8+bK99C01hmKOfP87/f5PdO6M/vhX3DdmOHYLTKyWo/92zdxlm/A4j0aVGyLrxzFfQDD1ZdpE8exbMX7QdcvJPmjR/2MWJuCVLIBSXUHXV6pz0fZ8yz2vS+gZYymX/ZEXvnDbOY99yjvrd1CwZFiU65wDd0PhsTUieN44O7p9E5PQhI6trrPcJavx1a7E4nQf7uc1Z/gj8nmjptCk39860tQrFu9ksuGDcX+6f1YioNPeir0mEzUrOtQs65FtyYhSWA7uorYr0O/mKm5/C0MJRYhDBRPEc6KjTirNiP7g28wp6yzNZHywfMQsoUBo+7C1+IPqnxILf+ioYMRaj1K2aZQip8SxVuC85uFOA4uwt/9EloyxkOYSwNSyzEcdRtxVm7C2lRoUk2/Q/HXY2vYj881kLumX88ri888/p1M0PKnTr4BRfKjHN2ApAc+dw8USejYqrZhq9qGkJSwYiXv+iVShFc1nXXbaXb2Ydq1VwQtP+h5/r13zUAYOpbiwAbacAhXXKTFA8S492BoPlLjBPGumKDKBiVfURQG9ctCeKuxVH0WVKIfK4rRjLMhD8lQeWDWpKDKBiX/njtngFCxlK7rkFb1r4KrYTeG5ue6kcGtZwUlf8bUCWBo2ErWBZXkx06MJx+hNZFg8dCzR1LA5QKWH+N0kpOeCJ4yLPVfhVTJHyuy0HA17Qeh8+Cs6wMvF+gHH77vTjA0JG85emx2SJX8saLJsaA3I3Q/V52fE3C5gKeaY6+6AmH4UV39qRu2EMVThL1qK47qj7F4S0Kp8780ftlFo3MATc6z8Fp6Ht/ZS0xiMg6bFZ/a/gVXwFe4TqeTqVMmMevm6zk7pwea9xhCGCAEFk8RjpptOGo/xdJcFuZpdV78sotGxwAanQNptvZEIJAkGUtiDnuLmnht+Xo2bNoS8E37kJYXYmNjmXbTjcy8aTwDMpLRmmtb1+CFQPEcIaZuB87a7VhaKoMN3enwy3E0OgfQYO9PsyWt1ZikYEnKIa+oidfe2sj6jZtD2iURkvy2uFwupk+9kRmTc+mT7kLz1CAMAQgsniPEHNtJzLGdWNTqcNJ0KKoST6O9Pw2O/visaQjDQJJlrEl9+KrYy+IVm/hg/YfoYd5vCFt+W+Lj47ll2mRuvWE02d0crV+EECAMbN4iYty7iKnfjcVfa1ZK01CVBBrs/Wi098dnTUUIA0lubeH7in0sXrmZNes2hi28LabKb0tCQgIzpk/h5glXkpko//OLaB0jbM1FxLh3E9uwF6t2LBLpA0JVEmiw9afB3heftUfrLjlZxprUm/wylSXvbOH9DzaiaZHZ+xMx+W1JSkpi5i1TuGn85fSMF2hNVSe6JntzEbGNe3E15WHRzFnqPRMtSiIN9n402Pris3RrHasAW3IfDlT4WfLOVlav3RAx4W3pEPltSUlJYdYtU5g8bjipMS2oDa2DclzDLlJrVkU0twCK4q7DY81AIGFP6UN+ucZfV33M6rUb8PuDW48Plw6X35aZU3J5YvowbGoVWRWvIYvItzZNclIQNxHVlsK4B/5OWXV9xHOejqjt1UzvkcRj04eD5iWtenmHiAewiGYyPZsQ3jqWzp2CIkdvu2pUMsuyxMo/3Y+keehRtxq7Vteh+V16Janql6RY3Lz48IQOzd2WqMh/dc7PSbJ6iG/cSUJzfjSqQKq2D5dWyuV9YPKYoVGpQ4fLv/Ga4YwY6MTmKyO1YUtHpz+BBORon2PVm3h0Yj/6ZAS+FGwWHSo/My2FObMuR9K8ZLjfRya6N2SsqPQWu8DvZsmjY3DYwrtnHCwdJl+WJd78w+2gNtKzaSN2I/Jz+kCI4xgZ4iBOo4ZFj4/v0NwdJn/h0zOJl9wkN+8lQT0cdjyBRAtOE2oGaVIRcUYF/WJr+NVkkx/0OAMdIn/KuEu4OBuc/nLSmneYErNc6k8hF2CY8KizJEFfy0FseJk2zMqFZ6WaUMP2ibj8XunJzJ42FFn3kOXdjBzG9rzjeIinzMjBI2IpNQLcdt4OVkljgO0QQvXw4syBxDkj3/9HVL4iyyx75iaMlnqyfNuwi/Z3/7aHISQO62cj2eOxxCRTbvTEbSSaUFuIUzxk24qR1RqWPnpFxF8XE1H5C2ZPxWXU0K1lP4lGqSkxS4zeeA0HGwqd/N8+G8IwKFD7429nH36gZDjqSJLrSDaKmDvjfFNino6IyZ86bhgXpHtxalVkGHmmxGw04inX0tESB/HEvGU8+6eluBOGoxoShS05puQAGOiqxI6XKzIqGHdRpmlxTyYi8nN6JvPrCX1QdC+99R2mvGxLFzIFLb2R7XHc+8cNJ54yvPnx17B0P4taNZZyNSXsPAAWWXBOQi3oXv7jaomMFLspcU/GdPkWRWbp7FyE6ibH2IMdczbTFqkZeDWZLSUp7N136MTx2to65r5xGMUWw2FPCh7dZkq+eJtG3zg3oqWEhXenYY3A+Gu6/AWPT8ShVtDDKCBRMue+bb3mosyXgEgewuPz3vjB/7+/8RN2egah6xr57m4YwpyBMivOoLsDnL6jvDjLnFlVW0yVf8v4CxmSXItL1JIlFZgSUxMyhzypWOxxPLjgs9PuEnjouSWQOQqPJlHYGGdKboCzUwQOBAMdBdx2lbn9v2ny+2amcN+YZBTdSz9ln2mv1zrs6YZPk9hWm80XeQdP+zld15n5n+uwJedQ0iRT4zOnn7DIMCQNEIKbB9UwqFesKXHBRPnzf/3vGC1udF3jmBZvSszaFgflXgei+1Aem9f+gwdHior5y45YJFmQX2vQYsK6nRBQ3dT6eJhQVZ672bzuxzT5D/75I6SMK9ENQaEvk2+8vdBE6OH9hsQ37ngUu5NH/+frgLdsLF6+nrKECbSosK86vDcUtmiwq0jiYIWEoUnY++by9HvhXygexzT5hwoOM+L2F9mnjES2u6huiWFPQ28aNEdI8Q7Wx9Ki+dnlGcyOPQeCKnvnb9/Gnn0NtR6ZohBv0dY0wceHJKobQFJiqO11K7lPbSRv/6H2CweIAvzWrGCGYfCPjds5ZhvAqGF98R4roaI5BgmDeKsa8DhQ6VU44jawpF3ILXM3BL0VT9M08sqtjD03luraerq7wB7gBbAQcLAS8opB80s4087hrbLBPPXKO6ZvJzFV/nHyDx7m3c+rmXDDJOT6/dSrFtwtFpLtLSjt/K6pOnxZJZBsCcxeBUUlVSHVoayyhoxBo+glDlHnEWQmgtzOl+9TYddhiZJaCYSM45wJ3Pu3YjZ8/EVIdWiPiC0vVFZWcvVd8/nUPxqrqzt1PoMdlQ5qfWdOub9Gwq9J7NNHsG1XcN3NyTy/8B18fabS2Az729k8XemGj/KhpkFCtrqoyJrO+CfX8E3Bt2HV4Ux0yL6dEZdewO9vTaO5cC1CCHrFCfom/bAlljbA/moJS/pljH1qhymbmJKTk1j50CCaDm/jwt6CtJMWQA0D8kuhsEJCGODKOpcl+d14/d0Pw87dHhHpdk6mqLicFZ9Ucc3E27A35lPv1anxQrKTE5ftPj98WS6BEscz66wcKTZne3lzs48q0rm0ZwsV1V4yUr7L6W2B7QehvFYCAc5zJ3H3kkNs3bHXlNzt0WG3Ed1uNzfcv4j368fh6H4Obi98+i2UN7QOcnnlEqoKB61XsvXz/abmXrt5B/tixtCiSuwuaM1XVgeb86DeI6M4Ezjaazrjn1zFkaKOe8omKtsFzx00kFd/eR6evOUgQYJdUN8sYc+8hHHPfnH69/CEgaIorHl+Es1fvU2yS3DMIyOEIC7nfBbujmXF2tDemRMOUdur6XA4WPDUbWRVr0D11CNbY5i3pzebPjNn7f9U9M7O5LWpyTSV5CFJYB08hbvmf0RpWUXEcp6JDunzT4Wmabz74ReIjBEMH9iNQwzhleWRbX317gbktCGcn6ZzICGX2597i4aGxojmbA8R7T/ZvTKF3W7rsHwDB/SL+jkDIqpbxH/qdMrX+f5U6JIfRbrkR5Eu+VGkS34U6ZIfRbrkR5Eu+VGkS34U6ZIfRbrkR5H/Bx8z6HmTXnicAAAAAElFTkSuQmCCCg==');
// this.addLinkTag('apple-touch-startup-image', 'default.png');
// if (!window.navigator.standalone) // not running as an installed app
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'selectedDirectLogin', this, 'selectedDirectLoginHandler');
MochiKit.DOM.addElementClass(document.body, 'iPhone');
return this;
}
MochiKit.Base.update(Clipperz.PM.UI.iPhone.Controllers.MainController.prototype, {
'toString': function () {
return "Clipperz.PM.UI.iPhone.Controllers.MainController";
},
//=========================================================================
'user': function () {
return this._user;
},
'setUser': function (aValue) {
this._user = aValue;
},
//=========================================================================
'loginForm': function() {
if (this._loginForm == null) {
MochiKit.DOM.removeElement('mainDiv');
this._loginForm = new Clipperz.PM.UI.iPhone.Components.LoginForm({element:MochiKit.DOM.currentDocument().body});
MochiKit.Signal.connect(this._loginForm, 'doLogin', this, 'doLoginHandler')
}
return this._loginForm;
},
'removeLoginForm': function () {
if (this._loginForm != null) {
this._loginForm.remove();
this._loginForm = null;
}
},
//-----------------------------------------------------------------------------
'cardList': function () {
if (this._cardList == null) {
this._cardList = new Clipperz.PM.UI.iPhone.Components.CardList({element:MochiKit.DOM.currentDocument().body});
MochiKit.Signal.connect(this._cardList, 'searchEvent', this, 'searchEventHandler')
MochiKit.Signal.connect(this._cardList, 'selectedCard', this, 'selecetedCardHandler')
}
return this._cardList;
},
//=========================================================================
'currentWidth': function () {
return this._currentWidth;
},
'setCurrentWidth': function (aValue) {
this._currentWidth = aValue;
},
//=========================================================================
'orientationChangeHandler': function () {
switch(window.orientation) {
case 0:
this.setOrientation('portrait');
break;
case 90:
case -90:
this.setOrientation('landscape');
break;
}
},
//-------------------------------------------------------------------------
'setOrientation': function (anOrientation) {
document.body.setAttribute('orientation', anOrientation);
setTimeout(scrollTo, 100, 0, 1);
},
//-------------------------------------------------------------------------
'slidePages': function (fromPage, toPage, backwards) {
var axis;
var slideDone;
slideDone = function () {
// console.log("slideDone");
if (!hasClass(toPage, "dialog")) {
fromPage.removeAttribute("selected");
}
checkTimer = setInterval(checkOrientAndLocation, 300);
setTimeout(updatePage, 0, toPage, fromPage);
fromPage.removeEventListener('webkitTransitionEnd', slideDone, false);
}
axis = (backwards ? fromPage : toPage).getAttribute("axis");
clearInterval(checkTimer);
if (canDoSlideAnim() && axis != 'y') {
slide2(fromPage, toPage, backwards, slideDone);
} else {
slide1(fromPage, toPage, backwards, axis, slideDone);
}
},
//-------------------------------------------------------------------------
'getCachedValues': function () {
var deferredResult;
if (this._cachedObjects != null) {
deferredResult = MochiKit.Async.succeed(this._cachedObjects);
} else {
deferredResult = new Clipperz.Async.Deferred("MainController.getCachedValues", {trace:false});
deferredResult.addMethod(this.user(), 'getRecords');
deferredResult.addCallback(MochiKit.Base.map, Clipperz.Async.collectResults("MainController.getCachedValues - collectResults", {
'_rowObject': MochiKit.Async.succeed,
'_reference': MochiKit.Base.methodcaller('reference'),
'label': MochiKit.Base.methodcaller('label'),
'favicon': MochiKit.Base.methodcaller('favicon'),
'_searchableContent': MochiKit.Base.methodcaller('searchableContent')
}, {trace:false}));
deferredResult.addCallback(Clipperz.Async.collectAll);
deferredResult.addCallback(MochiKit.Base.bind(function (someRows) {
this._cachedObjects = someRows;
return this._cachedObjects;
}, this));
deferredResult.callback();
}
return deferredResult;
},
//=========================================================================
'run': function(shouldShowRegistrationForm) {
this.loginForm().render();
MochiKit.Async.callLater(1, MochiKit.Base.method(this.loginForm(), 'focusOnUsername'));
},
//=========================================================================
'doLoginHandler': function (someArgs) {
var deferredResult;
var parameters;
var shouldUseOTP;
// var loginProgress;
var user;
var getPassphraseDelegate;
parameters = someArgs;
shouldUseOTP = (typeof(parameters.passphrase) == 'undefined');
getPassphraseDelegate = MochiKit.Base.partial(MochiKit.Async.succeed, parameters.passphrase);
user = new Clipperz.PM.DataModel.User({'username':parameters.username, 'getPassphraseFunction':getPassphraseDelegate});