Diffstat (limited to 'frontend/beta/js/Clipperz/PM/Components/RecordDetail/NotesComponent.js') (more/less context) (ignore whitespace changes)
-rw-r--r-- | frontend/beta/js/Clipperz/PM/Components/RecordDetail/NotesComponent.js | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/NotesComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/NotesComponent.js index 2066543..bb23e8d 100644 --- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/NotesComponent.js +++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/NotesComponent.js | |||
@@ -1,214 +1,212 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2013 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz, the online password manager. |
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | 6 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 7 | refer 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 | ||
26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | 24 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } |
27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } | 25 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } |
28 | if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } | 26 | if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } |
29 | if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } | 27 | if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } |
30 | 28 | ||
31 | //############################################################################# | 29 | //############################################################################# |
32 | 30 | ||
33 | 31 | ||
34 | 32 | ||
35 | Clipperz.PM.Components.RecordDetail.NotesComponent = function(anElement, args) { | 33 | Clipperz.PM.Components.RecordDetail.NotesComponent = function(anElement, args) { |
36 | //MochiKit.Logging.logDebug(">>> new NotesComponent"); | 34 | //MochiKit.Logging.logDebug(">>> new NotesComponent"); |
37 | args = args || {}; | 35 | args = args || {}; |
38 | 36 | ||
39 | Clipperz.PM.Components.RecordDetail.NotesComponent.superclass.constructor.call(this, anElement, args); | 37 | Clipperz.PM.Components.RecordDetail.NotesComponent.superclass.constructor.call(this, anElement, args); |
40 | 38 | ||
41 | this.mainComponent().addEditComponent(this); | 39 | this.mainComponent().addEditComponent(this); |
42 | 40 | ||
43 | this._staticOffset = null; | 41 | this._staticOffset = null; |
44 | this._componentHeight = 50; | 42 | this._componentHeight = 50; |
45 | this._mouseMoveIdentifier = null; | 43 | this._mouseMoveIdentifier = null; |
46 | this._mouseUpIdentifier = null; | 44 | this._mouseUpIdentifier = null; |
47 | 45 | ||
48 | this.element().setVisibilityMode(YAHOO.ext.Element.DISPLAY); | 46 | this.element().setVisibilityMode(YAHOO.ext.Element.DISPLAY); |
49 | 47 | ||
50 | this.render(); | 48 | this.render(); |
51 | //MochiKit.Logging.logDebug("<<< new NotesComponent"); | 49 | //MochiKit.Logging.logDebug("<<< new NotesComponent"); |
52 | 50 | ||
53 | return this; | 51 | return this; |
54 | } | 52 | } |
55 | 53 | ||
56 | //============================================================================= | 54 | //============================================================================= |
57 | 55 | ||
58 | YAHOO.extendX(Clipperz.PM.Components.RecordDetail.NotesComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, { | 56 | YAHOO.extendX(Clipperz.PM.Components.RecordDetail.NotesComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, { |
59 | 57 | ||
60 | 'toString': function() { | 58 | 'toString': function() { |
61 | return "Clipperz.PM.Components.RecordDetail.NotesComponent component"; | 59 | return "Clipperz.PM.Components.RecordDetail.NotesComponent component"; |
62 | }, | 60 | }, |
63 | 61 | ||
64 | //------------------------------------------------------------------------- | 62 | //------------------------------------------------------------------------- |
65 | 63 | ||
66 | 'value': function() { | 64 | 'value': function() { |
67 | return this.record().notes(); | 65 | return this.record().notes(); |
68 | }, | 66 | }, |
69 | 67 | ||
70 | 'setValue': function(aValue) { | 68 | 'setValue': function(aValue) { |
71 | this.record().setNotes(aValue); | 69 | this.record().setNotes(aValue); |
72 | }, | 70 | }, |
73 | 71 | ||
74 | //------------------------------------------------------------------------- | 72 | //------------------------------------------------------------------------- |
75 | 73 | ||
76 | 'render': function() { | 74 | 'render': function() { |
77 | //MochiKit.Logging.logDebug(">>> NotesComponent.render"); | 75 | //MochiKit.Logging.logDebug(">>> NotesComponent.render"); |
78 | /* | 76 | /* |
79 | Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', colspan:'5', children:[ | 77 | Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', colspan:'5', children:[ |
80 | {tag:'span', cls:'noteFieldLabel', htmlString:Clipperz.PM.Strings['recordDetailNotesLabel']}, | 78 | {tag:'span', cls:'noteFieldLabel', htmlString:Clipperz.PM.Strings['recordDetailNotesLabel']}, |
81 | {tag:'div', cls:'noteFieldContent', id:this.getId('notes')} | 79 | {tag:'div', cls:'noteFieldContent', id:this.getId('notes')} |
82 | ]}); | 80 | ]}); |
83 | */ | 81 | */ |
84 | Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'span', cls:'noteFieldLabel', htmlString:Clipperz.PM.Strings['recordDetailNotesLabel']}); | 82 | Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'span', cls:'noteFieldLabel', htmlString:Clipperz.PM.Strings['recordDetailNotesLabel']}); |
85 | Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', cls:'noteFieldContent', id:this.getId('notes'), children:[ | 83 | Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', cls:'noteFieldContent', id:this.getId('notes'), children:[ |
86 | {tag:'div', id:this.getId('resizableDiv'), cls:'resizable-textarea', children:[ | 84 | {tag:'div', id:this.getId('resizableDiv'), cls:'resizable-textarea', children:[ |
87 | {tag:'div', id:this.getId('contentView'), cls:'viewMode', html:""}, | 85 | {tag:'div', id:this.getId('contentView'), cls:'viewMode', html:""}, |
88 | {tag:'div', id:this.getId('contentEdit'), children:[ | 86 | {tag:'div', id:this.getId('contentEdit'), children:[ |
89 | {tag:'span', children:[ | 87 | {tag:'span', children:[ |
90 | {tag:'textarea', id:this.getId('textarea'), html:""} | 88 | {tag:'textarea', id:this.getId('textarea'), html:""} |
91 | ]} | 89 | ]} |
92 | ]}, | 90 | ]}, |
93 | {tag:'div', id:this.getId('grippie'), cls:'grippie'} | 91 | {tag:'div', id:this.getId('grippie'), cls:'grippie'} |
94 | ]} | 92 | ]} |
95 | ]}); | 93 | ]}); |
96 | 94 | ||
97 | this.getElement('contentView').setVisibilityMode(YAHOO.ext.Element.DISPLAY); | 95 | this.getElement('contentView').setVisibilityMode(YAHOO.ext.Element.DISPLAY); |
98 | this.getElement('contentEdit').setVisibilityMode(YAHOO.ext.Element.DISPLAY); | 96 | this.getElement('contentEdit').setVisibilityMode(YAHOO.ext.Element.DISPLAY); |
99 | 97 | ||
100 | MochiKit.Signal.connect(this.getId('grippie'), 'onmousedown', this, 'startResize'); | 98 | MochiKit.Signal.connect(this.getId('grippie'), 'onmousedown', this, 'startResize'); |
101 | 99 | ||
102 | this.update(); | 100 | this.update(); |
103 | //MochiKit.Logging.logDebug("<<< NotesComponent.render"); | 101 | //MochiKit.Logging.logDebug("<<< NotesComponent.render"); |
104 | }, | 102 | }, |
105 | 103 | ||
106 | //------------------------------------------------------------------------- | 104 | //------------------------------------------------------------------------- |
107 | 105 | ||
108 | 'updateViewMode': function() { | 106 | 'updateViewMode': function() { |
109 | //MochiKit.Logging.logDebug(">>> NotesComponent.updateViewMode"); | 107 | //MochiKit.Logging.logDebug(">>> NotesComponent.updateViewMode"); |
110 | // this.getElement('notes').update(this.value().replace(/\n/g, '<br>')); | 108 | // this.getElement('notes').update(this.value().replace(/\n/g, '<br>')); |
111 | 109 | ||
112 | this.getElement('contentView').update(Clipperz.Base.sanitizeString(this.value()).replace(/\n/g, '<br>')); | 110 | this.getElement('contentView').update(Clipperz.Base.sanitizeString(this.value()).replace(/\n/g, '<br>')); |
113 | 111 | ||
114 | if (this.isNoteEmpty()) { | 112 | if (this.isNoteEmpty()) { |
115 | this.element().hide(); | 113 | this.element().hide(); |
116 | } else { | 114 | } else { |
117 | this.getElement('contentView').show(); | 115 | this.getElement('contentView').show(); |
118 | this.getElement('contentView').setHeight(this.componentHeight()); | 116 | this.getElement('contentView').setHeight(this.componentHeight()); |
119 | } | 117 | } |
120 | this.getElement('contentEdit').hide(); | 118 | this.getElement('contentEdit').hide(); |
121 | 119 | ||
122 | //MochiKit.Logging.logDebug("<<< NotesComponent.updateViewMode"); | 120 | //MochiKit.Logging.logDebug("<<< NotesComponent.updateViewMode"); |
123 | }, | 121 | }, |
124 | 122 | ||
125 | //------------------------------------------------------------------------- | 123 | //------------------------------------------------------------------------- |
126 | 124 | ||
127 | 'updateEditMode': function() { | 125 | 'updateEditMode': function() { |
128 | //MochiKit.Logging.logDebug(">>> NotesComponent.updateEditMode"); | 126 | //MochiKit.Logging.logDebug(">>> NotesComponent.updateEditMode"); |
129 | this.getDom('textarea').value = this.value().replace(/\n/g, Clipperz_normalizedNewLine); | 127 | this.getDom('textarea').value = this.value().replace(/\n/g, Clipperz_normalizedNewLine); |
130 | 128 | ||
131 | this.getElement('contentView').hide(); | 129 | this.getElement('contentView').hide(); |
132 | this.getElement('contentEdit').show(); | 130 | this.getElement('contentEdit').show(); |
133 | 131 | ||
134 | this.getElement('textarea').setHeight(this.componentHeight()); | 132 | this.getElement('textarea').setHeight(this.componentHeight()); |
135 | //MochiKit.Logging.logDebug("<<< NotesComponent.updateEditMode"); | 133 | //MochiKit.Logging.logDebug("<<< NotesComponent.updateEditMode"); |
136 | }, | 134 | }, |
137 | 135 | ||
138 | //------------------------------------------------------------------------- | 136 | //------------------------------------------------------------------------- |
139 | 137 | ||
140 | 'synchronizeComponentValues': function() { | 138 | 'synchronizeComponentValues': function() { |
141 | //MochiKit.Logging.logDebug(">>> NotesComponent.synchronizeComponentValues"); | 139 | //MochiKit.Logging.logDebug(">>> NotesComponent.synchronizeComponentValues"); |
142 | if (this.getElement('textarea') != null) { | 140 | if (this.getElement('textarea') != null) { |
143 | this.setValue(this.getDom('textarea').value.replace(/(\x0a\x0d|\x0d\x0a)/g,'\n')); | 141 | this.setValue(this.getDom('textarea').value.replace(/(\x0a\x0d|\x0d\x0a)/g,'\n')); |
144 | } | 142 | } |
145 | //MochiKit.Logging.logDebug("<<< NotesComponent.synchronizeComponentValues"); | 143 | //MochiKit.Logging.logDebug("<<< NotesComponent.synchronizeComponentValues"); |
146 | }, | 144 | }, |
147 | 145 | ||
148 | //------------------------------------------------------------------------- | 146 | //------------------------------------------------------------------------- |
149 | 147 | ||
150 | 'componentHeight': function() { | 148 | 'componentHeight': function() { |
151 | return this._componentHeight; | 149 | return this._componentHeight; |
152 | }, | 150 | }, |
153 | 151 | ||
154 | 'setComponentHeight': function(aValue) { | 152 | 'setComponentHeight': function(aValue) { |
155 | this._componentHeight = aValue; | 153 | this._componentHeight = aValue; |
156 | }, | 154 | }, |
157 | 155 | ||
158 | //------------------------------------------------------------------------- | 156 | //------------------------------------------------------------------------- |
159 | 157 | ||
160 | 'isNoteEmpty': function() { | 158 | 'isNoteEmpty': function() { |
161 | return !/[^ \n]/.test(this.value()); | 159 | return !/[^ \n]/.test(this.value()); |
162 | }, | 160 | }, |
163 | 161 | ||
164 | //------------------------------------------------------------------------- | 162 | //------------------------------------------------------------------------- |
165 | 163 | ||
166 | 'staticOffset': function() { | 164 | 'staticOffset': function() { |
167 | return this._staticOffset; | 165 | return this._staticOffset; |
168 | }, | 166 | }, |
169 | 167 | ||
170 | 'setStaticOffset': function(aValue) { | 168 | 'setStaticOffset': function(aValue) { |
171 | this._staticOffset = aValue; | 169 | this._staticOffset = aValue; |
172 | }, | 170 | }, |
173 | 171 | ||
174 | //------------------------------------------------------------------------- | 172 | //------------------------------------------------------------------------- |
175 | 173 | ||
176 | 'startResize': function(anEvent) { | 174 | 'startResize': function(anEvent) { |
177 | //MochiKit.Logging.logDebug(">>> startResize"); | 175 | //MochiKit.Logging.logDebug(">>> startResize"); |
178 | if (this.editMode() == 'VIEW') { | 176 | if (this.editMode() == 'VIEW') { |
179 | this.setStaticOffset(this.getElement('contentView').getHeight() - anEvent.mouse().page['y']) | 177 | this.setStaticOffset(this.getElement('contentView').getHeight() - anEvent.mouse().page['y']) |
180 | } else { | 178 | } else { |
181 | this.setStaticOffset(this.getElement('textarea').getHeight() - anEvent.mouse().page['y']) | 179 | this.setStaticOffset(this.getElement('textarea').getHeight() - anEvent.mouse().page['y']) |
182 | // this.getElement('textarea').setStyle('opacity', 0.25); | 180 | // this.getElement('textarea').setStyle('opacity', 0.25); |
183 | } | 181 | } |
184 | this.setMouseMoveIdentifier(MochiKit.Signal.connect(MochiKit.DOM.currentDocument(), 'onmousemove', this, 'whileResizing')); | 182 | this.setMouseMoveIdentifier(MochiKit.Signal.connect(MochiKit.DOM.currentDocument(), 'onmousemove', this, 'whileResizing')); |
185 | this.setMouseUpIdentifier(MochiKit.Signal.connect(MochiKit.DOM.currentDocument(), 'onmouseup', this, 'endResize')); | 183 | this.setMouseUpIdentifier(MochiKit.Signal.connect(MochiKit.DOM.currentDocument(), 'onmouseup', this, 'endResize')); |
186 | anEvent.stop(); | 184 | anEvent.stop(); |
187 | //MochiKit.Logging.logDebug("<<< startResize"); | 185 | //MochiKit.Logging.logDebug("<<< startResize"); |
188 | }, | 186 | }, |
189 | 187 | ||
190 | //------------------------------------------------------------------------- | 188 | //------------------------------------------------------------------------- |
191 | 189 | ||
192 | 'whileResizing': function(anEvent) { | 190 | 'whileResizing': function(anEvent) { |
193 | //MochiKit.Logging.logDebug(">>> whileResizing"); | 191 | //MochiKit.Logging.logDebug(">>> whileResizing"); |
194 | this.getElement('textarea').setHeight(Math.max(32, this.staticOffset() + anEvent.mouse().page['y']) + 'px'); | 192 | this.getElement('textarea').setHeight(Math.max(32, this.staticOffset() + anEvent.mouse().page['y']) + 'px'); |
195 | this.getElement('contentView').setHeight(Math.max(32, this.staticOffset() + anEvent.mouse().page['y']) + 'px'); | 193 | this.getElement('contentView').setHeight(Math.max(32, this.staticOffset() + anEvent.mouse().page['y']) + 'px'); |
196 | anEvent.stop(); | 194 | anEvent.stop(); |
197 | //MochiKit.Logging.logDebug("<<< whileResizing"); | 195 | //MochiKit.Logging.logDebug("<<< whileResizing"); |
198 | }, | 196 | }, |
199 | 197 | ||
200 | //------------------------------------------------------------------------- | 198 | //------------------------------------------------------------------------- |
201 | 199 | ||
202 | 'endResize': function(anEvent) { | 200 | 'endResize': function(anEvent) { |
203 | //MochiKit.Logging.logDebug(">>> endResize"); | 201 | //MochiKit.Logging.logDebug(">>> endResize"); |
204 | MochiKit.Signal.disconnect(this.mouseMoveIdentifier()); | 202 | MochiKit.Signal.disconnect(this.mouseMoveIdentifier()); |
205 | this.setMouseMoveIdentifier(null); | 203 | this.setMouseMoveIdentifier(null); |
206 | MochiKit.Signal.disconnect(this.mouseUpIdentifier()); | 204 | MochiKit.Signal.disconnect(this.mouseUpIdentifier()); |
207 | this.setMouseUpIdentifier(null); | 205 | this.setMouseUpIdentifier(null); |
208 | // this.getElement('textarea').setStyle('opacity', 1); | 206 | // this.getElement('textarea').setStyle('opacity', 1); |
209 | 207 | ||
210 | this.setComponentHeight(this.getElement('textarea').getHeight()); | 208 | this.setComponentHeight(this.getElement('textarea').getHeight()); |
211 | //MochiKit.Logging.logDebug("<<< endResize"); | 209 | //MochiKit.Logging.logDebug("<<< endResize"); |
212 | }, | 210 | }, |
213 | 211 | ||
214 | //------------------------------------------------------------------------- | 212 | //------------------------------------------------------------------------- |