source: branches/2.2/filemanager/js/common_functions.js @ 3638

Revision 3638, 12.1 KB checked in by alexandrecorreia, 13 years ago (diff)

Ticket #1468 - Notificacao por email de uploads de arquivos enviados pelo modulo Filemanager

Line 
1
2var Xtools      = null;
3
4function load(path,el)
5{
6        currentPath = path;
7        contentFolders = document.getElementById('content_folders');
8        for (i=0; i < contentFolders.childNodes.length; i++)
9                if (contentFolders.childNodes[i].className == "sl")
10                        contentFolders.childNodes[i].className = "l";
11        el.className = "sl";
12        current_folder = currentPath;
13        if(last_folder != current_folder){
14                lastPage = 1;
15                current_page = 1;
16                last_folder = current_folder;
17                offset = 0;
18        }
19        toolbar.control('reload');
20}
21
22function loadXtools()
23{
24        if( Xtools == null )
25                Xtools = new xtools( path_filemanager + "tp/expressowindow/" );
26}
27
28function check(element)
29{
30        element.firstChild.firstChild.checked = true;
31}
32
33function validateFileExtension(fileName)
34{
35        var error_flag = false;
36        var fileExtension = fileName.split(".");
37        fileExtension = fileExtension[(fileExtension.length-1)];
38        for(var i=0; i<denyFileExtensions.length; i++)
39        {
40                if(denyFileExtensions[i] == fileExtension)
41                {
42                        error_flag = true;
43                        break;
44                }
45
46        }
47
48        if ( error_flag == true )
49        {
50                write_error(get_lang('File extension forbidden or invalid file') + '.');
51                return false;
52        }
53        return true;
54}
55
56function get_lang(_key)
57{
58        var key = _key.toLowerCase();
59        if(array_lang[key])
60                var _value = array_lang[key];
61        else
62                var _value = _key+"*";
63
64        if(arguments.length > 1)
65                for(j = 1; typeof(arguments[j]) != 'undefined'; j++)
66                        _value = _value.replace("%"+j,arguments[j]);
67        return _value;
68
69}
70
71
72function newEmptyFile()
73{
74        var name = prompt(get_lang('Enter with the name of new file/directory'), '');
75        var input_text = document.getElementById('newfile_or_dir');
76        if (name != null && name != '' && validateFileExtension(name))
77        {
78                var fileExtension = name.split(".");
79                fileExtension = fileExtension[1];
80                if (typeof(fileExtension) == 'undefined')
81                        input_text.value = name+".html";
82                else
83                        input_text.value = name;
84                address = document.location.toString();
85                address = address.split("&");
86                document.location = address[0]+"&newfile.x=1&newfile_or_dir="+input_text.value;
87
88        }
89}
90
91function newUpload( )
92{
93        var _newUpload = function(data)
94        {
95                loadXtools();
96               
97                var pArgs = unserialize(data);
98                        pArgs.lang_add_file             = get_lang("Add file");
99                        pArgs.lang_click_here   = get_lang("Click here");
100                        pArgs.lang_more_files   = get_lang("More files");
101                        pArgs.lang_send_email   = get_lang("Send email");
102                        pArgs.height                    = 210;
103                        pArgs.path_filemanager  = path_filemanager;
104                        pArgs.width                     = 450;
105       
106                var _html = Xtools.parse( Xtools.xml("upload_files"), "upload.xsl", pArgs );
107               
108                draw_window( _html, 490, 350, get_lang("upload files") );
109               
110                sendNotification( pArgs.emails_to );
111        }
112       
113        address = document.location.toString();
114        address = address.split("?");
115        var url = address[0]+"?menuaction=filemanager.uifilemanager.showUploadboxes&path="+base64_encode(currentPath);
116        cExecute_( url, _newUpload );
117}
118
119function newAdvancedUpload()
120{
121        for ( var i = 0 ; i < navigator.plugins.length; i++ )
122        {
123                if ( navigator.plugins[i].name.match('Java') )
124                {
125                        close_window();
126
127                        loadXtools();
128                       
129                        var pArgs =
130                        {
131                                'iframe_width'          : 515,
132                                'iframe_height'         : 320,
133                                'iframe_src'            : path_filemanager + "inc/uploadApp.php?id="+parseInt(Math.random()*Math.pow(10,15))
134                        };
135                       
136                        var _html = Xtools.parse( Xtools.xml("upload_files_advanced"), "uploadAdvanced.xsl", pArgs);
137                       
138                        draw_window( _html, 530, 345, get_lang("Advanced Upload") );
139                       
140                        return;
141                }
142        }
143       
144        alert(get_lang("You do not have Java installed, plugin not loaded"));
145}
146
147
148(function( )
149{
150        // TODO: use DES, RSA, PGP, or something strong
151        var sec_key = null;
152        function encode( data )
153        {
154                if (data == null)
155                        return null;
156                ret = "";
157                for ( var i=0;(i < data.length && data.charCodeAt(i) > 31); i++ )
158                {
159                        ret += String.fromCharCode(data.charCodeAt(i) ^ sec_key.charCodeAt(i));
160                }
161                return ret;
162        }
163
164        function crypt( input )
165        {
166                sec_key = input;
167        }
168
169        crypt.prototype.encode = encode;
170        window.crypt = crypt;
171})( );
172
173/*
174 * base64.js - Base64 encoding and decoding functions
175 *
176 * Copyright (c) 2007, David Lindquist <david.lindquist@gmail.com>
177 * Released under the MIT license
178 */
179
180function base64_encode(str) {
181        var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
182        var encoded = [];
183        var c = 0;
184        try { var slen = str.length; } catch (e) { write_error(get_lang('you do not have access to %1',currentPath)); return; };
185        while (c < slen) {
186                var b0 = str.charCodeAt(c++);
187                var b1 = str.charCodeAt(c++);
188                var b2 = str.charCodeAt(c++);
189                var buf = (b0 << 16) + ((b1 || 0) << 8) + (b2 || 0);
190                var i0 = (buf & (63 << 18)) >> 18;
191                var i1 = (buf & (63 << 12)) >> 12;
192                var i2 = isNaN(b1) ? 64 : (buf & (63 << 6)) >> 6;
193                var i3 = isNaN(b2) ? 64 : (buf & 63);
194                encoded[encoded.length] = chars.charAt(i0);
195                encoded[encoded.length] = chars.charAt(i1);
196                encoded[encoded.length] = chars.charAt(i2);
197                encoded[encoded.length] = chars.charAt(i3);
198        }
199        var retBuff = escape(encoded.join(''));
200        return retBuff.replace(/\+/g,"%2B");
201}
202
203function base64_decode(str) {
204        var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
205        var invalid = {
206        strlen: (str.length % 4 != 0),
207        chars:  new RegExp('[^' + chars + ']').test(str),
208        equals: (/=/.test(str) && (/=[^=]/.test(str) || /={3}/.test(str)))
209        };
210        if (invalid.strlen || invalid.chars || invalid.equals)
211                throw new Error('Invalid base64 data');
212        var decoded = [];
213        var c = 0;
214        while (c < str.length) {
215                var i0 = chars.indexOf(str.charAt(c++));
216                var i1 = chars.indexOf(str.charAt(c++));
217                var i2 = chars.indexOf(str.charAt(c++));
218                var i3 = chars.indexOf(str.charAt(c++));
219                var buf = (i0 << 18) + (i1 << 12) + ((i2 & 63) << 6) + (i3 & 63);
220                var b0 = (buf & (255 << 16)) >> 16;
221                var b1 = (i2 == 64) ? -1 : (buf & (255 << 8)) >> 8;
222                var b2 = (i3 == 64) ? -1 : (buf & 255);
223                decoded[decoded.length] = String.fromCharCode(b0);
224                if (b1 >= 0) decoded[decoded.length] = String.fromCharCode(b1);
225                if (b2 >= 0) decoded[decoded.length] = String.fromCharCode(b2);
226        }
227        return decoded.join('');
228}
229
230
231function setRestricted(name){
232        var continue_set = confirm(get_lang('This property will change the visibility of all users that have access to this file, continue?'));
233        if (continue_set)
234                cExecute_('./index.php?menuaction=filemanager.vfs_functions.setRestricted&file='+base64_encode(name)+'&path='+base64_encode(currentPath),handler.restricted);
235}
236
237function presetComments(el){
238        if (permissions['edit'] == 0){
239                el.blur();
240                write_error(get_lang('You have no permission to access this file'));
241        }
242        oldValue = el.value;
243}
244
245function setComments(el){
246        if (el.value == oldValue) return;
247        var filename = base64_encode(el.id);
248        cExecute_('./index.php?menuaction=filemanager.vfs_functions.editComment&file='+filename+'&comment='+base64_encode(el.value),handler.updateComment);
249}
250
251function enterComments(e,el)
252{
253        if ( e.keyCode == KEY_ENTER )
254        {
255                el.blur();
256        }
257}
258
259function EditColumns( args )
260{
261        if( args == 'close' )
262        {
263                _winBuild("window_tools_view","remove");
264        }
265        else if( args == 'save')
266        {
267                var checkBoxes = document.getElementsByName('prefView');
268               
269                for ( var i = 0 ; i < checkBoxes.length; i++)
270                {
271                        if( checkBoxes[i].checked === true )
272                                preferences[checkBoxes[i].value] = '1';
273                        else
274                                preferences[checkBoxes[i].value] = '0';
275                }
276
277                cExecute_('./index.php?menuaction=filemanager.user.save_preferences&preferences='+base64_encode(serialize(preferences)),function () { toolbar.control('reload'); EditColumns('close'); });
278        }
279        else
280        {
281                loadXtools();
282               
283                var pTools =
284                {
285                        'checkList'     :       preferences['viewList'],       
286                        'checkIcons':   preferences['viewIcons'],
287                        'check_created'                 : preferences['created'],
288                        'check_createdby_id'    : preferences['createdby_id'],
289                        'check_comment'                 : preferences['comment'],
290                        'check_mime_type'               : preferences['mime_type'],
291                        'check_modified'                : preferences['modified'],
292                        'check_modifiedby_id'   : preferences['modifiedby_id'],
293                        'check_owner'                   : preferences['owner'],
294                        'check_size'                    : preferences['size'],
295                        'check_version'                 : preferences['version'],
296                        'lang_cancel'                   : get_lang('cancel'),
297                        'lang_created_by'               : get_lang('created by'),                       
298                        'lang_created'                  : get_lang('created'),
299                        'lang_comment'                  : get_lang('comment'),
300                        'lang_modified_by'              : get_lang('modified by'),
301                        'lang_modified'                 : get_lang('modified'),
302                        'lang_owner'                    : get_lang('owner'),
303                        'lang_save'                             : get_lang('save'),
304                        'lang_size'                             : get_lang('size'),
305                        'lang_type'                             : get_lang('type'),
306                        'lang_version'                  : get_lang('version'),
307                        'lang_view_as_list'             : get_lang('view as list'),
308                        'lang_view_as_icons'    : get_lang('view as icons'),
309                        'onclickCancel'                 : "EditColumns(\'close\')",
310                        'onclickSave'                   : "EditColumns(\'save\')"
311                }
312               
313                var winTools =
314                {       
315                         id_window              : "window_tools_view",
316                         width                  : 250,
317                         height                 : 290,
318                         top                    : 100,
319                         left                   : 400,
320                         draggable              : true,
321                         visible                : "display",
322                         resizable              : true,
323                         zindex                 : zIndex++,
324                         title                  : "Expresso FileManager - " + get_lang('View'),
325                         closeAction    : "remove",
326                         content                : Xtools.parse(Xtools.xml("view_config"), "view.xsl", pTools)   
327                };
328       
329                _winBuild( winTools );
330        }
331}
332
333
334function searchFile(){
335        var inputText = document.getElementById('em_message_search');
336        if (inputText.value.length < 4)
337        {
338                alert(get_lang('Your search must have at least 4 characters'));
339                return;
340        }
341        cExecute_('./index.php?menuaction=filemanager.uifilemanager.search&text='+inputText.value,folderList.drawSearch);
342}
343function selectAll(el){
344        checkBoxes = document.getElementsByName('fileman');
345        if (el.checked)
346                for (i=0; i < checkBoxes.length; i++)
347                        checkBoxes[i].checked = true;
348        else
349                for (i=0; i < checkBoxes.length; i++)
350                        checkBoxes[i].checked = false;
351
352}
353
354function borkb(size)
355{
356        var kbyte = 1024;
357        var mbyte = kbyte*1024;
358        var gbyte = mbyte*1024;
359       
360        if (!size)
361        {
362                size = 0;
363        }
364
365        if (size < kbyte)
366        {
367                return size + 'B';
368        }
369        else if (size < mbyte)
370        {
371                return parseInt(size/kbyte) + 'KB';
372        }
373        else if (size < gbyte)
374        {
375                if ( size/mbyte > 100)
376                        return (size/mbyte).toFixed(0) + 'MB';
377                else
378                        return (size/mbyte).toFixed(1) + 'MB';
379        }
380        else
381        {
382                return (size/gbyte).toFixed(1) + 'GB';
383        }
384}
385
386function addNewInput()
387{
388        var newElement = document.createElement('div');
389                newElement.innerHTML  = '<input maxlength="255" name="upload_file[]" type="file" style="margin-right:5px;" />' +
390                                                                '<input name="upload_comment[]" type="text" style="margin-right:2px;" />' +
391                                                                '<span style="color:red; cursor:pointer;" onclick="removeInput(this);">'+get_lang('delete')+'</span>';
392       
393        document.getElementById('uploadOption').parentNode.appendChild(newElement);
394}
395
396function removeInput()
397{
398        if( arguments.length > 0 )
399        {
400                var _parent = arguments[0].parentNode;
401               
402                _parent.parentNode.removeChild(_parent);
403        }
404}
405
406function sendNotification()
407{
408        var _div = document.getElementById('sendNotifcation');
409       
410        var _SendNotification = function()
411        {
412                var pArgs =
413                {
414                        'lang_delete'                                           : get_lang('delete'),
415                        'lang_send_notification_email_to'       : get_lang("Send Notification email to:"),
416                        'value_email'                                           : ( ( arguments.length > 0 ) ? arguments[0] : "" )
417                };
418
419                loadXtools();
420               
421                _div.innerHTML += Xtools.parse( Xtools.xml("send_notification"), "send_notification.xsl", pArgs);
422        }
423       
424        if( arguments.length > 0 )
425        {
426                var emailsTo = arguments[0].split(",");
427               
428                _div.innerHTML += "<div style='margin:4 2 2 4px;'>" +
429                                              "<label style='font-weight: bold;'>" + get_lang('The following addresses will be notified') + " : </label>" +
430                                              "</div>";
431                for( var i = 0 ;  i < emailsTo.length ; i++ )
432                {
433                        _SendNotification( emailsTo[i] );
434                        _div.innerHTML += "<div style='margin:1 2 1 4px;'> - " + emailsTo[i] + "</div>";
435                }
436                _div.innerHTML += "<br/>";
437        }
438        else
439                _SendNotification();
440}
441
442function sendFiles()
443{
444        var _formUp                     = document.getElementById('form_up');
445        var _uploadFiles        = document.getElementsByTagName('input');
446        var _flagSend           = true;
447       
448        for( var i = 0 ; i < _uploadFiles.length ; i++ )
449        {
450                if( _uploadFiles[i].name.indexOf("upload_file") > -1 )
451                {
452                        if( _uploadFiles[i].value == "" )
453                        {
454                                removeInput( _uploadFiles[i] );
455                                _flagSend = false;
456                        }
457                }
458        }
459       
460        if( _flagSend )
461        {
462                cExecuteForm_( _formUp ,handler.upload);
463        }
464        else
465                write_msg(get_lang("No file(s) to send") + "!");
466
467        close_window();
468}
Note: See TracBrowser for help on using the repository browser.