lipsiadmin 5.1.1 → 5.1.2
Sign up to get free protection for your applications and to get access to all the features.
data/lib/version.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# If you translate this other language or have something to fix please send me an email at: d.dagostino@lipsiasoft.com
|
2
1
|
en:
|
3
2
|
backend:
|
4
3
|
tabs:
|
@@ -14,7 +13,7 @@ en:
|
|
14
13
|
of: "of"
|
15
14
|
sessions:
|
16
15
|
wrong: "Wrong email or password"
|
17
|
-
logout: "
|
16
|
+
logout: "Successfully Logged Out"
|
18
17
|
menus:
|
19
18
|
account: "Account"
|
20
19
|
list: "List"
|
@@ -43,15 +42,15 @@ en:
|
|
43
42
|
send: "Send"
|
44
43
|
help:
|
45
44
|
title: "Support request"
|
46
|
-
description: "
|
47
|
-
compliments: "Your request was
|
45
|
+
description: "Tell us the problem you have and how we can reproduce it."
|
46
|
+
compliments: "Your request was delivered successfully."
|
48
47
|
labels:
|
49
48
|
all: "All "
|
50
49
|
search: "Search"
|
51
50
|
messages:
|
52
51
|
compliments:
|
53
52
|
title: "Congratulations"
|
54
|
-
message: "Your data
|
53
|
+
message: "Your data was saved successfully."
|
55
54
|
wait:
|
56
55
|
title: "Sending Data"
|
57
56
|
message: "Sending data to servers..."
|
@@ -60,8 +59,8 @@ en:
|
|
60
59
|
message: "Are you sure to destroy {0} element/s ?"
|
61
60
|
alert:
|
62
61
|
title: "Attention"
|
63
|
-
message: "There are some connection issues.<br />Contact
|
64
|
-
notConfigured: "This
|
62
|
+
message: "There are some connection issues.<br />Contact technical support."
|
63
|
+
notConfigured: "This feature is not ready yet.<br />Contact technical support."
|
65
64
|
notSelected: "You must select at least one record"
|
66
65
|
|
67
66
|
emails:
|
@@ -70,7 +69,7 @@ en:
|
|
70
69
|
body: "Hello {{name}},\nyour account has been activated.\n\nYou can login with the following email/password:\n\n- Email: {{email}}\n- Password: {{password}}\n\nusing the following url: {{url}}"
|
71
70
|
support:
|
72
71
|
object: "Support Request"
|
73
|
-
footer: "\n---------------------------\
|
72
|
+
footer: "\n---------------------------\nThank you,\nLipsiaSoft s.r.l."
|
74
73
|
|
75
74
|
print:
|
76
75
|
footer:
|
@@ -0,0 +1,790 @@
|
|
1
|
+
/**
|
2
|
+
* @class Ext.SwfUploadPanel
|
3
|
+
* @extends Ext.grid.GridPanel
|
4
|
+
|
5
|
+
* Makes a Panel to provide the ability to upload multiple files using the SwfUpload flash script.
|
6
|
+
*
|
7
|
+
* @author Stephan Wentz
|
8
|
+
* @author Michael Giddens (Original author)
|
9
|
+
* @website http://www.brainbits.net
|
10
|
+
* @created 2008-02-26
|
11
|
+
* @version 0.5
|
12
|
+
*
|
13
|
+
* known_issues
|
14
|
+
* - Progress bar used hardcoded width. Not sure how to make 100% in bbar
|
15
|
+
* - Panel requires width / height to be set. Not sure why it will not fit
|
16
|
+
* - when panel is nested sometimes the column model is not always shown to fit until a file is added. Render order issue.
|
17
|
+
*
|
18
|
+
* @constructor
|
19
|
+
* @param {Object} config The config object
|
20
|
+
*/
|
21
|
+
Ext.SwfUploadPanel = Ext.extend(Ext.grid.GridPanel, {
|
22
|
+
|
23
|
+
/**
|
24
|
+
* @cfg {Object} strings
|
25
|
+
* All strings used by Ext.SwfUploadPanel
|
26
|
+
*/
|
27
|
+
strings: {
|
28
|
+
text_add: 'Add File(s)',
|
29
|
+
text_upload: 'Upload File(s)',
|
30
|
+
text_cancel: 'Cancel Upload',
|
31
|
+
text_clear: 'Clear Queue',
|
32
|
+
text_progressbar: 'Progress Bar',
|
33
|
+
text_remove: 'Remove File',
|
34
|
+
text_remove_sure: 'Are you sure you wish to remove this file from queue?',
|
35
|
+
text_error: 'Error',
|
36
|
+
text_uploading: 'Uploading file: {0} ({1} of {2})',
|
37
|
+
header_filename: 'Filename',
|
38
|
+
header_size: 'Size',
|
39
|
+
header_status: 'Status',
|
40
|
+
status: {
|
41
|
+
0: 'Queued',
|
42
|
+
1: 'Uploading...',
|
43
|
+
2: 'Completed',
|
44
|
+
3: 'Error',
|
45
|
+
4: 'Cancelled'
|
46
|
+
},
|
47
|
+
error_queue_exceeded: 'The selected file(s) exceed(s) the maximum number of {0} queued files.',
|
48
|
+
error_queue_slots_0: 'There is no slot left',
|
49
|
+
error_queue_slots_1: 'There is only one slot left',
|
50
|
+
error_queue_slots_2: 'There are only {0} slots left',
|
51
|
+
error_size_exceeded: 'The selected files size exceeds the allowed limit of 1 MB.',
|
52
|
+
error_zero_byte_file: 'Zero byte file selected.',
|
53
|
+
error_invalid_filetype: 'Invalid filetype selected.',
|
54
|
+
error_file_not_found: 'File not found 404.',
|
55
|
+
error_security_error: 'Security Error. Not allowed to post to different url.'
|
56
|
+
},
|
57
|
+
|
58
|
+
/**
|
59
|
+
* @cfg {Boolean} single_select
|
60
|
+
* false to allow multiple file selections, true for single file selection.
|
61
|
+
* Please note that this doesn't affect the number of allowed files in the queue.
|
62
|
+
* Use the {@link #file_queue_limit} parameter to change the allowed number of files in the queue.
|
63
|
+
*/
|
64
|
+
single_select: true,
|
65
|
+
/**
|
66
|
+
* @cfg {Boolean} confirm_delete
|
67
|
+
* Show a confirmation box on deletion of queued files.
|
68
|
+
*/
|
69
|
+
confirm_delete: true,
|
70
|
+
/**
|
71
|
+
* @cfg {String} file_types
|
72
|
+
* Allowed file types for the File Selection Dialog. Use semi-colon as a seperator for multiple file-types.
|
73
|
+
*/
|
74
|
+
file_types: "*.*", // Default allow all file types
|
75
|
+
/**
|
76
|
+
* @cfg {String} file_types
|
77
|
+
* A text description that is displayed to the user in the File Browser dialog.
|
78
|
+
*/
|
79
|
+
file_types_description: "All Files", //
|
80
|
+
/**
|
81
|
+
* @cfg {String} file_size_limit
|
82
|
+
* The file_size_limit setting defines the maximum allowed size of a file to be uploaded.
|
83
|
+
* This setting accepts a value and unit. Valid units are B, KB, MB and GB. If the unit is omitted default is KB.
|
84
|
+
* A value of 0 (zero) is interpretted as unlimited.
|
85
|
+
*/
|
86
|
+
file_size_limit: "1MB", // Default size limit 100MB
|
87
|
+
/**
|
88
|
+
* @cfg {String} file_upload_limit
|
89
|
+
* Defines the number of files allowed to be uploaded by SWFUpload.
|
90
|
+
* This setting also sets the upper bound of the {@link #file_queue_limit} setting.
|
91
|
+
* The value of 0 (zero) is interpretted as unlimited.
|
92
|
+
*/
|
93
|
+
file_upload_limit: "0", // Default no upload limit
|
94
|
+
/**
|
95
|
+
* @cfg {String} file_queue_limit
|
96
|
+
* Defines the number of unprocessed files allowed to be simultaneously queued.
|
97
|
+
* The value of 0 (zero) is interpretted as unlimited.
|
98
|
+
*/
|
99
|
+
file_queue_limit: "0", // Default no queue limit
|
100
|
+
/**
|
101
|
+
* @cfg {String} file_post_name
|
102
|
+
* The file_post_name allows you to set the value name used to post the file.
|
103
|
+
*/
|
104
|
+
file_post_name: "file", // Default name
|
105
|
+
/**
|
106
|
+
* @cfg {String} flash_url
|
107
|
+
* The full, absolute, or relative URL to the Flash Control swf file.
|
108
|
+
*/
|
109
|
+
flash_url: "swfupload.swf", // Default url, relative to the page url
|
110
|
+
/**
|
111
|
+
* @cfg {Boolean} debug
|
112
|
+
* A boolean value that defines whether the debug event handler should be fired.
|
113
|
+
*/
|
114
|
+
debug: false,
|
115
|
+
|
116
|
+
// standard grid parameters
|
117
|
+
autoExpandColumn: 'name',
|
118
|
+
enableColumnResize: false,
|
119
|
+
enableColumnMove: false,
|
120
|
+
border: false,
|
121
|
+
viewConfig: { forceFit: true },
|
122
|
+
|
123
|
+
// private
|
124
|
+
upload_cancelled: false,
|
125
|
+
|
126
|
+
// private
|
127
|
+
initComponent: function() {
|
128
|
+
|
129
|
+
this.addEvents(
|
130
|
+
/**
|
131
|
+
* @event swfUploadLoaded
|
132
|
+
* Fires after the Flash object has been loaded
|
133
|
+
* @param {Ext.grid.GridPanel} grid This grid
|
134
|
+
*/
|
135
|
+
'swfUploadLoaded',
|
136
|
+
/**
|
137
|
+
* @event swfUploadLoaded
|
138
|
+
* Fires after a file has been qeueud
|
139
|
+
* @param {Ext.grid.GridPanel} grid This grid
|
140
|
+
* @param {Object} file The file object that produced the error
|
141
|
+
*/
|
142
|
+
'fileQueued',
|
143
|
+
/**
|
144
|
+
* @event startUpload
|
145
|
+
* Fires before the upload starts
|
146
|
+
* @param {Ext.grid.GridPanel} grid This grid
|
147
|
+
*/
|
148
|
+
'startUpload',
|
149
|
+
/**
|
150
|
+
* @event fileUploadError
|
151
|
+
* Fires after an upload has been stopped or cancelled
|
152
|
+
* @param {Ext.grid.GridPanel} grid This grid
|
153
|
+
* @param {Object} file The file object that produced the error
|
154
|
+
* @param {String} code The error code
|
155
|
+
* @param {String} message Supplemental error message
|
156
|
+
*/
|
157
|
+
'fileUploadError',
|
158
|
+
/**
|
159
|
+
* @event fileUploadSuccess
|
160
|
+
* Fires after an upload has been successfully uploaded
|
161
|
+
* @param {Ext.grid.GridPanel} grid This grid
|
162
|
+
* @param {Object} file The file object that has been uploaded
|
163
|
+
* @param {Object} data The response data of the upload request
|
164
|
+
*/
|
165
|
+
'fileUploadSuccess',
|
166
|
+
/**
|
167
|
+
* @event fileUploadComplete
|
168
|
+
* Fires after the upload cycle for one file finished
|
169
|
+
* @param {Ext.grid.GridPanel} grid This grid
|
170
|
+
* @param {Object} file The file object that has been uploaded
|
171
|
+
*/
|
172
|
+
'fileUploadComplete',
|
173
|
+
/**
|
174
|
+
* @event fileUploadComplete
|
175
|
+
* Fires after the upload cycle for all files in the queue finished
|
176
|
+
* @param {Ext.grid.GridPanel} grid This grid
|
177
|
+
*/
|
178
|
+
'allUploadsComplete',
|
179
|
+
/**
|
180
|
+
* @event fileUploadComplete
|
181
|
+
* Fires after one or more files have been removed from the queue
|
182
|
+
* @param {Ext.grid.GridPanel} grid This grid
|
183
|
+
*/
|
184
|
+
'removeFiles',
|
185
|
+
/**
|
186
|
+
* @event fileUploadComplete
|
187
|
+
* Fires after all files have been removed from the queue
|
188
|
+
* @param {Ext.grid.GridPanel} grid This grid
|
189
|
+
*/
|
190
|
+
'removeAllFiles'
|
191
|
+
);
|
192
|
+
|
193
|
+
this.rec = Ext.data.Record.create([
|
194
|
+
{name: 'name'},
|
195
|
+
{name: 'size'},
|
196
|
+
{name: 'id'},
|
197
|
+
{name: 'type'},
|
198
|
+
{name: 'creationdate', type: 'date', dateFormat: 'm/d/Y'},
|
199
|
+
{name: 'status'}
|
200
|
+
]);
|
201
|
+
|
202
|
+
this.store = new Ext.data.Store({
|
203
|
+
reader: new Ext.data.JsonReader({
|
204
|
+
id: 'id'
|
205
|
+
}, this.rec)
|
206
|
+
});
|
207
|
+
|
208
|
+
this.columns = [{
|
209
|
+
id:'name',
|
210
|
+
header: this.strings.header_filename,
|
211
|
+
dataIndex: 'name'
|
212
|
+
},{
|
213
|
+
id:'size',
|
214
|
+
header: this.strings.header_size,
|
215
|
+
width: 80,
|
216
|
+
dataIndex: 'size',
|
217
|
+
renderer: this.formatBytes
|
218
|
+
},{
|
219
|
+
id:'status',
|
220
|
+
header: this.strings.header_status,
|
221
|
+
width: 100,
|
222
|
+
dataIndex: 'status',
|
223
|
+
renderer: this.formatStatus.createDelegate(this)
|
224
|
+
},{
|
225
|
+
id:'progress',
|
226
|
+
header: 'Progess',
|
227
|
+
width: 150,
|
228
|
+
renderer: this.formatProgressBar
|
229
|
+
}
|
230
|
+
|
231
|
+
];
|
232
|
+
|
233
|
+
this.sm = new Ext.grid.RowSelectionModel({
|
234
|
+
singleSelect: this.single_select
|
235
|
+
});
|
236
|
+
|
237
|
+
this.tbar = [{
|
238
|
+
text: this.strings.text_add,
|
239
|
+
cls: 'x-btn-text-icon add',
|
240
|
+
xhandler: function() {
|
241
|
+
if (this.single_select) {
|
242
|
+
this.suo.selectFile();
|
243
|
+
}
|
244
|
+
else {
|
245
|
+
this.suo.selectFiles();
|
246
|
+
}
|
247
|
+
},
|
248
|
+
xscope: this,
|
249
|
+
// added by mh
|
250
|
+
listeners: {
|
251
|
+
render: function(){
|
252
|
+
this.initButton();
|
253
|
+
},
|
254
|
+
scope: this
|
255
|
+
}
|
256
|
+
// end added
|
257
|
+
}, '->', {
|
258
|
+
text: this.strings.text_cancel,
|
259
|
+
cls: 'x-btn-text-icon remove',
|
260
|
+
handler: this.stopUpload,
|
261
|
+
scope: this,
|
262
|
+
hidden: true
|
263
|
+
}, {
|
264
|
+
text: this.strings.text_upload,
|
265
|
+
cls: 'x-btn-text-icon upload',
|
266
|
+
handler: this.startUpload,
|
267
|
+
scope: this,
|
268
|
+
hidden: true
|
269
|
+
}, {
|
270
|
+
text: this.strings.text_clear,
|
271
|
+
cls: 'x-btn-text-icon remove',
|
272
|
+
handler: this.removeAllFiles,
|
273
|
+
scope: this,
|
274
|
+
hidden: false
|
275
|
+
}];
|
276
|
+
|
277
|
+
this.addListener({
|
278
|
+
keypress: {
|
279
|
+
fn: function(e) {
|
280
|
+
if (this.confirm_delete) {
|
281
|
+
if(e.getKey() == e.DELETE) {
|
282
|
+
Ext.MessageBox.confirm(this.strings.text_remove,this.strings.text_remove_sure, function(e) {
|
283
|
+
if (e == 'yes') {
|
284
|
+
this.removeFiles();
|
285
|
+
}
|
286
|
+
}, this);
|
287
|
+
}
|
288
|
+
} else {
|
289
|
+
this.removeFiles(this);
|
290
|
+
}
|
291
|
+
},
|
292
|
+
scope: this
|
293
|
+
},
|
294
|
+
|
295
|
+
// Prevent the default right click to show up in the grid.
|
296
|
+
contextmenu: function(e) {
|
297
|
+
e.stopEvent();
|
298
|
+
},
|
299
|
+
|
300
|
+
// modified by mh
|
301
|
+
render: function(){
|
302
|
+
this.addBtn = this.getTopToolbar().items.items[0];
|
303
|
+
this.cancelBtn = this.getTopToolbar().items.items[2];
|
304
|
+
this.uploadBtn = this.getTopToolbar().items.items[3];
|
305
|
+
this.clearBtn = this.getTopToolbar().items.items[4];
|
306
|
+
}
|
307
|
+
// end modified
|
308
|
+
});
|
309
|
+
|
310
|
+
Ext.SwfUploadPanel.superclass.initComponent.call(this);
|
311
|
+
},
|
312
|
+
|
313
|
+
// modified by mh - refactor to separate method
|
314
|
+
initButton: function() {
|
315
|
+
var suoID = Ext.id();
|
316
|
+
var em = this.addBtn.el.child('em');
|
317
|
+
em.setStyle({
|
318
|
+
position: 'relative',
|
319
|
+
display: 'block'
|
320
|
+
});
|
321
|
+
em.createChild({
|
322
|
+
tag: 'div',
|
323
|
+
id: suoID
|
324
|
+
});
|
325
|
+
this.suo = new SWFUpload({
|
326
|
+
button_placeholder_id: suoID,
|
327
|
+
button_width: em.getWidth(),
|
328
|
+
button_height: em.getHeight(),
|
329
|
+
button_cursor: SWFUpload.CURSOR.HAND,
|
330
|
+
button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
|
331
|
+
|
332
|
+
upload_url: this.upload_url,
|
333
|
+
post_params: this.post_params,
|
334
|
+
file_post_name: this.file_post_name,
|
335
|
+
file_size_limit: this.file_size_limit,
|
336
|
+
file_queue_limit: this.file_queue_limit,
|
337
|
+
file_types: this.file_types,
|
338
|
+
file_types_description: this.file_types_description,
|
339
|
+
file_upload_limit: this.file_upload_limit,
|
340
|
+
flash_url: this.flash_url,
|
341
|
+
|
342
|
+
// Event Handler Settings
|
343
|
+
swfupload_loaded_handler: this.swfUploadLoaded.createDelegate(this),
|
344
|
+
|
345
|
+
file_dialog_start_handler: this.fileDialogStart.createDelegate(this),
|
346
|
+
file_queued_handler: this.fileQueue.createDelegate(this),
|
347
|
+
file_queue_error_handler: this.fileQueueError.createDelegate(this),
|
348
|
+
file_dialog_complete_handler: this.fileDialogComplete.createDelegate(this),
|
349
|
+
|
350
|
+
upload_start_handler: this.uploadStart.createDelegate(this),
|
351
|
+
upload_progress_handler: this.uploadProgress.createDelegate(this),
|
352
|
+
upload_error_handler: this.uploadError.createDelegate(this),
|
353
|
+
upload_success_handler: this.uploadSuccess.createDelegate(this),
|
354
|
+
upload_complete_handler: this.uploadComplete.createDelegate(this),
|
355
|
+
|
356
|
+
debug: this.debug,
|
357
|
+
debug_handler: this.debug ? this.debugHandler : Ext.emptyFn
|
358
|
+
});
|
359
|
+
|
360
|
+
Ext.get(this.suo.movieName).setStyle({
|
361
|
+
position: 'absolute',
|
362
|
+
top: 0,
|
363
|
+
left: 0
|
364
|
+
});
|
365
|
+
},
|
366
|
+
|
367
|
+
formatProgressBar : function(_v, cellmeta, record){
|
368
|
+
switch(record.data.fileState){
|
369
|
+
case SWFUpload.FILE_STATUS.COMPLETE:
|
370
|
+
if(Ext.isIE){
|
371
|
+
returnValue =
|
372
|
+
'<div class="x-progress-wrap" style="height: 18px">' +
|
373
|
+
'<div class="x-progress-inner">' +
|
374
|
+
'<div style="width: 100%;" class="x-progress-bar x-progress-text">' + '100 %'
|
375
|
+
'</div>' +
|
376
|
+
'</div>' +
|
377
|
+
'</div>';
|
378
|
+
}else{
|
379
|
+
returnValue =
|
380
|
+
'<div class="x-progress-wrap" style="height: 18px">' +
|
381
|
+
'<div class="x-progress-inner">' +
|
382
|
+
'<div id="progressBar_' + record.data.id + '" style="width: 100%;" class="x-progress-bar">' +
|
383
|
+
'</div>' +
|
384
|
+
'<div id="progressText_' + record.data.id + '" style="width: 100%;" class="x-progress-text x-progress-text-back" />100 %</div>'
|
385
|
+
'</div>' +
|
386
|
+
'</div>';
|
387
|
+
}
|
388
|
+
break;
|
389
|
+
default :
|
390
|
+
returnValue =
|
391
|
+
'<div class="x-progress-wrap" style="height: 18px">' +
|
392
|
+
'<div class="x-progress-inner">' +
|
393
|
+
'<div id="progressBar_' + record.data.id + '" style="width: 0%;" class="x-progress-bar">' +
|
394
|
+
'</div>' +
|
395
|
+
'<div id="progressText_' + record.data.id + '" style="width: 100%;" class="x-progress-text x-progress-text-back" />0 %</div>'
|
396
|
+
'</div>' +
|
397
|
+
'</div>';
|
398
|
+
break;
|
399
|
+
}
|
400
|
+
return returnValue;
|
401
|
+
},
|
402
|
+
|
403
|
+
/**
|
404
|
+
* SWFUpload debug handler
|
405
|
+
* @param {Object} line
|
406
|
+
*/
|
407
|
+
debugHandler: function(line) {
|
408
|
+
console.log(line);
|
409
|
+
},
|
410
|
+
|
411
|
+
/**
|
412
|
+
* Formats file status
|
413
|
+
* @param {Integer} status
|
414
|
+
* @return {String}
|
415
|
+
*/
|
416
|
+
formatStatus: function(status) {
|
417
|
+
return this.strings.status[status];
|
418
|
+
},
|
419
|
+
|
420
|
+
/**
|
421
|
+
* Formats raw bytes into kB/mB/GB/TB
|
422
|
+
* @param {Integer} bytes
|
423
|
+
* @return {String}
|
424
|
+
*/
|
425
|
+
formatBytes: function(size) {
|
426
|
+
if (!size) {
|
427
|
+
size = 0;
|
428
|
+
}
|
429
|
+
var suffix = ["B", "KB", "MB", "GB"];
|
430
|
+
var result = size;
|
431
|
+
size = parseInt(size, 10);
|
432
|
+
result = size + " " + suffix[0];
|
433
|
+
var loop = 0;
|
434
|
+
while (size / 1024 > 1) {
|
435
|
+
size = size / 1024;
|
436
|
+
loop++;
|
437
|
+
}
|
438
|
+
result = Math.round(size) + " " + suffix[loop];
|
439
|
+
|
440
|
+
return result;
|
441
|
+
|
442
|
+
if(isNaN(bytes)) {
|
443
|
+
return ('');
|
444
|
+
}
|
445
|
+
|
446
|
+
var unit, val;
|
447
|
+
|
448
|
+
if(bytes < 999) {
|
449
|
+
unit = 'B';
|
450
|
+
val = (!bytes && this.progressRequestCount >= 1) ? '~' : bytes;
|
451
|
+
} else if(bytes < 999999) {
|
452
|
+
unit = 'kB';
|
453
|
+
val = Math.round(bytes/1000);
|
454
|
+
} else if(bytes < 999999999) {
|
455
|
+
unit = 'MB';
|
456
|
+
val = Math.round(bytes/100000) / 10;
|
457
|
+
} else if(bytes < 999999999999) {
|
458
|
+
unit = 'GB';
|
459
|
+
val = Math.round(bytes/100000000) / 10;
|
460
|
+
} else {
|
461
|
+
unit = 'TB';
|
462
|
+
val = Math.round(bytes/100000000000) / 10;
|
463
|
+
}
|
464
|
+
|
465
|
+
return (val + ' ' + unit);
|
466
|
+
},
|
467
|
+
|
468
|
+
/**
|
469
|
+
* SWFUpload swfUploadLoaded event
|
470
|
+
*/
|
471
|
+
swfUploadLoaded: function() {
|
472
|
+
if(this.debug) console.info('SWFUPLOAD LOADED');
|
473
|
+
|
474
|
+
this.fireEvent('swfUploadLoaded', this);
|
475
|
+
},
|
476
|
+
|
477
|
+
/**
|
478
|
+
* SWFUpload fileDialogStart event
|
479
|
+
*/
|
480
|
+
fileDialogStart: function() {
|
481
|
+
if(this.debug) console.info('FILE DIALOG START');
|
482
|
+
|
483
|
+
this.fireEvent('fileDialogStart', this);
|
484
|
+
},
|
485
|
+
|
486
|
+
/**
|
487
|
+
* Add file to store / grid
|
488
|
+
* SWFUpload fileQueue event
|
489
|
+
* @param {Object} file
|
490
|
+
*/
|
491
|
+
fileQueue: function(file) {
|
492
|
+
if(this.debug) console.info('FILE QUEUE');
|
493
|
+
file.status = 0;
|
494
|
+
r = new this.rec(file);
|
495
|
+
r.id = file.id;
|
496
|
+
this.store.add(r);
|
497
|
+
|
498
|
+
this.fireEvent('fileQueued', this, file);
|
499
|
+
},
|
500
|
+
|
501
|
+
/**
|
502
|
+
* Error when file queue error occurs
|
503
|
+
* SWFUpload fileQueueError event
|
504
|
+
* @param {Object} file
|
505
|
+
* @param {Integer} code
|
506
|
+
* @param {string} message
|
507
|
+
*/
|
508
|
+
fileQueueError: function(file, code, message) {
|
509
|
+
if(this.debug) console.info('FILE QUEUE ERROR');
|
510
|
+
|
511
|
+
switch (code) {
|
512
|
+
case -100:
|
513
|
+
var slots;
|
514
|
+
switch(message) {
|
515
|
+
case '0':
|
516
|
+
slots = this.strings.error_queue_slots_0;
|
517
|
+
break;
|
518
|
+
case '1':
|
519
|
+
slots = this.strings.error_queue_slots_1;
|
520
|
+
break;
|
521
|
+
default:
|
522
|
+
slots = String.format(this.strings.error_queue_slots_2, message);
|
523
|
+
}
|
524
|
+
Ext.MessageBox.alert(this.strings.text_error, String.format(this.strings.error_queue_exceeded + ' ' + slots, this.file_queue_limit));
|
525
|
+
break;
|
526
|
+
|
527
|
+
case -110:
|
528
|
+
Ext.MessageBox.alert(this.strings.text_error, String.format(this.strings.error_size_exceeded, this.formatBytes(this.file_size_limit * 1024)));
|
529
|
+
break;
|
530
|
+
|
531
|
+
case -120:
|
532
|
+
Ext.MessageBox.alert(this.strings.text_error, this.strings.error_zero_byte_file);
|
533
|
+
break;
|
534
|
+
|
535
|
+
case -130:
|
536
|
+
Ext.MessageBox.alert(this.strings.text_error, this.strings.error_invalid_filetype);
|
537
|
+
break;
|
538
|
+
}
|
539
|
+
|
540
|
+
this.fireEvent('fileQueueError', this, file, code/*, error*/);
|
541
|
+
},
|
542
|
+
|
543
|
+
/**
|
544
|
+
* SWFUpload fileDialogComplete event
|
545
|
+
* @param {Integer} file_count
|
546
|
+
*/
|
547
|
+
fileDialogComplete: function(file_count) {
|
548
|
+
if(this.debug) console.info('FILE DIALOG COMPLETE');
|
549
|
+
|
550
|
+
if (file_count > 0) {
|
551
|
+
this.uploadBtn.show();
|
552
|
+
}
|
553
|
+
|
554
|
+
this.addBtn.show();
|
555
|
+
this.clearBtn.show();
|
556
|
+
|
557
|
+
this.fireEvent('fileDialogComplete', this, file_count);
|
558
|
+
},
|
559
|
+
|
560
|
+
/**
|
561
|
+
* SWFUpload uploadStart event
|
562
|
+
* @param {Object} file
|
563
|
+
*/
|
564
|
+
uploadStart: function(file) {
|
565
|
+
if(this.debug) console.info('UPLOAD START');
|
566
|
+
this.fireEvent('uploadStart', this, file);
|
567
|
+
|
568
|
+
return true;
|
569
|
+
},
|
570
|
+
|
571
|
+
/**
|
572
|
+
* SWFUpload uploadProgress event
|
573
|
+
* @param {Object} file
|
574
|
+
* @param {Integer} bytes_completed
|
575
|
+
* @param {Integer} bytes_total
|
576
|
+
*/
|
577
|
+
progressCount : 0,
|
578
|
+
uploadProgress: function(file, bytes_completed, bytes_total) {
|
579
|
+
//if(this.debug)
|
580
|
+
var percent = Math.ceil((bytes_completed / bytes_total) * 100);
|
581
|
+
if (percent != this.progressCount)
|
582
|
+
{
|
583
|
+
Ext.getDom('progressBar_' + file.id).style.width = percent + "%";
|
584
|
+
Ext.getDom('progressText_' + file.id).innerHTML = percent + " %";
|
585
|
+
this.progressCount = percent;
|
586
|
+
}
|
587
|
+
|
588
|
+
//console.info(percent);
|
589
|
+
|
590
|
+
this.store.getById(file.id).set('status', 1);
|
591
|
+
|
592
|
+
//this.store.getById(file.id).commit();
|
593
|
+
|
594
|
+
this.fireEvent('uploadProgress', this, file, bytes_completed, bytes_total);
|
595
|
+
},
|
596
|
+
|
597
|
+
/**
|
598
|
+
* SWFUpload uploadError event
|
599
|
+
* Show notice when error occurs
|
600
|
+
* @param {Object} file
|
601
|
+
* @param {Integer} error
|
602
|
+
* @param {Integer} code
|
603
|
+
* @return {}
|
604
|
+
*/
|
605
|
+
uploadError: function(file, error, code) {
|
606
|
+
if(this.debug) console.info('UPLOAD ERROR');
|
607
|
+
if (code==500)
|
608
|
+
{
|
609
|
+
Ext.MessageBox.alert(this.strings.text_error, "File too big");
|
610
|
+
this.fireEvent('fileUploadError', this, file, error, code);
|
611
|
+
return;
|
612
|
+
}
|
613
|
+
switch (error) {
|
614
|
+
case -200:
|
615
|
+
Ext.MessageBox.alert(this.strings.text_error, this.strings.error_file_not_found);
|
616
|
+
break;
|
617
|
+
|
618
|
+
case -230:
|
619
|
+
Ext.MessageBox.alert(this.strings.text_error, this.strings.error_security_error);
|
620
|
+
break;
|
621
|
+
|
622
|
+
case -290:
|
623
|
+
this.store.getById(file.id).set('status', 4);
|
624
|
+
this.store.getById(file.id).commit();
|
625
|
+
break;
|
626
|
+
}
|
627
|
+
|
628
|
+
this.fireEvent('fileUploadError', this, file, error, code);
|
629
|
+
},
|
630
|
+
|
631
|
+
/**
|
632
|
+
* SWFUpload uploadSuccess event
|
633
|
+
* @param {Object} file
|
634
|
+
* @param {Object} response
|
635
|
+
*/
|
636
|
+
uploadSuccess: function(file, response) {
|
637
|
+
if(this.debug) console.info('UPLOAD SUCCESS');
|
638
|
+
|
639
|
+
var data = Ext.decode(response);
|
640
|
+
if (data.success) {
|
641
|
+
this.store.getById(file.id).data.fileState = SWFUpload.FILE_STATUS.COMPLETE;
|
642
|
+
this.store.getById(file.id).set('status', 2);
|
643
|
+
//this.store.remove(this.store.getById(file.id));
|
644
|
+
} else {
|
645
|
+
this.store.getById(file.id).set('status', 3);
|
646
|
+
this.store.getById(file.id).commit();
|
647
|
+
if (data.msg) {
|
648
|
+
Ext.MessageBox.alert(this.strings.text_error, data.msg);
|
649
|
+
}
|
650
|
+
}
|
651
|
+
|
652
|
+
|
653
|
+
this.fireEvent('fileUploadSuccess', this, file, data);
|
654
|
+
},
|
655
|
+
|
656
|
+
/**
|
657
|
+
* SWFUpload uploadComplete event
|
658
|
+
* @param {Object} file
|
659
|
+
*/
|
660
|
+
uploadComplete: function(file) {
|
661
|
+
if(this.debug) console.info('UPLOAD COMPLETE');
|
662
|
+
|
663
|
+
if(this.suo.getStats().files_queued && !this.upload_cancelled) {
|
664
|
+
this.suo.startUpload();
|
665
|
+
} else {
|
666
|
+
this.fireEvent('fileUploadComplete', this, file);
|
667
|
+
|
668
|
+
this.allUploadsComplete();
|
669
|
+
}
|
670
|
+
|
671
|
+
},
|
672
|
+
|
673
|
+
/**
|
674
|
+
* SWFUpload allUploadsComplete method
|
675
|
+
*/
|
676
|
+
allUploadsComplete: function() {
|
677
|
+
this.cancelBtn.hide();
|
678
|
+
this.addBtn.show();
|
679
|
+
this.clearBtn.show();
|
680
|
+
|
681
|
+
this.fireEvent('allUploadsComplete', this);
|
682
|
+
},
|
683
|
+
|
684
|
+
/**
|
685
|
+
* SWFUpload setPostParams method
|
686
|
+
* @param {String} name
|
687
|
+
* @param {String} value
|
688
|
+
*/
|
689
|
+
addPostParam: function(name, value) {
|
690
|
+
if (this.suo) {
|
691
|
+
this.suo.settings.post_params[name] = value;
|
692
|
+
this.suo.setPostParams(this.suo.settings.post_params);
|
693
|
+
} else {
|
694
|
+
this.post_params[name] = value;
|
695
|
+
}
|
696
|
+
},
|
697
|
+
|
698
|
+
/**
|
699
|
+
* Start file upload
|
700
|
+
* SWFUpload startUpload method
|
701
|
+
*/
|
702
|
+
startUpload: function() {
|
703
|
+
if(this.debug) console.info('START UPLOAD');
|
704
|
+
|
705
|
+
this.cancelBtn.show();
|
706
|
+
this.uploadBtn.hide();
|
707
|
+
this.clearBtn.hide();
|
708
|
+
// this.addBtn.hide();
|
709
|
+
|
710
|
+
this.upload_cancelled = false;
|
711
|
+
|
712
|
+
this.fireEvent('startUpload', this);
|
713
|
+
|
714
|
+
this.suo.startUpload();
|
715
|
+
},
|
716
|
+
|
717
|
+
/**
|
718
|
+
* SWFUpload stopUpload method
|
719
|
+
* @param {Object} file
|
720
|
+
*/
|
721
|
+
stopUpload: function(file) {
|
722
|
+
if(this.debug) console.info('STOP UPLOAD');
|
723
|
+
|
724
|
+
this.suo.stopUpload();
|
725
|
+
|
726
|
+
this.upload_cancelled = true;
|
727
|
+
|
728
|
+
this.getStore().each(function() {
|
729
|
+
if (this.data.status == 1) {
|
730
|
+
this.set('status', 0);
|
731
|
+
this.commit();
|
732
|
+
}
|
733
|
+
});
|
734
|
+
|
735
|
+
this.cancelBtn.hide();
|
736
|
+
if (this.suo.getStats().files_queued > 0) {
|
737
|
+
this.uploadBtn.show();
|
738
|
+
}
|
739
|
+
this.addBtn.show();
|
740
|
+
this.clearBtn.show();
|
741
|
+
},
|
742
|
+
|
743
|
+
/**
|
744
|
+
* Delete one or multiple rows
|
745
|
+
* SWFUpload cancelUpload method
|
746
|
+
*/
|
747
|
+
removeFiles: function() {
|
748
|
+
if(this.debug) console.info('REMOVE FILES');
|
749
|
+
|
750
|
+
var selRecords = this.getSelections();
|
751
|
+
for (var i=0; i < selRecords.length; i++) {
|
752
|
+
if (selRecords[i].data.status != 1) {
|
753
|
+
this.suo.cancelUpload(selRecords[i].id);
|
754
|
+
this.store.remove(selRecords[i]);
|
755
|
+
}
|
756
|
+
}
|
757
|
+
|
758
|
+
if (this.suo.getStats().files_queued === 0) {
|
759
|
+
this.uploadBtn.hide();
|
760
|
+
// this.clearBtn.hide();
|
761
|
+
}
|
762
|
+
|
763
|
+
this.fireEvent('removeFiles', this);
|
764
|
+
},
|
765
|
+
|
766
|
+
/**
|
767
|
+
* Clear the Queue
|
768
|
+
* SWFUpload cancelUpload method
|
769
|
+
*/
|
770
|
+
removeAllFiles: function() {
|
771
|
+
if(this.debug) console.info('REMOVE ALL');
|
772
|
+
|
773
|
+
// mark all internal files as cancelled
|
774
|
+
var files_left = this.suo.getStats().files_queued;
|
775
|
+
|
776
|
+
while (files_left > 0) {
|
777
|
+
this.suo.cancelUpload();
|
778
|
+
files_left = this.suo.getStats().files_queued;
|
779
|
+
}
|
780
|
+
|
781
|
+
this.store.removeAll();
|
782
|
+
|
783
|
+
this.cancelBtn.hide();
|
784
|
+
this.uploadBtn.hide();
|
785
|
+
// this.clearBtn.hide();
|
786
|
+
|
787
|
+
this.fireEvent('removeAllFiles', this);
|
788
|
+
}
|
789
|
+
|
790
|
+
});
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lipsiadmin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.1.
|
4
|
+
version: 5.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Davide D'Agostino
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-02-03 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -441,8 +441,8 @@ files:
|
|
441
441
|
- lib/view/helpers/frontend_helper.rb
|
442
442
|
- lib/view/helpers/pdf_helper.rb
|
443
443
|
- lib/view/helpers/view_helper.rb
|
444
|
+
- resources/javascripts/swfuploadpanel.js
|
444
445
|
- resources/javascripts/ux.js
|
445
|
-
- resources/javascripts/ux.min.js
|
446
446
|
- resources/pd4ml/pd4ml.jar
|
447
447
|
- resources/pd4ml/ruby/Pd4Ruby.class
|
448
448
|
- resources/pd4ml/ruby/Pd4Ruby.java
|
@@ -1,3 +0,0 @@
|
|
1
|
-
Ext.util.Format.eurMoney=function(v){v=(Math.round((v-0)*100))/100;v=(v==Math.floor(v))?v+".00":((v*10==Math.floor(v*10))?v+"0":v);return v+" €"};Ext.util.Format.percentage=function(v,p,record){return(v+" %")};Ext.util.Format.boolRenderer=function(v,p,record){p.css+=" x-grid3-check-col-td";return'<div class="x-grid3-check-col'+(v?"-on":"")+" x-grid3-cc-"+this.id+'"> </div>'};var treeDropConfig={getDropPoint:function(e,n,dd){var tn=n.node;if(tn.isRoot){return tn.allowChildren!==false?"append":false}var dragEl=n.ddel;var t=Ext.lib.Dom.getY(dragEl),b=t+dragEl.offsetHeight;var y=Ext.lib.Event.getPageY(e);var noAppend=tn.allowChildren===false;if(this.appendOnly||tn.parentNode.allowChildren===false){return noAppend?false:"append"}var noBelow=false;if(!this.allowParentInsert){noBelow=tn.hasChildNodes()&&tn.isExpanded()}var q=(b-t)/(noAppend?2:3);if(y>=t&&y<(t+q)){return"above"}else{if(!noBelow&&(noAppend||y>=b-q&&y<=b)){return"below"}else{return"append"}}},completeDrop:function(de){var ns=de.dropNode,p=de.point,t=de.target;if(!Ext.isArray(ns)){ns=[ns]}var n;for(var i=0,len=ns.length;i<len;i++){n=ns[i];if(p=="above"){t.parentNode.insertBefore(n,t)}else{if(p=="below"){t.parentNode.insertBefore(n,t.nextSibling)}else{t.leaf=false;t.appendChild(n)}}}n.ui.focus();if(this.tree.hlDrop){n.ui.highlight()}t.ui.endDrop();this.tree.fireEvent("nodedrop",de)}};Ext.grid.CheckColumn=function(config){Ext.apply(this,config);if(!this.id){this.id=Ext.id()}this.renderer=this.renderer.createDelegate(this)};Ext.grid.CheckColumn.prototype={init:function(grid){this.grid=grid;this.grid.on("render",function(){var view=this.grid.getView();view.mainBody.on("mousedown",this.onMouseDown,this)},this)},onMouseDown:function(e,t){if(t.className&&t.className.indexOf("x-grid3-cc-"+this.id)!=-1){e.stopEvent();var index=this.grid.getView().findRowIndex(t);var record=this.grid.store.getAt(index);var editEvent={grid:this.grid,record:this.grid.store.getAt(index),field:this.dataIndex,value:!record.data[this.dataIndex],originalValue:record.data[this.dataIndex],row:index,column:this.grid.getColumnModel().findColumnIndex(this.dataIndex)};record.set(this.dataIndex,editEvent.value);this.grid.getSelectionModel().selectRow(index);this.grid.fireEvent("afteredit",editEvent)}},renderer:function(v,p,record){p.css+=" x-grid3-check-col-td";return'<div class="x-grid3-check-col'+(v?"-on":"")+" x-grid3-cc-"+this.id+'"> </div>'}};Ext.form.DateTimeField=Ext.extend(Ext.form.Field,{defaultAutoCreate:{tag:"input",type:"hidden"},timeWidth:100,dateWidth:100,dtSeparator:" ",hiddenFormat:"Y-m-d H:i:s",otherToNow:true,dateFormat:"d/m/y",timeFormat:"H:i",allowBlank:true,hideTime:false,initComponent:function(){Ext.form.DateTimeField.superclass.initComponent.call(this);var dateConfig=Ext.apply({},{id:this.id+"-date",format:this.dateFormat||Ext.form.DateField.prototype.format,width:this.dateWidth,allowBlank:this.allowBlank,selectOnFocus:this.selectOnFocus,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus}}},this.dateConfig);this.df=new Ext.form.DateField(dateConfig);this.df.ownerCt=this;delete (this.dateFormat);var timeConfig=Ext.apply({},{id:this.id+"-time",format:this.timeFormat||Ext.form.TimeField.prototype.format,allowBlank:(this.hideTime||this.allowBlank),width:this.timeWidth,selectOnFocus:this.selectOnFocus,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus}}},this.timeConfig);this.tf=new Ext.form.TimeField(timeConfig);this.tf.ownerCt=this;delete (this.timeFormat);this.relayEvents(this.df,["focus","specialkey","invalid","valid"]);this.relayEvents(this.tf,["focus","specialkey","invalid","valid"])},onRender:function(ct,position){if(this.isRendered){return}Ext.form.DateTimeField.superclass.onRender.call(this,ct,position);var t;var timeStyle=this.hideTime?"display:none":"";t=Ext.DomHelper.append(ct,{tag:"table",style:"border-collapse:collapse",children:[{tag:"tr",children:[{tag:"td",style:"padding-right:17px",cls:"datetime-date"},{tag:"td",cls:"datetime-time",style:timeStyle}]}]},true);this.tableEl=t;this.wrap=t.wrap();this.wrap.on("mousedown",this.onMouseDown,this,{delay:10});this.df.render(t.child("td.datetime-date"));this.tf.render(t.child("td.datetime-time"));this.df.wrap.setStyle({width:this.dateWidth});this.tf.wrap.setStyle({width:this.timeWidth});if(Ext.isIE&&Ext.isStrict){t.select("input").applyStyles({top:0})}this.on("specialkey",this.onSpecialKey,this);this.df.el.swallowEvent(["keydown","keypress"]);this.tf.el.swallowEvent(["keydown","keypress"]);if("side"===this.msgTarget){var elp=this.el.findParent(".x-form-element",10,true);this.errorIcon=elp.createChild({cls:"x-form-invalid-icon"});this.df.errorIcon=this.errorIcon;this.tf.errorIcon=this.errorIcon}if(!this.el.dom.name){this.el.dom.name=this.hiddenName||this.name||this.id}this.df.el.dom.removeAttribute("name");this.tf.el.dom.removeAttribute("name");this.isRendered=true;if(this.el.dom.value){this.setValue(this.el.dom.value)}else{if(true===this.emptyToNow){this.setValue(new Date());this.updateHidden()}}},adjustSize:Ext.BoxComponent.prototype.adjustSize,alignErrorIcon:function(){this.errorIcon.alignTo(this.tableEl,"tl-tr",[2,0])},initDateValue:function(){this.dateValue=this.otherToNow?new Date():""},clearInvalid:function(){this.df.clearInvalid();this.tf.clearInvalid()},beforeDestroy:function(){if(this.isRendered){this.wrap.removeAllListeners();this.wrap.remove();this.tableEl.remove();this.df.destroy();this.tf.destroy()}},disable:function(){if(this.isRendered){this.df.disabled=this.disabled;this.df.onDisable();this.tf.onDisable()}this.disabled=true;this.df.disabled=true;this.tf.disabled=true;this.fireEvent("disable",this);return this},enable:function(){if(this.rendered){this.df.onEnable();this.tf.onEnable()}this.disabled=false;this.df.disabled=false;this.tf.disabled=false;this.fireEvent("enable",this);return this},focus:function(){this.df.focus()},getPositionEl:function(){return this.wrap},getResizeEl:function(){return this.wrap},getValue:function(){return this.dateValue?new Date(this.dateValue):""},isValid:function(){return this.df.isValid()&&this.tf.isValid()},isVisible:function(){return this.df.rendered&&this.df.getActionEl().isVisible()},onBlur:function(f){if(this.wrapClick){f.focus();this.wrapClick=false}this.updateDate();this.updateTime();this.updateHidden();(function(){if(!this.df.hasFocus&&!this.tf.hasFocus){var v=this.getValue();if(String(v)!==String(this.startValue)){this.fireEvent("change",this,v,this.startValue)}this.hasFocus=false;this.fireEvent("blur",this)}}).defer(100,this)},onFocus:function(){if(!this.hasFocus){this.hasFocus=true;this.startValue=this.getValue();this.fireEvent("focus",this)}},onMouseDown:function(e){if(!this.disabled){this.wrapClick="td"===e.target.nodeName.toLowerCase()}},onSpecialKey:function(t,e){var key=e.getKey();if(key===e.TAB){if(t===this.df&&!e.shiftKey){e.stopEvent();this.tf.focus()}if(t===this.tf&&e.shiftKey){e.stopEvent();this.df.focus()}}if(key===e.ENTER){this.updateValue()}},setDate:function(date){this.df.setValue(date)},setTime:function(date){this.tf.setRawValue(date)},setSize:function(w,h){if(!w){return}if("below"===this.timePosition){this.df.setSize(w,h);this.tf.setSize(w,h);if(Ext.isIE){this.df.el.up("td").setWidth(w);this.tf.el.up("td").setWidth(w)}}else{this.df.setSize(w-this.timeWidth-4,h);this.tf.setSize(this.timeWidth,h);if(Ext.isIE){this.df.el.up("td").setWidth(w-this.timeWidth-4);this.tf.el.up("td").setWidth(this.timeWidth)}}},setValue:function(val){if(!val&&true===this.emptyToNow){this.setValue(new Date());return}else{if(!val){this.setDate("");this.setTime("");this.updateValue();return}}if("number"===typeof val){val=new Date(val)}else{if("string"===typeof val&&this.hiddenFormat){val=Date.parseDate(val,this.hiddenFormat)}}val=val?val:new Date(1970,0,1,0,0,0);var da,time;if(val instanceof Date){this.setDate(val);this.setTime(val.format(this.timeFormat));this.dateValue=new Date(val)}else{da=val.split(this.dtSeparator);this.setDate(da[0]);if(da[1]){if(da[2]){da[1]+=da[2]
|
2
|
-
}var hh=da[1].split(":");this.setTime(hh[0]+":"+hh[1])}}},setVisible:function(visible){if(visible){this.df.show();this.tf.show()}else{this.df.hide();this.tf.hide()}return this},show:function(){return this.setVisible(true)},hide:function(){return this.setVisible(false)},updateDate:function(){var d=this.df.getValue();if(d){if(!(this.dateValue instanceof Date)){this.initDateValue();if(!this.tf.getValue()){this.setTime(this.dateValue)}}this.dateValue.setMonth(0);this.dateValue.setFullYear(d.getFullYear());this.dateValue.setMonth(d.getMonth());this.dateValue.setDate(d.getDate())}else{this.dateValue="";this.setTime("")}},updateTime:function(){var t=this.tf.getValue();if(t&&!(t instanceof Date)){t=Date.parseDate(t,this.tf.format)}if(t&&!this.df.getValue()){this.initDateValue();this.setDate(this.dateValue)}if(this.dateValue instanceof Date){if(t){this.dateValue.setHours(t.getHours());this.dateValue.setMinutes(t.getMinutes());this.dateValue.setSeconds(t.getSeconds())}else{this.dateValue.setHours(0);this.dateValue.setMinutes(0);this.dateValue.setSeconds(0)}}},updateHidden:function(){if(this.isRendered){var value=this.dateValue instanceof Date?this.dateValue.format(this.hiddenFormat):"";this.el.dom.value=value}},updateValue:function(){this.updateDate();this.updateTime();this.updateHidden();return},validate:function(){return this.df.validate()&&this.tf.validate()},renderer:function(field){var format=field.editor.dateFormat||Ext.form.DateTime.prototype.dateFormat;format+=" "+(field.editor.timeFormat||Ext.form.DateTime.prototype.timeFormat);var renderer=function(val){var retval=Ext.util.Format.date(val,format);return retval};return renderer}});Ext.reg("datetimefield",Ext.form.DateTimeField);Ext.grid.Search=function(config){Ext.apply(this,config);Ext.grid.Search.superclass.constructor.call(this)};Ext.extend(Ext.grid.Search,Ext.util.Observable,{autoFocus:true,searchText:"Search",searchTipText:"Insert a word or press Search",selectAllText:"Select All",position:"top",iconCls:"check",checkIndexes:"all",disableIndexes:[],dateFormat:undefined,showSelectAll:true,menuStyle:"checkbox",minCharsTipText:"Insert at least {0} characters",mode:"remote",width:200,xtype:"gridsearch",paramNames:{fields:"fields",query:"query"},shortcutKey:"r",shortcutModifier:"alt",align:"right",minLength:3,init:function(grid){this.grid=grid;this.id=this.grid.id+"-search";if("string"===typeof this.toolbarContainer){this.toolbarContainer=Ext.getCmp(this.toolbarContainer)}grid.store.load=grid.store.load.createInterceptor(this.load,this);grid.onRender=grid.onRender.createSequence(this.onRender,this);grid.reconfigure=grid.reconfigure.createSequence(this.reconfigure,this)},onRender:function(){var panel=this.toolbarContainer||this.grid;var tb="bottom"===this.position?panel.bottomToolbar:panel.topToolbar;this.menu=new Ext.menu.Menu();if("right"===this.align){tb.addFill()}else{if(0<tb.items.getCount()){tb.addSeparator()}}tb.add({text:this.searchText,menu:this.menu});this.field=new Ext.form.TwinTriggerField({width:this.width,selectOnFocus:undefined===this.selectOnFocus?true:this.selectOnFocus,trigger1Class:"x-form-clear-trigger",trigger2Class:this.minChars?"x-hidden":"x-form-search-trigger",onTrigger1Click:this.minChars?Ext.emptyFn:this.onTriggerClear.createDelegate(this),onTrigger2Click:this.onTriggerSearch.createDelegate(this),minLength:this.minLength});this.field.on("render",function(){this.field.el.dom.qtip=this.minChars?String.format(this.minCharsTipText,this.minChars):this.searchTipText;if(this.minChars){this.field.el.on({scope:this,buffer:300,keyup:this.onKeyUp})}var map=new Ext.KeyMap(this.field.el,[{key:Ext.EventObject.ENTER,scope:this,fn:this.onTriggerSearch},{key:Ext.EventObject.ESC,scope:this,fn:this.onTriggerClear}]);map.stopEvent=true},this,{single:true});tb.add(this.field);this.initState();if(this.shortcutKey&&this.shortcutModifier){var shortcutEl=this.grid.getEl();var shortcutCfg=[{key:this.shortcutKey,scope:this,stopEvent:true,fn:function(){this.field.focus()}}];shortcutCfg[0][this.shortcutModifier]=true;this.keymap=new Ext.KeyMap(shortcutEl,shortcutCfg)}if(true===this.autoFocus){this.grid.store.on({scope:this,load:function(){this.field.focus()}})}},initState:function(){if(Ext.state.Manager){var state=Ext.state.Manager.get(this.id);this.applyState(state)}},applyState:function(state){if(state){if(state.checked&&state.checked instanceof Array){this.checkIndexes=state.checked}if(state.value){this.field.setValue(state.value)}}this.reconfigure();this.onTriggerSearch()},saveState:function(){if(Ext.state.Manager){var state=this.getState();Ext.state.Manager.set(this.id,state)}},getState:function(){var checked=[];this.menu.items.each(function(item){if(item.dataIndex&&item.checked){checked.push(item.dataIndex)}});this.inited=true;return{value:this.field.getValue(),checked:checked}},load:function(){return(this.field!=undefined&&this.inited==true)},onKeyUp:function(){var length=this.field.getValue().toString().length;if(0===length||this.minChars<=length){this.onTriggerSearch()}},onTriggerClear:function(){if(this.field.getValue()){this.field.setValue("");this.field.focus();this.onTriggerSearch()}this.saveState()},onTriggerSearch:function(){if(!this.field.isValid()){return}var val=this.field.getValue();var store=this.grid.store;if("local"===this.mode){store.clearFilter();if(val){store.filterBy(function(r){var retval=false;this.menu.items.each(function(item){if(!item.checked||retval){return}var rv=r.get(item.dataIndex);rv=rv instanceof Date?rv.format(this.dateFormat||r.fields.get(item.dataIndex).dateFormat):rv;var re=new RegExp(val,"gi");retval=re.test(rv)},this);if(retval){return true}return retval},this)}else{}}else{if(store.lastOptions&&store.lastOptions.params){store.lastOptions.params[store.paramNames.start]=0}var fields=[];this.menu.items.each(function(item){if(item.checked&&item.dataIndex){fields.push(item.dataIndex)}});delete (store.baseParams[this.paramNames.fields]);delete (store.baseParams[this.paramNames.query]);if(store.lastOptions&&store.lastOptions.params){delete (store.lastOptions.params[this.paramNames.fields]);delete (store.lastOptions.params[this.paramNames.query])}if(fields.length){store.baseParams[this.paramNames.fields]=fields.compact().join();store.baseParams[this.paramNames.query]=val}store.reload()}this.saveState()},setDisabled:function(){this.field.setDisabled.apply(this.field,arguments)},enable:function(){this.setDisabled(false)},disable:function(){this.setDisabled(true)},reconfigure:function(){var menu=this.menu;menu.removeAll();if(this.showSelectAll&&"radio"!==this.menuStyle){menu.add(new Ext.menu.CheckItem({text:this.selectAllText,checked:!(this.checkIndexes instanceof Array),hideOnClick:false,handler:function(item){var checked=!item.checked;item.parentMenu.items.each(function(i){if(item!==i&&i.setChecked&&!i.disabled){i.setChecked(checked)}})}}),"-")}var cm=this.grid.colModel;var group=undefined;if("radio"===this.menuStyle){group="g"+(new Date).getTime()}Ext.each(cm.config,function(config){var disable=false;if(config.header&&config.dataIndex&&config.sortable){Ext.each(this.disableIndexes,function(item){disable=disable?disable:item===config.dataIndex});if(!disable){menu.add(new Ext.menu.CheckItem({text:config.header,hideOnClick:false,group:group,checked:"all"===this.checkIndexes,dataIndex:config.dataIndex}))}}},this);if(this.checkIndexes instanceof Array){Ext.each(this.checkIndexes,function(di){var item=menu.items.find(function(itm){return itm.dataIndex===di});if(item){item.setChecked(true,true)}},this)}if(this.readonlyIndexes instanceof Array){Ext.each(this.readonlyIndexes,function(di){var item=menu.items.find(function(itm){return itm.dataIndex===di});if(item){item.disable()}},this)}}});Ext.state.DataBaseProvider=function(config){Ext.state.DataBaseProvider.superclass.constructor.call(this);this.path="/backend/state_sessions";Ext.apply(this,config);this.state=this.readCookies()};Ext.extend(Ext.state.DataBaseProvider,Ext.state.Provider,{set:function(name,value){if(typeof value=="undefined"||value===null){this.clear(name);
|
3
|
-
return}this.setCookie(name,value);Ext.state.DataBaseProvider.superclass.set.call(this,name,value)},clear:function(name){this.clearCookie(name);Ext.state.DataBaseProvider.superclass.clear.call(this,name)},readCookies:function(){var cookies={};var values=[];new Ajax.Request(this.path,{method:"GET",asynchronous:false,onSuccess:function(response,request){values=Ext.decode(response.responseText)}});values.each(function(f){if(f.state_session&&f.state_session.component&&f.state_session.component.substring(0,3)=="ys-"){cookies[f.state_session.component.substr(3)]=this.decodeValue(f.state_session.data)}},this);return cookies},setCookie:function(name,value){Ext.Ajax.request({url:this.path,method:"POST",params:{id:"ys-"+name,data:this.encodeValue(value)}})},clearCookie:function(name){Ext.Ajax.request({url:this.path+"/ys-"+name,method:"DELETE"})}});
|