summaryrefslogtreecommitdiff
path: root/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.Field.js
Unidiff
Diffstat (limited to 'frontend/delta/js/Clipperz/PM/DataModel/Record.Version.Field.js') (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/delta/js/Clipperz/PM/DataModel/Record.Version.Field.js186
1 files changed, 186 insertions, 0 deletions
diff --git a/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.Field.js b/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.Field.js
new file mode 100644
index 0000000..01e7196
--- a/dev/null
+++ b/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.Field.js
@@ -0,0 +1,186 @@
1/*
2
3Copyright 2008-2013 Clipperz Srl
4
5This file is part of Clipperz, the online password manager.
6For further information about its features and functionalities please
7refer to http://www.clipperz.com.
8
9* Clipperz is free software: you can redistribute it and/or modify it
10 under the terms of the GNU Affero General Public License as published
11 by the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13
14* Clipperz is distributed in the hope that it will be useful, but
15 WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 See the GNU Affero General Public License for more details.
18
19* You should have received a copy of the GNU Affero General Public
20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
21
22*/
23
24try { if (typeof(Clipperz.PM.DataModel.Record.Version) == 'undefined') { throw ""; }} catch (e) {
25 throw "Clipperz.PM.DataModel.Record.Version.Field depends on Clipperz.PM.DataModel.Record.Version!";
26}
27
28Clipperz.PM.DataModel.Record.Version.Field = function(args) {
29 Clipperz.PM.DataModel.Record.Version.Field.superclass.constructor.apply(this, arguments);
30
31 this._recordVersion = args.recordVersion|| Clipperz.Base.exception.raise('MandatoryParameter');
32 this._reference = args.reference || Clipperz.PM.Crypto.randomKey();
33
34 return this;
35}
36
37
38Clipperz.Base.extend(Clipperz.PM.DataModel.Record.Version.Field, Object, {
39
40 'toString': function() {
41 return "Record.Version.Field (" + this.reference() + ")";
42 },
43
44 //-------------------------------------------------------------------------
45
46 'recordVersion': function () {
47 return this._recordVersion;
48 },
49
50 //-------------------------------------------------------------------------
51
52 'reference': function () {
53 return this._reference;
54 },
55
56 //-------------------------------------------------------------------------
57
58 'getItem': function (aKey) {
59 return Clipperz.Async.callbacks("Clipperz.PM.DataModel.Record.Version.Field.getItem", [
60 MochiKit.Base.method(this, 'recordVersion'),
61 MochiKit.Base.methodcaller('getValue', 'fields' + '.' + this.reference() + '.' + aKey)
62 ], {trace:false});
63 },
64
65 'setItem': function (aKey, aValue) {
66 return Clipperz.Async.callbacks("Clipperz.PM.DataModel.Record.Version.Field.getItem", [
67 MochiKit.Base.method(this, 'recordVersion'),
68 MochiKit.Base.methodcaller('setValue', 'fields' + '.' + this.reference() + '.' + aKey, aValue)
69 ], {trace:false});
70 },
71
72 //-------------------------------------------------------------------------
73
74 'label': function () {
75 return this.getItem('label');
76 },
77
78 'setLabel': function (aValue) {
79 return this.setItem('label', aValue);
80 },
81
82 //-------------------------------------------------------------------------
83
84 'value': function () {
85 return this.getItem('value');
86 },
87
88 'setValue': function (aValue) {
89 return this.setItem('value', aValue);
90 },
91
92 //-------------------------------------------------------------------------
93
94 'actionType': function () {
95 return Clipperz.Async.callbacks("Clipperz.PM.DataModel.Record.Version.Field.actionType", [
96 Clipperz.Async.collectResults("Clipperz.PM.DataModel.Record.Version.Field.actionType [collect results]", {
97 'isHidden':MochiKit.Base.method(this, 'isHidden'),
98 'value':MochiKit.Base.method(this, 'value')
99 }, {trace:false}),
100 function (someValues) {
101 var result; //'NONE', 'URL', 'EMAIL', 'PASSWORD'
102
103 result = 'NONE';
104
105 if (someValues['isHidden']) {
106 result = 'PASSWORD';
107 } else if (Clipperz.Base.isUrl(someValues['value'])) {
108 result = 'URL'
109 } else if (Clipperz.Base.isEmail(someValues['value'])) {
110 result = 'EMAIL'
111 };
112
113 return result;
114 }
115 ], {trace:false});
116 },
117
118 //-------------------------------------------------------------------------
119
120 'isHidden': function () {
121 return this.getItem('hidden');
122 },
123
124 'setIsHidden': function (aValue) {
125 return this.setItem('hidden', aValue);
126 },
127
128 //-------------------------------------------------------------------------
129
130 'isEmpty': function () {
131 var deferredResult;
132
133 deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.Record.Version.Field.isEmpty", {trace:false});
134
135 deferredResult.collectResults({
136 'label': [
137 MochiKit.Base.method(this, 'label'),
138 MochiKit.Base.partial(MochiKit.Base.operator.eq, '')
139 ],
140 'value': [
141 MochiKit.Base.method(this, 'value'),
142 MochiKit.Base.partial(MochiKit.Base.operator.eq, '')
143 ],
144 'isHidden': [
145 MochiKit.Base.method(this, 'isHidden'),
146 MochiKit.Base.partial(MochiKit.Base.operator.eq, false)
147 ]
148 });
149 deferredResult.addCallback(MochiKit.Base.values);
150 deferredResult.addCallback(function(someValues) {
151 return MochiKit.Iter.every(someValues, MochiKit.Base.operator.identity);
152 });
153 deferredResult.callback();
154
155 return deferredResult;
156 },
157
158 //-------------------------------------------------------------------------
159
160 'content': function () {
161 var deferredResult;
162 varfieldValues;
163
164 fieldValues = {};
165 deferredResult = new Clipperz.Async.Deferred("Record.Version.Field.content", {trace:false});
166 deferredResult.addMethod(this, 'reference');
167 deferredResult.addCallback(function (aValue) { fieldValues['reference'] = aValue; });
168 deferredResult.addMethod(this, 'label');
169 deferredResult.addCallback(function (aValue) { fieldValues['label'] = aValue; });
170 deferredResult.addMethod(this, 'value');
171 deferredResult.addCallback(function (aValue) { fieldValues['value'] = aValue; });
172 deferredResult.addMethod(this, 'actionType');
173 deferredResult.addCallback(function (aValue) { fieldValues['actionType'] = aValue; });
174 deferredResult.addMethod(this, 'isHidden');
175 deferredResult.addCallback(function (aValue) { fieldValues['isHidden'] = aValue; });
176 deferredResult.addCallback(function () { return fieldValues; });
177 deferredResult.callback();
178
179 return deferredResult;
180 },
181
182 //-------------------------------------------------------------------------
183 __syntaxFix__: "syntax fix"
184});
185
186