summaryrefslogtreecommitdiff
authorGiulio Cesare Solaroli <giulio.cesare@clipperz.com>2013-04-26 09:18:23 (UTC)
committer Giulio Cesare Solaroli <giulio.cesare@clipperz.com>2013-04-26 09:18:23 (UTC)
commit108dd23db8fdc9512446be708d2694f3050b1d8f (patch) (unidiff)
treefeff31a273898aa20d13673947457a87024e457e
parent65f064cb6c99dde320d49e6c4157607c25e2d092 (diff)
downloadclipperz-108dd23db8fdc9512446be708d2694f3050b1d8f.zip
clipperz-108dd23db8fdc9512446be708d2694f3050b1d8f.tar.gz
clipperz-108dd23db8fdc9512446be708d2694f3050b1d8f.tar.bz2
Fixed a bug that would "corrupt" header data when upgrading the crypto version used to process an account data
The problem being that only part of the header section would be re-encrypted, thus ending up with different sections encrypted using different crypto function versions. And this would break when loading data back on next login.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/Header.js4
1 files changed, 3 insertions, 1 deletions
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/Header.js b/frontend/beta/js/Clipperz/PM/DataModel/Header.js
index 908d9f4..d577830 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/Header.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/Header.js
@@ -1,746 +1,748 @@
1/* 1/*
2 2
3Copyright 2008-2013 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz, the online password manager. 5This file is part of Clipperz, the online password manager.
6For further information about its features and functionalities please 6For further information about its features and functionalities please
7refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
8 8
9* Clipperz is free software: you can redistribute it and/or modify it 9* Clipperz is free software: you can redistribute it and/or modify it
10 under the terms of the GNU Affero General Public License as published 10 under the terms of the GNU Affero General Public License as published
11 by the Free Software Foundation, either version 3 of the License, or 11 by the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version. 12 (at your option) any later version.
13 13
14* Clipperz is distributed in the hope that it will be useful, but 14* Clipperz is distributed in the hope that it will be useful, but
15 WITHOUT ANY WARRANTY; without even the implied warranty of 15 WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
18 18
19* You should have received a copy of the GNU Affero General Public 19* You should have received a copy of the GNU Affero General Public
20 License along with Clipperz. If not, see http://www.gnu.org/licenses/. 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21 21
22*/ 22*/
23 23
24if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 24if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
25if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 25if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
26if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 26if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
27 27
28 28
29//############################################################################# 29//#############################################################################
30 30
31Clipperz.PM.DataModel.Header = function(args) { 31Clipperz.PM.DataModel.Header = function(args) {
32 args = args || {}; 32 args = args || {};
33 33
34 this._user = args.user; 34 this._user = args.user;
35 35
36 this._serverData = null; 36 this._serverData = null;
37 this._serverDataVersion = null; 37 this._serverDataVersion = null;
38 this._jsonEvaledServerData = null; 38 this._jsonEvaledServerData = null;
39 39
40 this._decryptedLegacyServerData = null; 40 this._decryptedLegacyServerData = null;
41 this._isDecryptingLegacyServerData = false; 41 this._isDecryptingLegacyServerData = false;
42 this._decryptingLegacyServerDataPendingQueue = []; 42 this._decryptingLegacyServerDataPendingQueue = [];
43 43
44 this.resetUpdatedSections(); 44 this.resetUpdatedSections();
45 45
46 this._shouldLoadSections = {}; 46 this._shouldLoadSections = {};
47 47
48 Clipperz.NotificationCenter.register(this.user(), 'updatedSection', this, 'updatedSectionHandler'); 48 Clipperz.NotificationCenter.register(this.user(), 'updatedSection', this, 'updatedSectionHandler');
49 49
50 return this; 50 return this;
51} 51}
52 52
53Clipperz.PM.DataModel.Header.prototype = MochiKit.Base.update(null, { 53Clipperz.PM.DataModel.Header.prototype = MochiKit.Base.update(null, {
54 54
55 //------------------------------------------------------------------------- 55 //-------------------------------------------------------------------------
56 56
57 'user': function() { 57 'user': function() {
58 return this._user; 58 return this._user;
59 }, 59 },
60 60
61 //------------------------------------------------------------------------- 61 //-------------------------------------------------------------------------
62 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
63 //------------------------------------------------------------------------- 63 //-------------------------------------------------------------------------
64 //------------------------------------------------------------------------- 64 //-------------------------------------------------------------------------
65 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
66 //------------------------------------------------------------------------- 66 //-------------------------------------------------------------------------
67 //------------------------------------------------------------------------- 67 //-------------------------------------------------------------------------
68 //------------------------------------------------------------------------- 68 //-------------------------------------------------------------------------
69 //------------------------------------------------------------------------- 69 //-------------------------------------------------------------------------
70 70
71 'updatedSections': function() { 71 'updatedSections': function() {
72 return this._updatedSections; 72 return this._updatedSections;
73 }, 73 },
74 74
75 'markSectionAsUpdated': function(aSectionName) { 75 'markSectionAsUpdated': function(aSectionName) {
76 this.updatedSections().push(aSectionName); 76 this.updatedSections().push(aSectionName);
77 }, 77 },
78 78
79 'resetUpdatedSections': function() { 79 'resetUpdatedSections': function() {
80 this._updatedSections = [] 80 this._updatedSections = []
81 }, 81 },
82 82
83 'hasSectionBeenUpdated': function(aSectionName) { 83 'hasSectionBeenUpdated': function(aSectionName) {
84 return (this.updatedSections().join().indexOf(aSectionName) != -1); 84 return(this.updatedSections().join().indexOf(aSectionName) != -1)
85 ||(this.serverDataVersion() != Clipperz.PM.Crypto.encryptingFunctions.currentVersion);
85 }, 86 },
86 87
87 'cachedServerDataSection': function(aSectionName) { 88 'cachedServerDataSection': function(aSectionName) {
88 return (this.hasSectionBeenUpdated(aSectionName)) ? {} : this.jsonEvaledServerData()[aSectionName]; 89 return (this.hasSectionBeenUpdated(aSectionName)) ? {} : this.jsonEvaledServerData()[aSectionName];
89 }, 90 },
90 91
91 'updateAllSections': function() { 92 'updateAllSections': function() {
92 this.resetUpdatedSections(); 93 this.resetUpdatedSections();
93 this.markSectionAsUpdated('records'); 94 this.markSectionAsUpdated('records');
94 this.markSectionAsUpdated('directLogins'); 95 this.markSectionAsUpdated('directLogins');
95 this.markSectionAsUpdated('preferences'); 96 this.markSectionAsUpdated('preferences');
96 this.markSectionAsUpdated('oneTimePasswords'); 97 this.markSectionAsUpdated('oneTimePasswords');
97 98
98 return MochiKit.Async.succeed(this); 99 return MochiKit.Async.succeed(this);
99 }, 100 },
100 101
101 'updatedSectionHandler': function(anEvent) { 102 'updatedSectionHandler': function(anEvent) {
102 this.markSectionAsUpdated(anEvent.parameters()); 103 this.markSectionAsUpdated(anEvent.parameters());
103 }, 104 },
104 105
105 //------------------------------------------------------------------------- 106 //-------------------------------------------------------------------------
106 107
107 'getObjectKeyIndex': function(anObject) { 108 'getObjectKeyIndex': function(anObject) {
108 var result; 109 var result;
109 varitemReference; 110 varitemReference;
110 var index; 111 var index;
111 112
112 result = {}; 113 result = {};
113 index = 0; 114 index = 0;
114 115
115 for (itemReference in anObject) { 116 for (itemReference in anObject) {
116 result[itemReference] = index.toString(); 117 result[itemReference] = index.toString();
117 index ++; 118 index ++;
118 } 119 }
119 120
120 return result; 121 return result;
121 }, 122 },
122 123
123 //------------------------------------------------------------------------- 124 //-------------------------------------------------------------------------
124 125
125 'serializedDataWithRecordAndDirectLoginIndexes': function(aRecordIndexes, aDirectLoginIndexs) { 126 'serializedDataWithRecordAndDirectLoginIndexes': function(aRecordIndexes, aDirectLoginIndexs) {
126 var result; 127 var result;
127 var records; 128 var records;
128 var recordReference; 129 var recordReference;
129 130
130//MochiKit.Logging.logDebug(">>> Header.serializedData"); 131//MochiKit.Logging.logDebug(">>> Header.serializedData");
131 result = { 132 result = {
132 'records': {}, 133 'records': {},
133 'directLogins': {} 134 'directLogins': {}
134 }; 135 };
135 136
136 records = this.user().records(); 137 records = this.user().records();
137 for (recordReference in records) { 138 for (recordReference in records) {
138 result['records'][aRecordIndexes[recordReference]] = this.user().records()[recordReference].headerData(); 139 result['records'][aRecordIndexes[recordReference]] = this.user().records()[recordReference].headerData();
139 } 140 }
140 141
141 for (directLoginReference in this.user().directLoginReferences()) { 142 for (directLoginReference in this.user().directLoginReferences()) {
142 var currentDirectLogin; 143 var currentDirectLogin;
143 vardirectLoginData; 144 vardirectLoginData;
144 145
145 currentDirectLogin = this.user().directLoginReferences()[directLoginReference]; 146 currentDirectLogin = this.user().directLoginReferences()[directLoginReference];
146 if (aRecordIndexes[currentDirectLogin.recordReference()] != null) { 147 if (aRecordIndexes[currentDirectLogin.recordReference()] != null) {
147 directLoginData = { 148 directLoginData = {
148 // reference: currentDirectLogin.reference(), 149 // reference: currentDirectLogin.reference(),
149 record: aRecordIndexes[currentDirectLogin.recordReference()].toString(), 150 record: aRecordIndexes[currentDirectLogin.recordReference()].toString(),
150 label: currentDirectLogin.label(), 151 label: currentDirectLogin.label(),
151 favicon:currentDirectLogin.favicon() || "" 152 favicon:currentDirectLogin.favicon() || ""
152 } 153 }
153 154
154 result['directLogins'][aDirectLoginIndexs[directLoginReference]] = directLoginData; 155 result['directLogins'][aDirectLoginIndexs[directLoginReference]] = directLoginData;
155 } 156 }
156 157
157 } 158 }
158//MochiKit.Logging.logDebug("<<< Header.serializedData - result: " + Clipperz.Base.serializeJSON(result)); 159//MochiKit.Logging.logDebug("<<< Header.serializedData - result: " + Clipperz.Base.serializeJSON(result));
159//MochiKit.Logging.logDebug("<<< Header.serializedData"); 160//MochiKit.Logging.logDebug("<<< Header.serializedData");
160 161
161 return result; 162 return result;
162 }, 163 },
163 164
164 //------------------------------------------------------------------------- 165 //-------------------------------------------------------------------------
165 166
166 'encryptedData': function() { 167 'encryptedData': function() {
167 var deferredResult; 168 var deferredResult;
168 var recordIndex; 169 var recordIndex;
169 var directLoginIndex; 170 var directLoginIndex;
170 varserializedData; 171 varserializedData;
171 var result; 172 var result;
172 173
173//MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Header.encryptedData"); 174//MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Header.encryptedData");
174//MochiKit.Logging.logDebug("### Header.encryptedData - " + Clipperz.Base.serializeJSON(this.updatedSections())); 175//MochiKit.Logging.logDebug("### Header.encryptedData - " + Clipperz.Base.serializeJSON(this.updatedSections()));
175 result = { 176 result = {
176 'records': this.cachedServerDataSection('records'), 177 'records': this.cachedServerDataSection('records'),
177 'directLogins': this.cachedServerDataSection('directLogins'), 178 'directLogins': this.cachedServerDataSection('directLogins'),
178 'preferences': this.cachedServerDataSection('preferences'), 179 'preferences': this.cachedServerDataSection('preferences'),
179 'oneTimePasswords': this.cachedServerDataSection('oneTimePasswords'), 180 'oneTimePasswords': this.cachedServerDataSection('oneTimePasswords'),
180 'version': '0.1' 181 'version': '0.1'
181 }; 182 };
182 183
183 if (this.hasSectionBeenUpdated('records')) { 184 if (this.hasSectionBeenUpdated('records')) {
184 recordIndex = this.getObjectKeyIndex(this.user().records()); 185 recordIndex = this.getObjectKeyIndex(this.user().records());
185 result['records']['index'] = recordIndex; 186 result['records']['index'] = recordIndex;
186 } else { 187 } else {
187 recordIndex = result['records']['index']; 188 recordIndex = result['records']['index'];
188 } 189 }
189 190
190 if (this.hasSectionBeenUpdated('directLogins')) { 191 if (this.hasSectionBeenUpdated('directLogins')) {
191 directLoginIndex = this.getObjectKeyIndex(this.user().directLoginReferences()); 192 directLoginIndex = this.getObjectKeyIndex(this.user().directLoginReferences());
192 result['directLogins']['index'] = directLoginIndex; 193 result['directLogins']['index'] = directLoginIndex;
193 } else { 194 } else {
194 directLoginIndex = result['directLogins']['index']; 195 directLoginIndex = result['directLogins']['index'];
195 } 196 }
196 197
197 if (this.hasSectionBeenUpdated('records') || this.hasSectionBeenUpdated('directLogins')) { 198 if (this.hasSectionBeenUpdated('records') || this.hasSectionBeenUpdated('directLogins')) {
198 serializedData = this.serializedDataWithRecordAndDirectLoginIndexes(recordIndex, directLoginIndex); 199 serializedData = this.serializedDataWithRecordAndDirectLoginIndexes(recordIndex, directLoginIndex);
199 } 200 }
200 201
201 deferredResult = new MochiKit.Async.Deferred(); 202 deferredResult = new MochiKit.Async.Deferred();
202 203
203//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1: " + res); return res;}); 204//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1: " + res); return res;});
204 if (this.hasSectionBeenUpdated('records')) { 205 if (this.hasSectionBeenUpdated('records')) {
205//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1.1: " + res); return res;}); 206//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1.1: " + res); return res;});
206 deferredResult.addCallback(function(anHeader, aResult, aSerializedData, aValue) { 207 deferredResult.addCallback(function(anHeader, aResult, aSerializedData, aValue) {
207 return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), aSerializedData['records']); 208 return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), aSerializedData['records']);
208 }, this, result, serializedData); 209 }, this, result, serializedData);
209//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1.2: " + res); return res;}); 210//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1.2: " + res); return res;});
210 deferredResult.addCallback(function(anHeader, aResult, aValue) { 211 deferredResult.addCallback(function(anHeader, aResult, aValue) {
211 aResult['records']['data'] = aValue; 212 aResult['records']['data'] = aValue;
212 }, this, result); 213 }, this, result);
213//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1.3: " + res); return res;}); 214//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 1.3: " + res); return res;});
214 } 215 }
215 216
216//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2: " + res); return res;}); 217//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2: " + res); return res;});
217 if (this.hasSectionBeenUpdated('directLogins')) { 218 if (this.hasSectionBeenUpdated('directLogins')) {
218//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2.1: " + res); return res;}); 219//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2.1: " + res); return res;});
219 deferredResult.addCallback(function(anHeader, aResult, aSerializedData, aValue) { 220 deferredResult.addCallback(function(anHeader, aResult, aSerializedData, aValue) {
220 return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), aSerializedData['directLogins']); 221 return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), aSerializedData['directLogins']);
221 }, this, result, serializedData); 222 }, this, result, serializedData);
222//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2.2: " + res); return res;}); 223//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2.2: " + res); return res;});
223 deferredResult.addCallback(function(anHeader, aResult, aValue) { 224 deferredResult.addCallback(function(anHeader, aResult, aValue) {
224 aResult['directLogins']['data'] = aValue; 225 aResult['directLogins']['data'] = aValue;
225 }, this, result); 226 }, this, result);
226//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2.3: " + res); return res;}); 227//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 2.3: " + res); return res;});
227 } 228 }
228 229
229//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3: " + res); return res;}); 230//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3: " + res); return res;});
230 if (this.hasSectionBeenUpdated('preferences')) { 231 if (this.hasSectionBeenUpdated('preferences')) {
231//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3.1: " + res); return res;}); 232//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3.1: " + res); return res;});
232 deferredResult.addCallback(function(anHeader, aResult, aValue) { 233 deferredResult.addCallback(function(anHeader, aResult, aValue) {
233 return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), anHeader.user().preferences().serializedData()); 234 return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), anHeader.user().preferences().serializedData());
234 }, this, result); 235 }, this, result);
235//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3.2: " + res); return res;}); 236//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3.2: " + res); return res;});
236 deferredResult.addCallback(function(anHeader, aResult, aValue) { 237 deferredResult.addCallback(function(anHeader, aResult, aValue) {
237 aResult['preferences']['data'] = aValue; 238 aResult['preferences']['data'] = aValue;
238 }, this, result); 239 }, this, result);
239//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3.3: " + res); return res;}); 240//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 3.3: " + res); return res;});
240 } 241 }
241 242
242//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4: " + res); return res;}); 243//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4: " + res); return res;});
243 if (this.hasSectionBeenUpdated('oneTimePasswords')) { 244 if (this.hasSectionBeenUpdated('oneTimePasswords')) {
244//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.1: " + res); return res;}); 245//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.1: " + res); return res;});
245 // deferredResult.addCallback(MochiKit.Base.method(this, 'loadOneTimePasswords')); 246 // deferredResult.addCallback(MochiKit.Base.method(this, 'loadOneTimePasswords'));
246//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.2: " + res); return res;}); 247//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.2: " + res); return res;});
247 deferredResult.addCallback(function(anHeader, aResult, aValue) { 248 deferredResult.addCallback(function(anHeader, aResult, aValue) {
248 return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), anHeader.user().oneTimePasswordManager().serializedData()); 249 return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(anHeader.user().passphrase(), anHeader.user().oneTimePasswordManager().serializedData());
249 }, this, result); 250 }, this, result);
250//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.3: " + res); return res;}); 251//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.3: " + res); return res;});
251 deferredResult.addCallback(function(anHeader, aResult, aValue) { 252 deferredResult.addCallback(function(anHeader, aResult, aValue) {
252 aResult['oneTimePasswords']['data'] = aValue; 253 aResult['oneTimePasswords']['data'] = aValue;
253 }, this, result); 254 }, this, result);
254//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.4: " + res); return res;}); 255//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 4.4: " + res); return res;});
255 } 256 }
256 257
257//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 5: " + res); return res;}); 258//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 5: " + res); return res;});
258 deferredResult.addCallback(function(anHeader, aResult, aValue) { 259 deferredResult.addCallback(function(anHeader, aResult, aValue) {
259 var serverData; 260 var serverData;
260 261
261 serverData = Clipperz.Base.serializeJSON(aResult); 262 serverData = Clipperz.Base.serializeJSON(aResult);
262 anHeader.setServerData(serverData); 263 anHeader.setServerData(serverData);
263 264
264 return serverData; 265 return serverData;
265 }, this, result); 266 }, this, result);
266//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 6: " + res); return res;}); 267//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.encryptedData - 6: " + res); return res;});
267 268
268 deferredResult.callback(); 269 deferredResult.callback();
269//MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Header.encryptedData"); 270//MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Header.encryptedData");
270 271
271 return deferredResult; 272 return deferredResult;
272 }, 273 },
273 274
274 //------------------------------------------------------------------------- 275 //-------------------------------------------------------------------------
275 276
276 'serverData': function() { 277 'serverData': function() {
277 return this._serverData; 278 return this._serverData;
278 }, 279 },
279 280
280 'setServerData': function(aValue) { 281 'setServerData': function(aValue) {
281//MochiKit.Logging.logDebug(">>> Header.setServerData"); 282//MochiKit.Logging.logDebug(">>> Header.setServerData");
282//MochiKit.Logging.logDebug("[start]============================================="); 283//MochiKit.Logging.logDebug("[start]=============================================");
283//MochiKit.Logging.logDebug("SERVER_DATA: " + aValue); 284//MochiKit.Logging.logDebug("SERVER_DATA: " + aValue);
284//MochiKit.Logging.logDebug("[end]==============================================="); 285//MochiKit.Logging.logDebug("[end]===============================================");
285 this._serverData = aValue; 286 this._serverData = aValue;
286//MochiKit.Logging.logDebug("--- Header.setServerData - 1"); 287//MochiKit.Logging.logDebug("--- Header.setServerData - 1");
287 this.resetUpdatedSections(); 288 this.resetUpdatedSections();
288//MochiKit.Logging.logDebug("--- Header.setServerData - 2"); 289//MochiKit.Logging.logDebug("--- Header.setServerData - 2");
289 this.resetJsonEvaledServerData(); 290 this.resetJsonEvaledServerData();
290//MochiKit.Logging.logDebug("<<< Header.setServerData"); 291//MochiKit.Logging.logDebug("<<< Header.setServerData");
291 }, 292 },
292 293
293 'jsonEvaledServerData': function() { 294 'jsonEvaledServerData': function() {
294 if (this._jsonEvaledServerData == null) { 295 if (this._jsonEvaledServerData == null) {
295 this._jsonEvaledServerData = Clipperz.Base.evalJSON(this.serverData()); 296 this._jsonEvaledServerData = Clipperz.Base.evalJSON(this.serverData());
296 } 297 }
297 298
298 return this._jsonEvaledServerData; 299 return this._jsonEvaledServerData;
299 }, 300 },
300 301
301 'resetJsonEvaledServerData': function() { 302 'resetJsonEvaledServerData': function() {
302 this._jsonEvaledServerData = null; 303 this._jsonEvaledServerData = null;
303 }, 304 },
304 305
305 //------------------------------------------------------------------------- 306 //-------------------------------------------------------------------------
306 307
307 'serverDataVersion': function() { 308 'serverDataVersion': function() {
308 return this._serverDataVersion; 309 return this._serverDataVersion;
309 }, 310 },
310 311
311 'setServerDataVersion': function(aValue) { 312 'setServerDataVersion': function(aValue) {
312 this._serverDataVersion = aValue; 313 this._serverDataVersion = aValue;
313 }, 314 },
314 315
315 //------------------------------------------------------------------------- 316 //-------------------------------------------------------------------------
316 317
317 'decryptedLegacyServerData': function() { 318 'decryptedLegacyServerData': function() {
318 var deferredResult; 319 var deferredResult;
319 320
320//MochiKit.Logging.logDebug(">>> Header.decryptedLegacyServerData"); 321//MochiKit.Logging.logDebug(">>> Header.decryptedLegacyServerData");
321 deferredResult = new MochiKit.Async.Deferred(); 322 deferredResult = new MochiKit.Async.Deferred();
322//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 1: "/* + res*/); return res;}); 323//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 1: "/* + res*/); return res;});
323//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 324//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
324 deferredResult.addCallback(MochiKit.Base.method(this, 'updateAllSections')); 325 deferredResult.addCallback(MochiKit.Base.method(this, 'updateAllSections'));
325//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 2: "/* + res*/); return res;}); 326//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 2: "/* + res*/); return res;});
326//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 327//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
327 if (this._decryptedLegacyServerData == null) { 328 if (this._decryptedLegacyServerData == null) {
328//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 3: "/* + res*/); return res;}); 329//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 3: "/* + res*/); return res;});
329//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 330//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
330 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'connection_decryptingUserData'); 331 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'connection_decryptingUserData');
331//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 4: "/* + res*/); return res;}); 332//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 4: "/* + res*/); return res;});
332//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 333//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
333 deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, this.user().passphrase(), this.serverData(), this.serverDataVersion()); 334 deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, this.user().passphrase(), this.serverData(), this.serverDataVersion());
334//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 5: "/* + res*/); return res;}); 335//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 5: "/* + res*/); return res;});
335//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 336//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
336 deferredResult.addCallback(function(anHeader, aValue) { 337 deferredResult.addCallback(function(anHeader, aValue) {
337 anHeader._decryptedLegacyServerData = aValue; 338 anHeader._decryptedLegacyServerData = aValue;
338 }, this); 339 }, this);
339//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 6: "/* + res*/); return res;}); 340//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 6: "/* + res*/); return res;});
340//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 341//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
341 }; 342 };
342//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 7: "/* + res*/); return res;}); 343//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 7: "/* + res*/); return res;});
343//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 344//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
344 345
345 deferredResult.addCallback(function(anHeader) { 346 deferredResult.addCallback(function(anHeader) {
346 return anHeader._decryptedLegacyServerData; 347 return anHeader._decryptedLegacyServerData;
347 }, this); 348 }, this);
348//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 8: "/* + res*/); return res;}); 349//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.decryptedLegacyServerData 8: "/* + res*/); return res;});
349//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 350//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
350 deferredResult.callback(); 351 deferredResult.callback();
351//MochiKit.Logging.logDebug("<<< Header.decryptedLegacyServerData"); 352//MochiKit.Logging.logDebug("<<< Header.decryptedLegacyServerData");
352 353
353 return deferredResult; 354 return deferredResult;
354 }, 355 },
355 356
356 //------------------------------------------------------------------------- 357 //-------------------------------------------------------------------------
357 358
358 'serverDataFormat': function() { 359 'serverDataFormat': function() {
359 var result; 360 var result;
360 361
361//MochiKit.Logging.logDebug(">>> Header.serverDataFormat"); 362//MochiKit.Logging.logDebug(">>> Header.serverDataFormat");
362 if (this.serverData().charAt(0) == '{') { 363 if (this.serverData().charAt(0) == '{') {
363 varserverData; 364 varserverData;
364 365
365 serverData = Clipperz.Base.evalJSON(this.serverData()); 366 serverData = Clipperz.Base.evalJSON(this.serverData());
366 result = serverData['version']; 367 result = serverData['version'];
367 } else { 368 } else {
368 result = 'LEGACY'; 369 result = 'LEGACY';
369 } 370 }
370//MochiKit.Logging.logDebug("<<< Header.serverDataFormat"); 371//MochiKit.Logging.logDebug("<<< Header.serverDataFormat");
371 372
372 return result; 373 return result;
373 }, 374 },
374 375
375 //------------------------------------------------------------------------- 376 //-------------------------------------------------------------------------
376 377
377 'extractHeaderDataFromUserDetails': function(someUserDetails) { 378 'extractHeaderDataFromUserDetails': function(someUserDetails) {
378 if (this.serverData() == null) { 379 if (this.serverData() == null) {
379 this.setServerData(someUserDetails['header']); 380 this.setServerData(someUserDetails['header']);
380 this.setServerDataVersion(someUserDetails['version']) 381 this.setServerDataVersion(someUserDetails['version'])
381 } 382 }
382 }, 383 },
383 384
384 //------------------------------------------------------------------------- 385 //-------------------------------------------------------------------------
385 386
386 'extractDataWithKey': function(aKey) { 387 'extractDataWithKey': function(aKey) {
387 var deferredResult; 388 var deferredResult;
388 389
389//MochiKit.Logging.logDebug(">>> Header.extractDataWithKey"); 390//MochiKit.Logging.logDebug(">>> Header.extractDataWithKey");
390 deferredResult = new MochiKit.Async.Deferred(); 391 deferredResult = new MochiKit.Async.Deferred();
391 392
392 switch (this.serverDataFormat()) { 393 switch (this.serverDataFormat()) {
393 case 'LEGACY': 394 case 'LEGACY':
394//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 1: "/* + res*/); return res;}); 395//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 1: "/* + res*/); return res;});
395//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 396//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
396 deferredResult.addCallback(MochiKit.Base.method(this, 'decryptedLegacyServerData')); 397 deferredResult.addCallback(MochiKit.Base.method(this, 'decryptedLegacyServerData'));
397//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 2: "/* + res*/); return res;}); 398//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 2: "/* + res*/); return res;});
398//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 399//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
399 deferredResult.addCallback(function(someDecryptedValues) { 400 deferredResult.addCallback(function(someDecryptedValues) {
400 return someDecryptedValues[aKey] || {}; 401 return someDecryptedValues[aKey] || {};
401 }) 402 })
402//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 3: "/* + res*/); return res;}); 403//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 3: "/* + res*/); return res;});
403//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 404//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
404 break; 405 break;
405 case '0.1': 406 case '0.1':
406 var data; 407 var data;
407 408
408 //# data = Clipperz.Base.evalJSON(this.serverData()); 409 //# data = Clipperz.Base.evalJSON(this.serverData());
409 data = this.jsonEvaledServerData(); 410 data = this.jsonEvaledServerData();
410 if (typeof(data[aKey]) != 'undefined') { 411 if (typeof(data[aKey]) != 'undefined') {
411//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 4: "/* + res*/); return res;}); 412//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 4: "/* + res*/); return res;});
412//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 413//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
413 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'connection_decryptingUserData'); 414 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'connection_decryptingUserData');
414//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 5: "/* + res*/); return res;}); 415//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 5: "/* + res*/); return res;});
416//deferredResult.addBoth(function(res) {console.log("aKey: " + aKey); return res;});
415//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 417//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
416 deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, this.user().passphrase(), data[aKey]['data'], this.serverDataVersion()); 418 deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, this.user().passphrase(), data[aKey]['data'], this.serverDataVersion());
417//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 6: "/* + res*/); return res;}); 419//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 6: "/* + res*/); return res;});
418//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 420//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
419 deferredResult.addCallback(function(/*anHeader,*/ aKey, aData, aRecordIndex, aValue) { 421 deferredResult.addCallback(function(/*anHeader,*/ aKey, aData, aRecordIndex, aValue) {
420 var result; 422 var result;
421//MochiKit.Logging.logDebug(">>> [start] ==============================================="); 423//MochiKit.Logging.logDebug(">>> [start] ===============================================");
422//MochiKit.Logging.logDebug("--- extractDataWithKey - 0 [" + aKey + "]: " + Clipperz.Base.serializeJSON(aValue)); 424//MochiKit.Logging.logDebug("--- extractDataWithKey - 0 [" + aKey + "]: " + Clipperz.Base.serializeJSON(aValue));
423//MochiKit.Logging.logDebug("<<< [end] ================================================="); 425//MochiKit.Logging.logDebug("<<< [end] =================================================");
424 if (aKey == 'records') { 426 if (aKey == 'records') {
425 var recordKey; 427 var recordKey;
426 428
427 result = {}; 429 result = {};
428 for (recordKey in aData['index']) { 430 for (recordKey in aData['index']) {
429 result[recordKey] = aValue[aData['index'][recordKey]]; 431 result[recordKey] = aValue[aData['index'][recordKey]];
430 } 432 }
431 } else if (aKey == 'directLogins') { 433 } else if (aKey == 'directLogins') {
432 varrecordKeyReversedIndex; 434 varrecordKeyReversedIndex;
433 var recordKey; 435 var recordKey;
434 var directLoginKey; 436 var directLoginKey;
435 437
436 result = {}; 438 result = {};
437 recordKeyReversedIndex = {}; 439 recordKeyReversedIndex = {};
438 440
439 for (recordKey in aRecordIndex) { 441 for (recordKey in aRecordIndex) {
440 recordKeyReversedIndex[aRecordIndex[recordKey]] = recordKey; 442 recordKeyReversedIndex[aRecordIndex[recordKey]] = recordKey;
441 } 443 }
442 444
443//MochiKit.Logging.logDebug("--- extractDataWithKey - 1 - aData['index']: " + Clipperz.Base.serializeJSON(aData['index'])); 445//MochiKit.Logging.logDebug("--- extractDataWithKey - 1 - aData['index']: " + Clipperz.Base.serializeJSON(aData['index']));
444 for (directLoginKey in aData['index']) { 446 for (directLoginKey in aData['index']) {
445try { 447try {
446 if ((aData['index'][directLoginKey] != null) && (aValue[aData['index'][directLoginKey]] != null)) { 448 if ((aData['index'][directLoginKey] != null) && (aValue[aData['index'][directLoginKey]] != null)) {
447 result[directLoginKey] = aValue[aData['index'][directLoginKey]]; 449 result[directLoginKey] = aValue[aData['index'][directLoginKey]];
448 result[directLoginKey]['record'] = recordKeyReversedIndex[result[directLoginKey]['record']]; 450 result[directLoginKey]['record'] = recordKeyReversedIndex[result[directLoginKey]['record']];
449 } 451 }
450} catch(exception) { 452} catch(exception) {
451 //result[directLoginKey] has no properties 453 //result[directLoginKey] has no properties
452 MochiKit.Logging.logDebug("[Header 391] EXCEPTION: " + exception); 454 MochiKit.Logging.logDebug("[Header 391] EXCEPTION: " + exception);
453 throw exception; 455 throw exception;
454} 456}
455 } 457 }
456//MochiKit.Logging.logDebug("--- extractDataWithKey - 2"); 458//MochiKit.Logging.logDebug("--- extractDataWithKey - 2");
457 } else { 459 } else {
458 result = aValue; 460 result = aValue;
459 } 461 }
460 462
461 return result; 463 return result;
462 }, /*this,*/ aKey, data[aKey], data['records']['index']); 464 }, /*this,*/ aKey, data[aKey], data['records']['index']);
463//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 6: "/* + res*/); return res;}); 465//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 6: "/* + res*/); return res;});
464//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 466//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
465 } else { 467 } else {
466//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 7: "/* + res*/); return res;}); 468//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 7: "/* + res*/); return res;});
467//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 469//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
468 deferredResult.addCallback(MochiKit.Async.succeed, {}); 470 deferredResult.addCallback(MochiKit.Async.succeed, {});
469//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 8: "/* + res*/); return res;}); 471//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 8: "/* + res*/); return res;});
470//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 472//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
471 } 473 }
472 break; 474 break;
473 } 475 }
474 476
475//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 9: "/* + res*/); return res;}); 477//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.extractDataWithKey 9: "/* + res*/); return res;});
476//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 478//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
477 deferredResult.callback(); 479 deferredResult.callback();
478//MochiKit.Logging.logDebug("<<< Header.extractDataWithKey"); 480//MochiKit.Logging.logDebug("<<< Header.extractDataWithKey");
479 481
480 return deferredResult; 482 return deferredResult;
481 }, 483 },
482 484
483 //------------------------------------------------------------------------- 485 //-------------------------------------------------------------------------
484 486
485 'processRecordData': function(someRecordData) { 487 'processRecordData': function(someRecordData) {
486 var records; 488 var records;
487 varrecordReference; 489 varrecordReference;
488 490
489//console.log("HeaderRecordData parameters", someRecordData); 491//console.log("HeaderRecordData parameters", someRecordData);
490//MochiKit.Logging.logDebug(">>> Header.processRecordData"); 492//MochiKit.Logging.logDebug(">>> Header.processRecordData");
491 records = someRecordData; 493 records = someRecordData;
492//MochiKit.Logging.logDebug("--- Header.processRecordData - 1"); 494//MochiKit.Logging.logDebug("--- Header.processRecordData - 1");
493 if (records != null) { 495 if (records != null) {
494//MochiKit.Logging.logDebug("--- Header.processRecordData - records: " + Clipperz.Base.serializeJSON(records)); 496//MochiKit.Logging.logDebug("--- Header.processRecordData - records: " + Clipperz.Base.serializeJSON(records));
495 for (recordReference in records) { 497 for (recordReference in records) {
496 var newRecord; 498 var newRecord;
497 var parameters; 499 var parameters;
498 500
499//MochiKit.Logging.logDebug("--- Header.processRecordData - 2 - recordReference: " + recordReference); 501//MochiKit.Logging.logDebug("--- Header.processRecordData - 2 - recordReference: " + recordReference);
500 if (recordReference != "stacktrace") { 502 if (recordReference != "stacktrace") {
501 parameters = records[recordReference];//.slice(); 503 parameters = records[recordReference];//.slice();
502//MochiKit.Logging.logDebug("--- Header.processRecordData - 3"); 504//MochiKit.Logging.logDebug("--- Header.processRecordData - 3");
503 if (typeof(parameters['notes']) != 'undefined') { 505 if (typeof(parameters['notes']) != 'undefined') {
504//MochiKit.Logging.logDebug("--- Header.processRecordData - 4"); 506//MochiKit.Logging.logDebug("--- Header.processRecordData - 4");
505 if (parameters['notes'] != "") { 507 if (parameters['notes'] != "") {
506//MochiKit.Logging.logDebug("--- Header.processRecordData - 5"); 508//MochiKit.Logging.logDebug("--- Header.processRecordData - 5");
507 parameters['headerNotes'] = parameters['notes']; 509 parameters['headerNotes'] = parameters['notes'];
508//MochiKit.Logging.logDebug("--- Header.processRecordData - 6"); 510//MochiKit.Logging.logDebug("--- Header.processRecordData - 6");
509 } 511 }
510//MochiKit.Logging.logDebug("--- Header.processRecordData - 7"); 512//MochiKit.Logging.logDebug("--- Header.processRecordData - 7");
511 delete parameters['notes']; 513 delete parameters['notes'];
512//MochiKit.Logging.logDebug("--- Header.processRecordData - 8"); 514//MochiKit.Logging.logDebug("--- Header.processRecordData - 8");
513 } 515 }
514//MochiKit.Logging.logDebug("--- Header.processRecordData - 9"); 516//MochiKit.Logging.logDebug("--- Header.processRecordData - 9");
515 parameters['reference'] = recordReference; 517 parameters['reference'] = recordReference;
516//MochiKit.Logging.logDebug("--- Header.processRecordData - 10"); 518//MochiKit.Logging.logDebug("--- Header.processRecordData - 10");
517 parameters['user'] = this.user(); 519 parameters['user'] = this.user();
518//MochiKit.Logging.logDebug("--- Header.processRecordData - 11"); 520//MochiKit.Logging.logDebug("--- Header.processRecordData - 11");
519 521
520 newRecord = new Clipperz.PM.DataModel.Record(parameters); 522 newRecord = new Clipperz.PM.DataModel.Record(parameters);
521//MochiKit.Logging.logDebug("--- Header.processRecordData - 12"); 523//MochiKit.Logging.logDebug("--- Header.processRecordData - 12");
522 this.user().addRecord(newRecord, true); 524 this.user().addRecord(newRecord, true);
523//MochiKit.Logging.logDebug("--- Header.processRecordData - 13"); 525//MochiKit.Logging.logDebug("--- Header.processRecordData - 13");
524 } 526 }
525 } 527 }
526 528
527//MochiKit.Logging.logDebug("--- Header.processRecordData - 14"); 529//MochiKit.Logging.logDebug("--- Header.processRecordData - 14");
528 Clipperz.NotificationCenter.notify(null, 'recordAdded', null, true); 530 Clipperz.NotificationCenter.notify(null, 'recordAdded', null, true);
529//MochiKit.Logging.logDebug("--- Header.processRecordData - 15"); 531//MochiKit.Logging.logDebug("--- Header.processRecordData - 15");
530 } 532 }
531//MochiKit.Logging.logDebug("<<< Header.processRecordData"); 533//MochiKit.Logging.logDebug("<<< Header.processRecordData");
532 534
533 return this.user().records(); 535 return this.user().records();
534 }, 536 },
535 537
536 //------------------------------------------------------------------------- 538 //-------------------------------------------------------------------------
537 539
538 'processDirectLoginData': function(someDirectLoginData) { 540 'processDirectLoginData': function(someDirectLoginData) {
539 var directLogins; 541 var directLogins;
540 var directLoginReference; 542 var directLoginReference;
541 543
542//MochiKit.Logging.logDebug(">>> Header.processDirectLoginData"); 544//MochiKit.Logging.logDebug(">>> Header.processDirectLoginData");
543 directLogins = someDirectLoginData; 545 directLogins = someDirectLoginData;
544 if (directLogins != null) { 546 if (directLogins != null) {
545 for (directLoginReference in directLogins) { 547 for (directLoginReference in directLogins) {
546 var directLoginReference; 548 var directLoginReference;
547 var parameters; 549 var parameters;
548 550
549 parameters = directLogins[directLoginReference];//.slice(); 551 parameters = directLogins[directLoginReference];//.slice();
550 parameters.user = this.user(); 552 parameters.user = this.user();
551 parameters.reference = directLoginReference; 553 parameters.reference = directLoginReference;
552 directLoginReference = new Clipperz.PM.DataModel.DirectLoginReference(parameters); 554 directLoginReference = new Clipperz.PM.DataModel.DirectLoginReference(parameters);
553 if (directLoginReference.record() != null) { 555 if (directLoginReference.record() != null) {
554 this.user().addDirectLoginReference(directLoginReference, true); 556 this.user().addDirectLoginReference(directLoginReference, true);
555 } 557 }
556 } 558 }
557 } 559 }
558 560
559 Clipperz.NotificationCenter.notify(null, 'directLoginAdded', null, true); 561 Clipperz.NotificationCenter.notify(null, 'directLoginAdded', null, true);
560//MochiKit.Logging.logDebug("<<< Header.processDirectLoginData"); 562//MochiKit.Logging.logDebug("<<< Header.processDirectLoginData");
561 563
562 return this.user().directLoginReferences(); 564 return this.user().directLoginReferences();
563 }, 565 },
564 566
565 //------------------------------------------------------------------------- 567 //-------------------------------------------------------------------------
566 568
567 'shouldLoadSections': function() { 569 'shouldLoadSections': function() {
568 return this._shouldLoadSections; 570 return this._shouldLoadSections;
569 }, 571 },
570 572
571 'shouldLoadSection': function(aSectionName) { 573 'shouldLoadSection': function(aSectionName) {
572 var result; 574 var result;
573 575
574 if (typeof(this.shouldLoadSections()[aSectionName]) != 'undefined') { 576 if (typeof(this.shouldLoadSections()[aSectionName]) != 'undefined') {
575 result = this.shouldLoadSections()[aSectionName]; 577 result = this.shouldLoadSections()[aSectionName];
576 } else { 578 } else {
577 result = true; 579 result = true;
578 } 580 }
579 581
580 return result; 582 return result;
581 }, 583 },
582 584
583 'setShouldLoadSection': function(aSectionName, aValue) { 585 'setShouldLoadSection': function(aSectionName, aValue) {
584 this.shouldLoadSections()[aSectionName] = aValue; 586 this.shouldLoadSections()[aSectionName] = aValue;
585 }, 587 },
586 588
587 //------------------------------------------------------------------------- 589 //-------------------------------------------------------------------------
588 590
589 'loadRecords': function() { 591 'loadRecords': function() {
590 var deferredResult; 592 var deferredResult;
591 593
592 if (this.shouldLoadSection('records') == true) { 594 if (this.shouldLoadSection('records') == true) {
593 this.setShouldLoadSection('records', false); 595 this.setShouldLoadSection('records', false);
594 596
595 deferredResult = new MochiKit.Async.Deferred(); 597 deferredResult = new MochiKit.Async.Deferred();
596//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 1: "/* + res*/); return res;}); 598//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 1: "/* + res*/); return res;});
597//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 599//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
598 deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails')); 600 deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails'));
599//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 2: "/* + res*/); return res;}); 601//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 2: "/* + res*/); return res;});
600//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 602//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
601 deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails')); 603 deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails'));
602//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 3: "/* + res*/); return res;}); 604//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 3: "/* + res*/); return res;});
603//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 605//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
604 deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'records')); 606 deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'records'));
605//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 4: "/* + res*/); return res;}); 607//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 4: "/* + res*/); return res;});
606//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 608//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
607 deferredResult.addCallback(MochiKit.Base.method(this, 'processRecordData')); 609 deferredResult.addCallback(MochiKit.Base.method(this, 'processRecordData'));
608//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 5: "/* + res*/); return res;}); 610//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadRecords 5: "/* + res*/); return res;});
609//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 611//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
610 deferredResult.callback(); 612 deferredResult.callback();
611 } else { 613 } else {
612 deferredResult = MochiKit.Async.succeed(this.user().records()); 614 deferredResult = MochiKit.Async.succeed(this.user().records());
613 } 615 }
614 616
615 return deferredResult; 617 return deferredResult;
616 }, 618 },
617 619
618 //------------------------------------------------------------------------- 620 //-------------------------------------------------------------------------
619 621
620 'loadDirectLogins': function() { 622 'loadDirectLogins': function() {
621 var deferredResult; 623 var deferredResult;
622 624
623 if (this.shouldLoadSection('directLogins') == true) { 625 if (this.shouldLoadSection('directLogins') == true) {
624 this.setShouldLoadSection('directLogins', false); 626 this.setShouldLoadSection('directLogins', false);
625 627
626 deferredResult = new MochiKit.Async.Deferred(); 628 deferredResult = new MochiKit.Async.Deferred();
627//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 1: "/* + res*/); return res;}); 629//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 1: "/* + res*/); return res;});
628//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 630//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
629 deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails')); 631 deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails'));
630//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 2: "/* + res*/); return res;}); 632//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 2: "/* + res*/); return res;});
631//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 633//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
632 deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails')); 634 deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails'));
633//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 3: "/* + res*/); return res;}); 635//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 3: "/* + res*/); return res;});
634//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 636//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
635 deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'directLogins')); 637 deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'directLogins'));
636//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 4: "/* + res*/); return res;}); 638//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 4: "/* + res*/); return res;});
637//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 639//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
638 deferredResult.addCallback(MochiKit.Base.method(this, 'processDirectLoginData')); 640 deferredResult.addCallback(MochiKit.Base.method(this, 'processDirectLoginData'));
639//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 5: "/* + res*/); return res;}); 641//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadDirectLogins - 5: "/* + res*/); return res;});
640//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 642//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
641 deferredResult.callback(); 643 deferredResult.callback();
642 } else { 644 } else {
643 deferredResult = MochiKit.Async.succeed(this.user().directLoginReferences()); 645 deferredResult = MochiKit.Async.succeed(this.user().directLoginReferences());
644 } 646 }
645 647
646 return deferredResult; 648 return deferredResult;
647 }, 649 },
648 650
649 //------------------------------------------------------------------------- 651 //-------------------------------------------------------------------------
650 652
651 'loadPreferences': function() { 653 'loadPreferences': function() {
652 var deferredResult; 654 var deferredResult;
653 655
654 if (this.shouldLoadSection('preferences') == true) { 656 if (this.shouldLoadSection('preferences') == true) {
655 this.setShouldLoadSection('preferences', false); 657 this.setShouldLoadSection('preferences', false);
656 658
657 deferredResult = new MochiKit.Async.Deferred(); 659 deferredResult = new MochiKit.Async.Deferred();
658//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 1: "/* + res*/); return res;}); 660//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 1: "/* + res*/); return res;});
659//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 661//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
660 deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails')); 662 deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails'));
661//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 2: "/* + res*/); return res;}); 663//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 2: "/* + res*/); return res;});
662//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 664//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
663 deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails')); 665 deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails'));
664//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 3: "/* + res*/); return res;}); 666//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 3: "/* + res*/); return res;});
665//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 667//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
666 deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'preferences')); 668 deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'preferences'));
667//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 4: "/* + res*/); return res;}); 669//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 4: "/* + res*/); return res;});
668//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 670//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
669 deferredResult.addCallback(MochiKit.Base.method(this.user().preferences(), 'updateWithData')); 671 deferredResult.addCallback(MochiKit.Base.method(this.user().preferences(), 'updateWithData'));
670//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 5: "/* + res*/); return res;}); 672//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadPreferences - 5: "/* + res*/); return res;});
671//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 673//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
672 deferredResult.callback(); 674 deferredResult.callback();
673 } else { 675 } else {
674 deferredResult = MochiKit.Async.succeed(this.user().preferences()); 676 deferredResult = MochiKit.Async.succeed(this.user().preferences());
675 } 677 }
676 678
677 return deferredResult; 679 return deferredResult;
678 }, 680 },
679 681
680 //------------------------------------------------------------------------- 682 //-------------------------------------------------------------------------
681 683
682 'loadOneTimePasswords': function() { 684 'loadOneTimePasswords': function() {
683 var deferredResult; 685 var deferredResult;
684 686
685 if (this.shouldLoadSection('oneTimePasswords') == true) { 687 if (this.shouldLoadSection('oneTimePasswords') == true) {
686 this.setShouldLoadSection('oneTimePasswords', false); 688 this.setShouldLoadSection('oneTimePasswords', false);
687 689
688 deferredResult = new MochiKit.Async.Deferred(); 690 deferredResult = new MochiKit.Async.Deferred();
689//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 1: "/* + res*/); return res;}); 691//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 1: "/* + res*/); return res;});
690//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 692//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
691 deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails')); 693 deferredResult.addCallback(MochiKit.Base.method(this.user(), 'getUserDetails'));
692//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 2: "/* + res*/); return res;}); 694//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 2: "/* + res*/); return res;});
693//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 695//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
694 deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails')); 696 deferredResult.addCallback(MochiKit.Base.method(this, 'extractHeaderDataFromUserDetails'));
695//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 3: "/* + res*/); return res;}); 697//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 3: "/* + res*/); return res;});
696//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 698//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
697 deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'oneTimePasswords')); 699 deferredResult.addCallback(MochiKit.Base.method(this, 'extractDataWithKey', 'oneTimePasswords'));
698//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 4: "/* + res*/); return res;}); 700//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 4: "/* + res*/); return res;});
699//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 701//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
700 deferredResult.addCallback(MochiKit.Base.method(this.user().oneTimePasswordManager(), 'updateWithData')); 702 deferredResult.addCallback(MochiKit.Base.method(this.user().oneTimePasswordManager(), 'updateWithData'));
701//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 5: "/* + res*/); return res;}); 703//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 5: "/* + res*/); return res;});
702//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 704//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
703 deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'getOneTimePasswordsDetails', {}); 705 deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'getOneTimePasswordsDetails', {});
704//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 6: "/* + res*/); return res;}); 706//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 6: "/* + res*/); return res;});
705//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 707//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
706 deferredResult.addCallback(MochiKit.Base.method(this.user().oneTimePasswordManager(), 'updateWithServerData')); 708 deferredResult.addCallback(MochiKit.Base.method(this.user().oneTimePasswordManager(), 'updateWithServerData'));
707//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 7: "/* + res*/); return res;}); 709//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadOneTimePasswords - 7: "/* + res*/); return res;});
708//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 710//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
709 deferredResult.callback(); 711 deferredResult.callback();
710 } else { 712 } else {
711 deferredResult = MochiKit.Async.succeed(this.user().oneTimePasswordManager()); 713 deferredResult = MochiKit.Async.succeed(this.user().oneTimePasswordManager());
712 } 714 }
713 715
714 return deferredResult; 716 return deferredResult;
715 }, 717 },
716 718
717 //------------------------------------------------------------------------- 719 //-------------------------------------------------------------------------
718 720
719 'loadAllSections': function() { 721 'loadAllSections': function() {
720 var deferredResult; 722 var deferredResult;
721 723
722 deferredResult = new MochiKit.Async.Deferred(); 724 deferredResult = new MochiKit.Async.Deferred();
723//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 1: "/* + res*/); return res;}); 725//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 1: "/* + res*/); return res;});
724//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 726//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
725 deferredResult.addCallback(MochiKit.Base.method(this, 'loadRecords')); 727 deferredResult.addCallback(MochiKit.Base.method(this, 'loadRecords'));
726//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 2: "/* + res*/); return res;}); 728//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 2: "/* + res*/); return res;});
727//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 729//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
728 deferredResult.addCallback(MochiKit.Base.method(this, 'loadDirectLogins')); 730 deferredResult.addCallback(MochiKit.Base.method(this, 'loadDirectLogins'));
729//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 3: "/* + res*/); return res;}); 731//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 3: "/* + res*/); return res;});
730//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 732//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
731 deferredResult.addCallback(MochiKit.Base.method(this, 'loadPreferences')); 733 deferredResult.addCallback(MochiKit.Base.method(this, 'loadPreferences'));
732//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 4: "/* + res*/); return res;}); 734//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 4: "/* + res*/); return res;});
733//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 735//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
734 deferredResult.addCallback(MochiKit.Base.method(this, 'loadOneTimePasswords')); 736 deferredResult.addCallback(MochiKit.Base.method(this, 'loadOneTimePasswords'));
735//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 5: "/* + res*/); return res;}); 737//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Header.loadAllSections - 5: "/* + res*/); return res;});
736//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 738//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
737 deferredResult.callback(); 739 deferredResult.callback();
738 740
739 return deferredResult; 741 return deferredResult;
740 }, 742 },
741 743
742 //------------------------------------------------------------------------- 744 //-------------------------------------------------------------------------
743 __syntaxFix__: "syntax fix" 745 __syntaxFix__: "syntax fix"
744 746
745}); 747});
746 748