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

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