author | Clipperz <info@clipperz.com> | 2013-01-09 11:24:13 (UTC) |
---|---|---|
committer | Clipperz <info@clipperz.com> | 2013-01-09 11:24:13 (UTC) |
commit | 6cfcbb8deeb99b0b88f5ce3b34a5c9aa1877dc57 (patch) (unidiff) | |
tree | ae7ed58da6d0f4ce64b7ae4a4ba3f7b1519471d3 | |
parent | f6903b9a5670370ef742a02092ab72e4227ddcd9 (diff) | |
parent | 0db1d5c8b18eadc4bd9cfc6603e86227fa94b5a9 (diff) | |
download | clipperz-6cfcbb8deeb99b0b88f5ce3b34a5c9aa1877dc57.zip clipperz-6cfcbb8deeb99b0b88f5ce3b34a5c9aa1877dc57.tar.gz clipperz-6cfcbb8deeb99b0b88f5ce3b34a5c9aa1877dc57.tar.bz2 |
Merge branch 'master' of github.com:clipperz/password-manager
Conflicts:
frontend/beta/css/yui-extensions/basic-dialog.css
-rw-r--r-- | frontend/beta/css/yui-extensions/basic-dialog.css | 6 | ||||
-rw-r--r-- | frontend/beta/js/Clipperz/PM/DataModel/Record.js | 10 | ||||
-rw-r--r-- | frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js | 2 | ||||
-rw-r--r-- | scripts/builder/repository.py | 11 |
4 files changed, 25 insertions, 4 deletions
diff --git a/frontend/beta/css/yui-extensions/basic-dialog.css b/frontend/beta/css/yui-extensions/basic-dialog.css index 2b1e20c..5a6cefb 100644 --- a/frontend/beta/css/yui-extensions/basic-dialog.css +++ b/frontend/beta/css/yui-extensions/basic-dialog.css | |||
@@ -1,192 +1,198 @@ | |||
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 | .ydlg-proxy { | 26 | .ydlg-proxy { |
27 | <<<<<<< HEAD | ||
27 | background-image: url(./images/default/gradient-bg.gif); | 28 | background-image: url(./images/default/gradient-bg.gif); |
29 | ======= | ||
30 | >>>>>>> 0db1d5c8b18eadc4bd9cfc6603e86227fa94b5a9 | ||
28 | background-color:#c3daf9; | 31 | background-color:#c3daf9; |
29 | border:1px solid #6593cf; | 32 | border:1px solid #6593cf; |
30 | z-index:10001; | 33 | z-index:10001; |
31 | overflow:hidden; | 34 | overflow:hidden; |
32 | position:absolute; | 35 | position:absolute; |
33 | left:0;top:0; | 36 | left:0;top:0; |
34 | } | 37 | } |
35 | .ydlg-shadow{ | 38 | .ydlg-shadow{ |
36 | background:#aaaaaa; | 39 | background:#aaaaaa; |
37 | position:absolute; | 40 | position:absolute; |
38 | left:0;top:0; | 41 | left:0;top:0; |
39 | } | 42 | } |
40 | .ydlg-focus{ | 43 | .ydlg-focus{ |
41 | -moz-outline:0 none; | 44 | -moz-outline:0 none; |
42 | outline:0 none; | 45 | outline:0 none; |
43 | width:0; | 46 | width:0; |
44 | height:0; | 47 | height:0; |
45 | overflow:hidden; | 48 | overflow:hidden; |
46 | position:absolute; | 49 | position:absolute; |
47 | top:0; | 50 | top:0; |
48 | left:0; | 51 | left:0; |
49 | } | 52 | } |
50 | .ydlg-mask{ | 53 | .ydlg-mask{ |
51 | z-index:10000; | 54 | z-index:10000; |
52 | display:none; | 55 | display:none; |
53 | position:absolute; | 56 | position:absolute; |
54 | top:0; | 57 | top:0; |
55 | left:0; | 58 | left:0; |
56 | -moz-opacity: 0.5; | 59 | -moz-opacity: 0.5; |
57 | opacity:.50; | 60 | opacity:.50; |
58 | filter: alpha(opacity=50); | 61 | filter: alpha(opacity=50); |
59 | background-color:#CCC; | 62 | background-color:#CCC; |
60 | } | 63 | } |
61 | body.masked{ | 64 | body.masked{ |
62 | } | 65 | } |
63 | body.masked select { | 66 | body.masked select { |
64 | visibility:hidden; | 67 | visibility:hidden; |
65 | } | 68 | } |
66 | body.masked .ydlg select { | 69 | body.masked .ydlg select { |
67 | visibility:visible; | 70 | visibility:visible; |
68 | } | 71 | } |
69 | .ydlg{ | 72 | .ydlg{ |
70 | z-index:10001; | 73 | z-index:10001; |
71 | overflow:hidden; | 74 | overflow:hidden; |
72 | position:absolute; | 75 | position:absolute; |
73 | left:300;top:0; | 76 | left:300;top:0; |
74 | } | 77 | } |
75 | .yresizable-proxy{ | 78 | .yresizable-proxy{ |
76 | z-index:10002; | 79 | z-index:10002; |
77 | } | 80 | } |
78 | .ydlg .ydlg-hd { | 81 | .ydlg .ydlg-hd { |
79 | background: url(./images/default/basic-dialog/hd-sprite.gif) repeat-x 0 -82px; | 82 | background: url(./images/default/basic-dialog/hd-sprite.gif) repeat-x 0 -82px; |
80 | background-color:navy; | 83 | background-color:navy; |
81 | color:#ffffff; | 84 | color:#ffffff; |
82 | font:bold 12px "sans serif", tahoma, verdana, helvetica; | 85 | font:bold 12px "sans serif", tahoma, verdana, helvetica; |
83 | overflow:hidden; | 86 | overflow:hidden; |
84 | padding:5px; | 87 | padding:5px; |
85 | } | 88 | } |
86 | .ydlg .ydlg-hd-left { | 89 | .ydlg .ydlg-hd-left { |
87 | background: url(./images/default/basic-dialog/hd-sprite.gif) no-repeat 0 -41px; | 90 | background: url(./images/default/basic-dialog/hd-sprite.gif) no-repeat 0 -41px; |
88 | padding-left:3px; | 91 | padding-left:3px; |
89 | margin:0px; | 92 | margin:0px; |
90 | } | 93 | } |
91 | .ydlg .ydlg-hd-right { | 94 | .ydlg .ydlg-hd-right { |
92 | background: url(./images/default/basic-dialog/hd-sprite.gif) no-repeat right 0; | 95 | background: url(./images/default/basic-dialog/hd-sprite.gif) no-repeat right 0; |
93 | padding-right:3px; | 96 | padding-right:3px; |
94 | } | 97 | } |
95 | .ydlg .ydlg-dlg-body{ | 98 | .ydlg .ydlg-dlg-body{ |
99 | <<<<<<< HEAD | ||
96 | background:url(./images/default/layout/gradient-bg.gif); | 100 | background:url(./images/default/layout/gradient-bg.gif); |
101 | ======= | ||
102 | >>>>>>> 0db1d5c8b18eadc4bd9cfc6603e86227fa94b5a9 | ||
97 | border:1px solid #6593cf; | 103 | border:1px solid #6593cf; |
98 | border-top:0 none; | 104 | border-top:0 none; |
99 | padding:10px; | 105 | padding:10px; |
100 | overflow:hidden; | 106 | overflow:hidden; |
101 | } | 107 | } |
102 | .ydlg .ydlg-bd{ | 108 | .ydlg .ydlg-bd{ |
103 | overflow:hidden; | 109 | overflow:hidden; |
104 | } | 110 | } |
105 | .ydlg .ydlg-ft{ | 111 | .ydlg .ydlg-ft{ |
106 | overflow:hidden; | 112 | overflow:hidden; |
107 | padding:5px; | 113 | padding:5px; |
108 | padding-bottom:0; | 114 | padding-bottom:0; |
109 | } | 115 | } |
110 | .ydlg .yui-ext-tabbody{ | 116 | .ydlg .yui-ext-tabbody{ |
111 | background:white; | 117 | background:white; |
112 | overflow:auto; | 118 | overflow:auto; |
113 | } | 119 | } |
114 | .ydlg .ytabs-top .yui-ext-tabbody{ | 120 | .ydlg .ytabs-top .yui-ext-tabbody{ |
115 | border:1px solid #6593cf; | 121 | border:1px solid #6593cf; |
116 | border-top:0 none; | 122 | border-top:0 none; |
117 | } | 123 | } |
118 | .ydlg .ytabs-bottom .yui-ext-tabbody{ | 124 | .ydlg .ytabs-bottom .yui-ext-tabbody{ |
119 | border:1px solid #6593cf; | 125 | border:1px solid #6593cf; |
120 | border-bottom:0 none; | 126 | border-bottom:0 none; |
121 | } | 127 | } |
122 | .ydlg .ylayout-container .yui-ext-tabbody{ | 128 | .ydlg .ylayout-container .yui-ext-tabbody{ |
123 | border:0 none; | 129 | border:0 none; |
124 | } | 130 | } |
125 | .ydlg .inner-tab{ | 131 | .ydlg .inner-tab{ |
126 | margin:5px; | 132 | margin:5px; |
127 | } | 133 | } |
128 | .ydlg .ydlg-ft .ybtn{ | 134 | .ydlg .ydlg-ft .ybtn{ |
129 | margin-right:5px; | 135 | margin-right:5px; |
130 | float:right; | 136 | float:right; |
131 | clear:none; | 137 | clear:none; |
132 | } | 138 | } |
133 | .ydlg .ydlg-ft .ydlg-btns td { | 139 | .ydlg .ydlg-ft .ydlg-btns td { |
134 | border:0; | 140 | border:0; |
135 | padding:0; | 141 | padding:0; |
136 | } | 142 | } |
137 | .ydlg .ydlg-ft .ydlg-btns-right table{ | 143 | .ydlg .ydlg-ft .ydlg-btns-right table{ |
138 | float:right; | 144 | float:right; |
139 | clear:none; | 145 | clear:none; |
140 | } | 146 | } |
141 | .ydlg .ydlg-ft .ydlg-btns-left table{ | 147 | .ydlg .ydlg-ft .ydlg-btns-left table{ |
142 | float:left; | 148 | float:left; |
143 | clear:none; | 149 | clear:none; |
144 | } | 150 | } |
145 | .ydlg .ydlg-ft .ydlg-btns-center{ | 151 | .ydlg .ydlg-ft .ydlg-btns-center{ |
146 | text-align:center; /*ie*/ | 152 | text-align:center; /*ie*/ |
147 | } | 153 | } |
148 | .ydlg .ydlg-ft .ydlg-btns-center table{ | 154 | .ydlg .ydlg-ft .ydlg-btns-center table{ |
149 | margin:0 auto; /*everyone else*/ | 155 | margin:0 auto; /*everyone else*/ |
150 | } | 156 | } |
151 | .ydlg-draggable .ydlg-hd{ | 157 | .ydlg-draggable .ydlg-hd{ |
152 | cursor:move; | 158 | cursor:move; |
153 | } | 159 | } |
154 | .ydlg-closable .ydlg-hd{ | 160 | .ydlg-closable .ydlg-hd{ |
155 | padding-right:22px; | 161 | padding-right:22px; |
156 | } | 162 | } |
157 | .ydlg .ydlg-close { | 163 | .ydlg .ydlg-close { |
158 | position:absolute; | 164 | position:absolute; |
159 | top:4px; | 165 | top:4px; |
160 | right:4px; | 166 | right:4px; |
161 | z-index:6; | 167 | z-index:6; |
162 | height:15px; | 168 | height:15px; |
163 | width:15px; | 169 | width:15px; |
164 | margin:0; | 170 | margin:0; |
165 | padding:0; | 171 | padding:0; |
166 | line-height:1px; | 172 | line-height:1px; |
167 | font-size:1px; | 173 | font-size:1px; |
168 | background-repeat:no-repeat; | 174 | background-repeat:no-repeat; |
169 | cursor:pointer; | 175 | cursor:pointer; |
170 | visibility:inherit; | 176 | visibility:inherit; |
171 | background-image:url(./images/default/basic-dialog/close.gif); | 177 | background-image:url(./images/default/basic-dialog/close.gif); |
172 | } | 178 | } |
173 | .ydlg div.yresizable-handle-east{ | 179 | .ydlg div.yresizable-handle-east{ |
174 | background-image:url(./images/default/sizer/e-handle-dark.gif); | 180 | background-image:url(./images/default/sizer/e-handle-dark.gif); |
175 | border:0; | 181 | border:0; |
176 | background-position:left; | 182 | background-position:left; |
177 | margin-right:0; | 183 | margin-right:0; |
178 | } | 184 | } |
179 | .ydlg div.yresizable-handle-south{ | 185 | .ydlg div.yresizable-handle-south{ |
180 | background-image:url(./images/default/sizer/s-handle-dark.gif); | 186 | background-image:url(./images/default/sizer/s-handle-dark.gif); |
181 | border:0; | 187 | border:0; |
182 | height:6px; | 188 | height:6px; |
183 | } | 189 | } |
184 | .ydlg div.yresizable-handle-west{ | 190 | .ydlg div.yresizable-handle-west{ |
185 | background-image:url(./images/default/sizer/e-handle-dark.gif); | 191 | background-image:url(./images/default/sizer/e-handle-dark.gif); |
186 | border:0; | 192 | border:0; |
187 | background-position:1px; | 193 | background-position:1px; |
188 | } | 194 | } |
189 | .ydlg div.yresizable-handle-north{ | 195 | .ydlg div.yresizable-handle-north{ |
190 | background-image:url(./images/default/s.gif); | 196 | background-image:url(./images/default/s.gif); |
191 | border:0; | 197 | border:0; |
192 | } | 198 | } |
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/Record.js b/frontend/beta/js/Clipperz/PM/DataModel/Record.js index ecb6c37..d6ebb39 100644 --- a/frontend/beta/js/Clipperz/PM/DataModel/Record.js +++ b/frontend/beta/js/Clipperz/PM/DataModel/Record.js | |||
@@ -199,194 +199,200 @@ Clipperz.PM.DataModel.Record.prototype = MochiKit.Base.update(null, { | |||
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 | console.log("Record.processData", someValues); |
283 | this.processDataToExtractLegacyValues(someValues['data']); | 283 | this.processDataToExtractLegacyValues(someValues['data']); |
284 | 284 | ||
285 | if (typeof(someValues['data']['notes']) != 'undefined') { | 285 | if (typeof(someValues['data']['notes']) != 'undefined') { |
286 | this.setNotes(someValues['data']['notes']); | 286 | this.setNotes(someValues['data']['notes']); |
287 | } | 287 | } |
288 | 288 | ||
289 | if (someValues['data']['currentVersionKey'] != null) { | 289 | if (someValues['data']['currentVersionKey'] != null) { |
290 | this.setCurrentVersionKey(someValues['data']['currentVersionKey']); | 290 | this.setCurrentVersionKey(someValues['data']['currentVersionKey']); |
291 | } else { | 291 | } else { |
292 | this.setCurrentVersionKey(this.key()); | 292 | this.setCurrentVersionKey(this.key()); |
293 | } | 293 | } |
294 | 294 | ||
295 | // currentVersionParameters = someValues['currentVersion']; | 295 | // community edition doesn't currently pass version |
296 | currentVersionParameters = someValues['versions'][someValues['currentVersion']]; | 296 | // information |
297 | if (someValues['versions'] == null) { | ||
298 | currentVersionParameters = someValues['currentVersion']; | ||
299 | } else { | ||
300 | currentVersionParameters = someValues['versions'][someValues['currentVersion']]; | ||
301 | } | ||
302 | |||
297 | console.log("Record.processData - this.currentVersionKey()", this.currentVersionKey()); | 303 | console.log("Record.processData - this.currentVersionKey()", this.currentVersionKey()); |
298 | console.log("Record.processData - currentVersionParameters", currentVersionParameters); | 304 | console.log("Record.processData - currentVersionParameters", currentVersionParameters); |
299 | currentVersionParameters['key'] = this.currentVersionKey(); | 305 | currentVersionParameters['key'] = this.currentVersionKey(); |
300 | this.setCurrentVersion(new Clipperz.PM.DataModel.RecordVersion(this, currentVersionParameters)); | 306 | this.setCurrentVersion(new Clipperz.PM.DataModel.RecordVersion(this, currentVersionParameters)); |
301 | 307 | ||
302 | if (someValues['data']['directLogins'] != null) { | 308 | if (someValues['data']['directLogins'] != null) { |
303 | vardirectLoginReference; | 309 | vardirectLoginReference; |
304 | 310 | ||
305 | for (directLoginReference in someValues['data']['directLogins']) { | 311 | for (directLoginReference in someValues['data']['directLogins']) { |
306 | var directLogin; | 312 | var directLogin; |
307 | var directLoginParameters; | 313 | var directLoginParameters; |
308 | 314 | ||
309 | directLoginParameters = someValues['data']['directLogins'][directLoginReference]; | 315 | directLoginParameters = someValues['data']['directLogins'][directLoginReference]; |
310 | directLoginParameters.record = this; | 316 | directLoginParameters.record = this; |
311 | directLoginParameters.reference = directLoginReference; | 317 | directLoginParameters.reference = directLoginReference; |
312 | 318 | ||
313 | directLogin = new Clipperz.PM.DataModel.DirectLogin(directLoginParameters); | 319 | directLogin = new Clipperz.PM.DataModel.DirectLogin(directLoginParameters); |
314 | this.addDirectLogin(directLogin, true); | 320 | this.addDirectLogin(directLogin, true); |
315 | } | 321 | } |
316 | } | 322 | } |
317 | this.setShouldProcessData(false); | 323 | this.setShouldProcessData(false); |
318 | } | 324 | } |
319 | 325 | ||
320 | Clipperz.NotificationCenter.notify(this, 'recordDataReady'); | 326 | Clipperz.NotificationCenter.notify(this, 'recordDataReady'); |
321 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.processData"); | 327 | //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.processData"); |
322 | //MochiKit.Logging.logDebug("<<< Record.processData"); | 328 | //MochiKit.Logging.logDebug("<<< Record.processData"); |
323 | 329 | ||
324 | return this; | 330 | return this; |
325 | }, | 331 | }, |
326 | 332 | ||
327 | //------------------------------------------------------------------------- | 333 | //------------------------------------------------------------------------- |
328 | 334 | ||
329 | 'processDataToExtractLegacyValues': function(someValues) { | 335 | 'processDataToExtractLegacyValues': function(someValues) { |
330 | //MochiKit.Logging.logDebug(">>> Record.processDataToExtractLegacyValues"); | 336 | //MochiKit.Logging.logDebug(">>> Record.processDataToExtractLegacyValues"); |
331 | if (someValues['data'] != null) { | 337 | if (someValues['data'] != null) { |
332 | this.setNotes(someValues['data']); | 338 | this.setNotes(someValues['data']); |
333 | } | 339 | } |
334 | 340 | ||
335 | if ( | 341 | if ( |
336 | (typeof(someValues['loginFormData']) != "undefined") | 342 | (typeof(someValues['loginFormData']) != "undefined") |
337 | &&(typeof(someValues['loginBindings'] != "undefined")) | 343 | &&(typeof(someValues['loginBindings'] != "undefined")) |
338 | &&(someValues['loginFormData'] != "") | 344 | &&(someValues['loginFormData'] != "") |
339 | &&(someValues['loginBindings'] != "") | 345 | &&(someValues['loginBindings'] != "") |
340 | ) { | 346 | ) { |
341 | vardirectLogin; | 347 | vardirectLogin; |
342 | 348 | ||
343 | directLogin = new Clipperz.PM.DataModel.DirectLogin({ | 349 | directLogin = new Clipperz.PM.DataModel.DirectLogin({ |
344 | record:this, | 350 | record:this, |
345 | label:this.label() + Clipperz.PM.Strings['newDirectLoginLabelSuffix'], | 351 | label:this.label() + Clipperz.PM.Strings['newDirectLoginLabelSuffix'], |
346 | reference:Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray(this.label() + | 352 | reference:Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray(this.label() + |
347 | someValues['loginFormData'] + | 353 | someValues['loginFormData'] + |
348 | someValues['loginBindings'])).toHexString().substring(2), | 354 | someValues['loginBindings'])).toHexString().substring(2), |
349 | formData:Clipperz.Base.evalJSON(someValues['loginFormData']), | 355 | formData:Clipperz.Base.evalJSON(someValues['loginFormData']), |
350 | legacyBindingData:Clipperz.Base.evalJSON(someValues['loginBindings']), | 356 | legacyBindingData:Clipperz.Base.evalJSON(someValues['loginBindings']), |
351 | bookmarkletVersion:'0.1' | 357 | bookmarkletVersion:'0.1' |
352 | }); | 358 | }); |
353 | this.addDirectLogin(directLogin, true); | 359 | this.addDirectLogin(directLogin, true); |
354 | } | 360 | } |
355 | //MochiKit.Logging.logDebug("<<< Record.processDataToExtractLegacyValues"); | 361 | //MochiKit.Logging.logDebug("<<< Record.processDataToExtractLegacyValues"); |
356 | }, | 362 | }, |
357 | 363 | ||
358 | //------------------------------------------------------------------------- | 364 | //------------------------------------------------------------------------- |
359 | 365 | ||
360 | 'getReadyBeforeUpdatingVersionValues': function() { | 366 | 'getReadyBeforeUpdatingVersionValues': function() { |
361 | }, | 367 | }, |
362 | 368 | ||
363 | //------------------------------------------------------------------------- | 369 | //------------------------------------------------------------------------- |
364 | 370 | ||
365 | 'addNewField': function() { | 371 | 'addNewField': function() { |
366 | varnewField; | 372 | varnewField; |
367 | 373 | ||
368 | //MochiKit.Logging.logDebug(">>> Record.addNewField - " + this); | 374 | //MochiKit.Logging.logDebug(">>> Record.addNewField - " + this); |
369 | this.getReadyBeforeUpdatingVersionValues(); | 375 | this.getReadyBeforeUpdatingVersionValues(); |
370 | newField = this.currentVersion().addNewField(); | 376 | newField = this.currentVersion().addNewField(); |
371 | Clipperz.NotificationCenter.notify(this, 'recordUpdated'); | 377 | Clipperz.NotificationCenter.notify(this, 'recordUpdated'); |
372 | //MochiKit.Logging.logDebug("<<< Record.addNewField"); | 378 | //MochiKit.Logging.logDebug("<<< Record.addNewField"); |
373 | 379 | ||
374 | return newField; | 380 | return newField; |
375 | }, | 381 | }, |
376 | 382 | ||
377 | //------------------------------------------------------------------------- | 383 | //------------------------------------------------------------------------- |
378 | 384 | ||
379 | 'removeField': function(aField) { | 385 | 'removeField': function(aField) { |
380 | this.getReadyBeforeUpdatingVersionValues(); | 386 | this.getReadyBeforeUpdatingVersionValues(); |
381 | this.currentVersion().removeField(aField); | 387 | this.currentVersion().removeField(aField); |
382 | Clipperz.NotificationCenter.notify(this, 'recordUpdated'); | 388 | Clipperz.NotificationCenter.notify(this, 'recordUpdated'); |
383 | }, | 389 | }, |
384 | 390 | ||
385 | 'removeEmptyFields': function() { | 391 | 'removeEmptyFields': function() { |
386 | MochiKit.Iter.forEach(MochiKit.Base.values(this.currentVersion().fields()), MochiKit.Base.bind(function(aField) { | 392 | MochiKit.Iter.forEach(MochiKit.Base.values(this.currentVersion().fields()), MochiKit.Base.bind(function(aField) { |
387 | if (aField.isEmpty()) { | 393 | if (aField.isEmpty()) { |
388 | this.removeField(aField); | 394 | this.removeField(aField); |
389 | // this.currentVersion().removeField(aField); | 395 | // this.currentVersion().removeField(aField); |
390 | } | 396 | } |
391 | }, this)); | 397 | }, this)); |
392 | }, | 398 | }, |
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js index 9fa95e9..299ebc7 100644 --- a/frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js +++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js | |||
@@ -415,193 +415,193 @@ Clipperz.PM.Strings.Languages['en-us'] = { | |||
415 | <p>JSON enables a “lossless” export of your cards. All the information will be preserved, including direct login configurations.</p>\ | 415 | <p>JSON enables a “lossless” export of your cards. All the information will be preserved, including direct login configurations.</p>\ |
416 | <p>This custom format it’s quite convenient if you need to move some of all of your cards to a different Clipperz account. Or if you want to restore a card that has been accidentally deleted.</p>\ | 416 | <p>This custom format it’s quite convenient if you need to move some of all of your cards to a different Clipperz account. Or if you want to restore a card that has been accidentally deleted.</p>\ |
417 | <p>Click on the link below to start the export process.</p>", | 417 | <p>Click on the link below to start the export process.</p>", |
418 | 418 | ||
419 | 'exportLinkLabel': "Export to JSON", | 419 | 'exportLinkLabel': "Export to JSON", |
420 | 420 | ||
421 | 'exportDataInProgressDescription':"<h4>Exporting, please wait while your data are being processed …</h4>", | 421 | 'exportDataInProgressDescription':"<h4>Exporting, please wait while your data are being processed …</h4>", |
422 | 422 | ||
423 | 'exportDataDescription': "\ | 423 | 'exportDataDescription': "\ |
424 | <h4>Instructions</h4>\ | 424 | <h4>Instructions</h4>\ |
425 | <p>Copy the text below to your favorite editor and save it. (e.g. “clipperz_export_20071217.json”)</p>", | 425 | <p>Copy the text below to your favorite editor and save it. (e.g. “clipperz_export_20071217.json”)</p>", |
426 | 426 | ||
427 | //Contacts panel | 427 | //Contacts panel |
428 | 'contactsTabLabel': "Contacts", | 428 | 'contactsTabLabel': "Contacts", |
429 | 'contactsTabTitle': "Contacts", | 429 | 'contactsTabTitle': "Contacts", |
430 | 430 | ||
431 | //Tools panel - password generator | 431 | //Tools panel - password generator |
432 | 'passwordGeneratorTabLabel': "Password generator", | 432 | 'passwordGeneratorTabLabel': "Password generator", |
433 | 'bookmarkletTabLabel': "Bookmarklet", | 433 | 'bookmarkletTabLabel': "Bookmarklet", |
434 | 'compactTabLabel': "Compact edition", | 434 | 'compactTabLabel': "Compact edition", |
435 | 'httpAuthTabLabel': "HTTP authentication", | 435 | 'httpAuthTabLabel': "HTTP authentication", |
436 | 436 | ||
437 | 'passwordGeneratorTabTitle': "Password generator", | 437 | 'passwordGeneratorTabTitle': "Password generator", |
438 | 'bookmarkletTabTitle': "Bookmarklet", | 438 | 'bookmarkletTabTitle': "Bookmarklet", |
439 | 'compactTabTitle': "Compact edition", | 439 | 'compactTabTitle': "Compact edition", |
440 | 'httpAuthTabTitle': "HTTP authentication", | 440 | 'httpAuthTabTitle': "HTTP authentication", |
441 | 441 | ||
442 | 442 | ||
443 | //Tools panel - password generator - description | 443 | //Tools panel - password generator - description |
444 | 'paswordGeneratorTabDescription':"<p></p>", | 444 | 'paswordGeneratorTabDescription':"<p></p>", |
445 | 'passwordGeneratorTabButtonLabel':"Generate password", | 445 | 'passwordGeneratorTabButtonLabel':"Generate password", |
446 | 446 | ||
447 | //Tools panel - bookmarklet | 447 | //Tools panel - bookmarklet |
448 | 'bookmarkletTabLabel': "Bookmarklet", | 448 | 'bookmarkletTabLabel': "Bookmarklet", |
449 | 'bookmarkletTabTitle': "Bookmarklet", | 449 | 'bookmarkletTabTitle': "Bookmarklet", |
450 | 450 | ||
451 | 'bookmarkletTabDescription': "\ | 451 | 'bookmarkletTabDescription': "\ |
452 | <!-- FIX CSS DONE! -->\ | 452 | <!-- FIX CSS DONE! -->\ |
453 | <p>A bookmarklet is a simple “one-click” tool that can perform very useful tasks. It can be saved and used like a normal web page bookmark.</p>\ | 453 | <p>A bookmarklet is a simple “one-click” tool that can perform very useful tasks. It can be saved and used like a normal web page bookmark.</p>\ |
454 | <p>The Clipperz bookmarklet will help you to quickly create new cards and new “direct logins” within existing cards.</p>\ | 454 | <p>The Clipperz bookmarklet will help you to quickly create new cards and new “direct logins” within existing cards.</p>\ |
455 | <p><b>Please note that the bookmarklet does not include any information related to your account (e.g. your username or passphrase), the bookmarklet is a general tool containing the same code for every Clipperz user.</b></p>\ | 455 | <p><b>Please note that the bookmarklet does not include any information related to your account (e.g. your username or passphrase), the bookmarklet is a general tool containing the same code for every Clipperz user.</b></p>\ |
456 | <h3>How to install the bookmarklet</h3>\ | 456 | <h3>How to install the bookmarklet</h3>\ |
457 | <h>Firefox, Camino, Opera, Safari</h5>\ | 457 | <h>Firefox, Camino, Opera, Safari</h5>\ |
458 | <ol>\ | 458 | <ol>\ |
459 | <li><p>Make sure that the “Bookmarks Bar” is displayed by selecting “View > Toolbars > Bookmarks”, or similar menu items, from the browser menu.</p></li>\ | 459 | <li><p>Make sure that the “Bookmarks Bar” is displayed by selecting “View > Toolbars > Bookmarks”, or similar menu items, from the browser menu.</p></li>\ |
460 | <li><p>Drag and drop the “Add to Clipperz” link below to the bookmark bar.</p></li>\ | 460 | <li><p>Drag and drop the “Add to Clipperz” link below to the bookmark bar.</p></li>\ |
461 | </ol>\ | 461 | </ol>\ |
462 | \ | 462 | \ |
463 | <h5>Internet Explorer</h5>\ | 463 | <h5>Internet Explorer</h5>\ |
464 | <ol>\ | 464 | <ol>\ |
465 | <li><p>Make sure that the “Links” toolbar is displayed by selecting “View > Toolbars > Links” from the browser menu.</p></li>\ | 465 | <li><p>Make sure that the “Links” toolbar is displayed by selecting “View > Toolbars > Links” from the browser menu.</p></li>\ |
466 | <li><p>Right-click on the “Add to Clipperz” link below.</p></li>\ | 466 | <li><p>Right-click on the “Add to Clipperz” link below.</p></li>\ |
467 | <li><p>Select “Add to favorites” from the contextual menu.</p></li>\ | 467 | <li><p>Select “Add to favorites” from the contextual menu.</p></li>\ |
468 | <li><p>Click “Yes” for any security message that pops up.</p></li>\ | 468 | <li><p>Click “Yes” for any security message that pops up.</p></li>\ |
469 | <li><p>Open the “Links” folder and click “OK”</p></li>\ | 469 | <li><p>Open the “Links” folder and click “OK”</p></li>\ |
470 | </ol>", | 470 | </ol>", |
471 | 471 | ||
472 | 'bookmarkletTabBookmarkletTitle':"Add to Clipperz", | 472 | 'bookmarkletTabBookmarkletTitle':"Add to Clipperz", |
473 | 473 | ||
474 | //Tools panel - bookmarklet - instructions | 474 | //Tools panel - bookmarklet - instructions |
475 | 'bookmarkletTabInstructions': "\ | 475 | 'bookmarkletTabInstructions': "\ |
476 | <!-- FIX CSS DONE! -->\ | 476 | <!-- FIX CSS DONE! -->\ |
477 | <h3>How to create a new card inclusive of a “direct login” link to an online service</h3>\ | 477 | <h3>How to create a new card inclusive of a “direct login” link to an online service</h3>\ |
478 | <ol>\ | 478 | <ol>\ |
479 | <li><p>Open the web page where the login form is hosted. (this is the page where you usually enter your sign-in credentials)</p></li>\ | 479 | <li><p>Open the web page where the login form is hosted. (this is the page where you usually enter your sign-in credentials)</p></li>\ |
480 | <li><p>Launch the bookmarklet by clicking on it: a pop-up window will appear over the web page.</p></li>\ | 480 | <li><p>Launch the bookmarklet by clicking on it: a pop-up window will appear over the web page.</p></li>\ |
481 | <li><p>Copy to the clipboard the content of the large text area within the pop-up. (ctrl-C)</p></li>\ | 481 | <li><p>Copy to the clipboard the content of the large text area within the pop-up. (ctrl-C)</p></li>\ |
482 | <li><p>Enter your Clipperz account and click on the <b>Add new card</b> button.</p></li>\ | 482 | <li><p>Enter your Clipperz account and click on the <b>Add new card</b> button.</p></li>\ |
483 | <li><p>Select the “Direct login” template and paste the content of the clipboard to the large text area in the form. (ctrl-V)</p></li>\ | 483 | <li><p>Select the “Direct login” template and paste the content of the clipboard to the large text area in the form. (ctrl-V)</p></li>\ |
484 | <li><p>Press the <b>Create</b> button, complete and review the details, then click <b>Save</b>.</p></li>\ | 484 | <li><p>Press the <b>Create</b> button, complete and review the details, then click <b>Save</b>.</p></li>\ |
485 | </ol>\ | 485 | </ol>\ |
486 | \ | 486 | \ |
487 | <h3>How to add a “direct login” link to an existing card</h3>\ | 487 | <h3>How to add a “direct login” link to an existing card</h3>\ |
488 | <ol>\ | 488 | <ol>\ |
489 | <li><p>Same as above.</p></li>\ | 489 | <li><p>Same as above.</p></li>\ |
490 | <li><p>Same as above.</p></li>\ | 490 | <li><p>Same as above.</p></li>\ |
491 | <li><p>Same as above.</p></li>\ | 491 | <li><p>Same as above.</p></li>\ |
492 | <li><p>Enter your Clipperz account and select the card containing the credentials for the web service you just visited and click the <b>Edit</b> button.</p></li>\ | 492 | <li><p>Enter your Clipperz account and select the card containing the credentials for the web service you just visited and click the <b>Edit</b> button.</p></li>\ |
493 | <li><p>Paste the content of the clipboard to the large text area in the “Direct logins” section. (ctrl-V)</p></li>\ | 493 | <li><p>Paste the content of the clipboard to the large text area in the “Direct logins” section. (ctrl-V)</p></li>\ |
494 | <li><p>Press the <b>Add direct login</b> button, review the details and then click <b>Save</b>.</p></li>\ | 494 | <li><p>Press the <b>Add direct login</b> button, review the details and then click <b>Save</b>.</p></li>\ |
495 | </ol>\ | 495 | </ol>\ |
496 | \ | 496 | \ |
497 | <p></p>\ | 497 | <p></p>\ |
498 | <p>Further information about the bookmarklet are <a href=\"http://www.clipperz.com/support/user_guide/bookmarklet\" target=\"_blank\">available here</a>.</p>", | 498 | <p>Further information about the bookmarklet are <a href=\"http://www.clipperz.com/support/user_guide/bookmarklet\" target=\"_blank\">available here</a>.</p>", |
499 | 499 | ||
500 | //Tools panel - Compact - instructions | 500 | //Tools panel - Compact - instructions |
501 | 'compactTabDescription': "\ | 501 | 'compactTabDescription': "\ |
502 | <!-- FIX CSS DONE! -->\ | 502 | <!-- FIX CSS DONE! -->\ |
503 | <p>Clipperz Compact is a special version of Clipperz designed to be opened in the Firefox sidebar.</p>\ | 503 | <p>Clipperz Compact is a special version of Clipperz designed to be opened in the Firefox sidebar.</p>\ |
504 | <p>Its purpose is to keep your collection of “direct logins” always at hand. Read more <a href=\"http://www.clipperz.com/support/user_guide/clipperz_compact\", target=\"blank\">here</a></p>\ | 504 | <p>Its purpose is to keep your collection of “direct logins” always at hand. Read more <a href=\"http://www.clipperz.com/support/user_guide/clipperz_compact\", target=\"blank\">here</a></p>\ |
505 | \ | 505 | \ |
506 | <h3>How to launch Clipperz Compact in the sidebar</h3>\ | 506 | <h3>How to launch Clipperz Compact in the sidebar</h3>\ |
507 | <ol>\ | 507 | <ol>\ |
508 | <li><p>Get Firefox! Sidebars are only available in Firefox and you need to switch to Firefox in order to enjoy the convenience of Clipperz Compact.</p></li>\ | 508 | <li><p>Get Firefox! Sidebars are only available in Firefox and you need to switch to Firefox in order to enjoy the convenience of Clipperz Compact.</p></li>\ |
509 | <li>\ | 509 | <li>\ |
510 | <p>Add the following URL to Firefox bookmarks, or even better, drag it to the bookmark bar.</p>\ | 510 | <p>Add the following URL to Firefox bookmarks, or even better, drag it to the bookmark bar.</p>\ |
511 | <div id=\"compactLinkBox\"><a href=\"https://www.clipperz.com/beta/index.html?compact\" target=\"_search\">Clipperz Compact</a></div>\ | 511 | <div id=\"compactLinkBox\"><a href=\"index.html?compact\" target=\"_search\">Clipperz Compact</a></div>\ |
512 | </li>\ | 512 | </li>\ |
513 | <li><p>Change the properties of the bookmark so that “load this bookmark in the sidebar” is checked.</p></li>\ | 513 | <li><p>Change the properties of the bookmark so that “load this bookmark in the sidebar” is checked.</p></li>\ |
514 | </ol>\ | 514 | </ol>\ |
515 | \ | 515 | \ |
516 | <h5>Added bonus: Clipperz Compact works also in Opera’s panel.</h5>", | 516 | <h5>Added bonus: Clipperz Compact works also in Opera’s panel.</h5>", |
517 | 517 | ||
518 | //Tools panel - HTTP authentication - instructions | 518 | //Tools panel - HTTP authentication - instructions |
519 | 'httpAuthTabDescription': "\ | 519 | 'httpAuthTabDescription': "\ |
520 | <!-- FIX CSS DONE! -->\ | 520 | <!-- FIX CSS DONE! -->\ |
521 | <p>HTTP authentication is a method designed to allow a web browser to provide credentials – in the form of a username and password – including them in a website address (HTTP or HTTPS URL).</p>\ | 521 | <p>HTTP authentication is a method designed to allow a web browser to provide credentials – in the form of a username and password – including them in a website address (HTTP or HTTPS URL).</p>\ |
522 | <p>Nowadays it is rarely used, but it can still be found on small, private websites. You can tell that a website is protected by HTTP authentication when the browser displays a pop-up window to enter username and password.</p>\ | 522 | <p>Nowadays it is rarely used, but it can still be found on small, private websites. You can tell that a website is protected by HTTP authentication when the browser displays a pop-up window to enter username and password.</p>\ |
523 | <p>Unfortunately the Clipperz bookmarklet does not work on websites that use HTTP authentication. However you can still create a “direct login”.</p>\ | 523 | <p>Unfortunately the Clipperz bookmarklet does not work on websites that use HTTP authentication. However you can still create a “direct login”.</p>\ |
524 | \ | 524 | \ |
525 | <h3>How to create a “direct login” for a website that uses HTTP authentication</h3>\ | 525 | <h3>How to create a “direct login” for a website that uses HTTP authentication</h3>\ |
526 | <ol>\ | 526 | <ol>\ |
527 | <li><p>Store website URL, username and password in a new card.</p></li>\ | 527 | <li><p>Store website URL, username and password in a new card.</p></li>\ |
528 | <li><p>Copy the configuration below and paste it to the large text area in the “Direct logins” section of the new card.</p></li>\ | 528 | <li><p>Copy the configuration below and paste it to the large text area in the “Direct logins” section of the new card.</p></li>\ |
529 | <li><p>Press the <b>Add direct login</b> button, bind URL, username and password fields and then click <b>Save</b>.</p></li>\ | 529 | <li><p>Press the <b>Add direct login</b> button, bind URL, username and password fields and then click <b>Save</b>.</p></li>\ |
530 | </ol>\ | 530 | </ol>\ |
531 | \ | 531 | \ |
532 | <h5><a href=\"http://support.microsoft.com/kb/834489\" target=\"_blank\">Warning: Internet Explorer does not support HTTP authentication.</a></h5>", | 532 | <h5><a href=\"http://support.microsoft.com/kb/834489\" target=\"_blank\">Warning: Internet Explorer does not support HTTP authentication.</a></h5>", |
533 | 533 | ||
534 | // Direct logins block | 534 | // Direct logins block |
535 | 'mainPanelDirectLoginBlockLabel': "Direct logins", | 535 | 'mainPanelDirectLoginBlockLabel': "Direct logins", |
536 | 'directLinkReferenceShowButtonLabel': "show", | 536 | 'directLinkReferenceShowButtonLabel': "show", |
537 | 537 | ||
538 | // Direct logins - blank slate | 538 | // Direct logins - blank slate |
539 | 'mainPanelDirectLoginBlockDescription': "\ | 539 | 'mainPanelDirectLoginBlockDescription': "\ |
540 | <!-- FIX CSS DONE! -->\ | 540 | <!-- FIX CSS DONE! -->\ |
541 | <p>Add “direct logins” to sign in to your web accounts without typing usernames and passwords!</p>\ | 541 | <p>Add “direct logins” to sign in to your web accounts without typing usernames and passwords!</p>\ |
542 | <p>“Direct logins” greatly enhance your password security since you can:</p>\ | 542 | <p>“Direct logins” greatly enhance your password security since you can:</p>\ |
543 | <ul>\ | 543 | <ul>\ |
544 | <li><p>conveniently adopt and enter complex passwords;</p></li>\ | 544 | <li><p>conveniently adopt and enter complex passwords;</p></li>\ |
545 | <li><p>never re-use the same and easy-to-guess password.</p></li>\ | 545 | <li><p>never re-use the same and easy-to-guess password.</p></li>\ |
546 | </ul>\ | 546 | </ul>\ |
547 | <p>Simple and quick configuration with the <b>Clipperz bookmarklet</b>.</p>\ | 547 | <p>Simple and quick configuration with the <b>Clipperz bookmarklet</b>.</p>\ |
548 | <a href=\"http://www.clipperz.com/support/user_guide/direct_logins\" target=\"_blank\">Learn more about “direct logins”</a>", | 548 | <a href=\"http://www.clipperz.com/support/user_guide/direct_logins\" target=\"_blank\">Learn more about “direct logins”</a>", |
549 | 549 | ||
550 | // Cards block | 550 | // Cards block |
551 | 'mainPanelRecordsBlockLabel': "Cards", | 551 | 'mainPanelRecordsBlockLabel': "Cards", |
552 | 'mainPanelAddRecordButtonLabel': "Add new card", | 552 | 'mainPanelAddRecordButtonLabel': "Add new card", |
553 | 'mainPanelRemoveRecordButtonLabel': "Delete card", | 553 | 'mainPanelRemoveRecordButtonLabel': "Delete card", |
554 | 554 | ||
555 | // Cards block - filter tabs | 555 | // Cards block - filter tabs |
556 | 'mainPanelRecordFilterBlockAllLabel': "all", | 556 | 'mainPanelRecordFilterBlockAllLabel': "all", |
557 | 'mainPanelRecordFilterBlockTagsLabel': "tags", | 557 | 'mainPanelRecordFilterBlockTagsLabel': "tags", |
558 | 'mainPanelRecordFilterBlockSearchLabel':"search", | 558 | 'mainPanelRecordFilterBlockSearchLabel':"search", |
559 | 559 | ||
560 | // Cards block - blank slate | 560 | // Cards block - blank slate |
561 | 'recordDetailNoRecordAtAllTitle': "Welcome to Clipperz!", | 561 | 'recordDetailNoRecordAtAllTitle': "Welcome to Clipperz!", |
562 | 'recordDetailNoRecordAtAllDescription': "\ | 562 | 'recordDetailNoRecordAtAllDescription': "\ |
563 | <h5>Get started by adding cards to your account.</h5>\ | 563 | <h5>Get started by adding cards to your account.</h5>\ |
564 | <p>Cards are simple and flexible forms where you can store your passwords and any other confidential data.</p>\ | 564 | <p>Cards are simple and flexible forms where you can store your passwords and any other confidential data.</p>\ |
565 | <p>Cards could contain credentials for accessing a web site, the combination of your bicycle lock, details of your credit card, …</p>\ | 565 | <p>Cards could contain credentials for accessing a web site, the combination of your bicycle lock, details of your credit card, …</p>\ |
566 | \ | 566 | \ |
567 | <h5>Don't forget the Clipperz bookmarklet!</h5>\ | 567 | <h5>Don't forget the Clipperz bookmarklet!</h5>\ |
568 | <p>Before you start, install the “Add to Clipperz” bookmarklet: it will make creating cards easier and more fun.</p>\ | 568 | <p>Before you start, install the “Add to Clipperz” bookmarklet: it will make creating cards easier and more fun.</p>\ |
569 | <p>Go to the “Tools” tab to discover how to install it and how it use it.</p>\ | 569 | <p>Go to the “Tools” tab to discover how to install it and how it use it.</p>\ |
570 | <p></p>\ | 570 | <p></p>\ |
571 | <p>Then simply click the <b>\"Add new card\"</b> button and enjoy your Clipperz account.</p>\ | 571 | <p>Then simply click the <b>\"Add new card\"</b> button and enjoy your Clipperz account.</p>\ |
572 | <p></p>\ | 572 | <p></p>\ |
573 | <a href=\"http://www.clipperz.com/support/user_guide/managing_cards\" target=\"_blank\">Learn more about creating and managing cards</a>", | 573 | <a href=\"http://www.clipperz.com/support/user_guide/managing_cards\" target=\"_blank\">Learn more about creating and managing cards</a>", |
574 | 574 | ||
575 | // Cards block - new card wizard - bookmarklet configuration | 575 | // Cards block - new card wizard - bookmarklet configuration |
576 | 'newRecordWizardTitleBox': "\ | 576 | 'newRecordWizardTitleBox': "\ |
577 | <h5>Please select a template</h5>\ | 577 | <h5>Please select a template</h5>\ |
578 | <p>Cards are simple and flexible forms where you can store passwords or any other confidential data.</p>\ | 578 | <p>Cards are simple and flexible forms where you can store passwords or any other confidential data.</p>\ |
579 | <p>Start choosing one of the templates below. You can always customize your cards later by adding or removing fields.</p>", | 579 | <p>Start choosing one of the templates below. You can always customize your cards later by adding or removing fields.</p>", |
580 | 580 | ||
581 | 'newRecordWizardBookmarkletConfigurationTitle': "Direct login", | 581 | 'newRecordWizardBookmarkletConfigurationTitle': "Direct login", |
582 | 'newRecordWizardBookmarkletConfigurationDescription':"\ | 582 | 'newRecordWizardBookmarkletConfigurationDescription':"\ |
583 | <p>Paste below the configuration code generated by the Clipperz bookmarklet.</p>\ | 583 | <p>Paste below the configuration code generated by the Clipperz bookmarklet.</p>\ |
584 | <p>A new card complete with a direct login to your web account will be created.</p>", | 584 | <p>A new card complete with a direct login to your web account will be created.</p>", |
585 | 585 | ||
586 | 'newRecordWizardCreateButtonLabel': "Create", | 586 | 'newRecordWizardCreateButtonLabel': "Create", |
587 | 'newRecordWizardCancelButtonLabel': "Cancel", | 587 | 'newRecordWizardCancelButtonLabel': "Cancel", |
588 | 588 | ||
589 | //Create new card - Donation splash | 589 | //Create new card - Donation splash |
590 | 'donateSplashPanelTitle': "Support Clipperz, make a donation today!", | 590 | 'donateSplashPanelTitle': "Support Clipperz, make a donation today!", |
591 | 'donateSplashPanelDescription': "\ | 591 | 'donateSplashPanelDescription': "\ |
592 | <!-- FIX CSS DONE! -->\ | 592 | <!-- FIX CSS DONE! -->\ |
593 | <p>A few good reasons to make a donation:</p>\ | 593 | <p>A few good reasons to make a donation:</p>\ |
594 | <ul>\ | 594 | <ul>\ |
595 | <li><p>support the development of new features</p></li>\ | 595 | <li><p>support the development of new features</p></li>\ |
596 | <li><p>keep Clipperz free</p></li>\ | 596 | <li><p>keep Clipperz free</p></li>\ |
597 | <li><p>show appreciation for our hard work</p></li>\ | 597 | <li><p>show appreciation for our hard work</p></li>\ |
598 | </ul>\ | 598 | </ul>\ |
599 | <p>For any further information, please visit our <a href=\"http://www.clipperz.com/donations\" target=\"_blank\">Donations page</a>.</p>\ | 599 | <p>For any further information, please visit our <a href=\"http://www.clipperz.com/donations\" target=\"_blank\">Donations page</a>.</p>\ |
600 | <p><b>Ready to donate?</b></p>", | 600 | <p><b>Ready to donate?</b></p>", |
601 | 601 | ||
602 | 'donateCloseButtonLabel': "Not yet", | 602 | 'donateCloseButtonLabel': "Not yet", |
603 | 'donateDonateButtonLabel': "Yes", | 603 | 'donateDonateButtonLabel': "Yes", |
604 | 604 | ||
605 | // Card templates | 605 | // Card templates |
606 | 'recordTemplates': { | 606 | 'recordTemplates': { |
607 | 607 | ||
diff --git a/scripts/builder/repository.py b/scripts/builder/repository.py index a47e249..7ac2324 100644 --- a/scripts/builder/repository.py +++ b/scripts/builder/repository.py | |||
@@ -1,88 +1,97 @@ | |||
1 | #!/usr/bin/env python | 1 | #!/usr/bin/env python |
2 | # -*- coding: UTF-8 -*- | 2 | # -*- coding: UTF-8 -*- |
3 | 3 | ||
4 | 4 | ||
5 | def repositoryWithPath (path): | 5 | def repositoryWithPath (path): |
6 | try: | 6 | try: |
7 | from mercurial import ui, hg | 7 | from mercurial import ui, hg |
8 | 8 | ||
9 | repo = hg.repository(ui.ui(), path) | 9 | repo = hg.repository(ui.ui(), path) |
10 | result = HgRepository(repo, path) | 10 | result = HgRepository(repo, path) |
11 | except: | 11 | except: |
12 | try: | 12 | try: |
13 | from git import Repo | 13 | from git import Repo |
14 | |||
15 | repo = Repo(path) | 14 | repo = Repo(path) |
16 | result = GitRepository(repo, path) | 15 | result = GitRepository(repo, path) |
16 | |||
17 | except ImportError, exception: | 17 | except ImportError, exception: |
18 | print "Failed to import git, please install http://gitorious.org/git-python" | 18 | print "Failed to import git, please install http://gitorious.org/git-python" |
19 | raise exception | 19 | raise exception |
20 | except: | ||
21 | result = SnapshotRepository('', path) | ||
20 | 22 | ||
21 | 23 | ||
22 | return result | 24 | return result |
23 | 25 | ||
24 | 26 | ||
25 | #=================================================================== | 27 | #=================================================================== |
26 | 28 | ||
27 | 29 | ||
28 | class Repository(object): | 30 | class Repository(object): |
29 | 31 | ||
30 | def __init__ (self, repository, path): | 32 | def __init__ (self, repository, path): |
31 | self.repository = repository | 33 | self.repository = repository |
32 | self.path = path | 34 | self.path = path |
33 | 35 | ||
34 | 36 | ||
35 | def revision (self): | 37 | def revision (self): |
36 | raise NotImplementedError() | 38 | raise NotImplementedError() |
37 | 39 | ||
38 | 40 | ||
39 | def areTherePendingChanges (self): | 41 | def areTherePendingChanges (self): |
40 | raise NotImplementedError() | 42 | raise NotImplementedError() |
41 | 43 | ||
42 | 44 | ||
43 | def version (self): | 45 | def version (self): |
44 | result = self.revision() | 46 | result = self.revision() |
45 | if self.areTherePendingChanges(): | 47 | if self.areTherePendingChanges(): |
46 | result = '>>> ' + result + ' <<<' | 48 | result = '>>> ' + result + ' <<<' |
47 | 49 | ||
48 | # print "VERSION: " + result | 50 | # print "VERSION: " + result |
49 | return result | 51 | return result |
50 | 52 | ||
51 | 53 | ||
52 | #=================================================================== | 54 | #=================================================================== |
53 | 55 | ||
54 | 56 | ||
55 | class GitRepository(Repository): | 57 | class GitRepository(Repository): |
56 | #http://gitorious.org/git-python | 58 | #http://gitorious.org/git-python |
57 | 59 | ||
58 | def revision (self): | 60 | def revision (self): |
59 | try: | 61 | try: |
60 | return self.repository.head.commit.hexsha | 62 | return self.repository.head.commit.hexsha |
61 | except: | 63 | except: |
62 | return self.repository.commits()[0].id | 64 | return self.repository.commits()[0].id |
63 | 65 | ||
64 | 66 | ||
65 | def areTherePendingChanges (self): | 67 | def areTherePendingChanges (self): |
66 | try: | 68 | try: |
67 | return self.repository.is_dirty() | 69 | return self.repository.is_dirty() |
68 | except TypeError, te: | 70 | except TypeError, te: |
69 | return self.repository.is_dirty | 71 | return self.repository.is_dirty |
70 | 72 | ||
71 | 73 | ||
72 | 74 | ||
73 | #=================================================================== | 75 | #=================================================================== |
74 | 76 | ||
75 | 77 | ||
76 | class HgRepository(Repository): | 78 | class HgRepository(Repository): |
77 | #http://mercurial.selenic.com/wiki/MercurialApi | 79 | #http://mercurial.selenic.com/wiki/MercurialApi |
78 | 80 | ||
79 | def revision (self): | 81 | def revision (self): |
80 | return 'hg:' + str(self.repository['tip']) | 82 | return 'hg:' + str(self.repository['tip']) |
81 | 83 | ||
82 | 84 | ||
83 | def areTherePendingChanges (self): | 85 | def areTherePendingChanges (self): |
84 | # TODO: FIXME: repository.status() does not report 'unknown(?)' files. :( | 86 | # TODO: FIXME: repository.status() does not report 'unknown(?)' files. :( |
85 | return not all(map(lambda fileList: len(fileList) == 0, self.repository.status())) | 87 | return not all(map(lambda fileList: len(fileList) == 0, self.repository.status())) |
86 | 88 | ||
87 | 89 | ||
88 | #=================================================================== | 90 | #=================================================================== |
91 | |||
92 | class SnapshotRepository(Repository): | ||
93 | def revision (self): | ||
94 | return 'SNAPSHOT' | ||
95 | |||
96 | def areTherePendingChanges (self): | ||
97 | return False | ||