summaryrefslogtreecommitdiff
path: root/frontend/beta/js/Clipperz/PM/Components/RecordDetail/MainComponent.js
Unidiff
Diffstat (limited to 'frontend/beta/js/Clipperz/PM/Components/RecordDetail/MainComponent.js') (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/MainComponent.js22
1 files changed, 10 insertions, 12 deletions
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/MainComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/MainComponent.js
index d6a03d7..47ed3e6 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/MainComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/MainComponent.js
@@ -1,214 +1,212 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2013 Clipperz Srl
4 4
5This file is part of Clipperz Community Edition. 5This file is part of Clipperz, the online password manager.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please 6For further information about its features and functionalities please
8refer to http://www.clipperz.com. 7refer to http://www.clipperz.com.
9 8
10* Clipperz Community Edition is free software: you can redistribute 9* Clipperz is free software: you can redistribute it and/or modify it
11 it and/or modify it under the terms of the GNU Affero General Public 10 under the terms of the GNU Affero General Public License as published
12 License as published by the Free Software Foundation, either version 11 by the Free Software Foundation, either version 3 of the License, or
13 3 of the License, or (at your option) any later version. 12 (at your option) any later version.
14 13
15* Clipperz Community Edition is distributed in the hope that it will 14* Clipperz is distributed in the hope that it will be useful, but
16 be useful, but WITHOUT ANY WARRANTY; without even the implied 15 WITHOUT ANY WARRANTY; without even the implied warranty of
17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU Affero General Public License for more details. 17 See the GNU Affero General Public License for more details.
19 18
20* 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
21 License along with Clipperz Community Edition. If not, see 20 License along with Clipperz. If not, see http://www.gnu.org/licenses/.
22 <http://www.gnu.org/licenses/>.
23 21
24*/ 22*/
25 23
26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 24if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 25if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 26if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 27if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
30 28
31//############################################################################# 29//#############################################################################
32 30
33Clipperz.PM.Components.RecordDetail.MainComponent = function(anElement, args) { 31Clipperz.PM.Components.RecordDetail.MainComponent = function(anElement, args) {
34 args = args || {}; 32 args = args || {};
35 33
36 Clipperz.PM.Components.RecordDetail.MainComponent.superclass.constructor.call(this, anElement, args); 34 Clipperz.PM.Components.RecordDetail.MainComponent.superclass.constructor.call(this, anElement, args);
37 35
38 //this._element = args.element; 36 //this._element = args.element;
39 this._user = args.user; 37 this._user = args.user;
40 this._editMode = args.editMode || 'VIEW'; //[ 'VIEW' | 'EDIT' ] 38 this._editMode = args.editMode || 'VIEW'; //[ 'VIEW' | 'EDIT' ]
41 this._mainPanel = args.mainPanel; 39 this._mainPanel = args.mainPanel;
42 40
43 this._record = null; 41 this._record = null;
44 this._editComponents = []; 42 this._editComponents = [];
45 this._addFieldButton = null; 43 this._addFieldButton = null;
46 44
47 this._enableSaveButton = true; 45 this._enableSaveButton = true;
48 this._shouldShowLoginInfo = (Clipperz.PM.Proxy.defaultProxy.isReadOnly() ? false : true); 46 this._shouldShowLoginInfo = (Clipperz.PM.Proxy.defaultProxy.isReadOnly() ? false : true);
49 47
50 //this._mainLayoutManager = null; 48 //this._mainLayoutManager = null;
51 //this._layoutRegion = null; 49 //this._layoutRegion = null;
52 50
53 Clipperz.NotificationCenter.register(null, 'loadingRecordData', this, 'render'); 51 Clipperz.NotificationCenter.register(null, 'loadingRecordData', this, 'render');
54 Clipperz.NotificationCenter.register(null, 'decryptingRecordData', this, 'render'); 52 Clipperz.NotificationCenter.register(null, 'decryptingRecordData', this, 'render');
55 Clipperz.NotificationCenter.register(null, 'loadingRecordVersionData', this, 'render'); 53 Clipperz.NotificationCenter.register(null, 'loadingRecordVersionData', this, 'render');
56 Clipperz.NotificationCenter.register(null, 'decryptingRecordVersionData', this, 'render'); 54 Clipperz.NotificationCenter.register(null, 'decryptingRecordVersionData', this, 'render');
57 Clipperz.NotificationCenter.register(null, 'setupDone', this, 'render'); 55 Clipperz.NotificationCenter.register(null, 'setupDone', this, 'render');
58 Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'render'); 56 Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'render');
59 57
60 this.render(); 58 this.render();
61 59
62 return this; 60 return this;
63} 61}
64 62
65//============================================================================= 63//=============================================================================
66 64
67YAHOO.extendX(Clipperz.PM.Components.RecordDetail.MainComponent, Clipperz.PM.Components.BaseComponent, { 65YAHOO.extendX(Clipperz.PM.Components.RecordDetail.MainComponent, Clipperz.PM.Components.BaseComponent, {
68 66
69 'toString': function() { 67 'toString': function() {
70 return "Clipperz.PM.Components.RecordDetail.MainComponent component"; 68 return "Clipperz.PM.Components.RecordDetail.MainComponent component";
71 }, 69 },
72 70
73 //------------------------------------------------------------------------- 71 //-------------------------------------------------------------------------
74 72
75 'editMode': function() { 73 'editMode': function() {
76 return this._editMode; 74 return this._editMode;
77 }, 75 },
78 76
79 'setEditMode': function(aValue, aButtonElement, shouldSkipComponentSynchronization) { 77 'setEditMode': function(aValue, aButtonElement, shouldSkipComponentSynchronization) {
80//MochiKit.Logging.logDebug(">>> MainComponent.setEditingMode"); 78//MochiKit.Logging.logDebug(">>> MainComponent.setEditingMode");
81 this.scrollToTop(); 79 this.scrollToTop();
82 80
83 if (aValue == 'VIEW') { 81 if (aValue == 'VIEW') {
84 if (shouldSkipComponentSynchronization == true) { 82 if (shouldSkipComponentSynchronization == true) {
85 this.exitModalView(); 83 this.exitModalView();
86 } else { 84 } else {
87 this.synchronizeComponentValues(); 85 this.synchronizeComponentValues();
88 if (this.record().hasPendingChanges()) { 86 if (this.record().hasPendingChanges()) {
89 if (this.record().isBrandNew()) { 87 if (this.record().isBrandNew()) {
90 this.record().removeEmptyFields(); 88 this.record().removeEmptyFields();
91 } 89 }
92 this.saveCurrentRecordChanges(aButtonElement); 90 this.saveCurrentRecordChanges(aButtonElement);
93 } else { 91 } else {
94 if (this.record().isBrandNew()) { 92 if (this.record().isBrandNew()) {
95 this.record().user().removeRecord(this.record()); 93 this.record().user().removeRecord(this.record());
96 } 94 }
97 this.exitModalView(); 95 this.exitModalView();
98 } 96 }
99 } 97 }
100 } else if (aValue == 'EDIT') { 98 } else if (aValue == 'EDIT') {
101 this.enterModalView(); 99 this.enterModalView();
102 } else { 100 } else {
103 //???? 101 //????
104 } 102 }
105 103
106 this._editMode = aValue; 104 this._editMode = aValue;
107 this.render(); 105 this.render();
108 }, 106 },
109 107
110 //------------------------------------------------------------------------- 108 //-------------------------------------------------------------------------
111 109
112 'user': function() { 110 'user': function() {
113 return this._user; 111 return this._user;
114 }, 112 },
115 113
116 //------------------------------------------------------------------------- 114 //-------------------------------------------------------------------------
117 115
118 'mainPanel': function() { 116 'mainPanel': function() {
119 return this._mainPanel; 117 return this._mainPanel;
120 }, 118 },
121 119
122 //------------------------------------------------------------------------- 120 //-------------------------------------------------------------------------
123 121
124 'render': function() { 122 'render': function() {
125//MochiKit.Logging.logDebug(">>> RecordDetail.MainComponent.render"); 123//MochiKit.Logging.logDebug(">>> RecordDetail.MainComponent.render");
126 this.setEnableSaveButton(true); 124 this.setEnableSaveButton(true);
127 this.element().update(""); 125 this.element().update("");
128 126
129 if (this.record() == null) { 127 if (this.record() == null) {
130 if (MochiKit.Base.keys(this.user().records()).length == 0) { 128 if (MochiKit.Base.keys(this.user().records()).length == 0) {
131 this.renderWithNoRecordAtAll(); 129 this.renderWithNoRecordAtAll();
132 } else { 130 } else {
133 this.renderWithNoSelectedRecord(); 131 this.renderWithNoSelectedRecord();
134 } 132 }
135 } else { 133 } else {
136 this.renderWithSelectedRecord(); 134 this.renderWithSelectedRecord();
137 } 135 }
138//MochiKit.Logging.logDebug("<<< RecordDetail.MainComponent.render"); 136//MochiKit.Logging.logDebug("<<< RecordDetail.MainComponent.render");
139 }, 137 },
140 138
141 //------------------------------------------------------------------------- 139 //-------------------------------------------------------------------------
142 140
143 'renderWithNoRecordAtAll': function() { 141 'renderWithNoRecordAtAll': function() {
144//MochiKit.Logging.logDebug(">>> RecordDetail.MainComponent.renderWithNoRecordAtAll"); 142//MochiKit.Logging.logDebug(">>> RecordDetail.MainComponent.renderWithNoRecordAtAll");
145 Clipperz.YUI.DomHelper.append(this.element().dom, 143 Clipperz.YUI.DomHelper.append(this.element().dom,
146 {tag:'form', cls:'noRecordAtAllFORM', children:[ 144 {tag:'form', cls:'noRecordAtAllFORM', children:[
147 {tag:'div', cls:'recordTitleBlock', children:[ 145 {tag:'div', cls:'recordTitleBlock', children:[
148 {tag:'h2', id:'recordTitle', htmlString:Clipperz.PM.Strings['recordDetailNoRecordAtAllTitle']} 146 {tag:'h2', id:'recordTitle', htmlString:Clipperz.PM.Strings['recordDetailNoRecordAtAllTitle']}
149 ]}, 147 ]},
150 {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[ 148 {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[
151 {tag:'tbody', children:[ 149 {tag:'tbody', children:[
152 {tag:'tr', children:[ 150 {tag:'tr', children:[
153 {tag:'td', colspan:'5', children:[ 151 {tag:'td', colspan:'5', children:[
154 {tag:'div', cls:'recordDetailDescriptionBox', htmlString:Clipperz.PM.Strings['recordDetailNoRecordAtAllDescription']} 152 {tag:'div', cls:'recordDetailDescriptionBox', htmlString:Clipperz.PM.Strings['recordDetailNoRecordAtAllDescription']}
155 ]} 153 ]}
156 ]} 154 ]}
157 ]} 155 ]}
158 ]} 156 ]}
159 ]} 157 ]}
160 ); 158 );
161//MochiKit.Logging.logDebug("<<< RecordDetail.MainComponent.renderWithNoRecordAtAll"); 159//MochiKit.Logging.logDebug("<<< RecordDetail.MainComponent.renderWithNoRecordAtAll");
162 }, 160 },
163 161
164 //------------------------------------------------------------------------- 162 //-------------------------------------------------------------------------
165 163
166 'renderWithNoSelectedRecord': function() { 164 'renderWithNoSelectedRecord': function() {
167//MochiKit.Logging.logDebug(">>> RecordDetail.MainComponent.renderWithNoSelectedRecord"); 165//MochiKit.Logging.logDebug(">>> RecordDetail.MainComponent.renderWithNoSelectedRecord");
168 Clipperz.YUI.DomHelper.append(this.element().dom, 166 Clipperz.YUI.DomHelper.append(this.element().dom,
169 {tag:'form', cls:'noRecordSelectedFORM', children:[ 167 {tag:'form', cls:'noRecordSelectedFORM', children:[
170 {tag:'div', cls:'recordTitleBlock', children:[ 168 {tag:'div', cls:'recordTitleBlock', children:[
171 {tag:'h2', id:'recordTitle', htmlString:Clipperz.PM.Strings['recordDetailNoRecordSelectedTitle']} 169 {tag:'h2', id:'recordTitle', htmlString:Clipperz.PM.Strings['recordDetailNoRecordSelectedTitle']}
172 ]}, 170 ]},
173 {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[ 171 {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[
174 {tag:'tbody', children:[ 172 {tag:'tbody', children:[
175 {tag:'tr', children:[ 173 {tag:'tr', children:[
176 {tag:'td', colspan:'5', children:[ 174 {tag:'td', colspan:'5', children:[
177 {tag:'div', cls:'recordDetailDescriptionBox', htmlString:Clipperz.PM.Strings['recordDetailNoRecordSelectedDescription']} 175 {tag:'div', cls:'recordDetailDescriptionBox', htmlString:Clipperz.PM.Strings['recordDetailNoRecordSelectedDescription']}
178 ]} 176 ]}
179 ]}, 177 ]},
180 {tag:'tr', colspan:'5', children:[ 178 {tag:'tr', colspan:'5', children:[
181 {tag:'td', colspan:'5', children:this.loginInfo()} 179 {tag:'td', colspan:'5', children:this.loginInfo()}
182 ]} 180 ]}
183 ]} 181 ]}
184 ]} 182 ]}
185 ]} 183 ]}
186 ); 184 );
187//MochiKit.Logging.logDebug("--- RecordDetail.MainComponent.renderWithNoSelectedRecord - 1"); 185//MochiKit.Logging.logDebug("--- RecordDetail.MainComponent.renderWithNoSelectedRecord - 1");
188 186
189 if (MochiKit.DOM.getElement('fullLoginHistoryLink') != null) { 187 if (MochiKit.DOM.getElement('fullLoginHistoryLink') != null) {
190 MochiKit.Signal.connect('fullLoginHistoryLink', 'onclick', this, 'showLoginHistoryPanel'); 188 MochiKit.Signal.connect('fullLoginHistoryLink', 'onclick', this, 'showLoginHistoryPanel');
191 } 189 }
192//MochiKit.Logging.logDebug("--- RecordDetail.MainComponent.renderWithNoSelectedRecord - 2"); 190//MochiKit.Logging.logDebug("--- RecordDetail.MainComponent.renderWithNoSelectedRecord - 2");
193 191
194 if (MochiKit.DOM.getElement('offlineCopyDownloadWarningLink') != null) { 192 if (MochiKit.DOM.getElement('offlineCopyDownloadWarningLink') != null) {
195 MochiKit.Signal.connect('offlineCopyDownloadWarningLink', 'onclick', this, 'showDownloadOfflineCopyPanel'); 193 MochiKit.Signal.connect('offlineCopyDownloadWarningLink', 'onclick', this, 'showDownloadOfflineCopyPanel');
196 } 194 }
197//MochiKit.Logging.logDebug("<<< RecordDetail.MainComponent.renderWithNoSelectedRecord"); 195//MochiKit.Logging.logDebug("<<< RecordDetail.MainComponent.renderWithNoSelectedRecord");
198 }, 196 },
199 197
200 //------------------------------------------------------------------------- 198 //-------------------------------------------------------------------------
201 199
202 'renderWithSelectedRecord': function() { 200 'renderWithSelectedRecord': function() {
203//MochiKit.Logging.logDebug(">>> RecordDetail.MainComponent.renderWithSelectedRecord"); 201//MochiKit.Logging.logDebug(">>> RecordDetail.MainComponent.renderWithSelectedRecord");
204 if (this.record().shouldLoadData() === true) { 202 if (this.record().shouldLoadData() === true) {
205 // this.renderWithSelectedRecordLoading(); 203 // this.renderWithSelectedRecordLoading();
206//MochiKit.Logging.logDebug("--- RecordDetail.MainComponent.renderWithSelectedRecord - 1.1"); 204//MochiKit.Logging.logDebug("--- RecordDetail.MainComponent.renderWithSelectedRecord - 1.1");
207 this.renderWhileProcessingWithMessage(Clipperz.PM.Strings['recordDetailLoadingRecordMessage']); 205 this.renderWhileProcessingWithMessage(Clipperz.PM.Strings['recordDetailLoadingRecordMessage']);
208//MochiKit.Logging.logDebug("--- RecordDetail.MainComponent.renderWithSelectedRecord - 1.2"); 206//MochiKit.Logging.logDebug("--- RecordDetail.MainComponent.renderWithSelectedRecord - 1.2");
209 } else if (this.record().shouldDecryptData() === true) { 207 } else if (this.record().shouldDecryptData() === true) {
210 // this.renderWithSelectedRecordDecrypting(); 208 // this.renderWithSelectedRecordDecrypting();
211//MochiKit.Logging.logDebug("--- RecordDetail.MainComponent.renderWithSelectedRecord - 2.1"); 209//MochiKit.Logging.logDebug("--- RecordDetail.MainComponent.renderWithSelectedRecord - 2.1");
212 this.renderWhileProcessingWithMessage(Clipperz.PM.Strings['recordDetailDecryptingRecordMessage']); 210 this.renderWhileProcessingWithMessage(Clipperz.PM.Strings['recordDetailDecryptingRecordMessage']);
213//MochiKit.Logging.logDebug("--- RecordDetail.MainComponent.renderWithSelectedRecord - 2.2"); 211//MochiKit.Logging.logDebug("--- RecordDetail.MainComponent.renderWithSelectedRecord - 2.2");
214 } else if (this.record().currentVersion().shouldLoadData() === true) { 212 } else if (this.record().currentVersion().shouldLoadData() === true) {