summaryrefslogtreecommitdiff
path: root/frontend/gamma/js/Clipperz/PM/DataModel/Record.js
Unidiff
Diffstat (limited to 'frontend/gamma/js/Clipperz/PM/DataModel/Record.js') (more/less context) (show whitespace changes)
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/Record.js44
1 files changed, 10 insertions, 34 deletions
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/Record.js b/frontend/gamma/js/Clipperz/PM/DataModel/Record.js
index b816f80..3fc1813 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/Record.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/Record.js
@@ -1,44 +1,41 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 24if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 25if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 26if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
29 27
30 28
31Clipperz.PM.DataModel.Record = function(args) { 29Clipperz.PM.DataModel.Record = function(args) {
32//console.log(">>> new Clipperz.PM.DataModel.Record", args);
33 Clipperz.PM.DataModel.Record.superclass.constructor.apply(this, arguments); 30 Clipperz.PM.DataModel.Record.superclass.constructor.apply(this, arguments);
34 31
35 this._updateDate = (args.updateDate ? Clipperz.PM.Date.parse(args.updateDate) : Clipperz.Base.exception.raise('MandatoryParameter')); 32 this._updateDate = (args.updateDate ? Clipperz.PM.Date.parse(args.updateDate) : Clipperz.Base.exception.raise('MandatoryParameter'));
36 33
37 this._retrieveIndexDataFunction = args.retrieveIndexDataFunction|| Clipperz.Base.exception.raise('MandatoryParameter'); 34 this._retrieveIndexDataFunction = args.retrieveIndexDataFunction|| Clipperz.Base.exception.raise('MandatoryParameter');
38 this._updateIndexDataFunction = args.updateIndexDataFunction || Clipperz.Base.exception.raise('MandatoryParameter'); 35 this._updateIndexDataFunction = args.updateIndexDataFunction || Clipperz.Base.exception.raise('MandatoryParameter');
39 36
40 this._retrieveDirectLoginIndexDataFunction = args.retrieveDirectLoginIndexDataFunction|| null; 37 this._retrieveDirectLoginIndexDataFunction = args.retrieveDirectLoginIndexDataFunction|| null;
41 this._setDirectLoginIndexDataFunction = args.setDirectLoginIndexDataFunction || null; 38 this._setDirectLoginIndexDataFunction = args.setDirectLoginIndexDataFunction || null;
42 this._removeDirectLoginIndexDataFunction = args.removeDirectLoginIndexDataFunction|| null; 39 this._removeDirectLoginIndexDataFunction = args.removeDirectLoginIndexDataFunction|| null;
43 40
44 this._createNewDirectLoginFunction = args.createNewDirectLoginFunction || null; 41 this._createNewDirectLoginFunction = args.createNewDirectLoginFunction || null;
@@ -53,26 +50,24 @@ Clipperz.PM.DataModel.Record = function(args) {
53 50
54 this.setNotes(''); 51 this.setNotes('');
55 newVersion = new Clipperz.PM.DataModel.Record.Version({ 52 newVersion = new Clipperz.PM.DataModel.Record.Version({
56 'retrieveKeyFunction':MochiKit.Base.method(this, 'getVersionKey'), 53 'retrieveKeyFunction':MochiKit.Base.method(this, 'getVersionKey'),
57 'getVersion': MochiKit.Base.method(this, 'getVersion') 54 'getVersion': MochiKit.Base.method(this, 'getVersion')
58 55
59 }); 56 });
60 this._versions[newVersion.reference()] = newVersion; 57 this._versions[newVersion.reference()] = newVersion;
61 this._currentVersionReference = newVersion.reference(); 58 this._currentVersionReference = newVersion.reference();
62 // this.setLabel(''); 59 // this.setLabel('');
63 } 60 }
64 61
65//console.log("<<< new Clipperz.PM.DataModel.Record", args);
66
67 return this; 62 return this;
68} 63}
69 64
70 65
71Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.EncryptedRemoteObject, { 66Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.EncryptedRemoteObject, {
72 67
73 'toString': function() { 68 'toString': function() {
74 return "Record (" + this.reference() + ")"; 69 return "Record (" + this.reference() + ")";
75 }, 70 },
76 71
77 //------------------------------------------------------------------------- 72 //-------------------------------------------------------------------------
78 73
@@ -201,39 +196,37 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
201 } else { 196 } else {
202 result = null; //MochiKit.Async.succeed(Clipperz.PM.Strings['defaultFaviconUrl']); 197 result = null; //MochiKit.Async.succeed(Clipperz.PM.Strings['defaultFaviconUrl']);
203 } 198 }
204 199
205 return result; 200 return result;
206 }, 201 },
207 202
208 //------------------------------------------------------------------------- 203 //-------------------------------------------------------------------------
209 204
210 'searchableContent': function () { 205 'searchableContent': function () {
211 var deferredResult; 206 var deferredResult;
212 207
213//console.log(">>> searchableContent");
214 deferredResult = new Clipperz.Async.Deferred("Record.searchableContent", {trace:false}); 208 deferredResult = new Clipperz.Async.Deferred("Record.searchableContent", {trace:false});
215 209
216 deferredResult.collectResults({ 210 deferredResult.collectResults({
217 'recordLabel': MochiKit.Base.method(this, 'label'), 211 'recordLabel': MochiKit.Base.method(this, 'label'),
218 'directLoginLabels': [ 212 'directLoginLabels': [
219 MochiKit.Base.method(this, 'directLoginReferences'), 213 MochiKit.Base.method(this, 'directLoginReferences'),
220 MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.itemgetter('label')) 214 MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.itemgetter('label'))
221 ] 215 ]
222 }) 216 })
223 deferredResult.addCallback(function (someValues) { 217 deferredResult.addCallback(function (someValues) {
224 return someValues['recordLabel'] + ' ' + someValues['directLoginLabels'].join(' '); 218 return someValues['recordLabel'] + ' ' + someValues['directLoginLabels'].join(' ');
225 }); 219 });
226 deferredResult.callback(); 220 deferredResult.callback();
227//console.log("<<< searchableContent");
228 221
229 return deferredResult; 222 return deferredResult;
230 }, 223 },
231 224
232 //------------------------------------------------------------------------- 225 //-------------------------------------------------------------------------
233 226
234 'isMatching': function (aRegExp) { 227 'isMatching': function (aRegExp) {
235 return Clipperz.Async.callbacks("deferredFilterFunction", [ 228 return Clipperz.Async.callbacks("deferredFilterFunction", [
236 MochiKit.Base.method(this, 'searchableContent'), 229 MochiKit.Base.method(this, 'searchableContent'),
237 MochiKit.Base.method(aRegExp, 'test'), 230 MochiKit.Base.method(aRegExp, 'test'),
238 function (doesItMatch) { 231 function (doesItMatch) {
239 var result; 232 var result;
@@ -261,25 +254,24 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
261 254
262 'directLoginWithReference': function (aDirectLoginReference) { 255 'directLoginWithReference': function (aDirectLoginReference) {
263 return this._directLogins[aDirectLoginReference]; 256 return this._directLogins[aDirectLoginReference];
264 }, 257 },
265 258
266 'createNewDirectLoginFunction': function () { 259 'createNewDirectLoginFunction': function () {
267 return this._createNewDirectLoginFunction; 260 return this._createNewDirectLoginFunction;
268 }, 261 },
269 262
270 'saveOriginalDirectLoginStatusToTransientState': function () { 263 'saveOriginalDirectLoginStatusToTransientState': function () {
271 if (this.transientState().getValue('directLogins') == null) { 264 if (this.transientState().getValue('directLogins') == null) {
272 // this.transientState().setValue('directLogins', this._directLogins) 265 // this.transientState().setValue('directLogins', this._directLogins)
273//console.log("SET TRANSIENT STATE", Clipperz.Base.serializeJSON(MochiKit.Base.keys(this.transientState().getValue('directLogins'))))
274 MochiKit.Iter.forEach(MochiKit.Base.keys(this._directLogins), MochiKit.Base.bind(function(aKey) { 266 MochiKit.Iter.forEach(MochiKit.Base.keys(this._directLogins), MochiKit.Base.bind(function(aKey) {
275 this.transientState().setValue('directLogins' + '.' + aKey, this._directLogins[aKey]) 267 this.transientState().setValue('directLogins' + '.' + aKey, this._directLogins[aKey])
276 }, this)) 268 }, this))
277 } 269 }
278 }, 270 },
279 271
280 'createNewDirectLogin': function () { 272 'createNewDirectLogin': function () {
281 this.saveOriginalDirectLoginStatusToTransientState(); 273 this.saveOriginalDirectLoginStatusToTransientState();
282 274
283 return this.createNewDirectLoginFunction()(this); 275 return this.createNewDirectLoginFunction()(this);
284 }, 276 },
285 277
@@ -320,47 +312,44 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
320 }, 312 },
321 Clipperz.Async.collectAll 313 Clipperz.Async.collectAll
322 ], {trace:false}); 314 ], {trace:false});
323 315
324 return result; 316 return result;
325 }, 317 },
326 318
327 //========================================================================= 319 //=========================================================================
328 320
329 'unpackRemoteData': function (someData) { 321 'unpackRemoteData': function (someData) {
330 var result; 322 var result;
331 323
332//console.log("new Clipperz.PM.DataModel.Record.Version [2]");
333/* 324/*
334 this._currentRecordVersion = new Clipperz.PM.DataModel.Record.Version({ 325 this._currentRecordVersion = new Clipperz.PM.DataModel.Record.Version({
335 'reference': someData['currentVersion']['reference'], 326 'reference': someData['currentVersion']['reference'],
336 'retrieveKeyFunction': MochiKit.Base.method(this, 'getCurrentRecordVersionKey'), 327 'retrieveKeyFunction': MochiKit.Base.method(this, 'getCurrentRecordVersionKey'),
337 'remoteData': someData['currentVersion'], 328 'remoteData': someData['currentVersion'],
338 }); 329 });
339*/ 330*/
340 var versionKey; 331 var versionKey;
341 332
342 for (versionKey in someData['versions']) { 333 for (versionKey in someData['versions']) {
343//console.log("### versionKey", versionKey);
344 this._versions[versionKey] = new Clipperz.PM.DataModel.Record.Version({ 334 this._versions[versionKey] = new Clipperz.PM.DataModel.Record.Version({
345 'reference': versionKey, 335 'reference': versionKey,
346 'retrieveKeyFunction':MochiKit.Base.method(this, 'getVersionKey'), 336 'retrieveKeyFunction':MochiKit.Base.method(this, 'getVersionKey'),
347 'remoteData': someData['versions'][versionKey], 337 'remoteData': someData['versions'][versionKey],
348 'getVersion': MochiKit.Base.method(this, 'getVersion') 338 'getVersion': MochiKit.Base.method(this, 'getVersion')
349 }) 339 })
350 } 340 }
351 341
352 // this._currentVersionReference = someData['currentVersion']['reference']; 342 // this._currentVersionReference = someData['currentVersion']['reference'];
353 this._currentVersionReference = someData['currentVersion']; 343 this._currentVersionReference = someData['currentVersion'];
354//console.log("=== currentVersionReference", this._currentVersionReference, someData);
355 344
356 result = Clipperz.PM.DataModel.Record.superclass.unpackRemoteData.apply(this, arguments); 345 result = Clipperz.PM.DataModel.Record.superclass.unpackRemoteData.apply(this, arguments);
357 346
358 return result; 347 return result;
359 }, 348 },
360 349
361 //------------------------------------------------------------------------- 350 //-------------------------------------------------------------------------
362 351
363 'unpackData': function (someData) { 352 'unpackData': function (someData) {
364 var result; 353 var result;
365 354
366 result = Clipperz.PM.DataModel.Record.superclass.unpackData.apply(this, arguments); 355 result = Clipperz.PM.DataModel.Record.superclass.unpackData.apply(this, arguments);
@@ -527,25 +516,24 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
527 MochiKit.Base.bind(function (someVersions) { return someVersions[this.currentVersionReference()]}, this) 516 MochiKit.Base.bind(function (someVersions) { return someVersions[this.currentVersionReference()]}, this)
528 ]) 517 ])
529 ], {trace:false}); 518 ], {trace:false});
530 }, 519 },
531 520
532 'setCurrentRecordVersion': function (aRecordVersion) { 521 'setCurrentRecordVersion': function (aRecordVersion) {
533 this._currentVersionReference = aRecordVersion.reference(); 522 this._currentVersionReference = aRecordVersion.reference();
534 }, 523 },
535 524
536 //......................................................................... 525 //.........................................................................
537 526
538 'currentVersionReference': function () { 527 'currentVersionReference': function () {
539//console.log("currentVersionReference");
540 return this._currentVersionReference; 528 return this._currentVersionReference;
541 }, 529 },
542 530
543 //------------------------------------------------------------------------- 531 //-------------------------------------------------------------------------
544 532
545 'createNewRecordVersion': function () { 533 'createNewRecordVersion': function () {
546 var deferredResult; 534 var deferredResult;
547 535
548 if (this.isBrandNew()) { 536 if (this.isBrandNew()) {
549 deferredResult = this.getCurrentRecordVersion(); 537 deferredResult = this.getCurrentRecordVersion();
550 } else { 538 } else {
551 var newVersion; 539 var newVersion;
@@ -576,98 +564,88 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
576 564
577 MochiKit.Base.method(this, 'setCurrentRecordVersion', newVersion), 565 MochiKit.Base.method(this, 'setCurrentRecordVersion', newVersion),
578 MochiKit.Base.partial(MochiKit.Async.succeed, newVersion) 566 MochiKit.Base.partial(MochiKit.Async.succeed, newVersion)
579 ], {trace:false}); 567 ], {trace:false});
580 } 568 }
581 569
582 return deferredResult; 570 return deferredResult;
583 }, 571 },
584 572
585 //------------------------------------------------------------------------- 573 //-------------------------------------------------------------------------
586 574
587 'getCurrentRecordVersionKey': function () { 575 'getCurrentRecordVersionKey': function () {
588//console.log("getCurrentRecordVersionKey");
589 return Clipperz.Async.callbacks("Record.getCurrentRecordVersionKey", [ 576 return Clipperz.Async.callbacks("Record.getCurrentRecordVersionKey", [
590 MochiKit.Base.method(this, 'getValue', 'currentVersionKey'), 577 MochiKit.Base.method(this, 'getValue', 'currentVersionKey'),
591 Clipperz.Async.deferredIf("currentVersionKey is NOT null", [ 578 Clipperz.Async.deferredIf("currentVersionKey is NOT null", [
592 MochiKit.Async.succeed 579 MochiKit.Async.succeed
593 ], [ 580 ], [
594 MochiKit.Base.method(this, 'getKey') 581 MochiKit.Base.method(this, 'getKey')
595 ]) 582 ])
596 ], {trace:false}); 583 ], {trace:false});
597 }, 584 },
598 585
599 'setCurrentRecordVersionKey': function (aValue) { 586 'setCurrentRecordVersionKey': function (aValue) {
600 //TODO: triple check this method! 587 //TODO: triple check this method!
601 return Clipperz.Async.callbacks("Record.setCurrentRecordVersionKey", [ 588 return Clipperz.Async.callbacks("Record.setCurrentRecordVersionKey", [
602 MochiKit.Base.method(this, 'setValue', 'currentVersionKey', aValue) 589 MochiKit.Base.method(this, 'setValue', 'currentVersionKey', aValue)
603 ], {trace:false}); 590 ], {trace:false});
604 }, 591 },
605 592
606 //------------------------------------------------------------------------- 593 //-------------------------------------------------------------------------
607 594
608 'invokeCurrentRecordVersionMethod': function (aMethodName, someValues) { 595 'invokeCurrentRecordVersionMethod': function (aMethodName, someValues) {
609//console.log(">>> invokeCurrentRecordVersionMethod", aMethodName);
610 return Clipperz.Async.callbacks("Record.invokeCurrentRecordVersionMethod", [ 596 return Clipperz.Async.callbacks("Record.invokeCurrentRecordVersionMethod", [
611 MochiKit.Base.method(this, 'getCurrentRecordVersion'), 597 MochiKit.Base.method(this, 'getCurrentRecordVersion'),
612//function (aValue) { console.log("=== getCurrentRecordVersion", aValue); return aValue},
613 MochiKit.Base.methodcaller(aMethodName, someValues) 598 MochiKit.Base.methodcaller(aMethodName, someValues)
614 ], {trace:false}); 599 ], {trace:false});
615 }, 600 },
616 601
617 602
618 'lazilyinvokeCurrentRecordVersionMethod': function (aMethodName, someValues, defaultResult) { 603 'lazilyinvokeCurrentRecordVersionMethod': function (aMethodName, someValues, defaultResult) {
619 return Clipperz.Async.callbacks("Record.lazilyinvokeCurrentRecordVersionMethod", [ 604 return Clipperz.Async.callbacks("Record.lazilyinvokeCurrentRecordVersionMethod", [
620 MochiKit.Base.method(this, 'currentVersionReference'), 605 MochiKit.Base.method(this, 'currentVersionReference'),
621//function (aValue) { console.log("LAZY -> versions", aValue); return aValue; },
622 Clipperz.Async.deferredIf("versions has been loaded", [ 606 Clipperz.Async.deferredIf("versions has been loaded", [
623//function (aValue) { console.log("LAZY -> then"); return aValue; },
624 MochiKit.Base.method(this, 'getCurrentRecordVersion'), 607 MochiKit.Base.method(this, 'getCurrentRecordVersion'),
625 MochiKit.Base.methodcaller(aMethodName, someValues), 608 MochiKit.Base.methodcaller(aMethodName, someValues),
626//function (aValue) { console.log("LAZY <- then"); return aValue; }
627 ], [ 609 ], [
628//function (aValue) { console.log("LAZY -> else"); return aValue; },
629 MochiKit.Base.partial(MochiKit.Async.succeed, defaultResult), 610 MochiKit.Base.partial(MochiKit.Async.succeed, defaultResult),
630//function (aValue) { console.log("LAZY <- else"); return aValue; }
631 ]) 611 ])
632 ], {trace:false}); 612 ], {trace:false});
633 }, 613 },
634 614
635 //========================================================================= 615 //=========================================================================
636 616
637 'hasPendingChanges': function () { 617 'hasPendingChanges': function () {
638 var deferredResult; 618 var deferredResult;
639 619
640 if (this.hasInitiatedObjectDataStore()) { 620 if (this.hasInitiatedObjectDataStore()) {
641 deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.Record.hasPendingChanges", {trace:false}); 621 deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.Record.hasPendingChanges", {trace:false});
642 deferredResult.collectResults({ 622 deferredResult.collectResults({
643 'super': MochiKit.Base.bind(Clipperz.PM.DataModel.Record.superclass.hasPendingChanges, this), 623 'super': MochiKit.Base.bind(Clipperz.PM.DataModel.Record.superclass.hasPendingChanges, this),
644 'currentVersion': [ 624 'currentVersion': [
645 // MochiKit.Base.method(this, 'getCurrentRecordVersion'), 625 // MochiKit.Base.method(this, 'getCurrentRecordVersion'),
646 // MochiKit.Base.methodcaller('hasPendingChanges') 626 // MochiKit.Base.methodcaller('hasPendingChanges')
647 MochiKit.Base.method(this, 'invokeCurrentRecordVersionMethod', 'hasPendingChanges') 627 MochiKit.Base.method(this, 'invokeCurrentRecordVersionMethod', 'hasPendingChanges')
648 ], 628 ],
649 'directLogins': [ 629 'directLogins': [
650 MochiKit.Base.method(this, 'directLogins'), 630 MochiKit.Base.method(this, 'directLogins'),
651//function (aValue) { console.log("Record.directLogins", aValue); return aValue; },
652 MochiKit.Base.values, 631 MochiKit.Base.values,
653 MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.methodcaller('hasPendingChanges')), 632 MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.methodcaller('hasPendingChanges')),
654 Clipperz.Async.collectAll, 633 Clipperz.Async.collectAll,
655 Clipperz.Async.or 634 Clipperz.Async.or
656 // function(someValues) { 635 // function(someValues) {
657 // return MochiKit.Iter.some(someValues, MochiKit.Base.operator.identity); 636 // return MochiKit.Iter.some(someValues, MochiKit.Base.operator.identity);
658 // } 637 // }
659 ] 638 ]
660 }); 639 });
661//deferredResult.addCallback(function (aValue) { console.log("Record.hasPendingResults", aValue); return aValue; });
662 deferredResult.addCallback(MochiKit.Base.values); 640 deferredResult.addCallback(MochiKit.Base.values);
663 deferredResult.addCallback(MochiKit.Base.bind(function(someValues) { 641 deferredResult.addCallback(MochiKit.Base.bind(function(someValues) {
664 var result; 642 var result;
665 result = MochiKit.Iter.some(someValues, MochiKit.Base.operator.identity); 643 result = MochiKit.Iter.some(someValues, MochiKit.Base.operator.identity);
666 644
667 if ((result == false) && (this.isBrandNew() == false)) { 645 if ((result == false) && (this.isBrandNew() == false)) {
668 result = MochiKit.Iter.some(MochiKit.Base.values(this.transientState().getValue('hasPendingChanges.indexData')), MochiKit.Base.operator.identity); 646 result = MochiKit.Iter.some(MochiKit.Base.values(this.transientState().getValue('hasPendingChanges.indexData')), MochiKit.Base.operator.identity);
669 } 647 }
670 648
671 return result; 649 return result;
672 }, this)); 650 }, this));
673 651
@@ -767,25 +745,24 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
767 'resetTransientState': function (isCommitting) { 745 'resetTransientState': function (isCommitting) {
768 // if ((isCommitting == false) && (this.transientState().getValue('directLogins') != null)) { 746 // if ((isCommitting == false) && (this.transientState().getValue('directLogins') != null)) {
769 // this._directLogins = this.transientState().getValue('directLogins'); 747 // this._directLogins = this.transientState().getValue('directLogins');
770 // } 748 // }
771 749
772 return Clipperz.Async.callbacks("Record.resetTransientState", [ 750 return Clipperz.Async.callbacks("Record.resetTransientState", [
773 //- MochiKit.Base.method(this, 'getCurrentRecordVersion'), 751 //- MochiKit.Base.method(this, 'getCurrentRecordVersion'),
774 //- MochiKit.Base.methodcaller('resetTransientState'), 752 //- MochiKit.Base.methodcaller('resetTransientState'),
775 // MochiKit.Base.method(this, 'invokeCurrentRecordVersionMethod', 'resetTransientState'), 753 // MochiKit.Base.method(this, 'invokeCurrentRecordVersionMethod', 'resetTransientState'),
776 MochiKit.Base.method(this, 'lazilyinvokeCurrentRecordVersionMethod', 'resetTransientState'), 754 MochiKit.Base.method(this, 'lazilyinvokeCurrentRecordVersionMethod', 'resetTransientState'),
777 755
778 MochiKit.Base.method(this, 'directLogins'), 756 MochiKit.Base.method(this, 'directLogins'),
779//function (aValue) { console.log("resetTransientState - directLogins", aValue); return aValue; },
780 MochiKit.Base.values, 757 MochiKit.Base.values,
781 MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.methodcaller('resetTransientState')), 758 MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.methodcaller('resetTransientState')),
782 759
783 MochiKit.Base.bind(function () { 760 MochiKit.Base.bind(function () {
784 if ((isCommitting == false) && (this.transientState().getValue('directLogins') != null)) { 761 if ((isCommitting == false) && (this.transientState().getValue('directLogins') != null)) {
785 this._directLogins = this.transientState().getValue('directLogins'); 762 this._directLogins = this.transientState().getValue('directLogins');
786 } 763 }
787 }, this), 764 }, this),
788 765
789 MochiKit.Base.bind(Clipperz.PM.DataModel.Record.superclass.resetTransientState, this, isCommitting) 766 MochiKit.Base.bind(Clipperz.PM.DataModel.Record.superclass.resetTransientState, this, isCommitting)
790 ], {trace:false}) 767 ], {trace:false})
791 }, 768 },
@@ -807,25 +784,24 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
807 MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.methodcaller('commitTransientState')) 784 MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.methodcaller('commitTransientState'))
808 ], [ 785 ], [
809 MochiKit.Async.succeed 786 MochiKit.Async.succeed
810 ]); 787 ]);
811 deferredResult.callback(); 788 deferredResult.callback();
812 789
813 return deferredResult; 790 return deferredResult;
814 }, 791 },
815 792
816 //========================================================================= 793 //=========================================================================
817 794
818 'retrieveDirectLoginIndexDataFunction': function () { 795 'retrieveDirectLoginIndexDataFunction': function () {
819//console.log("Record.retrieveDirectLoginIndexDataFunction", this._retrieveDirectLoginIndexDataFunction);
820 return this._retrieveDirectLoginIndexDataFunction; 796 return this._retrieveDirectLoginIndexDataFunction;
821 }, 797 },
822 798
823 'setDirectLoginIndexDataFunction': function () { 799 'setDirectLoginIndexDataFunction': function () {
824 return this._setDirectLoginIndexDataFunction; 800 return this._setDirectLoginIndexDataFunction;
825 }, 801 },
826 802
827 'removeDirectLoginIndexDataFunction': function () { 803 'removeDirectLoginIndexDataFunction': function () {
828 return this._removeDirectLoginIndexDataFunction; 804 return this._removeDirectLoginIndexDataFunction;
829 }, 805 },
830 806
831 //========================================================================= 807 //=========================================================================