lipsiadmin 5.1.1 → 5.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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"})}});
|