Diffstat (limited to 'frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js') (more/less context) (show whitespace changes)
-rw-r--r-- | frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js | 34 |
1 files changed, 12 insertions, 22 deletions
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js index 8f8696d..507ee31 100644 --- a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js +++ b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js @@ -1,54 +1,52 @@ /* -Copyright 2008-2011 Clipperz Srl +Copyright 2008-2013 Clipperz Srl -This file is part of Clipperz Community Edition. -Clipperz Community Edition is an online password manager. +This file is part of Clipperz, the online password manager. For further information about its features and functionalities please refer to http://www.clipperz.com. -* Clipperz 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. +* Clipperz is free software: you can redistribute it and/or modify it + under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -* Clipperz 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. +* Clipperz is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. * You should have received a copy of the GNU Affero General Public - License along with Clipperz Community Edition. If not, see - <http://www.gnu.org/licenses/>. + License along with Clipperz. 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(); @@ -300,65 +298,65 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.DirectLogin, Object, { radioConfiguration = updatedRadios[aRadio['name']]; if (radioConfiguration == null) { radioConfiguration = {type:'radio', name:aRadio['name'], options:[]}; updatedRadios[aRadio['name']] = radioConfiguration; } // TODO: remove the value: field and replace it with element.dom.value = <some value> radioConfiguration.options.push({value:aRadio['value'], checked:aRadio['checked']}); // TODO: shoud remove the 'formValues' call, as it is now deferred // if ((aRadio['checked'] == true) && (this.formValues()[aRadio['name']] == null)) { // this.formValues()[aRadio['name']] = aRadio['value']; // } }, this)) updatedInputs = MochiKit.Base.concat(updatedInputs, MochiKit.Base.values(updatedRadios)); } delete result.inputs; result.inputs = updatedInputs; return result; }, '_fixConfiguration': function (aConfiguration) { var fixedConfiguration; // var inputs; // var bindings; // var i,c; fixedConfiguration = Clipperz.Base.deepClone(aConfiguration); -//console.log("PROCESS CONFIGURATION", aConfiguration); +//Clipperz.log("PROCESS CONFIGURATION", aConfiguration); switch (aConfiguration['bookmarkletVersion']) { case '0.1': fixedConfiguration['formData'] = this.fixFormDataFromBookmarkletVersion_0_1(aConfiguration['formData']); break; case '0.2': fixedConfiguration['formData'] = aConfiguration['formData']; break; } / * aConfiguration['_inputs'] = []; c = formData['inputs'].length; for (i=0; i<c; i++) { aConfiguration['_inputs'].push(new Clipperz.PM.DataModel.DirectLoginInput(formData['inputs'][i])); } * / / * aConfiguration['_bindings'] = {}; if (aConfiguration['legacyBindingData'] == null) { if (aConfiguration['bindingData'] != null) { var bindingKey; for (bindingKey in aConfiguration['bindingData']) { var newBinding; newBinding = new Clipperz.PM.DataModel.DirectLoginBinding(bindingKey, {fieldKey:aConfiguration['bindingData'][bindingKey]}); aConfiguration['_bindings'][newBinding.key()] = newBinding; } } else { var editableFields; editableFields = MochiKit.Base.filter(function(aField) { @@ -452,134 +450,129 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.DirectLogin, Object, { var result; if (someValues['configuration'] != null) { var configuration; configuration = { 'page': { 'title': someValues['label'] // 'favicon' // 'url' }, 'form': someValues['configuration']['formData'], 'version': someValues['configuration']['bookmarkletVersion'] } result = Clipperz.Base.formatJSON(configuration); } else { result = ''; } return result; } ], {trace:false}); }, //------------------------------------------------------------------------- 'setBookmarkletConfiguration': function (aValue) { var bookmarkletConfiguration; bookmarkletConfiguration = Clipperz.PM.DataModel.DirectLogin.checkBookmarkletConfiguration(aValue); -//console.log("BOOKMARKLET CONFIGURATION", bookmarkletConfiguration); + return Clipperz.Async.callbacks("DirectLogin.setBookmarkletConfiguration", [ MochiKit.Base.method(this, 'setValue', 'formData', bookmarkletConfiguration['form']), -//function (aValue) { console.log("SET VALUE - formData", aValue); return aValue; }, MochiKit.Base.method(this, 'setValue', 'bookmarkletVersion', bookmarkletConfiguration['version']), MochiKit.Base.method(this, 'favicon'), Clipperz.Async.deferredIf("the favicon is not set", [ ], [ MochiKit.Base.method(this, 'faviconUrlWithBookmarkletConfiguration', bookmarkletConfiguration), MochiKit.Base.method(this, 'setFavicon') ]), MochiKit.Base.method(this, 'updateInputsAfterChangingBookmarkletConfiguration'), MochiKit.Base.method(this, 'updateFormValuesAfterChangingBookmarkletConfiguration'), MochiKit.Base.method(this, 'updateBindingsAfterChangingBookmarkletConfiguration'), MochiKit.Base.noop ], {trace:false}); }, //========================================================================= 'formAttributes': function () { return this.getValue('formData.attributes'); }, //========================================================================= 'inputs': function () { return Clipperz.Async.callbacks("DirectLogin.inputs", [ Clipperz.Async.deferredIf("this._inputs is defined", [ ], [ MochiKit.Base.method(this, 'updateInputsAfterChangingBookmarkletConfiguration') ]) ], {trace:false}, this._inputs); }, 'setInputWithFormDataConfiguration': function (aFormDataConfiguration) { this._inputs = {}; if (aFormDataConfiguration != null) { MochiKit.Iter.forEach(aFormDataConfiguration['inputs'], MochiKit.Base.bind(function (anInputData) { var newInput; newInput = new Clipperz.PM.DataModel.DirectLoginInput(anInputData); this._inputs[newInput.name()] = newInput; }, this)); } return this._inputs; }, 'updateInputsAfterChangingBookmarkletConfiguration': function () { return Clipperz.Async.callbacks("DirectLogin.updateInputsAfterChangingBookmarkletConfiguration", [ -// MochiKit.Base.method(this, 'getValue', ''), -//function (aValue) { console.log("VALUE", aValue); return aValue }, MochiKit.Base.method(this, 'getValue', 'formData'), -//function (aValue) { console.log("FORM DATA", aValue); return aValue }, MochiKit.Base.method(this, 'setInputWithFormDataConfiguration') ], {trace:false}); }, //========================================================================= 'inputValues': function () { return Clipperz.Async.callbacks("DirectLogin.inputValues", [ MochiKit.Base.method(this, 'inputs'), MochiKit.Base.values, -//function (aValue) { console.log("INPUTS", aValue); return aValue; }, MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.partial(MochiKit.Base.method(this, 'inputValue'))), Clipperz.Async.collectAll, Clipperz.Base.mergeItems ], {trace:false}); }, 'inputValue': function (anInput) { var deferredResult; deferredResult = new Clipperz.Async.Deferred("DirectLogin.inputValue", {trace:false}); if (anInput.needsFormValue()) { deferredResult.addMethod(this, 'formValues'); deferredResult.addCallback(MochiKit.Base.itemgetter(anInput.name())); deferredResult.addMethodcaller('value'); } else if (anInput.needsBinding()) { deferredResult.addMethod(this, 'bindings'); deferredResult.addCallback(MochiKit.Base.itemgetter(anInput.name())); deferredResult.addMethodcaller('field'); deferredResult.addMethodcaller('value'); } else { deferredResult.addCallback(MochiKit.Async.succeed, anInput.value()); } deferredResult.addCallback(function (anActualValue) { return [anInput.name(), anActualValue]; }); deferredResult.callback(); return deferredResult; }, @@ -645,77 +638,74 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.DirectLogin, Object, { 'currentValues': MochiKit.Base.method(this, 'getValue', ''), 'originalValues': MochiKit.Base.method(this, 'originalConfiguration'), 'inputs': MochiKit.Base.method(this, 'inputs') }, {trace:false}), MochiKit.Base.bind(function (someValues) { var availableBindingValues; var inputRequiringBindingValues; var newBindingValues; if (MochiKit.Base.isUndefinedOrNull(someValues['originalValues']) || MochiKit.Base.isUndefinedOrNull(someValues['originalValues']['bindingData'])) { availableBindingValues = {}; } else { availableBindingValues = Clipperz.Base.deepClone(someValues['originalValues']['bindingData']) } if (someValues['currentValues'] != null) { MochiKit.Base.update(availableBindingValues, someValues['currentValues']['bindingData']); } this._bindings = {}; newBindingValues = {} MochiKit.Iter.forEach(MochiKit.Base.filter(MochiKit.Base.methodcaller('needsBinding'), MochiKit.Base.values(someValues['inputs'])), MochiKit.Base.bind(function (anInput) { var newBinding; newBindingValues[anInput.name()] = availableBindingValues[anInput.name()]; newBinding = new Clipperz.PM.DataModel.DirectLoginBinding(this, { 'key': anInput.name(), 'field': availableBindingValues[anInput.name()] }); this._bindings[anInput.name()] = newBinding; }, this)) -//console.log("THIS._BINDINGS", this._bindings); return newBindingValues; /* this._bindings = {}; -//console.log("CONFIGURATION", aConfiguration); if (someValues['currentValues'] != null) { if (someValues['currentValues']['bindingData'] != null) { var bindingKey; -//console.log("BINDING DATA", someValues['currentValues']['bindingData']); for (bindingKey in someValues['currentValues']['bindingData']) { var newBinding; newBinding = new Clipperz.PM.DataModel.DirectLoginBinding(this, { 'key': bindingKey, 'field': someValues['currentValues']['bindingData'][bindingKey] }); this._bindings[newBinding.key()] = newBinding; } } else if (someValues['currentValues']['legacyBindingData'] == null) { var bindingKey; for (bindingKey in someValues['currentValues']['legacyBindingData']) { var newBinding; newBinding = new Clipperz.PM.DataModel.DirectLoginBinding(this, { 'key': bindingKey, 'field': someValues['currentValues']['legacyBindingData'][bindingKey] }); this._bindings[newBinding.key()] = newBinding; } } else { WTF = TODO; } } return this._bindings; */ }, this), MochiKit.Base.method(this, 'setValue', 'bindingData') ], {trace:false}); }, |