author | Giulio Cesare Solaroli <giulio.cesare@clipperz.com> | 2011-10-23 17:36:57 (UTC) |
---|---|---|
committer | Giulio Cesare Solaroli <giulio.cesare@clipperz.com> | 2011-10-23 17:36:57 (UTC) |
commit | 67455b069c4c9ec493f9cef76017e172a430a7d4 (patch) (unidiff) | |
tree | 0b287debfeeb0819b3df9dd02860cd84103e25b3 /frontend | |
parent | b312e037ebba7c94abea9661bcf62c52b7d73fbf (diff) | |
download | clipperz-67455b069c4c9ec493f9cef76017e172a430a7d4.zip clipperz-67455b069c4c9ec493f9cef76017e172a430a7d4.tar.gz clipperz-67455b069c4c9ec493f9cef76017e172a430a7d4.tar.bz2 |
Integration of PHP backend with /beta and /gamma front ends
Fixed PHP backend and /beta code to handle request and data format compatible with /gamma.
At the moment adding/deleting/editing records seem to work fine.
-rw-r--r-- | frontend/beta/js/Clipperz/PM/DataModel/Record.js | 7 | ||||
-rw-r--r-- | frontend/beta/js/Clipperz/PM/Proxy.js | 3 | ||||
-rwxr-xr-x | frontend/beta/js/Clipperz/PM/Proxy/Proxy.PHP.js | 262 | ||||
-rw-r--r-- | frontend/gamma/html/index_template.html | 5 | ||||
-rw-r--r-- | frontend/gamma/js/Clipperz/Async.js | 19 | ||||
-rw-r--r-- | frontend/gamma/js/Clipperz/PM/Proxy.js | 2 |
6 files changed, 26 insertions, 272 deletions
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/Record.js b/frontend/beta/js/Clipperz/PM/DataModel/Record.js index 270f2ae..ffb45de 100644 --- a/frontend/beta/js/Clipperz/PM/DataModel/Record.js +++ b/frontend/beta/js/Clipperz/PM/DataModel/Record.js | |||
@@ -1,756 +1,761 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | 26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } |
27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } | 27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } |
28 | if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } | 28 | if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } |
29 | 29 | ||
30 | 30 | ||
31 | //############################################################################# | 31 | //############################################################################# |
32 | 32 | ||
33 | Clipperz.PM.DataModel.Record = function(args) { | 33 | Clipperz.PM.DataModel.Record = function(args) { |
34 | args = args || {}; | 34 | args = args || {}; |
35 | 35 | ||
36 | this._user = args['user'] || null; | 36 | this._user = args['user'] || null; |
37 | this._reference = args['reference'] || Clipperz.PM.Crypto.randomKey(); | 37 | this._reference = args['reference'] || Clipperz.PM.Crypto.randomKey(); |
38 | this._version = args['version'] || Clipperz.PM.Crypto.encryptingFunctions.currentVersion; | 38 | this._version = args['version'] || Clipperz.PM.Crypto.encryptingFunctions.currentVersion; |
39 | this._key = args['key'] || Clipperz.PM.Crypto.randomKey(); | 39 | this._key = args['key'] || Clipperz.PM.Crypto.randomKey(); |
40 | 40 | ||
41 | this.setLabel(args['label'] || Clipperz.PM.Strings['newRecordTitleLabel']); | 41 | this.setLabel(args['label'] || Clipperz.PM.Strings['newRecordTitleLabel']); |
42 | 42 | ||
43 | this.setHeaderNotes(args['headerNotes'] || null); | 43 | this.setHeaderNotes(args['headerNotes'] || null); |
44 | this.setNotes(args['notes'] || args['headerNotes'] || ""); | 44 | this.setNotes(args['notes'] || args['headerNotes'] || ""); |
45 | //MochiKit.Logging.logDebug("--- new Record ('" + this._label + "')- _headerNotes: '" + this._headerNotes + "'"); | 45 | //MochiKit.Logging.logDebug("--- new Record ('" + this._label + "')- _headerNotes: '" + this._headerNotes + "'"); |
46 | //MochiKit.Logging.logDebug("--- new Record ('" + this._label + "')- _notes: '" + this._notes + "'"); | 46 | //MochiKit.Logging.logDebug("--- new Record ('" + this._label + "')- _notes: '" + this._notes + "'"); |
47 | //this._notes = args.notes || ""; | 47 | //this._notes = args.notes || ""; |
48 | 48 | ||
49 | this._versions = {}; | 49 | this._versions = {}; |
50 | this._directLogins = {}; | 50 | this._directLogins = {}; |
51 | this._removedDirectLogins = []; | 51 | this._removedDirectLogins = []; |
52 | 52 | ||
53 | this.setIsBrandNew(args['reference'] == null); | 53 | this.setIsBrandNew(args['reference'] == null); |
54 | 54 | ||
55 | this.setShouldLoadData(this.isBrandNew() ? false: true); | 55 | this.setShouldLoadData(this.isBrandNew() ? false: true); |
56 | this.setShouldDecryptData(this.isBrandNew() ? false: true); | 56 | this.setShouldDecryptData(this.isBrandNew() ? false: true); |
57 | this.setShouldProcessData(this.isBrandNew() ? false: true); | 57 | this.setShouldProcessData(this.isBrandNew() ? false: true); |
58 | 58 | ||
59 | this.setCurrentVersion(this.isBrandNew() ? new Clipperz.PM.DataModel.RecordVersion(this, null): null); | 59 | this.setCurrentVersion(this.isBrandNew() ? new Clipperz.PM.DataModel.RecordVersion(this, null): null); |
60 | this.setCurrentVersionKey(null); | 60 | this.setCurrentVersionKey(null); |
61 | 61 | ||
62 | this._serverData = null; | 62 | this._serverData = null; |
63 | this._decryptedData = null; | 63 | this._decryptedData = null; |
64 | this._cachedData = null; | 64 | this._cachedData = null; |
65 | 65 | ||
66 | return this; | 66 | return this; |
67 | } | 67 | } |
68 | 68 | ||
69 | Clipperz.PM.DataModel.Record.prototype = MochiKit.Base.update(null, { | 69 | Clipperz.PM.DataModel.Record.prototype = MochiKit.Base.update(null, { |
70 | 70 | ||
71 | 'toString': function() { | 71 | 'toString': function() { |
72 | return "Record (" + this.label() + ")"; | 72 | return "Record (" + this.label() + ")"; |
73 | }, | 73 | }, |
74 | 74 | ||
75 | //------------------------------------------------------------------------- | 75 | //------------------------------------------------------------------------- |
76 | 76 | ||
77 | 'isBrandNew': function() { | 77 | 'isBrandNew': function() { |
78 | return this._isBrandNew; | 78 | return this._isBrandNew; |
79 | }, | 79 | }, |
80 | 80 | ||
81 | 'setIsBrandNew': function(aValue) { | 81 | 'setIsBrandNew': function(aValue) { |
82 | this._isBrandNew = aValue; | 82 | this._isBrandNew = aValue; |
83 | }, | 83 | }, |
84 | 84 | ||
85 | //------------------------------------------------------------------------- | 85 | //------------------------------------------------------------------------- |
86 | /* | 86 | /* |
87 | 'shouldRunTheRecordCreationWizard': function() { | 87 | 'shouldRunTheRecordCreationWizard': function() { |
88 | return (this.isBrandNew() && (MochiKit.Base.keys(this.currentVersion().fields()).length == 0)); | 88 | return (this.isBrandNew() && (MochiKit.Base.keys(this.currentVersion().fields()).length == 0)); |
89 | }, | 89 | }, |
90 | */ | 90 | */ |
91 | //------------------------------------------------------------------------- | 91 | //------------------------------------------------------------------------- |
92 | 92 | ||
93 | 'user': function() { | 93 | 'user': function() { |
94 | return this._user; | 94 | return this._user; |
95 | }, | 95 | }, |
96 | 96 | ||
97 | //------------------------------------------------------------------------- | 97 | //------------------------------------------------------------------------- |
98 | 98 | ||
99 | 'reference': function() { | 99 | 'reference': function() { |
100 | return this._reference; | 100 | return this._reference; |
101 | }, | 101 | }, |
102 | 102 | ||
103 | //------------------------------------------------------------------------- | 103 | //------------------------------------------------------------------------- |
104 | 104 | ||
105 | 'key': function() { | 105 | 'key': function() { |
106 | return this._key; | 106 | return this._key; |
107 | }, | 107 | }, |
108 | 108 | ||
109 | 'updateKey': function() { | 109 | 'updateKey': function() { |
110 | this._key = Clipperz.PM.Crypto.randomKey(); | 110 | this._key = Clipperz.PM.Crypto.randomKey(); |
111 | }, | 111 | }, |
112 | 112 | ||
113 | //------------------------------------------------------------------------- | 113 | //------------------------------------------------------------------------- |
114 | 114 | ||
115 | 'label': function() { | 115 | 'label': function() { |
116 | return this._label; | 116 | return this._label; |
117 | }, | 117 | }, |
118 | 118 | ||
119 | 'setLabel': function(aValue) { | 119 | 'setLabel': function(aValue) { |
120 | this._label = aValue; | 120 | this._label = aValue; |
121 | }, | 121 | }, |
122 | 122 | ||
123 | 'lowerCaseLabel': function() { | 123 | 'lowerCaseLabel': function() { |
124 | return this.label().toLowerCase(); | 124 | return this.label().toLowerCase(); |
125 | }, | 125 | }, |
126 | 126 | ||
127 | //------------------------------------------------------------------------- | 127 | //------------------------------------------------------------------------- |
128 | 128 | ||
129 | 'versions': function() { | 129 | 'versions': function() { |
130 | return this._versions; | 130 | return this._versions; |
131 | }, | 131 | }, |
132 | 132 | ||
133 | //------------------------------------------------------------------------- | 133 | //------------------------------------------------------------------------- |
134 | 134 | ||
135 | 'currentVersion': function() { | 135 | 'currentVersion': function() { |
136 | return this._currentVersion; | 136 | return this._currentVersion; |
137 | }, | 137 | }, |
138 | 138 | ||
139 | 'setCurrentVersion': function(aValue) { | 139 | 'setCurrentVersion': function(aValue) { |
140 | this._currentVersion = aValue; | 140 | this._currentVersion = aValue; |
141 | }, | 141 | }, |
142 | 142 | ||
143 | //------------------------------------------------------------------------- | 143 | //------------------------------------------------------------------------- |
144 | 144 | ||
145 | 'currentVersionKey': function() { | 145 | 'currentVersionKey': function() { |
146 | return this._currentVersionKey; | 146 | return this._currentVersionKey; |
147 | }, | 147 | }, |
148 | 148 | ||
149 | 'setCurrentVersionKey': function(aValue) { | 149 | 'setCurrentVersionKey': function(aValue) { |
150 | this._currentVersionKey = aValue; | 150 | this._currentVersionKey = aValue; |
151 | }, | 151 | }, |
152 | 152 | ||
153 | //------------------------------------------------------------------------- | 153 | //------------------------------------------------------------------------- |
154 | 154 | ||
155 | 'deferredData': function() { | 155 | 'deferredData': function() { |
156 | vardeferredResult; | 156 | vardeferredResult; |
157 | 157 | ||
158 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.deferredData - this: " + this); | 158 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.deferredData - this: " + this); |
159 | deferredResult = new MochiKit.Async.Deferred(); | 159 | deferredResult = new MochiKit.Async.Deferred(); |
160 | deferredResult.addCallback(MochiKit.Base.method(this, 'loadData')); | 160 | deferredResult.addCallback(MochiKit.Base.method(this, 'loadData')); |
161 | deferredResult.addCallback(MochiKit.Base.method(this, 'decryptData')); | 161 | deferredResult.addCallback(MochiKit.Base.method(this, 'decryptData')); |
162 | deferredResult.addCallback(MochiKit.Base.method(this, 'processData')); | 162 | deferredResult.addCallback(MochiKit.Base.method(this, 'processData')); |
163 | deferredResult.addCallback(function(aRecord) { | 163 | deferredResult.addCallback(function(aRecord) { |
164 | return aRecord.currentVersion().deferredData(); | 164 | return aRecord.currentVersion().deferredData(); |
165 | }); | 165 | }); |
166 | deferredResult.addCallback(MochiKit.Base.method(this, 'takeSnapshotOfCurrentData')); | 166 | deferredResult.addCallback(MochiKit.Base.method(this, 'takeSnapshotOfCurrentData')); |
167 | deferredResult.addCallback(MochiKit.Async.succeed, this); | 167 | deferredResult.addCallback(MochiKit.Async.succeed, this); |
168 | deferredResult.callback(); | 168 | deferredResult.callback(); |
169 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.deferredData"); | 169 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.deferredData"); |
170 | 170 | ||
171 | return deferredResult; | 171 | return deferredResult; |
172 | }, | 172 | }, |
173 | 173 | ||
174 | //------------------------------------------------------------------------- | 174 | //------------------------------------------------------------------------- |
175 | 175 | ||
176 | 'exportedData': function() { | 176 | 'exportedData': function() { |
177 | var result; | 177 | var result; |
178 | 178 | ||
179 | result = {}; | 179 | result = {}; |
180 | result['label'] = this.label(); | 180 | result['label'] = this.label(); |
181 | result['data'] = this.serializedData(); | 181 | result['data'] = this.serializedData(); |
182 | result['currentVersion'] = this.currentVersion().serializedData(); | 182 | result['currentVersion'] = this.currentVersion().serializedData(); |
183 | result['currentVersion']['reference'] = this.currentVersion().reference(); | 183 | result['currentVersion']['reference'] = this.currentVersion().reference(); |
184 | // result['versions'] = MochiKit.Base.map(MochiKit.Base.methodcaller("serializedData"), MochiKit.Base.values(this.versions())); | 184 | // result['versions'] = MochiKit.Base.map(MochiKit.Base.methodcaller("serializedData"), MochiKit.Base.values(this.versions())); |
185 | 185 | ||
186 | return Clipperz.Base.serializeJSON(result); | 186 | return Clipperz.Base.serializeJSON(result); |
187 | }, | 187 | }, |
188 | 188 | ||
189 | //------------------------------------------------------------------------- | 189 | //------------------------------------------------------------------------- |
190 | 190 | ||
191 | 'shouldLoadData': function() { | 191 | 'shouldLoadData': function() { |
192 | return this._shouldLoadData; | 192 | return this._shouldLoadData; |
193 | }, | 193 | }, |
194 | 194 | ||
195 | 'setShouldLoadData': function(aValue) { | 195 | 'setShouldLoadData': function(aValue) { |
196 | this._shouldLoadData = aValue; | 196 | this._shouldLoadData = aValue; |
197 | }, | 197 | }, |
198 | 198 | ||
199 | //------------------------------------------------------------------------- | 199 | //------------------------------------------------------------------------- |
200 | 200 | ||
201 | 'shouldDecryptData': function() { | 201 | 'shouldDecryptData': function() { |
202 | return this._shouldDecryptData; | 202 | return this._shouldDecryptData; |
203 | }, | 203 | }, |
204 | 204 | ||
205 | 'setShouldDecryptData': function(aValue) { | 205 | 'setShouldDecryptData': function(aValue) { |
206 | this._shouldDecryptData = aValue; | 206 | this._shouldDecryptData = aValue; |
207 | }, | 207 | }, |
208 | 208 | ||
209 | //------------------------------------------------------------------------- | 209 | //------------------------------------------------------------------------- |
210 | 210 | ||
211 | 'shouldProcessData': function() { | 211 | 'shouldProcessData': function() { |
212 | return this._shouldProcessData; | 212 | return this._shouldProcessData; |
213 | }, | 213 | }, |
214 | 214 | ||
215 | 'setShouldProcessData': function(aValue) { | 215 | 'setShouldProcessData': function(aValue) { |
216 | this._shouldProcessData = aValue; | 216 | this._shouldProcessData = aValue; |
217 | }, | 217 | }, |
218 | 218 | ||
219 | //------------------------------------------------------------------------- | 219 | //------------------------------------------------------------------------- |
220 | 220 | ||
221 | 'loadData': function() { | 221 | 'loadData': function() { |
222 | var result; | 222 | var result; |
223 | 223 | ||
224 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.loadData - this: " + this); | 224 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.loadData - this: " + this); |
225 | if (this.shouldLoadData()) { | 225 | if (this.shouldLoadData()) { |
226 | var deferredResult; | 226 | var deferredResult; |
227 | 227 | ||
228 | deferredResult = new MochiKit.Async.Deferred(); | 228 | deferredResult = new MochiKit.Async.Deferred(); |
229 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'loadingRecordData'); | 229 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'loadingRecordData'); |
230 | deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'getRecordDetail', {reference: this.reference()}); | 230 | deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'getRecordDetail', {reference: this.reference()}); |
231 | deferredResult.addCallback(MochiKit.Base.method(this,'setServerData')); | 231 | deferredResult.addCallback(MochiKit.Base.method(this,'setServerData')); |
232 | deferredResult.callback(); | 232 | deferredResult.callback(); |
233 | result = deferredResult; | 233 | result = deferredResult; |
234 | } else { | 234 | } else { |
235 | result = MochiKit.Async.succeed(this.serverData()); | 235 | result = MochiKit.Async.succeed(this.serverData()); |
236 | } | 236 | } |
237 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.loadData"); | 237 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.loadData"); |
238 | 238 | ||
239 | return result; | 239 | return result; |
240 | }, | 240 | }, |
241 | 241 | ||
242 | //------------------------------------------------------------------------- | 242 | //------------------------------------------------------------------------- |
243 | 243 | ||
244 | 'decryptData': function(anEncryptedData) { | 244 | 'decryptData': function(anEncryptedData) { |
245 | var result; | 245 | var result; |
246 | 246 | ||
247 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.decryptData - this: " + this + " (" + anEncryptedData + ")"); | 247 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.decryptData - this: " + this + " (" + anEncryptedData + ")"); |
248 | if (this.shouldDecryptData()) { | 248 | if (this.shouldDecryptData()) { |
249 | var deferredResult; | 249 | var deferredResult; |
250 | 250 | ||
251 | deferredResult = new MochiKit.Async.Deferred(); | 251 | deferredResult = new MochiKit.Async.Deferred(); |
252 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'decryptingRecordData'); | 252 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'decryptingRecordData'); |
253 | deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, this.key(), anEncryptedData['data'], anEncryptedData['version']); | 253 | deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, this.key(), anEncryptedData['data'], anEncryptedData['version']); |
254 | deferredResult.addCallback(function(anEncryptedData, someDecryptedValues) { | 254 | deferredResult.addCallback(function(anEncryptedData, someDecryptedValues) { |
255 | varresult; | 255 | varresult; |
256 | 256 | ||
257 | result = anEncryptedData; | 257 | result = anEncryptedData; |
258 | result['data'] = someDecryptedValues; | 258 | result['data'] = someDecryptedValues; |
259 | 259 | ||
260 | return result; | 260 | return result; |
261 | }, anEncryptedData); | 261 | }, anEncryptedData); |
262 | deferredResult.addCallback(MochiKit.Base.method(this, 'setDecryptedData')); | 262 | deferredResult.addCallback(MochiKit.Base.method(this, 'setDecryptedData')); |
263 | deferredResult.callback(); | 263 | deferredResult.callback(); |
264 | 264 | ||
265 | result = deferredResult; | 265 | result = deferredResult; |
266 | } else { | 266 | } else { |
267 | result = MochiKit.Async.succeed(this.decryptedData()); | 267 | result = MochiKit.Async.succeed(this.decryptedData()); |
268 | } | 268 | } |
269 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.decryptData"); | 269 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.decryptData"); |
270 | 270 | ||
271 | return result; | 271 | return result; |
272 | }, | 272 | }, |
273 | 273 | ||
274 | //------------------------------------------------------------------------- | 274 | //------------------------------------------------------------------------- |
275 | 275 | ||
276 | 'processData': function(someValues) { | 276 | 'processData': function(someValues) { |
277 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.processData"); | 277 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.processData"); |
278 | //MochiKit.Logging.logDebug("--- Record.processData: " + Clipperz.Base.serializeJSON(someValues)); | 278 | //MochiKit.Logging.logDebug("--- Record.processData: " + Clipperz.Base.serializeJSON(someValues)); |
279 | if (this.shouldProcessData()) { | 279 | if (this.shouldProcessData()) { |
280 | var currentVersionParameters; | 280 | var currentVersionParameters; |
281 | 281 | ||
282 | console.log("Record.processData", someValues); | ||
282 | this.processDataToExtractLegacyValues(someValues['data']); | 283 | this.processDataToExtractLegacyValues(someValues['data']); |
283 | 284 | ||
284 | if (typeof(someValues['data']['notes']) != 'undefined') { | 285 | if (typeof(someValues['data']['notes']) != 'undefined') { |
285 | this.setNotes(someValues['data']['notes']); | 286 | this.setNotes(someValues['data']['notes']); |
286 | } | 287 | } |
288 | |||
287 | if (someValues['data']['currentVersionKey'] != null) { | 289 | if (someValues['data']['currentVersionKey'] != null) { |
288 | this.setCurrentVersionKey(someValues['data']['currentVersionKey']); | 290 | this.setCurrentVersionKey(someValues['data']['currentVersionKey']); |
289 | } else { | 291 | } else { |
290 | this.setCurrentVersionKey(this.key()); | 292 | this.setCurrentVersionKey(this.key()); |
291 | } | 293 | } |
292 | 294 | ||
293 | currentVersionParameters = someValues['currentVersion']; | 295 | // currentVersionParameters = someValues['currentVersion']; |
296 | currentVersionParameters = someValues['versions'][someValues['currentVersion']]; | ||
297 | console.log("Record.processData - this.currentVersionKey()", this.currentVersionKey()); | ||
298 | console.log("Record.processData - currentVersionParameters", currentVersionParameters); | ||
294 | currentVersionParameters['key'] = this.currentVersionKey(); | 299 | currentVersionParameters['key'] = this.currentVersionKey(); |
295 | this.setCurrentVersion(new Clipperz.PM.DataModel.RecordVersion(this, currentVersionParameters)); | 300 | this.setCurrentVersion(new Clipperz.PM.DataModel.RecordVersion(this, currentVersionParameters)); |
296 | 301 | ||
297 | if (someValues['data']['directLogins'] != null) { | 302 | if (someValues['data']['directLogins'] != null) { |
298 | vardirectLoginReference; | 303 | vardirectLoginReference; |
299 | 304 | ||
300 | for (directLoginReference in someValues['data']['directLogins']) { | 305 | for (directLoginReference in someValues['data']['directLogins']) { |
301 | var directLogin; | 306 | var directLogin; |
302 | var directLoginParameters; | 307 | var directLoginParameters; |
303 | 308 | ||
304 | directLoginParameters = someValues['data']['directLogins'][directLoginReference]; | 309 | directLoginParameters = someValues['data']['directLogins'][directLoginReference]; |
305 | directLoginParameters.record = this; | 310 | directLoginParameters.record = this; |
306 | directLoginParameters.reference = directLoginReference; | 311 | directLoginParameters.reference = directLoginReference; |
307 | 312 | ||
308 | directLogin = new Clipperz.PM.DataModel.DirectLogin(directLoginParameters); | 313 | directLogin = new Clipperz.PM.DataModel.DirectLogin(directLoginParameters); |
309 | this.addDirectLogin(directLogin, true); | 314 | this.addDirectLogin(directLogin, true); |
310 | } | 315 | } |
311 | } | 316 | } |
312 | this.setShouldProcessData(false); | 317 | this.setShouldProcessData(false); |
313 | } | 318 | } |
314 | 319 | ||
315 | Clipperz.NotificationCenter.notify(this, 'recordDataReady'); | 320 | Clipperz.NotificationCenter.notify(this, 'recordDataReady'); |
316 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.processData"); | 321 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.processData"); |
317 | //MochiKit.Logging.logDebug("<<< Record.processData"); | 322 | //MochiKit.Logging.logDebug("<<< Record.processData"); |
318 | 323 | ||
319 | return this; | 324 | return this; |
320 | }, | 325 | }, |
321 | 326 | ||
322 | //------------------------------------------------------------------------- | 327 | //------------------------------------------------------------------------- |
323 | 328 | ||
324 | 'processDataToExtractLegacyValues': function(someValues) { | 329 | 'processDataToExtractLegacyValues': function(someValues) { |
325 | //MochiKit.Logging.logDebug(">>> Record.processDataToExtractLegacyValues"); | 330 | //MochiKit.Logging.logDebug(">>> Record.processDataToExtractLegacyValues"); |
326 | if (someValues['data'] != null) { | 331 | if (someValues['data'] != null) { |
327 | this.setNotes(someValues['data']); | 332 | this.setNotes(someValues['data']); |
328 | } | 333 | } |
329 | 334 | ||
330 | if ( | 335 | if ( |
331 | (typeof(someValues['loginFormData']) != "undefined") | 336 | (typeof(someValues['loginFormData']) != "undefined") |
332 | &&(typeof(someValues['loginBindings'] != "undefined")) | 337 | &&(typeof(someValues['loginBindings'] != "undefined")) |
333 | &&(someValues['loginFormData'] != "") | 338 | &&(someValues['loginFormData'] != "") |
334 | &&(someValues['loginBindings'] != "") | 339 | &&(someValues['loginBindings'] != "") |
335 | ) { | 340 | ) { |
336 | vardirectLogin; | 341 | vardirectLogin; |
337 | 342 | ||
338 | directLogin = new Clipperz.PM.DataModel.DirectLogin({ | 343 | directLogin = new Clipperz.PM.DataModel.DirectLogin({ |
339 | record:this, | 344 | record:this, |
340 | label:this.label() + Clipperz.PM.Strings['newDirectLoginLabelSuffix'], | 345 | label:this.label() + Clipperz.PM.Strings['newDirectLoginLabelSuffix'], |
341 | reference:Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray(this.label() + | 346 | reference:Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray(this.label() + |
342 | someValues['loginFormData'] + | 347 | someValues['loginFormData'] + |
343 | someValues['loginBindings'])).toHexString().substring(2), | 348 | someValues['loginBindings'])).toHexString().substring(2), |
344 | formData:Clipperz.Base.evalJSON(someValues['loginFormData']), | 349 | formData:Clipperz.Base.evalJSON(someValues['loginFormData']), |
345 | legacyBindingData:Clipperz.Base.evalJSON(someValues['loginBindings']), | 350 | legacyBindingData:Clipperz.Base.evalJSON(someValues['loginBindings']), |
346 | bookmarkletVersion:'0.1' | 351 | bookmarkletVersion:'0.1' |
347 | }); | 352 | }); |
348 | this.addDirectLogin(directLogin, true); | 353 | this.addDirectLogin(directLogin, true); |
349 | } | 354 | } |
350 | //MochiKit.Logging.logDebug("<<< Record.processDataToExtractLegacyValues"); | 355 | //MochiKit.Logging.logDebug("<<< Record.processDataToExtractLegacyValues"); |
351 | }, | 356 | }, |
352 | 357 | ||
353 | //------------------------------------------------------------------------- | 358 | //------------------------------------------------------------------------- |
354 | 359 | ||
355 | 'getReadyBeforeUpdatingVersionValues': function() { | 360 | 'getReadyBeforeUpdatingVersionValues': function() { |
356 | }, | 361 | }, |
357 | 362 | ||
358 | //------------------------------------------------------------------------- | 363 | //------------------------------------------------------------------------- |
359 | 364 | ||
360 | 'addNewField': function() { | 365 | 'addNewField': function() { |
361 | varnewField; | 366 | varnewField; |
362 | 367 | ||
363 | //MochiKit.Logging.logDebug(">>> Record.addNewField - " + this); | 368 | //MochiKit.Logging.logDebug(">>> Record.addNewField - " + this); |
364 | this.getReadyBeforeUpdatingVersionValues(); | 369 | this.getReadyBeforeUpdatingVersionValues(); |
365 | newField = this.currentVersion().addNewField(); | 370 | newField = this.currentVersion().addNewField(); |
366 | Clipperz.NotificationCenter.notify(this, 'recordUpdated'); | 371 | Clipperz.NotificationCenter.notify(this, 'recordUpdated'); |
367 | //MochiKit.Logging.logDebug("<<< Record.addNewField"); | 372 | //MochiKit.Logging.logDebug("<<< Record.addNewField"); |
368 | 373 | ||
369 | return newField; | 374 | return newField; |
370 | }, | 375 | }, |
371 | 376 | ||
372 | //------------------------------------------------------------------------- | 377 | //------------------------------------------------------------------------- |
373 | 378 | ||
374 | 'removeField': function(aField) { | 379 | 'removeField': function(aField) { |
375 | this.getReadyBeforeUpdatingVersionValues(); | 380 | this.getReadyBeforeUpdatingVersionValues(); |
376 | this.currentVersion().removeField(aField); | 381 | this.currentVersion().removeField(aField); |
377 | Clipperz.NotificationCenter.notify(this, 'recordUpdated'); | 382 | Clipperz.NotificationCenter.notify(this, 'recordUpdated'); |
378 | }, | 383 | }, |
379 | 384 | ||
380 | 'removeEmptyFields': function() { | 385 | 'removeEmptyFields': function() { |
381 | MochiKit.Iter.forEach(MochiKit.Base.values(this.currentVersion().fields()), MochiKit.Base.bind(function(aField) { | 386 | MochiKit.Iter.forEach(MochiKit.Base.values(this.currentVersion().fields()), MochiKit.Base.bind(function(aField) { |
382 | if (aField.isEmpty()) { | 387 | if (aField.isEmpty()) { |
383 | this.removeField(aField); | 388 | this.removeField(aField); |
384 | // this.currentVersion().removeField(aField); | 389 | // this.currentVersion().removeField(aField); |
385 | } | 390 | } |
386 | }, this)); | 391 | }, this)); |
387 | }, | 392 | }, |
388 | 393 | ||
389 | //------------------------------------------------------------------------- | 394 | //------------------------------------------------------------------------- |
390 | 395 | ||
391 | 'notes': function() { | 396 | 'notes': function() { |
392 | return this._notes; | 397 | return this._notes; |
393 | }, | 398 | }, |
394 | 399 | ||
395 | 'setNotes': function(aValue) { | 400 | 'setNotes': function(aValue) { |
396 | this._notes = aValue; | 401 | this._notes = aValue; |
397 | this.setHeaderNotes(null); | 402 | this.setHeaderNotes(null); |
398 | }, | 403 | }, |
399 | 404 | ||
400 | //------------------------------------------------------------------------- | 405 | //------------------------------------------------------------------------- |
401 | 406 | ||
402 | 'headerNotes': function() { | 407 | 'headerNotes': function() { |
403 | return this._headerNotes; | 408 | return this._headerNotes; |
404 | }, | 409 | }, |
405 | 410 | ||
406 | 'setHeaderNotes': function(aValue) { | 411 | 'setHeaderNotes': function(aValue) { |
407 | this._headerNotes = aValue; | 412 | this._headerNotes = aValue; |
408 | }, | 413 | }, |
409 | 414 | ||
410 | //------------------------------------------------------------------------- | 415 | //------------------------------------------------------------------------- |
411 | 416 | ||
412 | 'remove': function() { | 417 | 'remove': function() { |
413 | //MochiKit.Logging.logDebug(">>> Record.remove - " + this); | 418 | //MochiKit.Logging.logDebug(">>> Record.remove - " + this); |
414 | MochiKit.Iter.forEach(MochiKit.Base.values(this.directLogins()), MochiKit.Base.method(this, 'removeDirectLogin')); | 419 | MochiKit.Iter.forEach(MochiKit.Base.values(this.directLogins()), MochiKit.Base.method(this, 'removeDirectLogin')); |
415 | 420 | ||
416 | this.syncDirectLoginReferenceValues(); | 421 | this.syncDirectLoginReferenceValues(); |
417 | this.user().removeRecord(this); | 422 | this.user().removeRecord(this); |
418 | //MochiKit.Logging.logDebug("<<< Record.remove"); | 423 | //MochiKit.Logging.logDebug("<<< Record.remove"); |
419 | }, | 424 | }, |
420 | 425 | ||
421 | //------------------------------------------------------------------------- | 426 | //------------------------------------------------------------------------- |
422 | 427 | ||
423 | 'directLogins': function() { | 428 | 'directLogins': function() { |
424 | return this._directLogins; | 429 | return this._directLogins; |
425 | }, | 430 | }, |
426 | 431 | ||
427 | 'addDirectLogin': function(aDirectLogin, shouldUpdateUser) { | 432 | 'addDirectLogin': function(aDirectLogin, shouldUpdateUser) { |
428 | this.directLogins()[aDirectLogin.reference()] = aDirectLogin; | 433 | this.directLogins()[aDirectLogin.reference()] = aDirectLogin; |
429 | if (shouldUpdateUser == true) { | 434 | if (shouldUpdateUser == true) { |
430 | this.user().addDirectLogin(aDirectLogin); | 435 | this.user().addDirectLogin(aDirectLogin); |
431 | } | 436 | } |
432 | }, | 437 | }, |
433 | 438 | ||
434 | 'removeDirectLogin': function(aDirectLogin) { | 439 | 'removeDirectLogin': function(aDirectLogin) { |
435 | this.removedDirectLogins().push(aDirectLogin); | 440 | this.removedDirectLogins().push(aDirectLogin); |
436 | delete this.directLogins()[aDirectLogin.reference()]; | 441 | delete this.directLogins()[aDirectLogin.reference()]; |
437 | // this.user().removeDirectLogin(aDirectLogin); | 442 | // this.user().removeDirectLogin(aDirectLogin); |
438 | }, | 443 | }, |
439 | 444 | ||
440 | 'resetDirectLogins': function() { | 445 | 'resetDirectLogins': function() { |
441 | this._directLogins = {}; | 446 | this._directLogins = {}; |
442 | }, | 447 | }, |
443 | 448 | ||
444 | 'removedDirectLogins': function() { | 449 | 'removedDirectLogins': function() { |
445 | return this._removedDirectLogins; | 450 | return this._removedDirectLogins; |
446 | }, | 451 | }, |
447 | 452 | ||
448 | 'resetRemovedDirectLogins': function() { | 453 | 'resetRemovedDirectLogins': function() { |
449 | this._removedDirectLogins = []; | 454 | this._removedDirectLogins = []; |
450 | }, | 455 | }, |
451 | 456 | ||
452 | //------------------------------------------------------------------------- | 457 | //------------------------------------------------------------------------- |
453 | 458 | ||
454 | 'serverData': function() { | 459 | 'serverData': function() { |
455 | return this._serverData; | 460 | return this._serverData; |
456 | }, | 461 | }, |
457 | 462 | ||
458 | 'setServerData': function(aValue) { | 463 | 'setServerData': function(aValue) { |
459 | this._serverData = aValue; | 464 | this._serverData = aValue; |
460 | this.setShouldLoadData(false); | 465 | this.setShouldLoadData(false); |
461 | return aValue; | 466 | return aValue; |
462 | }, | 467 | }, |
463 | 468 | ||
464 | //------------------------------------------------------------------------- | 469 | //------------------------------------------------------------------------- |
465 | 470 | ||
466 | 'decryptedData': function() { | 471 | 'decryptedData': function() { |
467 | return this._decryptedData; | 472 | return this._decryptedData; |
468 | }, | 473 | }, |
469 | 474 | ||
470 | 'setDecryptedData': function(aValue) { | 475 | 'setDecryptedData': function(aValue) { |
471 | this._decryptedData = aValue; | 476 | this._decryptedData = aValue; |
472 | this.setShouldDecryptData(false); | 477 | this.setShouldDecryptData(false); |
473 | return aValue; | 478 | return aValue; |
474 | }, | 479 | }, |
475 | 480 | ||
476 | //------------------------------------------------------------------------- | 481 | //------------------------------------------------------------------------- |
477 | 482 | ||
478 | 'cachedData': function() { | 483 | 'cachedData': function() { |
479 | return this._cachedData; | 484 | return this._cachedData; |
480 | }, | 485 | }, |
481 | 486 | ||
482 | 'setCachedData': function(aValue) { | 487 | 'setCachedData': function(aValue) { |
483 | //MochiKit.Logging.logDebug(">>> Record.setCachedData"); | 488 | //MochiKit.Logging.logDebug(">>> Record.setCachedData"); |
484 | //MochiKit.Logging.logDebug("--- Record.setCachedData - aValue: " + Clipperz.Base.serializeJSON(aValue)); | 489 | //MochiKit.Logging.logDebug("--- Record.setCachedData - aValue: " + Clipperz.Base.serializeJSON(aValue)); |
485 | this._cachedData = aValue; | 490 | this._cachedData = aValue; |
486 | this.setShouldProcessData(false); | 491 | this.setShouldProcessData(false); |
487 | //MochiKit.Logging.logDebug("<<< Record.setCachedData"); | 492 | //MochiKit.Logging.logDebug("<<< Record.setCachedData"); |
488 | 493 | ||
489 | return aValue; | 494 | return aValue; |
490 | }, | 495 | }, |
491 | 496 | ||
492 | //------------------------------------------------------------------------- | 497 | //------------------------------------------------------------------------- |
493 | 498 | ||
494 | 'hasPendingChanges': function() { | 499 | 'hasPendingChanges': function() { |
495 | var result; | 500 | var result; |
496 | 501 | ||
497 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.hasPendingChanges"); | 502 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.hasPendingChanges"); |
498 | //MochiKit.Logging.logDebug(">>> Record.hasPendingChanges - cachedData: " + this.cachedData()); | 503 | //MochiKit.Logging.logDebug(">>> Record.hasPendingChanges - cachedData: " + this.cachedData()); |
499 | //MochiKit.Logging.logDebug(">>> Record.hasPendingChanges - cachedData: " + Clipperz.Base.serializeJSON(this.cachedData())); | 504 | //MochiKit.Logging.logDebug(">>> Record.hasPendingChanges - cachedData: " + Clipperz.Base.serializeJSON(this.cachedData())); |
500 | //MochiKit.Logging.logDebug(">>> Record.hasPendingChanges - currentSnapshot: " + this.currentDataSnapshot()); | 505 | //MochiKit.Logging.logDebug(">>> Record.hasPendingChanges - currentSnapshot: " + this.currentDataSnapshot()); |
501 | //MochiKit.Logging.logDebug(">>> Record.hasPendingChanges - currentSnapshot: " + Clipperz.Base.serializeJSON(this.currentDataSnapshot())); | 506 | //MochiKit.Logging.logDebug(">>> Record.hasPendingChanges - currentSnapshot: " + Clipperz.Base.serializeJSON(this.currentDataSnapshot())); |
502 | //console.log(">>> Record.hasPendingChanges - cachedData: %o", this.cachedData()); | 507 | //console.log(">>> Record.hasPendingChanges - cachedData: %o", this.cachedData()); |
503 | //console.log(">>> Record.hasPendingChanges - currentSnapshot: %o", this.currentDataSnapshot()); | 508 | //console.log(">>> Record.hasPendingChanges - currentSnapshot: %o", this.currentDataSnapshot()); |
504 | result = (MochiKit.Base.compare(this.cachedData(), this.currentDataSnapshot()) != 0); | 509 | result = (MochiKit.Base.compare(this.cachedData(), this.currentDataSnapshot()) != 0); |
505 | //MochiKit.Logging.logDebug("<<< Record.hasPendingChanges - " + result); | 510 | //MochiKit.Logging.logDebug("<<< Record.hasPendingChanges - " + result); |
506 | 511 | ||
507 | if ((result == false) && this.isBrandNew() && (this.label() != Clipperz.PM.Strings['newRecordTitleLabel'])) { | 512 | if ((result == false) && this.isBrandNew() && (this.label() != Clipperz.PM.Strings['newRecordTitleLabel'])) { |
508 | result = true; | 513 | result = true; |
509 | } | 514 | } |
510 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.hasPendingChanges"); | 515 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.hasPendingChanges"); |
511 | 516 | ||
512 | return result; | 517 | return result; |
513 | }, | 518 | }, |
514 | 519 | ||
515 | //------------------------------------------------------------------------- | 520 | //------------------------------------------------------------------------- |
516 | 521 | ||
517 | 'currentDataSnapshot': function() { | 522 | 'currentDataSnapshot': function() { |
518 | varresult; | 523 | varresult; |
519 | 524 | ||
520 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.currentDataSnapshot"); | 525 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.currentDataSnapshot"); |
521 | result = { | 526 | result = { |
522 | 'label': this.label(), | 527 | 'label': this.label(), |
523 | 'data': this.serializedData(), | 528 | 'data': this.serializedData(), |
524 | 'currentVersion': this.currentVersion().currentDataSnapshot() | 529 | 'currentVersion': this.currentVersion().currentDataSnapshot() |
525 | }; | 530 | }; |
526 | 531 | ||
527 | // result['data']['data'] = this.notes(); | 532 | // result['data']['data'] = this.notes(); |
528 | result = Clipperz.Base.serializeJSON(result); | 533 | result = Clipperz.Base.serializeJSON(result); |
529 | 534 | ||
530 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.currentDataSnapshot"); | 535 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.currentDataSnapshot"); |
531 | //MochiKit.Logging.logDebug("<<< Record.currentDataSnapshot"); | 536 | //MochiKit.Logging.logDebug("<<< Record.currentDataSnapshot"); |
532 | 537 | ||
533 | return result; | 538 | return result; |
534 | }, | 539 | }, |
535 | 540 | ||
536 | //......................................................................... | 541 | //......................................................................... |
537 | 542 | ||
538 | 'takeSnapshotOfCurrentData': function() { | 543 | 'takeSnapshotOfCurrentData': function() { |
539 | this.setCachedData(this.currentDataSnapshot()); | 544 | this.setCachedData(this.currentDataSnapshot()); |
540 | }, | 545 | }, |
541 | 546 | ||
542 | //------------------------------------------------------------------------- | 547 | //------------------------------------------------------------------------- |
543 | 548 | ||
544 | 'headerData': function() { | 549 | 'headerData': function() { |
545 | var result; | 550 | var result; |
546 | 551 | ||
547 | result = { | 552 | result = { |
548 | 'label': this.label(), | 553 | 'label': this.label(), |
549 | 'key': this.key() | 554 | 'key': this.key() |
550 | }; | 555 | }; |
551 | 556 | ||
552 | if (this.headerNotes() != null) { | 557 | if (this.headerNotes() != null) { |
553 | result['headerNotes'] = this.headerNotes(); | 558 | result['headerNotes'] = this.headerNotes(); |
554 | } | 559 | } |
555 | 560 | ||
556 | return result; | 561 | return result; |
557 | }, | 562 | }, |
558 | 563 | ||
559 | //------------------------------------------------------------------------- | 564 | //------------------------------------------------------------------------- |
560 | 565 | ||
561 | 'serializedData': function() { | 566 | 'serializedData': function() { |
562 | var result; | 567 | var result; |
563 | var directLoginReference; | 568 | var directLoginReference; |
564 | 569 | ||
565 | result = {}; | 570 | result = {}; |
566 | result['currentVersionKey'] = this.currentVersion().key(); | 571 | result['currentVersionKey'] = this.currentVersion().key(); |
567 | 572 | ||
568 | result['directLogins'] = {}; | 573 | result['directLogins'] = {}; |
569 | for (directLoginReference in this.directLogins()) { | 574 | for (directLoginReference in this.directLogins()) { |
570 | result['directLogins'][directLoginReference] = this.directLogins()[directLoginReference].serializedData(); | 575 | result['directLogins'][directLoginReference] = this.directLogins()[directLoginReference].serializedData(); |
571 | } | 576 | } |
572 | result['notes'] = this.notes(); | 577 | result['notes'] = this.notes(); |
573 | 578 | ||
574 | return result; | 579 | return result; |
575 | }, | 580 | }, |
576 | 581 | ||
577 | //------------------------------------------------------------------------- | 582 | //------------------------------------------------------------------------- |
578 | 583 | ||
579 | 'encryptedData': function() { | 584 | 'encryptedData': function() { |
580 | var deferredResult; | 585 | var deferredResult; |
581 | varresult; | 586 | varresult; |
582 | 587 | ||
583 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.encryptedData"); | 588 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.encryptedData"); |
584 | result = {} | 589 | result = {} |
585 | //MochiKit.Logging.logDebug("--- Record.encryptedData - 1"); | 590 | //MochiKit.Logging.logDebug("--- Record.encryptedData - 1"); |
586 | deferredResult = new MochiKit.Async.Deferred(); | 591 | deferredResult = new MochiKit.Async.Deferred(); |
587 | //MochiKit.Logging.logDebug("--- Record.encryptedData - 2"); | 592 | //MochiKit.Logging.logDebug("--- Record.encryptedData - 2"); |
588 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 1: " + res); return res;}); | 593 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 1: " + res); return res;}); |
589 | deferredResult.addCallback(function(aResult, aRecord) { | 594 | deferredResult.addCallback(function(aResult, aRecord) { |
590 | aResult['reference'] = aRecord.reference(); | 595 | aResult['reference'] = aRecord.reference(); |
591 | return aResult; | 596 | return aResult; |
592 | }, result, this); | 597 | }, result, this); |
593 | //MochiKit.Logging.logDebug("--- Record.encryptedData - 3"); | 598 | //MochiKit.Logging.logDebug("--- Record.encryptedData - 3"); |
594 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 2: " + res); return res;}); | 599 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 2: " + res); return res;}); |
595 | deferredResult.addCallback(Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion, this.key(), this.serializedData()); | 600 | deferredResult.addCallback(Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion, this.key(), this.serializedData()); |
596 | //MochiKit.Logging.logDebug("--- Record.encryptedData - 4"); | 601 | //MochiKit.Logging.logDebug("--- Record.encryptedData - 4"); |
597 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 3: " + res); return res;}); | 602 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 3: " + res); return res;}); |
598 | deferredResult.addCallback(function(aResult, res) { | 603 | deferredResult.addCallback(function(aResult, res) { |
599 | aResult['data'] = res; | 604 | aResult['data'] = res; |
600 | return aResult; | 605 | return aResult; |
601 | }, result); | 606 | }, result); |
602 | //MochiKit.Logging.logDebug("--- Record.encryptedData - 5"); | 607 | //MochiKit.Logging.logDebug("--- Record.encryptedData - 5"); |
603 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 4: " + res); return res;}); | 608 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 4: " + res); return res;}); |
604 | deferredResult.addCallback(function(aResult) { | 609 | deferredResult.addCallback(function(aResult) { |
605 | aResult['version'] = Clipperz.PM.Crypto.encryptingFunctions.currentVersion; | 610 | aResult['version'] = Clipperz.PM.Crypto.encryptingFunctions.currentVersion; |
606 | return aResult; | 611 | return aResult; |
607 | }, result); | 612 | }, result); |
608 | //MochiKit.Logging.logDebug("--- Record.encryptedData - 6"); | 613 | //MochiKit.Logging.logDebug("--- Record.encryptedData - 6"); |
609 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 5: " + res); return res;}); | 614 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 5: " + res); return res;}); |
610 | deferredResult.callback(); | 615 | deferredResult.callback(); |
611 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.encryptedData"); | 616 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.encryptedData"); |
612 | 617 | ||
613 | return deferredResult; | 618 | return deferredResult; |
614 | }, | 619 | }, |
615 | 620 | ||
616 | //------------------------------------------------------------------------- | 621 | //------------------------------------------------------------------------- |
617 | 622 | ||
618 | 'syncDirectLoginReferenceValues': function() { | 623 | 'syncDirectLoginReferenceValues': function() { |
619 | //MochiKit.Logging.logDebug(">>> Record.syncDirectLoginReferenceValues"); | 624 | //MochiKit.Logging.logDebug(">>> Record.syncDirectLoginReferenceValues"); |
620 | MochiKit.Iter.forEach(MochiKit.Base.values(this.directLogins()), function(aDirectLogin) { | 625 | MochiKit.Iter.forEach(MochiKit.Base.values(this.directLogins()), function(aDirectLogin) { |
621 | aDirectLogin.record().user().synchronizeDirectLogin(aDirectLogin); | 626 | aDirectLogin.record().user().synchronizeDirectLogin(aDirectLogin); |
622 | }); | 627 | }); |
623 | 628 | ||
624 | MochiKit.Iter.forEach(this.removedDirectLogins(), function(aDirectLogin) { | 629 | MochiKit.Iter.forEach(this.removedDirectLogins(), function(aDirectLogin) { |
625 | aDirectLogin.record().user().removeDirectLogin(aDirectLogin); | 630 | aDirectLogin.record().user().removeDirectLogin(aDirectLogin); |
626 | }); | 631 | }); |
627 | 632 | ||
628 | this.resetRemovedDirectLogins(); | 633 | this.resetRemovedDirectLogins(); |
629 | //MochiKit.Logging.logDebug("<<< Record.syncDirectLoginReferenceValues"); | 634 | //MochiKit.Logging.logDebug("<<< Record.syncDirectLoginReferenceValues"); |
630 | }, | 635 | }, |
631 | 636 | ||
632 | //------------------------------------------------------------------------- | 637 | //------------------------------------------------------------------------- |
633 | 638 | ||
634 | 'saveChanges': function() { | 639 | 'saveChanges': function() { |
635 | var result; | 640 | var result; |
636 | 641 | ||
637 | if (this.isBrandNew() == false) { | 642 | if (this.isBrandNew() == false) { |
638 | result = this.user().saveRecords([this], 'updateData'); | 643 | result = this.user().saveRecords([this], 'updateData'); |
639 | } else { | 644 | } else { |
640 | result = this.user().saveRecords([this], 'addNewRecords'); | 645 | result = this.user().saveRecords([this], 'addNewRecords'); |
641 | } | 646 | } |
642 | 647 | ||
643 | return result; | 648 | return result; |
644 | }, | 649 | }, |
645 | 650 | ||
646 | /* | 651 | /* |
647 | 'saveChanges': function() { | 652 | 'saveChanges': function() { |
648 | var deferredResult; | 653 | var deferredResult; |
649 | varresult; | 654 | varresult; |
650 | 655 | ||
651 | Clipperz.NotificationCenter.notify(this.user(), 'updatedSection', 'records', true); | 656 | Clipperz.NotificationCenter.notify(this.user(), 'updatedSection', 'records', true); |
652 | //MochiKit.Logging.logDebug(">>> Record.saveChanges"); | 657 | //MochiKit.Logging.logDebug(">>> Record.saveChanges"); |
653 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.saveChanges"); | 658 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.saveChanges"); |
654 | if (this.headerNotes() != null) { | 659 | if (this.headerNotes() != null) { |
655 | this.setNotes(this.headerNotes()); | 660 | this.setNotes(this.headerNotes()); |
656 | } | 661 | } |
657 | this.syncDirectLoginReferenceValues(); | 662 | this.syncDirectLoginReferenceValues(); |
658 | this.currentVersion().createNewVersion(); | 663 | this.currentVersion().createNewVersion(); |
659 | 664 | ||
660 | result = {'records': [{}]}; | 665 | result = {'records': [{}]}; |
661 | 666 | ||
662 | deferredResult = new MochiKit.Async.Deferred(); | 667 | deferredResult = new MochiKit.Async.Deferred(); |
663 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_collectRecordInfo'); | 668 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_collectRecordInfo'); |
664 | deferredResult.addCallback(MochiKit.Base.method(this, 'updateKey')); | 669 | deferredResult.addCallback(MochiKit.Base.method(this, 'updateKey')); |
665 | 670 | ||
666 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_encryptUserData'); | 671 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_encryptUserData'); |
667 | deferredResult.addCallback(MochiKit.Base.method(this.user(), 'encryptedData')); | 672 | deferredResult.addCallback(MochiKit.Base.method(this.user(), 'encryptedData')); |
668 | deferredResult.addCallback(function(aResult, res) { | 673 | deferredResult.addCallback(function(aResult, res) { |
669 | aResult['user'] = res; | 674 | aResult['user'] = res; |
670 | return aResult; | 675 | return aResult; |
671 | }, result); | 676 | }, result); |
672 | 677 | ||
673 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_encryptRecordData'); | 678 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_encryptRecordData'); |
674 | deferredResult.addCallback(MochiKit.Base.method(this, 'encryptedData')); | 679 | deferredResult.addCallback(MochiKit.Base.method(this, 'encryptedData')); |
675 | deferredResult.addCallback(function(aResult, res) { | 680 | deferredResult.addCallback(function(aResult, res) { |
676 | //# aResult['record'] = res; | 681 | //# aResult['record'] = res; |
677 | aResult['records'][0]['record'] = res; | 682 | aResult['records'][0]['record'] = res; |
678 | return aResult; | 683 | return aResult; |
679 | }, result); | 684 | }, result); |
680 | 685 | ||
681 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_encryptRecordVersions'); | 686 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_encryptRecordVersions'); |
682 | deferredResult.addCallback(MochiKit.Base.method(this.currentVersion(), 'encryptedData')); | 687 | deferredResult.addCallback(MochiKit.Base.method(this.currentVersion(), 'encryptedData')); |
683 | deferredResult.addCallback(function(aResult, res) { | 688 | deferredResult.addCallback(function(aResult, res) { |
684 | // aResult['currentRecordVersion'] = res; | 689 | // aResult['currentRecordVersion'] = res; |
685 | aResult['records'][0]['currentRecordVersion'] = res; | 690 | aResult['records'][0]['currentRecordVersion'] = res; |
686 | return aResult; | 691 | return aResult; |
687 | }, result); | 692 | }, result); |
688 | 693 | ||
689 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_sendingData'); | 694 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_sendingData'); |
690 | if (this.isBrandNew() == false) { | 695 | if (this.isBrandNew() == false) { |
691 | deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'updateData'); | 696 | deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'updateData'); |
692 | } else { | 697 | } else { |
693 | //# deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'addNewRecord'); | 698 | //# deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'addNewRecord'); |
694 | deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'addNewRecords'); | 699 | deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'addNewRecords'); |
695 | } | 700 | } |
696 | 701 | ||
697 | deferredResult.addCallback(MochiKit.Base.method(this, 'takeSnapshotOfCurrentData')); | 702 | deferredResult.addCallback(MochiKit.Base.method(this, 'takeSnapshotOfCurrentData')); |
698 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_updatingInterface'); | 703 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_updatingInterface'); |
699 | deferredResult.addCallback(MochiKit.Base.method(this, 'setIsBrandNew'), false); | 704 | deferredResult.addCallback(MochiKit.Base.method(this, 'setIsBrandNew'), false); |
700 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'recordUpdated'); | 705 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'recordUpdated'); |
701 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'directLoginUpdated'); | 706 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'directLoginUpdated'); |
702 | deferredResult.callback(); | 707 | deferredResult.callback(); |
703 | 708 | ||
704 | return deferredResult; | 709 | return deferredResult; |
705 | }, | 710 | }, |
706 | */ | 711 | */ |
707 | //------------------------------------------------------------------------- | 712 | //------------------------------------------------------------------------- |
708 | 713 | ||
709 | 'cancelChanges': function() { | 714 | 'cancelChanges': function() { |
710 | //MochiKit.Logging.logDebug(">>> Record.cancelChanges"); | 715 | //MochiKit.Logging.logDebug(">>> Record.cancelChanges"); |
711 | //MochiKit.Logging.logDebug("--- Record.cancelChanges - cachedData: " + Clipperz.Base.serializeJSON(this.cachedData())); | 716 | //MochiKit.Logging.logDebug("--- Record.cancelChanges - cachedData: " + Clipperz.Base.serializeJSON(this.cachedData())); |
712 | if (this.isBrandNew()) { | 717 | if (this.isBrandNew()) { |
713 | this.user().removeRecord(this); | 718 | this.user().removeRecord(this); |
714 | } else { | 719 | } else { |
715 | this.restoreValuesFromSnapshot(this.cachedData()); | 720 | this.restoreValuesFromSnapshot(this.cachedData()); |
716 | } | 721 | } |
717 | //MochiKit.Logging.logDebug("<<< Record.cancelChanges"); | 722 | //MochiKit.Logging.logDebug("<<< Record.cancelChanges"); |
718 | }, | 723 | }, |
719 | 724 | ||
720 | //------------------------------------------------------------------------- | 725 | //------------------------------------------------------------------------- |
721 | 726 | ||
722 | 'restoreValuesFromSnapshot': function(someSnapshotData) { | 727 | 'restoreValuesFromSnapshot': function(someSnapshotData) { |
723 | varsnapshotData; | 728 | varsnapshotData; |
724 | 729 | ||
725 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.restoreValuesFromSnapshot"); | 730 | //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.restoreValuesFromSnapshot"); |
726 | snapshotData = Clipperz.Base.evalJSON(someSnapshotData); | 731 | snapshotData = Clipperz.Base.evalJSON(someSnapshotData); |
727 | //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - someSnapshotData (1): " + Clipperz.Base.serializeJSON(someSnapshotData)); | 732 | //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - someSnapshotData (1): " + Clipperz.Base.serializeJSON(someSnapshotData)); |
728 | this.setLabel(snapshotData['label']); | 733 | this.setLabel(snapshotData['label']); |
729 | this.resetDirectLogins(); | 734 | this.resetDirectLogins(); |
730 | this.setShouldProcessData(true); | 735 | this.setShouldProcessData(true); |
731 | this.processData(snapshotData); | 736 | this.processData(snapshotData); |
732 | //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - snapshotData: (2)" + Clipperz.Base.serializeJSON(snapshotData)); | 737 | //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - snapshotData: (2)" + Clipperz.Base.serializeJSON(snapshotData)); |
733 | 738 | ||
734 | this.resetRemovedDirectLogins(); | 739 | this.resetRemovedDirectLogins(); |
735 | 740 | ||
736 | { | 741 | { |
737 | var currentSnapshot; | 742 | var currentSnapshot; |
738 | varcomparisonResult; | 743 | varcomparisonResult; |
739 | 744 | ||
740 | currentSnapshot = this.currentDataSnapshot(); | 745 | currentSnapshot = this.currentDataSnapshot(); |
741 | //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - 1"); | 746 | //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - 1"); |
742 | //console.log("snapshot data: %o", someSnapshotData.currentVersion); | 747 | //console.log("snapshot data: %o", someSnapshotData.currentVersion); |
743 | //console.log("current data: %o", currentSnapshot.currentVersion); | 748 | //console.log("current data: %o", currentSnapshot.currentVersion); |
744 | //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - someSnapshotData: " + Clipperz.Base.serializeJSON(someSnapshotData.currentVersion)); | 749 | //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - someSnapshotData: " + Clipperz.Base.serializeJSON(someSnapshotData.currentVersion)); |
745 | //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - currentSnapshot: " + Clipperz.Base.serializeJSON(currentSnapshot.currentVersion)); | 750 | //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - currentSnapshot: " + Clipperz.Base.serializeJSON(currentSnapshot.currentVersion)); |
746 | comparisonResult = MochiKit.Base.compare(someSnapshotData.currentVersion, currentSnapshot.currentVersion); | 751 | comparisonResult = MochiKit.Base.compare(someSnapshotData.currentVersion, currentSnapshot.currentVersion); |
747 | //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - " + comparisonResult); | 752 | //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - " + comparisonResult); |
748 | } | 753 | } |
749 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.restoreValuesFromSnapshot"); | 754 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.restoreValuesFromSnapshot"); |
750 | }, | 755 | }, |
751 | 756 | ||
752 | //------------------------------------------------------------------------- | 757 | //------------------------------------------------------------------------- |
753 | __syntaxFix__: "syntax fix" | 758 | __syntaxFix__: "syntax fix" |
754 | }); | 759 | }); |
755 | 760 | ||
756 | 761 | ||
diff --git a/frontend/beta/js/Clipperz/PM/Proxy.js b/frontend/beta/js/Clipperz/PM/Proxy.js index f476196..bec9195 100644 --- a/frontend/beta/js/Clipperz/PM/Proxy.js +++ b/frontend/beta/js/Clipperz/PM/Proxy.js | |||
@@ -1,170 +1,169 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | 26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } |
27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } | 27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } |
28 | 28 | ||
29 | //============================================================================= | 29 | //============================================================================= |
30 | 30 | ||
31 | Clipperz.PM.Proxy = function(args) { | 31 | Clipperz.PM.Proxy = function(args) { |
32 | args = args || {}; | 32 | args = args || {}; |
33 | 33 | ||
34 | this._shouldPayTolls = args.shouldPayTolls || false; | 34 | this._shouldPayTolls = args.shouldPayTolls || false; |
35 | 35 | ||
36 | this._tolls = { | 36 | this._tolls = { |
37 | 'CONNECT':[], | 37 | 'CONNECT':[], |
38 | 'REGISTER':[], | 38 | 'REGISTER':[], |
39 | 'MESSAGE':[] | 39 | 'MESSAGE':[] |
40 | }; | 40 | }; |
41 | 41 | ||
42 | if (args.isDefault === true) { | 42 | if (args.isDefault === true) { |
43 | Clipperz.PM.Proxy.defaultProxy = this; | 43 | Clipperz.PM.Proxy.defaultProxy = this; |
44 | } | 44 | } |
45 | 45 | ||
46 | return this; | 46 | return this; |
47 | } | 47 | } |
48 | 48 | ||
49 | Clipperz.PM.Proxy.prototype = MochiKit.Base.update(null, { | 49 | Clipperz.PM.Proxy.prototype = MochiKit.Base.update(null, { |
50 | 50 | ||
51 | 'toString': function() { | 51 | 'toString': function() { |
52 | return "Clipperz.PM.Proxy"; | 52 | return "Clipperz.PM.Proxy"; |
53 | }, | 53 | }, |
54 | 54 | ||
55 | //========================================================================= | 55 | //========================================================================= |
56 | 56 | ||
57 | 'shouldPayTolls': function() { | 57 | 'shouldPayTolls': function() { |
58 | return this._shouldPayTolls; | 58 | return this._shouldPayTolls; |
59 | }, | 59 | }, |
60 | 60 | ||
61 | //------------------------------------------------------------------------- | 61 | //------------------------------------------------------------------------- |
62 | 62 | ||
63 | 'tolls': function() { | 63 | 'tolls': function() { |
64 | return this._tolls; | 64 | return this._tolls; |
65 | }, | 65 | }, |
66 | 66 | ||
67 | //------------------------------------------------------------------------- | 67 | //------------------------------------------------------------------------- |
68 | 68 | ||
69 | 'payToll': function(aRequestType, someParameters) { | 69 | 'payToll': function(aRequestType, someParameters) { |
70 | vardeferredResult; | 70 | vardeferredResult; |
71 | 71 | ||
72 | //console.log(">>> Proxy.payToll", aRequestType, someParameters); | 72 | //console.log(">>> Proxy.payToll", aRequestType, someParameters); |
73 | if (this.shouldPayTolls()) { | 73 | if (this.shouldPayTolls()) { |
74 | deferredResult = new MochiKit.Async.Deferred(); | 74 | deferredResult = new MochiKit.Async.Deferred(); |
75 | 75 | ||
76 | if (this.tolls()[aRequestType].length == 0) { | 76 | if (this.tolls()[aRequestType].length == 0) { |
77 | deferredResult.addCallback(MochiKit.Base.method(this, 'sendMessage', 'knock', {requestType:aRequestType})); | 77 | deferredResult.addCallback(MochiKit.Base.method(this, 'sendMessage', 'knock', {requestType:aRequestType})); |
78 | deferredResult.addCallback(MochiKit.Base.method(this, 'setTollCallback')); | 78 | deferredResult.addCallback(MochiKit.Base.method(this, 'setTollCallback')); |
79 | } | 79 | } |
80 | deferredResult.addCallback(MochiKit.Base.method(this.tolls()[aRequestType], 'pop')); | 80 | deferredResult.addCallback(MochiKit.Base.method(this.tolls()[aRequestType], 'pop')); |
81 | deferredResult.addCallback(MochiKit.Base.methodcaller('deferredPay')); | 81 | deferredResult.addCallback(MochiKit.Base.methodcaller('deferredPay')); |
82 | deferredResult.addCallback(function(aToll) { | 82 | deferredResult.addCallback(function(aToll) { |
83 | var result; | 83 | var result; |
84 | 84 | ||
85 | result = { | 85 | result = { |
86 | parameters: someParameters, | 86 | parameters: someParameters, |
87 | toll: aToll | 87 | toll: aToll |
88 | } | 88 | } |
89 | 89 | ||
90 | return result; | 90 | return result; |
91 | }); | 91 | }); |
92 | 92 | ||
93 | deferredResult.callback(); | 93 | deferredResult.callback(); |
94 | } else { | 94 | } else { |
95 | deferredResult = MochiKit.Async.succeed({parameters:someParameters}); | 95 | deferredResult = MochiKit.Async.succeed({parameters:someParameters}); |
96 | } | 96 | } |
97 | //console.log("<<< Proxy.payToll"); | 97 | //console.log("<<< Proxy.payToll"); |
98 | 98 | ||
99 | return deferredResult; | 99 | return deferredResult; |
100 | }, | 100 | }, |
101 | 101 | ||
102 | //------------------------------------------------------------------------- | 102 | //------------------------------------------------------------------------- |
103 | 103 | ||
104 | 'addToll': function(aToll) { | 104 | 'addToll': function(aToll) { |
105 | //console.log(">>> Proxy.addToll", aToll); | 105 | //console.log(">>> Proxy.addToll", aToll); |
106 | this.tolls()[aToll.requestType()].push(aToll); | 106 | this.tolls()[aToll.requestType()].push(aToll); |
107 | //console.log("<<< Proxy.addToll"); | 107 | //console.log("<<< Proxy.addToll"); |
108 | }, | 108 | }, |
109 | 109 | ||
110 | //========================================================================= | 110 | //========================================================================= |
111 | 111 | ||
112 | 'setTollCallback': function(someParameters) { | 112 | 'setTollCallback': function(someParameters) { |
113 | //console.log(">>> Proxy.setTollCallback", someParameters); | 113 | //console.log(">>> Proxy.setTollCallback", someParameters); |
114 | if (typeof(someParameters['toll']) != 'undefined') { | 114 | if (typeof(someParameters['toll']) != 'undefined') { |
115 | //console.log("added a new toll", someParameters['toll']); | 115 | //console.log("added a new toll", someParameters['toll']); |
116 | this.addToll(new Clipperz.PM.Toll(someParameters['toll'])); | 116 | this.addToll(new Clipperz.PM.Toll(someParameters['toll'])); |
117 | } | 117 | } |
118 | //console.log("<<< Proxy.setTallCallback", someParameters['result']); | 118 | //console.log("<<< Proxy.setTallCallback", someParameters['result']); |
119 | //return someParameters['result']; | 119 | return someParameters['result']; |
120 | return someParameters; | ||
121 | }, | 120 | }, |
122 | 121 | ||
123 | //========================================================================= | 122 | //========================================================================= |
124 | 123 | ||
125 | 'registration': function (someParameters) { | 124 | 'registration': function (someParameters) { |
126 | return this.processMessage('registration', someParameters, 'REGISTER'); | 125 | return this.processMessage('registration', someParameters, 'REGISTER'); |
127 | }, | 126 | }, |
128 | 127 | ||
129 | 'handshake': function (someParameters) { | 128 | 'handshake': function (someParameters) { |
130 | return this.processMessage('handshake', someParameters, 'CONNECT'); | 129 | return this.processMessage('handshake', someParameters, 'CONNECT'); |
131 | }, | 130 | }, |
132 | 131 | ||
133 | 'message': function (someParameters) { | 132 | 'message': function (someParameters) { |
134 | return this.processMessage('message', someParameters, 'MESSAGE'); | 133 | return this.processMessage('message', someParameters, 'MESSAGE'); |
135 | }, | 134 | }, |
136 | 135 | ||
137 | 'logout': function (someParameters) { | 136 | 'logout': function (someParameters) { |
138 | return this.processMessage('logout', someParameters, 'MESSAGE'); | 137 | return this.processMessage('logout', someParameters, 'MESSAGE'); |
139 | }, | 138 | }, |
140 | 139 | ||
141 | //========================================================================= | 140 | //========================================================================= |
142 | 141 | ||
143 | 'processMessage': function (aFunctionName, someParameters, aRequestType) { | 142 | 'processMessage': function (aFunctionName, someParameters, aRequestType) { |
144 | vardeferredResult; | 143 | vardeferredResult; |
145 | 144 | ||
146 | deferredResult = new MochiKit.Async.Deferred(); | 145 | deferredResult = new MochiKit.Async.Deferred(); |
147 | deferredResult.addCallback(MochiKit.Base.method(this, 'payToll', aRequestType)); | 146 | deferredResult.addCallback(MochiKit.Base.method(this, 'payToll', aRequestType)); |
148 | deferredResult.addCallback(MochiKit.Base.method(this, 'sendMessage', aFunctionName)); | 147 | deferredResult.addCallback(MochiKit.Base.method(this, 'sendMessage', aFunctionName)); |
149 | deferredResult.addCallback(MochiKit.Base.method(this, 'setTollCallback')); | 148 | deferredResult.addCallback(MochiKit.Base.method(this, 'setTollCallback')); |
150 | deferredResult.callback(someParameters); | 149 | deferredResult.callback(someParameters); |
151 | 150 | ||
152 | return deferredResult; | 151 | return deferredResult; |
153 | }, | 152 | }, |
154 | 153 | ||
155 | //========================================================================= | 154 | //========================================================================= |
156 | 155 | ||
157 | 'sendMessage': function () { | 156 | 'sendMessage': function () { |
158 | throw Clipperz.Base.exception.AbstractMethod; | 157 | throw Clipperz.Base.exception.AbstractMethod; |
159 | }, | 158 | }, |
160 | 159 | ||
161 | //========================================================================= | 160 | //========================================================================= |
162 | 161 | ||
163 | 'isReadOnly': function () { | 162 | 'isReadOnly': function () { |
164 | return false; | 163 | return false; |
165 | }, | 164 | }, |
166 | 165 | ||
167 | //========================================================================= | 166 | //========================================================================= |
168 | __syntaxFix__: "syntax fix" | 167 | __syntaxFix__: "syntax fix" |
169 | 168 | ||
170 | }); | 169 | }); |
diff --git a/frontend/beta/js/Clipperz/PM/Proxy/Proxy.PHP.js b/frontend/beta/js/Clipperz/PM/Proxy/Proxy.PHP.js deleted file mode 100755 index 34a10c2..0000000 --- a/frontend/beta/js/Clipperz/PM/Proxy/Proxy.PHP.js +++ b/dev/null | |||
@@ -1,262 +0,0 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | */ | ||
25 | |||
26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | ||
27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } | ||
28 | |||
29 | //============================================================================= | ||
30 | |||
31 | Clipperz.PM.Proxy.PHP = function(args) { | ||
32 | Clipperz.PM.Proxy.PHP.superclass.constructor.call(this, args); | ||
33 | /* | ||
34 | this._tolls = { | ||
35 | 'CONNECT':[], | ||
36 | 'REGISTER':[], | ||
37 | 'MESSAGE':[] | ||
38 | }; | ||
39 | */ | ||
40 | return this; | ||
41 | } | ||
42 | |||
43 | YAHOO.extendX(Clipperz.PM.Proxy.PHP, Clipperz.PM.Proxy, { | ||
44 | |||
45 | 'toString': function() { | ||
46 | return "Clipperz.PM.Proxy.PHP - " + this.args(); | ||
47 | }, | ||
48 | |||
49 | //========================================================================= | ||
50 | /* | ||
51 | 'tolls': function() { | ||
52 | return this._tolls; | ||
53 | }, | ||
54 | */ | ||
55 | //------------------------------------------------------------------------- | ||
56 | /* | ||
57 | 'payToll': function(aRequestType, someParameters) { | ||
58 | vardeferredResult; | ||
59 | |||
60 | //MochiKit.Logging.logDebug(">>> Proxy.DWR.payToll: " + aRequestType); | ||
61 | if (this.tolls()[aRequestType].length > 0) { | ||
62 | deferredResult = MochiKit.Async.succeed(this.tolls()[aRequestType].pop()); | ||
63 | } else { | ||
64 | //MochiKit.Logging.logDebug("### " + aRequestType + " toll NOT immediately available; request queued."); | ||
65 | deferredResult = new MochiKit.Async.Deferred(); | ||
66 | deferredResult.addCallback(function(someParameters) { | ||
67 | return new Clipperz.PM.Toll(someParameters['toll']); | ||
68 | }) | ||
69 | com_clipperz_pm_Proxy.knock(Clipperz.Base.serializeJSON({requestType:aRequestType}), { | ||
70 | callback:MochiKit.Base.method(deferredResult, 'callback'), | ||
71 | errorHandler:MochiKit.Base.method(deferredResult, 'errback') | ||
72 | }); | ||
73 | } | ||
74 | |||
75 | deferredResult.addCallback(function(aToll) { | ||
76 | return aToll.deferredPay(); | ||
77 | }); | ||
78 | deferredResult.addCallback(function(someParameters, aToll) { | ||
79 | var result; | ||
80 | |||
81 | result = { | ||
82 | parameters: someParameters, | ||
83 | toll: aToll | ||
84 | } | ||
85 | |||
86 | return result; | ||
87 | }, someParameters); | ||
88 | |||
89 | return deferredResult; | ||
90 | }, | ||
91 | */ | ||
92 | //------------------------------------------------------------------------- | ||
93 | /* | ||
94 | 'addToll': function(aToll) { | ||
95 | this.tolls()[aToll.requestType()].push(aToll); | ||
96 | }, | ||
97 | */ | ||
98 | //========================================================================= | ||
99 | /* | ||
100 | 'setTollCallback': function(someParameters) { | ||
101 | //MochiKit.Logging.logDebug(">>> Proxy.DWR.setTollCallback"); | ||
102 | //MochiKit.Logging.logDebug("--- Proxy.DWR.setTollCallback - " + Clipperz.Base.serializeJSON(someParameters)); | ||
103 | if (typeof(someParameters['toll']) != 'undefined') { | ||
104 | this.addToll(new Clipperz.PM.Toll(someParameters['toll'])); | ||
105 | } | ||
106 | return someParameters['result']; | ||
107 | }, | ||
108 | */ | ||
109 | //========================================================================= | ||
110 | |||
111 | 'registration': function(someParameters) { | ||
112 | return this.sendMessage('registration', someParameters, 'REGISTER'); | ||
113 | }, | ||
114 | |||
115 | //------------------------------------------------------------------------- | ||
116 | |||
117 | 'handshake': function(someParameters) { | ||
118 | /* | ||
119 | _s = "e8a2162f29aeaabb729f5625e9740edbf0cd80ac77c6b19ab951ed6c88443b8c"; | ||
120 | _v = new Clipperz.Crypto.BigInt("955e2db0f7844aca372f5799e5f7e51b5866718493096908bd66abcf1d068108", 16); | ||
121 | _b = new Clipperz.Crypto.BigInt("5761e6c84d22ea3c5649de01702d60f674ccfe79238540eb34c61cd020230c53", 16); | ||
122 | |||
123 | _B = _v.add(Clipperz.Crypto.SRP.g().powerModule(_b, Clipperz.Crypto.SRP.n())); | ||
124 | _u = new Clipperz.Crypto.BigInt(Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_B.asString(10))).toHexString(), 16); | ||
125 | _A = new Clipperz.Crypto.BigInt("3b3567ec33d73673552e960872eb154d091a2488915941038aef759236a27e64", 16); | ||
126 | _S = (_A.multiply(_v.powerModule(_u, Clipperz.Crypto.SRP.n()))).powerModule(_b, Clipperz.Crypto.SRP.n()); | ||
127 | _K = Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_S.asString(10))).toHexString().slice(2); | ||
128 | _M1 = Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_A.asString(10) + _B.asString(10) + _K)).toHexString().slice(2); | ||
129 | _M2 = Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_A.asString(10) + _M1 + _K)).toHexString().slice(2); | ||
130 | |||
131 | // MochiKit.Logging.logDebug("b = " + _b.asString(16)); | ||
132 | // MochiKit.Logging.logDebug("v = " + _v.asString(16)); | ||
133 | MochiKit.Logging.logDebug("B = " + _B.asString(16)); | ||
134 | MochiKit.Logging.logDebug("u = " + _u.asString(16)); | ||
135 | MochiKit.Logging.logDebug("S = " + _S.asString(16)); | ||
136 | MochiKit.Logging.logDebug("K = " + _K); | ||
137 | MochiKit.Logging.logDebug("M1 = " + _M1); | ||
138 | MochiKit.Logging.logDebug("M2 = " + _M2); | ||
139 | // MochiKit.Logging.logDebug("someParameters.version: " + someParameters.version); | ||
140 | */ | ||
141 | return this.sendMessage('handshake', someParameters, 'CONNECT'); | ||
142 | }, | ||
143 | |||
144 | //------------------------------------------------------------------------- | ||
145 | |||
146 | 'message': function(someParameters) { | ||
147 | return this.sendMessage('message', someParameters, 'MESSAGE'); | ||
148 | }, | ||
149 | |||
150 | //------------------------------------------------------------------------- | ||
151 | |||
152 | 'logout': function(someParameters) { | ||
153 | //MochiKit.Logging.logDebug("=== Proxy.DWR.logout"); | ||
154 | return this.sendMessage('logout', someParameters, 'MESSAGE'); | ||
155 | }, | ||
156 | |||
157 | //========================================================================= | ||
158 | |||
159 | 'sendMessage': function(aFunctionName, someParameters, aRequestType) { | ||
160 | /* | ||
161 | vardeferredResult; | ||
162 | var proxy; | ||
163 | |||
164 | //MochiKit.Logging.logDebug(">>> Proxy.DWR.sendMessage - " + aFunctionName + " - " + aRequestType); | ||
165 | proxy = this; | ||
166 | |||
167 | deferredResult = new MochiKit.Async.Deferred(); | ||
168 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("x.1 Proxy.DWR.sendMessage - 1: " + res); return res;}); | ||
169 | deferredResult.addCallback(MochiKit.Base.method(proxy, 'payToll'), aRequestType); | ||
170 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("x.2 Proxy.DWR.sendMessage - 2: " + Clipperz.Base.serializeJSON(res)); return res;}); | ||
171 | deferredResult.addCallback(MochiKit.Base.method(proxy, 'sendRemoteMessage'), aFunctionName); | ||
172 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("x.3 Proxy.DWR.sendMessage - 3: " + res); return res;}); | ||
173 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("x.3 Proxy.DWR.sendMessage - 3: " + Clipperz.Base.serializeJSON(res)); return res;}); | ||
174 | deferredResult.callback(someParameters); | ||
175 | |||
176 | //MochiKit.Logging.logDebug("<<< Proxy.DWR.sendMessage"); | ||
177 | return deferredResult; | ||
178 | */ | ||
179 | |||
180 | // return this.sendRemoteMessage(aFunctionName, someParameters); | ||
181 | |||
182 | |||
183 | vardeferredResult; | ||
184 | var proxy; | ||
185 | |||
186 | proxy = this; | ||
187 | |||
188 | deferredResult = new MochiKit.Async.Deferred(); | ||
189 | deferredResult.addCallback(MochiKit.Base.method(proxy, 'sendRemoteMessage'), aFunctionName); | ||
190 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("x.3 Proxy.PHP.sendMessage - 3: " + res); return res;}); | ||
191 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("x.3 Proxy.PHP.sendMessage - 3.1: " + Clipperz.Base.serializeJSON(res)); return res;}); | ||
192 | |||
193 | deferredResult.callback(someParameters); | ||
194 | |||
195 | return deferredResult; | ||
196 | }, | ||
197 | |||
198 | //========================================================================= | ||
199 | |||
200 | 'sendRemoteMessage': function(aFunctionName, someParameters) { | ||
201 | /* | ||
202 | vardeferredResult; | ||
203 | |||
204 | //MochiKit.Logging.logDebug(">>> Proxy.DWR.sendRemoteMessage('" + aFunctionName + "', " + Clipperz.Base.serializeJSON(someParameters) + ") - " + this); | ||
205 | deferredResult = new MochiKit.Async.Deferred(); | ||
206 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Proxy.DWR.sendRemoteMessage - 1: " + res); return res;}); | ||
207 | // deferredResult.addCallback(MochiKit.Base.method(this, 'setTollCallback')); | ||
208 | //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Proxy.DWR.sendRemoteMessage - 2: " + res); return res;}); | ||
209 | |||
210 | com_clipperz_pm_Proxy[aFunctionName](Clipperz.Base.serializeJSON(someParameters), { | ||
211 | callback:MochiKit.Base.method(deferredResult, 'callback'), | ||
212 | errorHandler:MochiKit.Base.method(deferredResult, 'errback') | ||
213 | }); | ||
214 | //MochiKit.Logging.logDebug("<<< Proxy.PHP.sendRemoteMessage - result: " + deferredResult); | ||
215 | |||
216 | return deferredResult; | ||
217 | */ | ||
218 | |||
219 | vardeferredResult; | ||
220 | var parameters; | ||
221 | |||
222 | //MochiKit.Logging.logDebug(">>> Proxy.PHP.sendRemoteMessage('" + aFunctionName + "', " + Clipperz.Base.serializeJSON(someParameters) + ") - " + this); | ||
223 | parameters = {}; | ||
224 | parameters['method'] = aFunctionName; | ||
225 | // parameters['version'] = someParameters['version']; | ||
226 | // parameters['message'] = someParameters['message']; | ||
227 | parameters['parameters'] = Clipperz.Base.serializeJSON(someParameters); | ||
228 | //MochiKit.Logging.logDebug("--- Proxy.PHP.sendRemoteMessage('" + Clipperz.Base.serializeJSON(parameters) + ") - " + this); | ||
229 | deferredResult = new MochiKit.Async.Deferred(); | ||
230 | deferredResult.addCallback(MochiKit.Async.doXHR, "./php/index.php", { | ||
231 | method:'POST', | ||
232 | sendContent:MochiKit.Base.queryString(parameters), | ||
233 | headers:{"Content-Type":"application/x-www-form-urlencoded"} | ||
234 | }); | ||
235 | //deferredResult.addCallback(function(res) {MochiKit.Logging.logDebug("Proxy.PHP.response - 2: " + res.responseText); return res;}); | ||
236 | //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("Proxy.PHP.response - ERROR: " + res); return res;}); | ||
237 | deferredResult.addCallback(MochiKit.Async.evalJSONRequest); | ||
238 | deferredResult.addCallback(function (someValues) { | ||
239 | if (someValues['result'] == 'EXCEPTION') { | ||
240 | throw someValues['message']; | ||
241 | } | ||
242 | return someValues; | ||
243 | }) | ||
244 | deferredResult.callback(); | ||
245 | |||
246 | return deferredResult; | ||
247 | }, | ||
248 | |||
249 | //========================================================================= | ||
250 | |||
251 | 'isReadOnly': function() { | ||
252 | return false; | ||
253 | }, | ||
254 | |||
255 | //========================================================================= | ||
256 | __syntaxFix__: "syntax fix" | ||
257 | |||
258 | }); | ||
259 | |||
260 | //============================================================================= | ||
261 | |||
262 | //Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.PHP("Proxy.PHP - async test"); | ||
diff --git a/frontend/gamma/html/index_template.html b/frontend/gamma/html/index_template.html index 8cf838c..bedb243 100644 --- a/frontend/gamma/html/index_template.html +++ b/frontend/gamma/html/index_template.html | |||
@@ -1,62 +1,67 @@ | |||
1 | <html> | 1 | <html> |
2 | <head> | 2 | <head> |
3 | <title>@page.title@</title> | 3 | <title>@page.title@</title> |
4 | <meta http-equiv="content-type" content="text/html; charset=utf-8" /> | 4 | <meta http-equiv="content-type" content="text/html; charset=utf-8" /> |
5 | <!-- | 5 | <!-- |
6 | @copyright@ | 6 | @copyright@ |
7 | --> | 7 | --> |
8 | 8 | ||
9 | @css@ | 9 | @css@ |
10 | 10 | ||
11 | <link rel="shortcut icon" href="./clipperz.ico" /> | 11 | <link rel="shortcut icon" href="./clipperz.ico" /> |
12 | 12 | ||
13 | <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." /> | 13 | <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." /> |
14 | <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" /> | 14 | <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" /> |
15 | <script> | 15 | <script> |
16 | Clipperz_IEisBroken = false; | 16 | Clipperz_IEisBroken = false; |
17 | Clipperz_normalizedNewLine = '\n'; | 17 | Clipperz_normalizedNewLine = '\n'; |
18 | Clipperz_dumpUrl = "/dump/"; | 18 | Clipperz_dumpUrl = "/dump/"; |
19 | </script> | 19 | </script> |
20 | 20 | ||
21 | <!--[if IE]><script> | 21 | <!--[if IE]><script> |
22 | Clipperz_IEisBroken = true; | 22 | Clipperz_IEisBroken = true; |
23 | Clipperz_normalizedNewLine = '\x0d\x0a'; | 23 | Clipperz_normalizedNewLine = '\x0d\x0a'; |
24 | </script><![endif]--> | 24 | </script><![endif]--> |
25 | 25 | ||
26 | @js_DEBUG@ | 26 | @js_DEBUG@ |
27 | 27 | ||
28 | </head> | 28 | </head> |
29 | <body> | 29 | <body> |
30 | <div id="mainDiv"> | 30 | <div id="mainDiv"> |
31 | <div id="loading"> | 31 | <div id="loading"> |
32 | <a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a> | 32 | <a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a> |
33 | <h5 class="clipperzPayoff">keep it to yourself!</h5> | 33 | <h5 class="clipperzPayoff">keep it to yourself!</h5> |
34 | <h2>loading ...</h2> | 34 | <h2>loading ...</h2> |
35 | </div> | 35 | </div> |
36 | 36 | ||
37 | @js_INSTALL@ | 37 | @js_INSTALL@ |
38 | 38 | ||
39 | </div> | 39 | </div> |
40 | <div id="applicationVersionType" class="@application.version.type@"></div> | 40 | <div id="applicationVersionType" class="@application.version.type@"></div> |
41 | 41 | ||
42 | <script> | ||
43 | Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.JSON({'url':'@request.path@', 'shouldPayTolls':@should.pay.toll@}); | ||
44 | /*offline_data_placeholder*/ | ||
45 | </script> | ||
46 | |||
42 | <!-- --> | 47 | <!-- --> |
43 | <div id="javaScriptAlert"> | 48 | <div id="javaScriptAlert"> |
44 | <div class="mask"></div> | 49 | <div class="mask"></div> |
45 | <div class="message"> | 50 | <div class="message"> |
46 | <div class="header"></div> | 51 | <div class="header"></div> |
47 | <div class="body"> | 52 | <div class="body"> |
48 | <div class="alertLogo"></div> | 53 | <div class="alertLogo"></div> |
49 | <div class="alert"> | 54 | <div class="alert"> |
50 | <h1>Attention!</h1> | 55 | <h1>Attention!</h1> |
51 | <p>If you can read this message, the chances are that your browser does not properly support JavaScript? or you have disabled this functionality yourself.</p> | 56 | <p>If you can read this message, the chances are that your browser does not properly support JavaScript? or you have disabled this functionality yourself.</p> |
52 | <h3>Javascript is required to access Clipperz.</h3> | 57 | <h3>Javascript is required to access Clipperz.</h3> |
53 | <h5>Please enable scripting or upgrade your browser.</h5> | 58 | <h5>Please enable scripting or upgrade your browser.</h5> |
54 | </div> | 59 | </div> |
55 | </div> | 60 | </div> |
56 | <div class="footer"></div> | 61 | <div class="footer"></div> |
57 | </div> | 62 | </div> |
58 | </div> | 63 | </div> |
59 | <!-- --> | 64 | <!-- --> |
60 | 65 | ||
61 | </body> | 66 | </body> |
62 | </html> | 67 | </html> |
diff --git a/frontend/gamma/js/Clipperz/Async.js b/frontend/gamma/js/Clipperz/Async.js index 7c9d783..97d8ecf 100644 --- a/frontend/gamma/js/Clipperz/Async.js +++ b/frontend/gamma/js/Clipperz/Async.js | |||
@@ -1,704 +1,711 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | //Clipperz.Async = MochiKit.Async; | 26 | //Clipperz.Async = MochiKit.Async; |
27 | 27 | ||
28 | 28 | ||
29 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | 29 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } |
30 | if (typeof(Clipperz.Async) == 'undefined') { Clipperz.Async = {}; } | 30 | if (typeof(Clipperz.Async) == 'undefined') { Clipperz.Async = {}; } |
31 | 31 | ||
32 | Clipperz.Async.VERSION = "0.1"; | 32 | Clipperz.Async.VERSION = "0.1"; |
33 | Clipperz.Async.NAME = "Clipperz.Async"; | 33 | Clipperz.Async.NAME = "Clipperz.Async"; |
34 | 34 | ||
35 | Clipperz.Async.Deferred = function(aName, args) { | 35 | Clipperz.Async.Deferred = function(aName, args) { |
36 | args = args || {}; | 36 | args = args || {}; |
37 | 37 | ||
38 | Clipperz.Async.Deferred.superclass.constructor.call(this, args.canceller); | 38 | Clipperz.Async.Deferred.superclass.constructor.call(this, args.canceller); |
39 | 39 | ||
40 | this._args = args; | 40 | this._args = args; |
41 | this._name = aName || "Anonymous deferred"; | 41 | this._name = aName || "Anonymous deferred"; |
42 | this._count = 0; | 42 | this._count = 0; |
43 | this._shouldTrace = ((CLIPPERZ_DEFERRED_TRACING_ENABLED === true) || (args.trace === true)); | 43 | this._shouldTrace = ((CLIPPERZ_DEFERRED_TRACING_ENABLED === true) || (args.trace === true)); |
44 | this._vars = null; | 44 | this._vars = null; |
45 | 45 | ||
46 | return this; | 46 | return this; |
47 | } | 47 | } |
48 | 48 | ||
49 | //============================================================================= | 49 | //============================================================================= |
50 | 50 | ||
51 | Clipperz.Base.extend(Clipperz.Async.Deferred, MochiKit.Async.Deferred, { | 51 | Clipperz.Base.extend(Clipperz.Async.Deferred, MochiKit.Async.Deferred, { |
52 | 52 | ||
53 | 'name': function () { | 53 | 'name': function () { |
54 | return this._name; | 54 | return this._name; |
55 | }, | 55 | }, |
56 | 56 | ||
57 | 'args': function () { | 57 | 'args': function () { |
58 | return this._args; | 58 | return this._args; |
59 | }, | 59 | }, |
60 | 60 | ||
61 | //----------------------------------------------------------------------------- | 61 | //----------------------------------------------------------------------------- |
62 | 62 | ||
63 | 'callback': function (aValue) { | 63 | 'callback': function (aValue) { |
64 | if (this._shouldTrace) { | 64 | if (this._shouldTrace) { |
65 | Clipperz.log("CALLBACK " + this._name, aValue); | 65 | //Clipperz.log("CALLBACK " + this._name, aValue); |
66 | console.log("CALLBACK " + this._name, aValue); | ||
66 | } | 67 | } |
67 | 68 | ||
68 | if (this.chained == false) { | 69 | if (this.chained == false) { |
69 | var message; | 70 | var message; |
70 | 71 | ||
71 | message = "ERROR [" + this._name + "]"; | 72 | message = "ERROR [" + this._name + "]"; |
72 | this.addErrback(function(aResult) { | 73 | this.addErrback(function(aResult) { |
73 | if (! (aResult instanceof MochiKit.Async.CancelledError)) { | 74 | if (! (aResult instanceof MochiKit.Async.CancelledError)) { |
74 | Clipperz.log(message, aResult); | 75 | Clipperz.log(message, aResult); |
75 | } | 76 | } |
76 | return aResult; | 77 | return aResult; |
77 | }); | 78 | }); |
78 | 79 | ||
79 | if (this._shouldTrace) { | 80 | if (this._shouldTrace) { |
80 | var resultMessage; | 81 | var resultMessage; |
81 | 82 | ||
82 | resultMessage = "RESULT " + this._name + " <=="; | 83 | resultMessage = "RESULT " + this._name + " <=="; |
83 | // this.addCallback(function(aResult) { | 84 | // this.addCallback(function(aResult) { |
84 | Clipperz.Async.Deferred.superclass.addCallback.call(this, function(aResult) { | 85 | Clipperz.Async.Deferred.superclass.addCallback.call(this, function(aResult) { |
85 | Clipperz.log(resultMessage, aResult); | 86 | //Clipperz.log(resultMessage, aResult); |
87 | console.log(resultMessage, aResult); | ||
86 | 88 | ||
87 | return aResult; | 89 | return aResult; |
88 | }); | 90 | }); |
89 | } | 91 | } |
90 | } | 92 | } |
91 | 93 | ||
92 | if (CLIPPERZ_DEFERRED_CALL_LOGGING_ENABLED === true) { | 94 | if (CLIPPERZ_DEFERRED_CALL_LOGGING_ENABLED === true) { |
93 | Clipperz.log("callback " + this._name, this); | 95 | Clipperz.log("callback " + this._name, this); |
94 | } | 96 | } |
95 | 97 | ||
96 | return Clipperz.Async.Deferred.superclass.callback.apply(this, arguments); | 98 | return Clipperz.Async.Deferred.superclass.callback.apply(this, arguments); |
97 | }, | 99 | }, |
98 | 100 | ||
99 | //----------------------------------------------------------------------------- | 101 | //----------------------------------------------------------------------------- |
100 | 102 | ||
101 | 'addCallback': function () { | 103 | 'addCallback': function () { |
102 | var message; | 104 | var message; |
103 | 105 | ||
104 | if (this._shouldTrace) { | 106 | if (this._shouldTrace) { |
105 | this._count ++; | 107 | this._count ++; |
106 | message = "[" + this._count + "] " + this._name + " "; | 108 | message = "[" + this._count + "] " + this._name + " "; |
107 | // this.addBoth(function(aResult) {Clipperz.log(message + "-->", aResult); return aResult;}); | 109 | // this.addBoth(function(aResult) {Clipperz.log(message + "-->", aResult); return aResult;}); |
108 | this.addCallbacks( | 110 | this.addCallbacks( |
109 | function(aResult) {Clipperz.log("-OK- " + message + "-->"/*, aResult*/); return aResult;}, | 111 | //function(aResult) {Clipperz.log("-OK- " + message + "-->"/*, aResult*/); return aResult;}, |
110 | function(aResult) {Clipperz.log("FAIL " + message + "-->"/*, aResult*/); return aResult;} | 112 | function(aResult) {console.log("-OK- " + message + "-->"/*, aResult*/); return aResult;}, |
113 | //function(aResult) {Clipperz.log("FAIL " + message + "-->"/*, aResult*/); return aResult;} | ||
114 | function(aResult) {console.log("FAIL " + message + "-->"/*, aResult*/); return aResult;} | ||
111 | ); | 115 | ); |
112 | } | 116 | } |
113 | 117 | ||
114 | Clipperz.Async.Deferred.superclass.addCallback.apply(this, arguments); | 118 | Clipperz.Async.Deferred.superclass.addCallback.apply(this, arguments); |
115 | 119 | ||
116 | if (this._shouldTrace) { | 120 | if (this._shouldTrace) { |
117 | // this.addBoth(function(aResult) {Clipperz.log(message + "<--", aResult); return aResult;}); | 121 | // this.addBoth(function(aResult) {Clipperz.log(message + "<--", aResult); return aResult;}); |
118 | this.addCallbacks( | 122 | this.addCallbacks( |
119 | function(aResult) {Clipperz.log("-OK- " + message + "<--", aResult); return aResult;}, | 123 | //function(aResult) {Clipperz.log("-OK- " + message + "<--", aResult); return aResult;}, |
120 | function(aResult) {Clipperz.log("FAIL " + message + "<--", aResult); return aResult;} | 124 | function(aResult) {console.log("-OK- " + message + "<--", aResult); return aResult;}, |
125 | //function(aResult) {Clipperz.log("FAIL " + message + "<--", aResult); return aResult;} | ||
126 | function(aResult) {console.log("FAIL " + message + "<--", aResult); return aResult;} | ||
121 | ); | 127 | ); |
122 | } | 128 | } |
123 | }, | 129 | }, |
124 | 130 | ||
125 | //============================================================================= | 131 | //============================================================================= |
126 | 132 | ||
127 | 'addCallbackPass': function() { | 133 | 'addCallbackPass': function() { |
128 | var passFunction; | 134 | var passFunction; |
129 | 135 | ||
130 | passFunction = MochiKit.Base.partial.apply(null, arguments); | 136 | passFunction = MochiKit.Base.partial.apply(null, arguments); |
131 | 137 | ||
132 | this.addCallback(function() { | 138 | this.addCallback(function() { |
133 | var result; | 139 | var result; |
134 | 140 | ||
135 | result = arguments[arguments.length -1]; | 141 | result = arguments[arguments.length -1]; |
136 | passFunction(); | 142 | passFunction(); |
137 | 143 | ||
138 | return result; | 144 | return result; |
139 | }); | 145 | }); |
140 | }, | 146 | }, |
141 | 147 | ||
142 | //----------------------------------------------------------------------------- | 148 | //----------------------------------------------------------------------------- |
143 | 149 | ||
144 | 'addErrbackPass': function() { | 150 | 'addErrbackPass': function() { |
145 | var passFunction; | 151 | var passFunction; |
146 | 152 | ||
147 | passFunction = MochiKit.Base.partial.apply(null, arguments); | 153 | passFunction = MochiKit.Base.partial.apply(null, arguments); |
148 | 154 | ||
149 | this.addErrback(function() { | 155 | this.addErrback(function() { |
150 | var result; | 156 | var result; |
151 | 157 | ||
152 | result = arguments[arguments.length -1]; | 158 | result = arguments[arguments.length -1]; |
153 | passFunction(); | 159 | passFunction(); |
154 | 160 | ||
155 | return result; | 161 | return result; |
156 | }); | 162 | }); |
157 | }, | 163 | }, |
158 | 164 | ||
159 | //----------------------------------------------------------------------------- | 165 | //----------------------------------------------------------------------------- |
160 | 166 | ||
161 | 'addBothPass': function() { | 167 | 'addBothPass': function() { |
162 | var passFunction; | 168 | var passFunction; |
163 | 169 | ||
164 | passFunction = MochiKit.Base.partial.apply(null, arguments); | 170 | passFunction = MochiKit.Base.partial.apply(null, arguments); |
165 | 171 | ||
166 | this.addBoth(function() { | 172 | this.addBoth(function() { |
167 | var result; | 173 | var result; |
168 | 174 | ||
169 | result = arguments[arguments.length -1]; | 175 | result = arguments[arguments.length -1]; |
170 | passFunction(); | 176 | passFunction(); |
171 | 177 | ||
172 | return result; | 178 | return result; |
173 | }); | 179 | }); |
174 | }, | 180 | }, |
175 | 181 | ||
176 | //----------------------------------------------------------------------------- | 182 | //----------------------------------------------------------------------------- |
177 | 183 | ||
178 | 'addIf': function (aThenBlock, anElseBlock) { | 184 | 'addIf': function (aThenBlock, anElseBlock) { |
179 | this.addCallback(MochiKit.Base.bind(function (aValue) { | 185 | this.addCallback(MochiKit.Base.bind(function (aValue) { |
180 | var deferredResult; | 186 | var deferredResult; |
181 | 187 | ||
182 | if (!MochiKit.Base.isUndefinedOrNull(aValue) && aValue) { | 188 | if (!MochiKit.Base.isUndefinedOrNull(aValue) && aValue) { |
183 | deferredResult = Clipperz.Async.callbacks(this._name + " <then>", aThenBlock, null, aValue); | 189 | deferredResult = Clipperz.Async.callbacks(this._name + " <then>", aThenBlock, null, aValue); |
184 | } else { | 190 | } else { |
185 | deferredResult = Clipperz.Async.callbacks(this._name + " <else>", anElseBlock, null, aValue); | 191 | deferredResult = Clipperz.Async.callbacks(this._name + " <else>", anElseBlock, null, aValue); |
186 | } | 192 | } |
187 | 193 | ||
188 | return deferredResult; | 194 | return deferredResult; |
189 | })) | 195 | })) |
190 | }, | 196 | }, |
191 | 197 | ||
192 | //----------------------------------------------------------------------------- | 198 | //----------------------------------------------------------------------------- |
193 | 199 | ||
194 | 'addMethod': function () { | 200 | 'addMethod': function () { |
195 | this.addCallback(MochiKit.Base.method.apply(this, arguments)); | 201 | this.addCallback(MochiKit.Base.method.apply(this, arguments)); |
196 | }, | 202 | }, |
197 | 203 | ||
198 | //----------------------------------------------------------------------------- | 204 | //----------------------------------------------------------------------------- |
199 | 205 | ||
200 | 'addMethodcaller': function () { | 206 | 'addMethodcaller': function () { |
201 | this.addCallback(MochiKit.Base.methodcaller.apply(this, arguments)); | 207 | this.addCallback(MochiKit.Base.methodcaller.apply(this, arguments)); |
202 | }, | 208 | }, |
203 | 209 | ||
204 | //============================================================================= | 210 | //============================================================================= |
205 | 211 | ||
206 | 'addLog': function (aLog) { | 212 | 'addLog': function (aLog) { |
207 | if (CLIPPERZ_DEFERRED_LOGGING_ENABLED) { | 213 | if (CLIPPERZ_DEFERRED_LOGGING_ENABLED) { |
208 | this.addBothPass(function(res) {Clipperz.log(aLog + " ", res);}); | 214 | this.addBothPass(function(res) {Clipperz.log(aLog + " ", res);}); |
209 | // this.addBothPass(function(res) {console.log(aLog + " ", res);}); | 215 | // this.addBothPass(function(res) {console.log(aLog + " ", res);}); |
210 | } | 216 | } |
211 | }, | 217 | }, |
212 | 218 | ||
213 | //============================================================================= | 219 | //============================================================================= |
214 | 220 | ||
215 | 'acquireLock': function (aLock) { | 221 | 'acquireLock': function (aLock) { |
216 | // this.addCallback(function (aResult) { | 222 | // this.addCallback(function (aResult) { |
217 | // return Clipperz.Async.callbacks("Clipperz.Async.acquireLock", [ | 223 | // return Clipperz.Async.callbacks("Clipperz.Async.acquireLock", [ |
218 | // MochiKit.Base.method(aLock, 'acquire'), | 224 | // MochiKit.Base.method(aLock, 'acquire'), |
219 | // MochiKit.Base.partial(MochiKit.Async.succeed, aResult) | 225 | // MochiKit.Base.partial(MochiKit.Async.succeed, aResult) |
220 | // ], {trace:false}); | 226 | // ], {trace:false}); |
221 | // }); | 227 | // }); |
222 | 228 | ||
223 | this.addCallback(MochiKit.Base.method(aLock, 'acquire')); | 229 | this.addCallback(MochiKit.Base.method(aLock, 'acquire')); |
224 | }, | 230 | }, |
225 | 231 | ||
226 | 'releaseLock': function (aLock) { | 232 | 'releaseLock': function (aLock) { |
227 | // this.addCallback(function (aResult) { | 233 | // this.addCallback(function (aResult) { |
228 | // return Clipperz.Async.callbacks("Clipperz.Async.release <ok>", [ | 234 | // return Clipperz.Async.callbacks("Clipperz.Async.release <ok>", [ |
229 | // MochiKit.Base.method(aLock, 'release'), | 235 | // MochiKit.Base.method(aLock, 'release'), |
230 | // MochiKit.Base.partial(MochiKit.Async.succeed, aResult) | 236 | // MochiKit.Base.partial(MochiKit.Async.succeed, aResult) |
231 | // ], {trace:false}); | 237 | // ], {trace:false}); |
232 | // }); | 238 | // }); |
233 | // this.addErrback(function (aResult) { | 239 | // this.addErrback(function (aResult) { |
234 | ///console.log("releaseLock.addErrback:", aResult); | 240 | ///console.log("releaseLock.addErrback:", aResult); |
235 | // return Clipperz.Async.callbacks("Clipperz.Async.release <fail>", [ | 241 | // return Clipperz.Async.callbacks("Clipperz.Async.release <fail>", [ |
236 | // MochiKit.Base.method(aLock, 'release'), | 242 | // MochiKit.Base.method(aLock, 'release'), |
237 | // MochiKit.Base.partial(MochiKit.Async.fail, aResult) | 243 | // MochiKit.Base.partial(MochiKit.Async.fail, aResult) |
238 | // ], {trace:false}); | 244 | // ], {trace:false}); |
239 | // }); | 245 | // }); |
240 | 246 | ||
241 | // this.addBothPass(MochiKit.Base.method(aLock, 'release')); | 247 | // this.addBothPass(MochiKit.Base.method(aLock, 'release')); |
242 | this.addCallbackPass(MochiKit.Base.method(aLock, 'release')); | 248 | this.addCallbackPass(MochiKit.Base.method(aLock, 'release')); |
243 | this.addErrback(function (anError) { | 249 | this.addErrback(function (anError) { |
244 | aLock.release(); | 250 | aLock.release(); |
245 | 251 | ||
246 | return anError; | 252 | return anError; |
247 | }); | 253 | }); |
248 | }, | 254 | }, |
249 | 255 | ||
250 | //============================================================================= | 256 | //============================================================================= |
251 | 257 | ||
252 | 'collectResults': function (someRequests) { | 258 | 'collectResults': function (someRequests) { |
253 | this.addCallback(Clipperz.Async.collectResults(this._name + " <collect results>", someRequests, this._args)); | 259 | this.addCallback(Clipperz.Async.collectResults(this._name + " <collect results>", someRequests, this._args)); |
254 | }, | 260 | }, |
255 | 261 | ||
256 | 'addCallbackList': function (aRequestList) { | 262 | 'addCallbackList': function (aRequestList) { |
257 | this.addCallback(Clipperz.Async.callbacks, this._name + " <callback list>", aRequestList, this._args); | 263 | this.addCallback(Clipperz.Async.callbacks, this._name + " <callback list>", aRequestList, this._args); |
258 | }, | 264 | }, |
259 | 265 | ||
260 | //============================================================================= | 266 | //============================================================================= |
261 | 267 | ||
262 | 'vars': function () { | 268 | 'vars': function () { |
263 | if (this._vars == null) { | 269 | if (this._vars == null) { |
264 | this._vars = {} | 270 | this._vars = {} |
265 | } | 271 | } |
266 | 272 | ||
267 | return this._vars; | 273 | return this._vars; |
268 | }, | 274 | }, |
269 | 275 | ||
270 | 'setValue': function (aKey) { | 276 | 'setValue': function (aKey) { |
271 | this.addCallback(MochiKit.Base.bind(function (aValue) { | 277 | this.addCallback(MochiKit.Base.bind(function (aValue) { |
272 | this.vars()[aKey] = aValue; | 278 | this.vars()[aKey] = aValue; |
273 | return aValue; | 279 | return aValue; |
274 | }, this)); | 280 | }, this)); |
275 | }, | 281 | }, |
276 | 282 | ||
277 | 'getValue': function (aKey) { | 283 | 'getValue': function (aKey) { |
278 | this.addCallback(MochiKit.Base.bind(function () { | 284 | this.addCallback(MochiKit.Base.bind(function () { |
279 | return this.vars()[aKey]; | 285 | return this.vars()[aKey]; |
280 | }, this)); | 286 | }, this)); |
281 | }, | 287 | }, |
282 | 288 | ||
283 | //============================================================================= | 289 | //============================================================================= |
284 | 290 | ||
285 | __syntaxFix__: "syntax fix" | 291 | __syntaxFix__: "syntax fix" |
286 | }); | 292 | }); |
287 | 293 | ||
288 | //############################################################################# | 294 | //############################################################################# |
289 | 295 | ||
290 | Clipperz.Async.DeferredSynchronizer = function(aName, someMethods) { | 296 | Clipperz.Async.DeferredSynchronizer = function(aName, someMethods) { |
291 | this._name = aName || "Anonymous deferred Synchronizer"; | 297 | this._name = aName || "Anonymous deferred Synchronizer"; |
292 | this._methods = someMethods; | 298 | this._methods = someMethods; |
293 | 299 | ||
294 | this._numberOfMethodsDone= 0; | 300 | this._numberOfMethodsDone= 0; |
295 | this._methodResults = []; | 301 | this._methodResults = []; |
296 | 302 | ||
297 | this._result = new Clipperz.Async.Deferred("Clipperz.Async.DeferredSynchronizer # " + this.name(), {trace:false}); | 303 | this._result = new Clipperz.Async.Deferred("Clipperz.Async.DeferredSynchronizer # " + this.name(), {trace:false}); |
298 | this._result.addMethod(this, 'methodResults'); | 304 | this._result.addMethod(this, 'methodResults'); |
299 | this._result.addCallback(function(someResults) { | 305 | this._result.addCallback(function(someResults) { |
300 | varcancels; | 306 | varcancels; |
301 | var errors; | 307 | var errors; |
302 | var result; | 308 | var result; |
303 | 309 | ||
304 | cancels = MochiKit.Base.filter(function(aResult) { return (aResult instanceof MochiKit.Async.CancelledError)}, someResults); | 310 | cancels = MochiKit.Base.filter(function(aResult) { return (aResult instanceof MochiKit.Async.CancelledError)}, someResults); |
305 | 311 | ||
306 | if (cancels.length == 0) { | 312 | if (cancels.length == 0) { |
307 | errors = MochiKit.Base.filter(function(aResult) { return (aResult instanceof Error)}, someResults); | 313 | errors = MochiKit.Base.filter(function(aResult) { return (aResult instanceof Error)}, someResults); |
308 | 314 | ||
309 | if (errors.length == 0) { | 315 | if (errors.length == 0) { |
310 | // result = MochiKit.Async.succeed(someResults); | 316 | // result = MochiKit.Async.succeed(someResults); |
311 | result = someResults; | 317 | result = someResults; |
312 | } else { | 318 | } else { |
313 | result = MochiKit.Async.fail(someResults); | 319 | result = MochiKit.Async.fail(someResults); |
314 | } | 320 | } |
315 | } else { | 321 | } else { |
316 | result = MochiKit.Async.fail(cancels[0]); | 322 | result = MochiKit.Async.fail(cancels[0]); |
317 | } | 323 | } |
318 | 324 | ||
319 | return result; | 325 | return result; |
320 | }/*, this._methodResults */); | 326 | }/*, this._methodResults */); |
321 | 327 | ||
322 | return this; | 328 | return this; |
323 | } | 329 | } |
324 | 330 | ||
325 | MochiKit.Base.update(Clipperz.Async.DeferredSynchronizer.prototype, { | 331 | MochiKit.Base.update(Clipperz.Async.DeferredSynchronizer.prototype, { |
326 | 332 | ||
327 | //----------------------------------------------------------------------------- | 333 | //----------------------------------------------------------------------------- |
328 | 334 | ||
329 | 'name': function() { | 335 | 'name': function() { |
330 | return this._name; | 336 | return this._name; |
331 | }, | 337 | }, |
332 | 338 | ||
333 | //----------------------------------------------------------------------------- | 339 | //----------------------------------------------------------------------------- |
334 | 340 | ||
335 | 'methods': function() { | 341 | 'methods': function() { |
336 | return this._methods; | 342 | return this._methods; |
337 | }, | 343 | }, |
338 | 344 | ||
339 | 'methodResults': function() { | 345 | 'methodResults': function() { |
340 | return this._methodResults; | 346 | return this._methodResults; |
341 | }, | 347 | }, |
342 | 348 | ||
343 | //----------------------------------------------------------------------------- | 349 | //----------------------------------------------------------------------------- |
344 | 350 | ||
345 | 'result': function() { | 351 | 'result': function() { |
346 | return this._result; | 352 | return this._result; |
347 | }, | 353 | }, |
348 | 354 | ||
349 | //----------------------------------------------------------------------------- | 355 | //----------------------------------------------------------------------------- |
350 | 356 | ||
351 | 'numberOfMethodsDone':function() { | 357 | 'numberOfMethodsDone':function() { |
352 | return this._numberOfMethodsDone; | 358 | return this._numberOfMethodsDone; |
353 | }, | 359 | }, |
354 | 360 | ||
355 | 'incrementNumberOfMethodsDone': function() { | 361 | 'incrementNumberOfMethodsDone': function() { |
356 | this._numberOfMethodsDone ++; | 362 | this._numberOfMethodsDone ++; |
357 | }, | 363 | }, |
358 | 364 | ||
359 | //----------------------------------------------------------------------------- | 365 | //----------------------------------------------------------------------------- |
360 | 366 | ||
361 | 'run': function(args, aValue) { | 367 | 'run': function(args, aValue) { |
362 | var deferredResults; | 368 | var deferredResults; |
363 | var i, c; | 369 | var i, c; |
364 | 370 | ||
365 | deferredResults = []; | 371 | deferredResults = []; |
366 | args = args || {}; | 372 | args = args || {}; |
367 | 373 | ||
368 | c = this.methods().length; | 374 | c = this.methods().length; |
369 | for (i=0; i<c; i++) { | 375 | for (i=0; i<c; i++) { |
370 | var deferredResult; | 376 | var deferredResult; |
371 | varmethodCalls; | 377 | varmethodCalls; |
372 | var ii, cc; | 378 | var ii, cc; |
373 | 379 | ||
374 | //console.log("TYPEOF", typeof(this.methods()[i])); | 380 | //console.log("TYPEOF", typeof(this.methods()[i])); |
375 | if (typeof(this.methods()[i]) == 'function') { | 381 | if (typeof(this.methods()[i]) == 'function') { |
376 | methodCalls = [ this.methods()[i] ]; | 382 | methodCalls = [ this.methods()[i] ]; |
377 | } else { | 383 | } else { |
378 | methodCalls = this.methods()[i]; | 384 | methodCalls = this.methods()[i]; |
379 | } | 385 | } |
380 | 386 | ||
381 | cc = methodCalls.length; | 387 | cc = methodCalls.length; |
382 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.DeferredSynchronizer.run => " + this.name() + "[" + i + "]", args); | 388 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.DeferredSynchronizer.run => " + this.name() + "[" + i + "]", args); |
383 | for (ii=0; ii<cc; ii++) { | 389 | for (ii=0; ii<cc; ii++) { |
384 | deferredResult.addCallback(methodCalls[ii]); | 390 | deferredResult.addCallback(methodCalls[ii]); |
385 | } | 391 | } |
386 | deferredResult.addBoth(MochiKit.Base.method(this, 'handleMethodCallDone', i)); | 392 | deferredResult.addBoth(MochiKit.Base.method(this, 'handleMethodCallDone', i)); |
387 | 393 | ||
388 | deferredResults.push(deferredResult); | 394 | deferredResults.push(deferredResult); |
389 | } | 395 | } |
390 | 396 | ||
391 | for (i=0; i<c; i++) { | 397 | for (i=0; i<c; i++) { |
392 | deferredResults[i].callback(aValue); | 398 | deferredResults[i].callback(aValue); |
393 | } | 399 | } |
394 | 400 | ||
395 | return this.result(); | 401 | return this.result(); |
396 | }, | 402 | }, |
397 | 403 | ||
398 | //----------------------------------------------------------------------------- | 404 | //----------------------------------------------------------------------------- |
399 | 405 | ||
400 | 'handleMethodCallDone': function(anIndexValue, aResult) { | 406 | 'handleMethodCallDone': function(anIndexValue, aResult) { |
401 | this.incrementNumberOfMethodsDone(); | 407 | this.incrementNumberOfMethodsDone(); |
402 | this.methodResults()[anIndexValue] = aResult; | 408 | this.methodResults()[anIndexValue] = aResult; |
403 | 409 | ||
404 | if (this.numberOfMethodsDone() < this.methods().length) { | 410 | if (this.numberOfMethodsDone() < this.methods().length) { |
405 | //nothing to do here other than possibly log something | 411 | //nothing to do here other than possibly log something |
406 | } else if (this.numberOfMethodsDone() == this.methods().length) { | 412 | } else if (this.numberOfMethodsDone() == this.methods().length) { |
407 | this.result().callback(); | 413 | this.result().callback(); |
408 | } else if (this.numberOfMethodsDone() > this.methods().length) { | 414 | } else if (this.numberOfMethodsDone() > this.methods().length) { |
415 | alert("Clipperz.Async.Deferred.handleMethodCallDone -> WTF!"); | ||
409 | //WTF!!! :( | 416 | //WTF!!! :( |
410 | } | 417 | } |
411 | 418 | ||
412 | }, | 419 | }, |
413 | 420 | ||
414 | //----------------------------------------------------------------------------- | 421 | //----------------------------------------------------------------------------- |
415 | 422 | ||
416 | __syntaxFix__: "syntax fix" | 423 | __syntaxFix__: "syntax fix" |
417 | }); | 424 | }); |
418 | 425 | ||
419 | //############################################################################# | 426 | //############################################################################# |
420 | 427 | ||
421 | MochiKit.Base.update(Clipperz.Async, { | 428 | MochiKit.Base.update(Clipperz.Async, { |
422 | 429 | ||
423 | 'callbacks': function (aName, someFunctions, someArguments, aCallbackValue) { | 430 | 'callbacks': function (aName, someFunctions, someArguments, aCallbackValue) { |
424 | var deferredResult; | 431 | var deferredResult; |
425 | var i, c; | 432 | var i, c; |
426 | 433 | ||
427 | deferredResult = new Clipperz.Async.Deferred(aName, someArguments); | 434 | deferredResult = new Clipperz.Async.Deferred(aName, someArguments); |
428 | c = someFunctions.length; | 435 | c = someFunctions.length; |
429 | for (i=0; i<c; i++) { | 436 | for (i=0; i<c; i++) { |
430 | deferredResult.addCallback(someFunctions[i]); | 437 | deferredResult.addCallback(someFunctions[i]); |
431 | } | 438 | } |
432 | deferredResult.callback(aCallbackValue); | 439 | deferredResult.callback(aCallbackValue); |
433 | 440 | ||
434 | return deferredResult; | 441 | return deferredResult; |
435 | }, | 442 | }, |
436 | 443 | ||
437 | //------------------------------------------------------------------------- | 444 | //------------------------------------------------------------------------- |
438 | 445 | ||
439 | 'forkAndJoin': function (aName, someMethods, args) { | 446 | 'forkAndJoin': function (aName, someMethods, args) { |
440 | return MochiKit.Base.partial(function (aName, someMethods, args, aValue) { | 447 | return MochiKit.Base.partial(function (aName, someMethods, args, aValue) { |
441 | var synchronizer; | 448 | var synchronizer; |
442 | varresult; | 449 | varresult; |
443 | 450 | ||
444 | args = args || {}; | 451 | args = args || {}; |
445 | synchronizer = new Clipperz.Async.DeferredSynchronizer(aName, someMethods); | 452 | synchronizer = new Clipperz.Async.DeferredSynchronizer(aName, someMethods); |
446 | result = synchronizer.run(args, aValue); | 453 | result = synchronizer.run(args, aValue); |
447 | 454 | ||
448 | return result; | 455 | return result; |
449 | }, aName, someMethods, args); | 456 | }, aName, someMethods, args); |
450 | }, | 457 | }, |
451 | 458 | ||
452 | //------------------------------------------------------------------------- | 459 | //------------------------------------------------------------------------- |
453 | 460 | ||
454 | 'collectResults': function(aName, someRequests, args) { | 461 | 'collectResults': function(aName, someRequests, args) { |
455 | return MochiKit.Base.partial(function(aName, someRequests, args, aValue) { | 462 | return MochiKit.Base.partial(function(aName, someRequests, args, aValue) { |
456 | var deferredResult; | 463 | var deferredResult; |
457 | var requestKeys; | 464 | var requestKeys; |
458 | var methods; | 465 | var methods; |
459 | 466 | ||
460 | requestKeys = MochiKit.Base.keys(someRequests); | 467 | requestKeys = MochiKit.Base.keys(someRequests); |
461 | methods = MochiKit.Base.values(someRequests); | 468 | methods = MochiKit.Base.values(someRequests); |
462 | 469 | ||
463 | deferredResult = new Clipperz.Async.Deferred(aName, args); | 470 | deferredResult = new Clipperz.Async.Deferred(aName, args); |
464 | deferredResult.addCallback(Clipperz.Async.forkAndJoin(aName + " [inner forkAndJoin]", methods, args)); | 471 | deferredResult.addCallback(Clipperz.Async.forkAndJoin(aName + " [inner forkAndJoin]", methods, args)); |
465 | deferredResult.addBoth(function(someResults) { | 472 | deferredResult.addBoth(function(someResults) { |
466 | var returnFunction; | 473 | var returnFunction; |
467 | var results; | 474 | var results; |
468 | var i,c; | 475 | var i,c; |
469 | var result; | 476 | var result; |
470 | 477 | ||
471 | if (someResults instanceof MochiKit.Async.CancelledError) { | 478 | if (someResults instanceof MochiKit.Async.CancelledError) { |
472 | returnFunction = MochiKit.Async.fail; | 479 | returnFunction = MochiKit.Async.fail; |
473 | result = someResults; | 480 | result = someResults; |
474 | } else { | 481 | } else { |
475 | if (someResults instanceof Error) { | 482 | if (someResults instanceof Error) { |
476 | returnFunction = MochiKit.Async.fail; | 483 | returnFunction = MochiKit.Async.fail; |
477 | results = someResults['message']; | 484 | results = someResults['message']; |
478 | } else { | 485 | } else { |
479 | returnFunction = MochiKit.Async.succeed; | 486 | returnFunction = MochiKit.Async.succeed; |
480 | results = someResults; | 487 | results = someResults; |
481 | } | 488 | } |
482 | 489 | ||
483 | result = {}; | 490 | result = {}; |
484 | 491 | ||
485 | c = requestKeys.length; | 492 | c = requestKeys.length; |
486 | for (i=0; i<c; i++) { | 493 | for (i=0; i<c; i++) { |
487 | result[requestKeys[i]] = results[i]; | 494 | result[requestKeys[i]] = results[i]; |
488 | } | 495 | } |
489 | } | 496 | } |
490 | 497 | ||
491 | return returnFunction.call(null, result); | 498 | return returnFunction.call(null, result); |
492 | }); | 499 | }); |
493 | deferredResult.callback(aValue); | 500 | deferredResult.callback(aValue); |
494 | 501 | ||
495 | return deferredResult; | 502 | return deferredResult; |
496 | }, aName, someRequests, args); | 503 | }, aName, someRequests, args); |
497 | }, | 504 | }, |
498 | 505 | ||
499 | //------------------------------------------------------------------------- | 506 | //------------------------------------------------------------------------- |
500 | 507 | ||
501 | 'collectAll': function (someDeferredObjects) { | 508 | 'collectAll': function (someDeferredObjects) { |
502 | var deferredResult; | 509 | var deferredResult; |
503 | 510 | ||
504 | deferredResult = new MochiKit.Async.DeferredList(someDeferredObjects, false, false, false); | 511 | deferredResult = new MochiKit.Async.DeferredList(someDeferredObjects, false, false, false); |
505 | deferredResult.addCallback(function (aResultList) { | 512 | deferredResult.addCallback(function (aResultList) { |
506 | return MochiKit.Base.map(function (aResult) { | 513 | return MochiKit.Base.map(function (aResult) { |
507 | if (aResult[0]) { | 514 | if (aResult[0]) { |
508 | return aResult[1]; | 515 | return aResult[1]; |
509 | } else { | 516 | } else { |
510 | throw aResult[1]; | 517 | throw aResult[1]; |
511 | } | 518 | } |
512 | }, aResultList); | 519 | }, aResultList); |
513 | }); | 520 | }); |
514 | 521 | ||
515 | return deferredResult; | 522 | return deferredResult; |
516 | }, | 523 | }, |
517 | 524 | ||
518 | //------------------------------------------------------------------------- | 525 | //------------------------------------------------------------------------- |
519 | 526 | ||
520 | 'setItem': function (anObject, aKey, aValue) { | 527 | 'setItem': function (anObject, aKey, aValue) { |
521 | anObject[aKey] = aValue; | 528 | anObject[aKey] = aValue; |
522 | 529 | ||
523 | return anObject; | 530 | return anObject; |
524 | }, | 531 | }, |
525 | 532 | ||
526 | 'setItemOnObject': function (aKey, aValue, anObject) { | 533 | 'setItemOnObject': function (aKey, aValue, anObject) { |
527 | anObject[aKey] = aValue; | 534 | anObject[aKey] = aValue; |
528 | 535 | ||
529 | return anObject; | 536 | return anObject; |
530 | }, | 537 | }, |
531 | 538 | ||
532 | 'setDeferredItemOnObject': function (aKey, aDeferredFunction, anObject) { | 539 | 'setDeferredItemOnObject': function (aKey, aDeferredFunction, anObject) { |
533 | return Clipperz.Async.callbacks("Clipperz.Async.setDeferredItemOnObject", [ | 540 | return Clipperz.Async.callbacks("Clipperz.Async.setDeferredItemOnObject", [ |
534 | aDeferredFunction, | 541 | aDeferredFunction, |
535 | MochiKit.Base.partial(Clipperz.Async.setItem, anObject, aKey) | 542 | MochiKit.Base.partial(Clipperz.Async.setItem, anObject, aKey) |
536 | ], {trace:false}, anObject); | 543 | ], {trace:false}, anObject); |
537 | }, | 544 | }, |
538 | 545 | ||
539 | //------------------------------------------------------------------------- | 546 | //------------------------------------------------------------------------- |
540 | 547 | ||
541 | 'deferredIf': function (aName, aThenBlock, anElseBlock) { | 548 | 'deferredIf': function (aName, aThenBlock, anElseBlock) { |
542 | return function (aValue) { | 549 | return function (aValue) { |
543 | var deferredResult; | 550 | var deferredResult; |
544 | 551 | ||
545 | if (!MochiKit.Base.isUndefinedOrNull(aValue) && aValue) { | 552 | if (!MochiKit.Base.isUndefinedOrNull(aValue) && aValue) { |
546 | deferredResult = Clipperz.Async.callbacks(aName + " <then>", aThenBlock, null, aValue); | 553 | deferredResult = Clipperz.Async.callbacks(aName + " <then>", aThenBlock, null, aValue); |
547 | } else { | 554 | } else { |
548 | deferredResult = Clipperz.Async.callbacks(aName + " <else>", anElseBlock, null, aValue); | 555 | deferredResult = Clipperz.Async.callbacks(aName + " <else>", anElseBlock, null, aValue); |
549 | } | 556 | } |
550 | 557 | ||
551 | return deferredResult; | 558 | return deferredResult; |
552 | } | 559 | } |
553 | }, | 560 | }, |
554 | 561 | ||
555 | //------------------------------------------------------------------------- | 562 | //------------------------------------------------------------------------- |
556 | 563 | ||
557 | 'log': function(aMessage, aResult) { | 564 | 'log': function(aMessage, aResult) { |
558 | if (CLIPPERZ_DEFERRED_LOGGING_ENABLED) { | 565 | if (CLIPPERZ_DEFERRED_LOGGING_ENABLED) { |
559 | Clipperz.log(aMessage + " ", aResult); | 566 | Clipperz.log(aMessage + " ", aResult); |
560 | } | 567 | } |
561 | 568 | ||
562 | return aResult; | 569 | return aResult; |
563 | }, | 570 | }, |
564 | 571 | ||
565 | //========================================================================= | 572 | //========================================================================= |
566 | 573 | ||
567 | 'deferredCompare': function (aComparator, aDeferred, bDeferred) { | 574 | 'deferredCompare': function (aComparator, aDeferred, bDeferred) { |
568 | var deferredResult; | 575 | var deferredResult; |
569 | 576 | ||
570 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredCompare", {trace:false}); | 577 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredCompare", {trace:false}); |
571 | deferredResult.addCallback(Clipperz.Async.collectAll, [aDeferred, bDeferred]); | 578 | deferredResult.addCallback(Clipperz.Async.collectAll, [aDeferred, bDeferred]); |
572 | deferredResult.addCallback(function (someResults) { | 579 | deferredResult.addCallback(function (someResults) { |
573 | var result; | 580 | var result; |
574 | 581 | ||
575 | if (aComparator(someResults[0], someResults[1]) > 0) { | 582 | if (aComparator(someResults[0], someResults[1]) > 0) { |
576 | result = MochiKit.Async.succeed(); | 583 | result = MochiKit.Async.succeed(); |
577 | } else { | 584 | } else { |
578 | result = MochiKit.Async.fail(); | 585 | result = MochiKit.Async.fail(); |
579 | }; | 586 | }; |
580 | 587 | ||
581 | return result; | 588 | return result; |
582 | }); | 589 | }); |
583 | deferredResult.callback(); | 590 | deferredResult.callback(); |
584 | 591 | ||
585 | return deferredResult; | 592 | return deferredResult; |
586 | }, | 593 | }, |
587 | 594 | ||
588 | //------------------------------------------------------------------------- | 595 | //------------------------------------------------------------------------- |
589 | 596 | ||
590 | 'insertIntoSortedArray': function (anObject, aDeferredComparator, aSortedResult) { | 597 | 'insertIntoSortedArray': function (anObject, aDeferredComparator, aSortedResult) { |
591 | var deferredResult; | 598 | var deferredResult; |
592 | var i, c; | 599 | var i, c; |
593 | 600 | ||
594 | if (aSortedResult.length == 0) { | 601 | if (aSortedResult.length == 0) { |
595 | deferredResult = MochiKit.Async.succeed([anObject]); | 602 | deferredResult = MochiKit.Async.succeed([anObject]); |
596 | } else { | 603 | } else { |
597 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.insertIntoSortedArray", {trace:false}); | 604 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.insertIntoSortedArray", {trace:false}); |
598 | c = aSortedResult.length + 1; | 605 | c = aSortedResult.length + 1; |
599 | for (i=0; i<c; i++) { | 606 | for (i=0; i<c; i++) { |
600 | deferredResult.addCallback(function (aDeferredComparator, aObject, bObject, aContext) { | 607 | deferredResult.addCallback(function (aDeferredComparator, aObject, bObject, aContext) { |
601 | var innerDeferredResult; | 608 | var innerDeferredResult; |
602 | 609 | ||
603 | innerDeferredResult = new Clipperz.Async.Deferred("Clipperz.Async.insertIntoSortedArray <inner compare>", {trace:false}); | 610 | innerDeferredResult = new Clipperz.Async.Deferred("Clipperz.Async.insertIntoSortedArray <inner compare>", {trace:false}); |
604 | innerDeferredResult.addCallback(aDeferredComparator, aObject, bObject); | 611 | innerDeferredResult.addCallback(aDeferredComparator, aObject, bObject); |
605 | innerDeferredResult.addErrback(MochiKit.Async.fail, aContext); | 612 | innerDeferredResult.addErrback(MochiKit.Async.fail, aContext); |
606 | innerDeferredResult.callback(); | 613 | innerDeferredResult.callback(); |
607 | 614 | ||
608 | return innerDeferredResult; | 615 | return innerDeferredResult; |
609 | }, aDeferredComparator, anObject, aSortedResult[i], i); | 616 | }, aDeferredComparator, anObject, aSortedResult[i], i); |
610 | } | 617 | } |
611 | deferredResult.addMethod(aSortedResult, 'push', anObject); | 618 | deferredResult.addMethod(aSortedResult, 'push', anObject); |
612 | deferredResult.addErrback(function (anError) { | 619 | deferredResult.addErrback(function (anError) { |
613 | aSortedResult.splice(anError.message, 0, anObject); | 620 | aSortedResult.splice(anError.message, 0, anObject); |
614 | }) | 621 | }) |
615 | deferredResult.addBoth(MochiKit.Async.succeed, aSortedResult); | 622 | deferredResult.addBoth(MochiKit.Async.succeed, aSortedResult); |
616 | deferredResult.callback(); | 623 | deferredResult.callback(); |
617 | } | 624 | } |
618 | 625 | ||
619 | return deferredResult; | 626 | return deferredResult; |
620 | }, | 627 | }, |
621 | 628 | ||
622 | //------------------------------------------------------------------------- | 629 | //------------------------------------------------------------------------- |
623 | 630 | ||
624 | 'deferredSort': function (aDeferredComparator, someObjects) { | 631 | 'deferredSort': function (aDeferredComparator, someObjects) { |
625 | var deferredResult; | 632 | var deferredResult; |
626 | var i, c; | 633 | var i, c; |
627 | 634 | ||
628 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredSort", {trace:false}); | 635 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredSort", {trace:false}); |
629 | c = someObjects.length; | 636 | c = someObjects.length; |
630 | for (i=0; i<c; i++) { | 637 | for (i=0; i<c; i++) { |
631 | deferredResult.addCallback(Clipperz.Async.insertIntoSortedArray, someObjects[i], aDeferredComparator); | 638 | deferredResult.addCallback(Clipperz.Async.insertIntoSortedArray, someObjects[i], aDeferredComparator); |
632 | if ((i % 50) == 0) { | 639 | if ((i % 50) == 0) { |
633 | //console.log("######### sort wait ##########"); | 640 | //console.log("######### sort wait ##########"); |
634 | deferredResult.addCallback(MochiKit.Async.wait, 0.5); | 641 | deferredResult.addCallback(MochiKit.Async.wait, 0.5); |
635 | } | 642 | } |
636 | } | 643 | } |
637 | deferredResult.callback([]); | 644 | deferredResult.callback([]); |
638 | 645 | ||
639 | return deferredResult; | 646 | return deferredResult; |
640 | }, | 647 | }, |
641 | 648 | ||
642 | //========================================================================= | 649 | //========================================================================= |
643 | 650 | ||
644 | 'deferredFilter': function (aFunction, someObjects) { | 651 | 'deferredFilter': function (aFunction, someObjects) { |
645 | vardeferredResult; | 652 | vardeferredResult; |
646 | vari, c; | 653 | vari, c; |
647 | 654 | ||
648 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredFilter", {trace:false}); | 655 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredFilter", {trace:false}); |
649 | c = someObjects.length; | 656 | c = someObjects.length; |
650 | for (i=0; i<c; i++) { | 657 | for (i=0; i<c; i++) { |
651 | deferredResult.addCallback(function (aFunction, anObject, anIndex, aResult) { | 658 | deferredResult.addCallback(function (aFunction, anObject, anIndex, aResult) { |
652 | var innerDeferredResult; | 659 | var innerDeferredResult; |
653 | 660 | ||
654 | innerDeferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredFilter <inner - " + anIndex + ">", {trace:false}); | 661 | innerDeferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredFilter <inner - " + anIndex + ">", {trace:false}); |
655 | innerDeferredResult.addCallback(aFunction, anObject); | 662 | innerDeferredResult.addCallback(aFunction, anObject); |
656 | innerDeferredResult.addCallback(function (aFilterResult) { | 663 | innerDeferredResult.addCallback(function (aFilterResult) { |
657 | if (aFilterResult) { | 664 | if (aFilterResult) { |
658 | aResult.push(anObject); | 665 | aResult.push(anObject); |
659 | }; | 666 | }; |
660 | }); | 667 | }); |
661 | innerDeferredResult.addBoth(MochiKit.Async.succeed, aResult); | 668 | innerDeferredResult.addBoth(MochiKit.Async.succeed, aResult); |
662 | innerDeferredResult.callback(); | 669 | innerDeferredResult.callback(); |
663 | 670 | ||
664 | return innerDeferredResult; | 671 | return innerDeferredResult; |
665 | }, aFunction, someObjects[i], i); | 672 | }, aFunction, someObjects[i], i); |
666 | } | 673 | } |
667 | deferredResult.callback([]); | 674 | deferredResult.callback([]); |
668 | 675 | ||
669 | return deferredResult; | 676 | return deferredResult; |
670 | }, | 677 | }, |
671 | 678 | ||
672 | 'forEach': function (aFunction) { | 679 | 'forEach': function (aFunction) { |
673 | return MochiKit.Base.partial(function (aFunction, anIterable) { | 680 | return MochiKit.Base.partial(function (aFunction, anIterable) { |
674 | MochiKit.Iter.forEach(anIterable, aFunction); | 681 | MochiKit.Iter.forEach(anIterable, aFunction); |
675 | }, aFunction); | 682 | }, aFunction); |
676 | }, | 683 | }, |
677 | 684 | ||
678 | //========================================================================= | 685 | //========================================================================= |
679 | 686 | ||
680 | 'or': function (someValues) { | 687 | 'or': function (someValues) { |
681 | return Clipperz.Async.callbacks("Clipperz.Async.or", [ | 688 | return Clipperz.Async.callbacks("Clipperz.Async.or", [ |
682 | MochiKit.Base.values, | 689 | MochiKit.Base.values, |
683 | MochiKit.Base.flattenArguments, | 690 | MochiKit.Base.flattenArguments, |
684 | //function (aValue) { console.log("Record.hasAnyCleanTextData - flatten", aValue); return aValue; }, | 691 | //function (aValue) { console.log("Record.hasAnyCleanTextData - flatten", aValue); return aValue; }, |
685 | function(someInnerValues) { | 692 | function(someInnerValues) { |
686 | return MochiKit.Iter.some(someInnerValues, MochiKit.Base.operator.identity); | 693 | return MochiKit.Iter.some(someInnerValues, MochiKit.Base.operator.identity); |
687 | } | 694 | } |
688 | ], {trace:false}, someValues); | 695 | ], {trace:false}, someValues); |
689 | }, | 696 | }, |
690 | 697 | ||
691 | //========================================================================= | 698 | //========================================================================= |
692 | 699 | ||
693 | 'clearResult': function () {}, | 700 | 'clearResult': function () {}, |
694 | 701 | ||
695 | //========================================================================= | 702 | //========================================================================= |
696 | __syntaxFix__: "syntax fix" | 703 | __syntaxFix__: "syntax fix" |
697 | }); | 704 | }); |
698 | 705 | ||
699 | 706 | ||
700 | //############################################################################# | 707 | //############################################################################# |
701 | 708 | ||
702 | CLIPPERZ_DEFERRED_LOGGING_ENABLED = true; | 709 | CLIPPERZ_DEFERRED_LOGGING_ENABLED = true; |
703 | CLIPPERZ_DEFERRED_TRACING_ENABLED = false; | 710 | CLIPPERZ_DEFERRED_TRACING_ENABLED = false; |
704 | CLIPPERZ_DEFERRED_CALL_LOGGING_ENABLED = false; | 711 | CLIPPERZ_DEFERRED_CALL_LOGGING_ENABLED = false; |
diff --git a/frontend/gamma/js/Clipperz/PM/Proxy.js b/frontend/gamma/js/Clipperz/PM/Proxy.js index 190bffd..9817eac 100644 --- a/frontend/gamma/js/Clipperz/PM/Proxy.js +++ b/frontend/gamma/js/Clipperz/PM/Proxy.js | |||
@@ -1,169 +1,169 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | 26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } |
27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } | 27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } |
28 | 28 | ||
29 | //============================================================================= | 29 | //============================================================================= |
30 | 30 | ||
31 | Clipperz.PM.Proxy = function(args) { | 31 | Clipperz.PM.Proxy = function(args) { |
32 | args = args || {}; | 32 | args = args || {}; |
33 | 33 | ||
34 | this._shouldPayTolls = args.shouldPayTolls || false; | 34 | this._shouldPayTolls = args.shouldPayTolls || false; |
35 | 35 | ||
36 | this._tolls = { | 36 | this._tolls = { |
37 | 'CONNECT':[], | 37 | 'CONNECT':[], |
38 | 'REGISTER':[], | 38 | 'REGISTER':[], |
39 | 'MESSAGE':[] | 39 | 'MESSAGE':[] |
40 | }; | 40 | }; |
41 | 41 | ||
42 | if (args.isDefault === true) { | 42 | if (args.isDefault === true) { |
43 | Clipperz.PM.Proxy.defaultProxy = this; | 43 | Clipperz.PM.Proxy.defaultProxy = this; |
44 | } | 44 | } |
45 | 45 | ||
46 | return this; | 46 | return this; |
47 | } | 47 | } |
48 | 48 | ||
49 | Clipperz.PM.Proxy.prototype = MochiKit.Base.update(null, { | 49 | Clipperz.PM.Proxy.prototype = MochiKit.Base.update(null, { |
50 | 50 | ||
51 | 'toString': function() { | 51 | 'toString': function() { |
52 | return "Clipperz.PM.Proxy"; | 52 | return "Clipperz.PM.Proxy"; |
53 | }, | 53 | }, |
54 | 54 | ||
55 | //========================================================================= | 55 | //========================================================================= |
56 | 56 | ||
57 | 'shouldPayTolls': function() { | 57 | 'shouldPayTolls': function() { |
58 | return this._shouldPayTolls; | 58 | return this._shouldPayTolls; |
59 | }, | 59 | }, |
60 | 60 | ||
61 | //------------------------------------------------------------------------- | 61 | //------------------------------------------------------------------------- |
62 | 62 | ||
63 | 'tolls': function() { | 63 | 'tolls': function() { |
64 | return this._tolls; | 64 | return this._tolls; |
65 | }, | 65 | }, |
66 | 66 | ||
67 | //------------------------------------------------------------------------- | 67 | //------------------------------------------------------------------------- |
68 | 68 | ||
69 | 'payToll': function(aRequestType, someParameters) { | 69 | 'payToll': function(aRequestType, someParameters) { |
70 | vardeferredResult; | 70 | vardeferredResult; |
71 | 71 | ||
72 | //console.log(">>> Proxy.payToll", aRequestType, someParameters); | 72 | //console.log(">>> Proxy.payToll", aRequestType, someParameters); |
73 | if (this.shouldPayTolls()) { | 73 | if (this.shouldPayTolls()) { |
74 | deferredResult = new Clipperz.Async.Deferred("Proxy.payToll", {trace:false}); | 74 | deferredResult = new Clipperz.Async.Deferred("Proxy.payToll", {trace:false}); |
75 | 75 | ||
76 | if (this.tolls()[aRequestType].length == 0) { | 76 | if (this.tolls()[aRequestType].length == 0) { |
77 | deferredResult.addMethod(this, 'sendMessage', 'knock', {requestType:aRequestType}); | 77 | deferredResult.addMethod(this, 'sendMessage', 'knock', {requestType:aRequestType}); |
78 | deferredResult.addMethod(this, 'setTollCallback'); | 78 | deferredResult.addMethod(this, 'setTollCallback'); |
79 | } | 79 | } |
80 | deferredResult.addMethod(this.tolls()[aRequestType], 'pop'); | 80 | deferredResult.addMethod(this.tolls()[aRequestType], 'pop'); |
81 | deferredResult.addCallback(MochiKit.Base.methodcaller('deferredPay')); | 81 | deferredResult.addCallback(MochiKit.Base.methodcaller('deferredPay')); |
82 | deferredResult.addCallback(function(aToll) { | 82 | deferredResult.addCallback(function(aToll) { |
83 | var result; | 83 | var result; |
84 | 84 | ||
85 | result = { | 85 | result = { |
86 | parameters: someParameters, | 86 | parameters: someParameters, |
87 | toll: aToll | 87 | toll: aToll |
88 | } | 88 | } |
89 | 89 | ||
90 | return result; | 90 | return result; |
91 | }); | 91 | }); |
92 | 92 | ||
93 | deferredResult.callback(); | 93 | deferredResult.callback(); |
94 | } else { | 94 | } else { |
95 | deferredResult = MochiKit.Async.succeed({parameters:someParameters}); | 95 | deferredResult = MochiKit.Async.succeed({parameters:someParameters}); |
96 | } | 96 | } |
97 | //console.log("<<< Proxy.payToll"); | 97 | //console.log("<<< Proxy.payToll"); |
98 | 98 | ||
99 | return deferredResult; | 99 | return deferredResult; |
100 | }, | 100 | }, |
101 | 101 | ||
102 | //------------------------------------------------------------------------- | 102 | //------------------------------------------------------------------------- |
103 | 103 | ||
104 | 'addToll': function(aToll) { | 104 | 'addToll': function(aToll) { |
105 | //console.log(">>> Proxy.addToll", aToll); | 105 | //console.log(">>> Proxy.addToll", aToll); |
106 | this.tolls()[aToll.requestType()].push(aToll); | 106 | this.tolls()[aToll.requestType()].push(aToll); |
107 | //console.log("<<< Proxy.addToll"); | 107 | //console.log("<<< Proxy.addToll"); |
108 | }, | 108 | }, |
109 | 109 | ||
110 | //========================================================================= | 110 | //========================================================================= |
111 | 111 | ||
112 | 'setTollCallback': function(someParameters) { | 112 | 'setTollCallback': function(someParameters) { |
113 | //console.log(">>> Proxy.setTollCallback", someParameters); | 113 | //console.log(">>> Proxy.setTollCallback", someParameters); |
114 | if (typeof(someParameters['toll']) != 'undefined') { | 114 | if (typeof(someParameters['toll']) != 'undefined') { |
115 | //console.log("added a new toll", someParameters['toll']); | 115 | //console.log("added a new toll", someParameters['toll']); |
116 | this.addToll(new Clipperz.PM.Toll(someParameters['toll'])); | 116 | this.addToll(new Clipperz.PM.Toll(someParameters['toll'])); |
117 | } | 117 | } |
118 | //console.log("<<< Proxy.setTallCallback", someParameters['result']); | 118 | //console.log("<<< Proxy.setTallCallback", someParameters['result']); |
119 | return someParameters['result']; | 119 | return someParameters['result']; |
120 | }, | 120 | }, |
121 | 121 | ||
122 | //========================================================================= | 122 | //========================================================================= |
123 | 123 | ||
124 | 'registration': function (someParameters) { | 124 | 'registration': function (someParameters) { |
125 | return this.processMessage('registration', someParameters, 'REGISTER'); | 125 | return this.processMessage('registration', someParameters, 'REGISTER'); |
126 | }, | 126 | }, |
127 | 127 | ||
128 | 'handshake': function (someParameters) { | 128 | 'handshake': function (someParameters) { |
129 | return this.processMessage('handshake', someParameters, 'CONNECT'); | 129 | return this.processMessage('handshake', someParameters, 'CONNECT'); |
130 | }, | 130 | }, |
131 | 131 | ||
132 | 'message': function (someParameters) { | 132 | 'message': function (someParameters) { |
133 | return this.processMessage('message', someParameters, 'MESSAGE'); | 133 | return this.processMessage('message', someParameters, 'MESSAGE'); |
134 | }, | 134 | }, |
135 | 135 | ||
136 | 'logout': function (someParameters) { | 136 | 'logout': function (someParameters) { |
137 | return this.processMessage('logout', someParameters, 'MESSAGE'); | 137 | return this.processMessage('logout', someParameters, 'MESSAGE'); |
138 | }, | 138 | }, |
139 | 139 | ||
140 | //========================================================================= | 140 | //========================================================================= |
141 | 141 | ||
142 | 'processMessage': function (aFunctionName, someParameters, aRequestType) { | 142 | 'processMessage': function (aFunctionName, someParameters, aRequestType) { |
143 | vardeferredResult; | 143 | vardeferredResult; |
144 | 144 | ||
145 | deferredResult = new Clipperz.Async.Deferred("Proxy.processMessage", {trace:false}); | 145 | deferredResult = new Clipperz.Async.Deferred("Proxy.processMessage", {trace:true}); |
146 | deferredResult.addMethod(this, 'payToll', aRequestType); | 146 | deferredResult.addMethod(this, 'payToll', aRequestType); |
147 | deferredResult.addMethod(this, 'sendMessage', aFunctionName); | 147 | deferredResult.addMethod(this, 'sendMessage', aFunctionName); |
148 | deferredResult.addMethod(this, 'setTollCallback'); | 148 | deferredResult.addMethod(this, 'setTollCallback'); |
149 | deferredResult.callback(someParameters); | 149 | deferredResult.callback(someParameters); |
150 | 150 | ||
151 | return deferredResult; | 151 | return deferredResult; |
152 | }, | 152 | }, |
153 | 153 | ||
154 | //========================================================================= | 154 | //========================================================================= |
155 | 155 | ||
156 | 'sendMessage': function () { | 156 | 'sendMessage': function () { |
157 | throw Clipperz.Base.exception.AbstractMethod; | 157 | throw Clipperz.Base.exception.AbstractMethod; |
158 | }, | 158 | }, |
159 | 159 | ||
160 | //========================================================================= | 160 | //========================================================================= |
161 | 161 | ||
162 | 'isReadOnly': function () { | 162 | 'isReadOnly': function () { |
163 | return false; | 163 | return false; |
164 | }, | 164 | }, |
165 | 165 | ||
166 | //========================================================================= | 166 | //========================================================================= |
167 | __syntaxFix__: "syntax fix" | 167 | __syntaxFix__: "syntax fix" |
168 | 168 | ||
169 | }); | 169 | }); |