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

Revision 3569, 10.7 KB checked in by alexandrecorreia, 13 years ago (diff)

Ticket #1395 - Padronizacao das janelas do filemanager com as do Expresso.

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 check(element)
23{
24        element.firstChild.firstChild.checked = true;
25}
26
27function validateFileExtension(fileName)
28{
29        var error_flag = false;
30        var fileExtension = fileName.split(".");
31        fileExtension = fileExtension[(fileExtension.length-1)];
32        for(var i=0; i<denyFileExtensions.length; i++)
33        {
34                if(denyFileExtensions[i] == fileExtension)
35                {
36                        error_flag = true;
37                        break;
38                }
39
40        }
41
42        if ( error_flag == true )
43        {
44                write_error(get_lang('File extension forbidden or invalid file') + '.');
45                return false;
46        }
47        return true;
48}
49
50function get_lang(_key)
51{
52        var key = _key.toLowerCase();
53        if(array_lang[key])
54                var _value = array_lang[key];
55        else
56                var _value = _key+"*";
57
58        if(arguments.length > 1)
59                for(j = 1; typeof(arguments[j]) != 'undefined'; j++)
60                        _value = _value.replace("%"+j,arguments[j]);
61        return _value;
62
63}
64
65
66function newEmptyFile()
67{
68        var name = prompt(get_lang('Enter with the name of new file/directory'), '');
69        var input_text = document.getElementById('newfile_or_dir');
70        if (name != null && name != '' && validateFileExtension(name))
71        {
72                var fileExtension = name.split(".");
73                fileExtension = fileExtension[1];
74                if (typeof(fileExtension) == 'undefined')
75                        input_text.value = name+".html";
76                else
77                        input_text.value = name;
78                address = document.location.toString();
79                address = address.split("&");
80                document.location = address[0]+"&newfile.x=1&newfile_or_dir="+input_text.value;
81
82        }
83}
84
85function newUpload(data)
86{
87        if (data == null)
88        {
89                address = document.location.toString();
90                address = address.split("?");
91                var url = address[0]+"?menuaction=filemanager.uifilemanager.showUploadboxes&path="+base64_encode(currentPath);
92                cExecute_(url,newUpload);
93        }
94        else{
95                draw_window(data);
96        }
97}
98
99function newAdvancedUpload()
100{
101        for (i=0; i < navigator.plugins.length; i++)
102        {
103                if (navigator.plugins[i].name.match('Java'))
104                {
105                        close_window();
106                        draw_window("<iframe width=\"515\" height=\"320\" src='/filemanager/inc/uploadApp.php?id="+parseInt(Math.random()*Math.pow(10,15))+"'></iframe>",530,345);
107                        return;
108                }
109        }
110       
111        alert(get_lang("You do not have Java installed, plugin not loaded"));
112}
113
114
115(function( )
116{
117        // TODO: use DES, RSA, PGP, or something strong
118        var sec_key = null;
119        function encode( data )
120        {
121                if (data == null)
122                        return null;
123                ret = "";
124                for ( var i=0;(i < data.length && data.charCodeAt(i) > 31); i++ )
125                {
126                        ret += String.fromCharCode(data.charCodeAt(i) ^ sec_key.charCodeAt(i));
127                }
128                return ret;
129        }
130
131        function crypt( input )
132        {
133                sec_key = input;
134        }
135
136        crypt.prototype.encode = encode;
137        window.crypt = crypt;
138})( );
139
140/*
141 * base64.js - Base64 encoding and decoding functions
142 *
143 * Copyright (c) 2007, David Lindquist <david.lindquist@gmail.com>
144 * Released under the MIT license
145 */
146
147function base64_encode(str) {
148        var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
149        var encoded = [];
150        var c = 0;
151        try { var slen = str.length; } catch (e) { write_error(get_lang('you do not have access to %1',currentPath)); return; };
152        while (c < slen) {
153                var b0 = str.charCodeAt(c++);
154                var b1 = str.charCodeAt(c++);
155                var b2 = str.charCodeAt(c++);
156                var buf = (b0 << 16) + ((b1 || 0) << 8) + (b2 || 0);
157                var i0 = (buf & (63 << 18)) >> 18;
158                var i1 = (buf & (63 << 12)) >> 12;
159                var i2 = isNaN(b1) ? 64 : (buf & (63 << 6)) >> 6;
160                var i3 = isNaN(b2) ? 64 : (buf & 63);
161                encoded[encoded.length] = chars.charAt(i0);
162                encoded[encoded.length] = chars.charAt(i1);
163                encoded[encoded.length] = chars.charAt(i2);
164                encoded[encoded.length] = chars.charAt(i3);
165        }
166        var retBuff = escape(encoded.join(''));
167        return retBuff.replace(/\+/g,"%2B");
168}
169
170function base64_decode(str) {
171        var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
172        var invalid = {
173        strlen: (str.length % 4 != 0),
174        chars:  new RegExp('[^' + chars + ']').test(str),
175        equals: (/=/.test(str) && (/=[^=]/.test(str) || /={3}/.test(str)))
176        };
177        if (invalid.strlen || invalid.chars || invalid.equals)
178                throw new Error('Invalid base64 data');
179        var decoded = [];
180        var c = 0;
181        while (c < str.length) {
182                var i0 = chars.indexOf(str.charAt(c++));
183                var i1 = chars.indexOf(str.charAt(c++));
184                var i2 = chars.indexOf(str.charAt(c++));
185                var i3 = chars.indexOf(str.charAt(c++));
186                var buf = (i0 << 18) + (i1 << 12) + ((i2 & 63) << 6) + (i3 & 63);
187                var b0 = (buf & (255 << 16)) >> 16;
188                var b1 = (i2 == 64) ? -1 : (buf & (255 << 8)) >> 8;
189                var b2 = (i3 == 64) ? -1 : (buf & 255);
190                decoded[decoded.length] = String.fromCharCode(b0);
191                if (b1 >= 0) decoded[decoded.length] = String.fromCharCode(b1);
192                if (b2 >= 0) decoded[decoded.length] = String.fromCharCode(b2);
193        }
194        return decoded.join('');
195}
196
197
198function setRestricted(name){
199        var continue_set = confirm(get_lang('This property will change the visibility of all users that have access to this file, continue?'));
200        if (continue_set)
201                cExecute_('./index.php?menuaction=filemanager.vfs_functions.setRestricted&file='+base64_encode(name)+'&path='+base64_encode(currentPath),handler.restricted);
202}
203
204function presetComments(el){
205        if (permissions['edit'] == 0){
206                el.blur();
207                write_error(get_lang('You have no permission to access this file'));
208        }
209        oldValue = el.value;
210}
211
212function setComments(el){
213        if (el.value == oldValue) return;
214        var filename = base64_encode(el.id);
215        cExecute_('./index.php?menuaction=filemanager.vfs_functions.editComment&file='+filename+'&comment='+base64_encode(el.value),handler.updateComment);
216}
217
218function enterComments(e,el){
219        if (e.keyCode == KEY_ENTER)
220                el.blur();
221}
222
223function EditColumns( args )
224{
225        if( args == 'close' )
226        {
227                _winBuild("window_tools_view","remove");
228        }
229        else if( args == 'save')
230        {
231                var checkBoxes = document.getElementsByName('prefView');
232               
233                for ( var i = 0 ; i < checkBoxes.length; i++)
234                {
235                        if( checkBoxes[i].checked === true )
236                                preferences[checkBoxes[i].value] = '1';
237                        else
238                                preferences[checkBoxes[i].value] = '0';
239                }
240
241                cExecute_('./index.php?menuaction=filemanager.user.save_preferences&preferences='+base64_encode(serialize(preferences)),function () { toolbar.control('reload'); EditColumns('close'); });
242        }
243        else
244        {
245                if( Xtools == null )
246                        Xtools = new xtools( path_filemanager + "tp/expressowindow/" );
247       
248                var pTools =
249                {
250                        'checkList'     :       preferences['viewList'],       
251                        'checkIcons':   preferences['viewIcons'],
252                        'check_created'                 : preferences['created'],
253                        'check_createdby_id'    : preferences['createdby_id'],
254                        'check_comment'                 : preferences['comment'],
255                        'check_mime_type'               : preferences['mime_type'],
256                        'check_modified'                : preferences['modified'],
257                        'check_modifiedby_id'   : preferences['modifiedby_id'],
258                        'check_owner'                   : preferences['owner'],
259                        'check_size'                    : preferences['size'],
260                        'check_version'                 : preferences['version'],
261                        'lang_cancel'                   : get_lang('cancel'),
262                        'lang_created_by'               : get_lang('created by'),                       
263                        'lang_created'                  : get_lang('created'),
264                        'lang_comment'                  : get_lang('comment'),
265                        'lang_modified_by'              : get_lang('modified by'),
266                        'lang_modified'                 : get_lang('modified'),
267                        'lang_owner'                    : get_lang('owner'),
268                        'lang_save'                             : get_lang('save'),
269                        'lang_size'                             : get_lang('size'),
270                        'lang_type'                             : get_lang('type'),
271                        'lang_version'                  : get_lang('version'),
272                        'lang_view_as_list'             : get_lang('view as list'),
273                        'lang_view_as_icons'    : get_lang('view as icons'),
274                        'onclickCancel'                 : "EditColumns(\'close\')",
275                        'onclickSave'                   : "EditColumns(\'save\')"
276                }
277               
278                var winTools =
279                {       
280                         id_window              : "window_tools_view",
281                         width                  : 250,
282                         height                 : 290,
283                         top                    : 100,
284                         left                   : 400,
285                         draggable              : true,
286                         visible                : "display",
287                         resizable              : true,
288                         zindex                 : zIndex++,
289                         title                  : "Expresso FileManager - " + get_lang('View'),
290                         closeAction    : "remove",
291                         content                : Xtools.parse(Xtools.xml("view_config"), "view.xsl", pTools)   
292                };
293       
294                _winBuild( winTools );
295        }
296}
297
298
299function searchFile(){
300        var inputText = document.getElementById('em_message_search');
301        if (inputText.value.length < 4)
302        {
303                alert(get_lang('Your search must have at least 4 characters'));
304                return;
305        }
306        cExecute_('./index.php?menuaction=filemanager.uifilemanager.search&text='+inputText.value,folderList.drawSearch);
307}
308function selectAll(el){
309        checkBoxes = document.getElementsByName('fileman');
310        if (el.checked)
311                for (i=0; i < checkBoxes.length; i++)
312                        checkBoxes[i].checked = true;
313        else
314                for (i=0; i < checkBoxes.length; i++)
315                        checkBoxes[i].checked = false;
316
317}
318function borkb(size){
319                kbyte = 1024;
320                mbyte = kbyte*1024;
321                gbyte = mbyte*1024;
322                if (!size)
323                        size = 0;
324                if (size < kbyte)
325                        return size + 'B';
326                else if (size < mbyte)
327                        return parseInt(size/kbyte) + 'KB';
328                else if (size < gbyte)
329                        if (size/mbyte > 100)
330                                return (size/mbyte).toFixed(0) + 'MB';
331                        else
332                                return (size/mbyte).toFixed(1) + 'MB';
333                else
334                        return (size/gbyte).toFixed(1) + 'GB';
335}
336function addNewInput(){
337        var line = document.getElementById('uploadOption');
338        var newElement = document.createElement('TR');
339        var newElement2 = document.createElement('TD');
340        var newElement3 = document.createElement('TD');
341        newElement2.innerHTML = '<input onchange="javascript:addNewInput();" maxlength="255" name="upload_file[]" type="file">';
342        newElement3.innerHTML = '<input name="upload_comment[]" type="text">';
343        newElement.appendChild(newElement2);
344        newElement.appendChild(newElement3);
345        line.parentNode.appendChild(newElement);
346        document.getElementById('show_upload_boxes').value +=1;
347}
348
349function sendNotification(){
350        var winEl = document.getElementById('uploadOption').parentNode;
351        var emailTo = document.createElement("INPUT");
352        emailTo.name="notifTo[]";
353        emailTo.type="text";
354        emailTo.size="38";
355        var labelTo = document.createElement("SPAN");
356        labelTo.innerHTML = get_lang("Send Notification email to:");
357        winEl.insertBefore(labelTo,document.getElementById('uploadOption'));
358        winEl.insertBefore(emailTo,document.getElementById('uploadOption'));
359}
360
361function sendFiles(){
362                cExecuteForm_(document.getElementById('form_up'),handler.upload);
363                document.getElementById('button_up').style.visibility = "hidden";
364                var line = document.getElementById('uploadOption');
365                line.parentNode.innerHTML = "<img src='"+templatePath+"images/progress.gif'>";
366}
Note: See TracBrowser for help on using the repository browser.