Diffstat (limited to 'frontend/delta/js/Clipperz/PM/DataModel/User.Header.Legacy.js') (more/less context) (ignore whitespace changes)
-rw-r--r-- | frontend/delta/js/Clipperz/PM/DataModel/User.Header.Legacy.js | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/frontend/delta/js/Clipperz/PM/DataModel/User.Header.Legacy.js b/frontend/delta/js/Clipperz/PM/DataModel/User.Header.Legacy.js new file mode 100644 index 0000000..cda5a41 --- a/dev/null +++ b/frontend/delta/js/Clipperz/PM/DataModel/User.Header.Legacy.js | |||
@@ -0,0 +1,182 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2013 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz, the online password manager. | ||
6 | For further information about its features and functionalities please | ||
7 | refer to http://www.clipperz.com. | ||
8 | |||
9 | * Clipperz is free software: you can redistribute it and/or modify it | ||
10 | under the terms of the GNU Affero General Public License as published | ||
11 | by the Free Software Foundation, either version 3 of the License, or | ||
12 | (at your option) any later version. | ||
13 | |||
14 | * Clipperz is distributed in the hope that it will be useful, but | ||
15 | WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
17 | See the GNU Affero General Public License for more details. | ||
18 | |||
19 | * You should have received a copy of the GNU Affero General Public | ||
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/. | ||
21 | |||
22 | */ | ||
23 | |||
24 | try { if (typeof(Clipperz.PM.DataModel.User) == 'undefined') { throw ""; }} catch (e) { | ||
25 | throw "Clipperz.PM.DataModel.User.Header.Legacy depends on Clipperz.PM.DataModel.User!"; | ||
26 | } | ||
27 | |||
28 | if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; } | ||
29 | |||
30 | Clipperz.PM.DataModel.User.Header.Legacy = function(args) { | ||
31 | //args = args || {}; | ||
32 | Clipperz.PM.DataModel.User.Header.Legacy.superclass.constructor.apply(this, arguments); | ||
33 | |||
34 | this._retrieveRecordDetailFunction = args.retrieveRecordDetailFunction|| Clipperz.Base.exception.raise('MandatoryParameter'); | ||
35 | this._records = null; | ||
36 | //this._directLogins = null; | ||
37 | |||
38 | return this; | ||
39 | } | ||
40 | |||
41 | |||
42 | Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.Legacy, Clipperz.PM.DataModel.EncryptedRemoteObject, { | ||
43 | |||
44 | 'toString': function() { | ||
45 | return "Clipperz.PM.DataModel.User.Header.Legacy"; | ||
46 | }, | ||
47 | |||
48 | //------------------------------------------------------------------------- | ||
49 | |||
50 | 'retrieveRecordDetailFunction': function () { | ||
51 | return this._retrieveRecordDetailFunction; | ||
52 | }, | ||
53 | |||
54 | //------------------------------------------------------------------------- | ||
55 | |||
56 | 'getRecordKey': function (aRecordReference) { | ||
57 | var deferredResult; | ||
58 | |||
59 | deferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.getRecordKey", {trace:false}); | ||
60 | deferredResult.addMethod(this, 'getRecordIndexData'); | ||
61 | deferredResult.addCallback(MochiKit.Base.itemgetter('key')) | ||
62 | deferredResult.callback(); | ||
63 | |||
64 | return deferredResult; | ||
65 | }, | ||
66 | |||
67 | //========================================================================= | ||
68 | |||
69 | 'getRecordIndexData': function (aRecordReference) { | ||
70 | return this.getValue('records.' + aRecordReference); | ||
71 | }, | ||
72 | |||
73 | 'updateRecordIndexData': function (aRecordReference, aKey, aValue) { | ||
74 | return this.setValue('records.' + aRecordReference + "." + aKey, aValue); | ||
75 | }, | ||
76 | |||
77 | //------------------------------------------------------------------------- | ||
78 | |||
79 | 'getDirectLoginIndexData': function (aDirectLoginReference) { | ||
80 | return this.getValue('directLogins.' + aDirectLoginReference); | ||
81 | }, | ||
82 | |||
83 | 'setDirectLoginIndexData': function (aDirectLoginReference, aKey, aValue) { | ||
84 | return this.setValue('directLogins.' + aDirectLoginReference + '.' + aKey, aValue); | ||
85 | }, | ||
86 | |||
87 | 'removeDirectLoginIndexData': function (aDirectLoginReference) { | ||
88 | return this.removeValue('directLogins.' + aDirectLoginReference); | ||
89 | }, | ||
90 | |||
91 | //========================================================================= | ||
92 | |||
93 | 'records': function () { | ||
94 | vardeferredResult; | ||
95 | var deferredLock; | ||
96 | |||
97 | deferredLock = this.getDeferredLockForKey('records'); | ||
98 | |||
99 | deferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.records", {trace:false}); | ||
100 | deferredResult.acquireLock(deferredLock); | ||
101 | deferredResult.addCallback(MochiKit.Base.bind(function () { | ||
102 | var innerDeferredResult; | ||
103 | |||
104 | if (this._records == null) { | ||
105 | innerDeferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.records <inner deferred>", {trace:false}); | ||
106 | innerDeferredResult.collectResults({ | ||
107 | 'header': [ | ||
108 | // MochiKit.Base.method(this, 'getObjectDataStore'), | ||
109 | // MochiKit.Base.methodcaller('values') | ||
110 | MochiKit.Base.method(this, 'values') | ||
111 | ], | ||
112 | 'recordsStats': [ | ||
113 | MochiKit.Base.method(this, 'getRemoteData'), | ||
114 | MochiKit.Base.itemgetter('recordsStats') | ||
115 | ] | ||
116 | }); | ||
117 | innerDeferredResult.addCallback(MochiKit.Base.bind(function (someObjectData) { | ||
118 | var reference; | ||
119 | |||
120 | this._records = {}; | ||
121 | // this._directLogins = {}; | ||
122 | |||
123 | for (reference in someObjectData['header']['records']) { | ||
124 | varrecord; | ||
125 | |||
126 | record = new Clipperz.PM.DataModel.Record({ | ||
127 | 'reference': reference, | ||
128 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getRecordKey'), | ||
129 | 'retrieveRemoteDataFunction':this.retrieveRecordDetailFunction(), | ||
130 | // 'encryptedDataKeypath': 'data', | ||
131 | // 'encryptedVersionKeypath': 'version', | ||
132 | |||
133 | 'retrieveIndexDataFunction':MochiKit.Base.method(this, 'getRecordIndexData'), | ||
134 | 'updateIndexDataFunction': MochiKit.Base.method(this, 'updateRecordIndexData'), | ||
135 | 'updateDate': someObjectData['recordsStats'][reference]['updateDate'], | ||
136 | |||
137 | 'retrieveDirectLoginIndexDataFunction':MochiKit.Base.method(this, 'getDirectLoginIndexData'), | ||
138 | 'setDirectLoginIndexDataFunction': MochiKit.Base.method(this, 'setDirectLoginIndexData'), | ||
139 | 'removeDirectLoginIndexDataFunction':MochiKit.Base.method(this, 'removeDirectLoginIndexData') | ||
140 | }); | ||
141 | |||
142 | this._records[reference] = record; | ||
143 | } | ||
144 | |||
145 | for (reference in someObjectData['header']['directLogins']) { | ||
146 | vardirectLogin; | ||
147 | var record; | ||
148 | |||
149 | record = this._records[someObjectData['header']['directLogins'][reference]['record']]; | ||
150 | if (record != null) { | ||
151 | directLogin = new Clipperz.PM.DataModel.DirectLogin({ | ||
152 | 'reference': reference, | ||
153 | 'record': record//, | ||
154 | // 'retrieveIndexDataFunction':MochiKit.Base.method(this, 'getDirectLoginIndexData'), | ||
155 | // 'setIndexDataFunction': MochiKit.Base.method(this, 'setDirectLoginIndexData'), | ||
156 | // 'removeIndexDataFunction': MochiKit.Base.method(this, 'removeDirectLoginIndexData') | ||
157 | }); | ||
158 | } else { | ||
159 | Clipperz.log("WARNING: DIRECT LOGIN without a matching RECORD!!"); | ||
160 | } | ||
161 | } | ||
162 | |||
163 | return this._records; | ||
164 | }, this)); | ||
165 | innerDeferredResult.callback(); | ||
166 | } else { | ||
167 | innerDeferredResult = MochiKit.Async.succeed(this._records); | ||
168 | } | ||
169 | |||
170 | return innerDeferredResult; | ||
171 | }, this)); | ||
172 | deferredResult.releaseLock(deferredLock); | ||
173 | deferredResult.callback(); | ||
174 | |||
175 | return deferredResult; | ||
176 | }, | ||
177 | |||
178 | //========================================================================= | ||
179 | __syntaxFix__: "syntax fix" | ||
180 | }); | ||
181 | |||
182 | |||