source: sandbox/filemanager/js/common_functions.js @ 1741

Revision 1741, 9.6 KB checked in by amuller, 15 years ago (diff)

Ticket #597 - Melhorias no módulos gerenciador de arquivos do expresso livre

Line 
1function load(path){
2        currentPath = path;
3        cExecute('/index.php?menuaction=filemanager.uifilemanager.get_permissions&path='+base64_encode(path),loadPermissions);
4}
5
6var denyFileExtensions = new Array('exe','com','reg','chm','cnf','hta','ins',
7                                        'jse','job','lnk','pif','src','scf','sct','shb',
8                                        'vbe','vbs','wsc','wsf','wsh','cer','its','mau',
9                                        'mda','mar','mdz','prf','pst');
10function validateFileExtension(fileName){
11        var error_flag = false;
12        var fileExtension = fileName.split(".");
13        fileExtension = fileExtension[(fileExtension.length-1)];
14        for(var i=0; i<denyFileExtensions.length; i++)
15        {
16                if(denyFileExtensions[i] == fileExtension)
17                {
18                        error_flag = true;
19                        break;
20                }
21
22        }
23
24        if ( error_flag == true )
25        {
26                write_error(get_lang('File extension forbidden or invalid file') + '.');
27                return false;
28        }
29        return true;
30}
31
32function get_lang(_key){
33        var key = _key.toLowerCase();
34        if(array_lang[key])
35                var _value = array_lang[key];
36        else
37                var _value = _key+"*";
38
39        if(arguments.length > 1)
40                for(j = 1; typeof(arguments[j]) != 'undefined'; j++)
41                        _value = _value.replace("%"+j,arguments[j]);
42        return _value;
43
44}
45
46
47function newEmptyFile(){
48        var name = prompt(get_lang('Enter with the name of new file/directory'), '');
49        var input_text = document.getElementById('newfile_or_dir');
50        if (name != null && name != '' && validateFileExtension(name))
51        {
52                var fileExtension = name.split(".");
53                fileExtension = fileExtension[1];
54                if (typeof(fileExtension) == 'undefined')
55                        input_text.value = name+".html";
56                else
57                        input_text.value = name;
58                address = document.location.toString();
59                address = address.split("&");
60                document.location = address[0]+"&newfile.x=1&newfile_or_dir="+input_text.value;
61
62        }
63
64}
65
66
67/*
68 * base64.js - Base64 encoding and decoding functions
69 *
70 * Copyright (c) 2007, David Lindquist <david.lindquist@gmail.com>
71 * Released under the MIT license
72 */
73
74function base64_encode(str) {
75        var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
76        var encoded = [];
77        var c = 0;
78        while (c < str.length) {
79                var b0 = str.charCodeAt(c++);
80                var b1 = str.charCodeAt(c++);
81                var b2 = str.charCodeAt(c++);
82                var buf = (b0 << 16) + ((b1 || 0) << 8) + (b2 || 0);
83                var i0 = (buf & (63 << 18)) >> 18;
84                var i1 = (buf & (63 << 12)) >> 12;
85                var i2 = isNaN(b1) ? 64 : (buf & (63 << 6)) >> 6;
86                var i3 = isNaN(b2) ? 64 : (buf & 63);
87                encoded[encoded.length] = chars.charAt(i0);
88                encoded[encoded.length] = chars.charAt(i1);
89                encoded[encoded.length] = chars.charAt(i2);
90                encoded[encoded.length] = chars.charAt(i3);
91        }
92        return encoded.join('');
93}
94
95function base64_decode(str) {
96        var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
97        var invalid = {
98        strlen: (str.length % 4 != 0),
99        chars:  new RegExp('[^' + chars + ']').test(str),
100        equals: (/=/.test(str) && (/=[^=]/.test(str) || /={3}/.test(str)))
101        };
102        if (invalid.strlen || invalid.chars || invalid.equals)
103                throw new Error('Invalid base64 data');
104        var decoded = [];
105        var c = 0;
106        while (c < str.length) {
107                var i0 = chars.indexOf(str.charAt(c++));
108                var i1 = chars.indexOf(str.charAt(c++));
109                var i2 = chars.indexOf(str.charAt(c++));
110                var i3 = chars.indexOf(str.charAt(c++));
111                var buf = (i0 << 18) + (i1 << 12) + ((i2 & 63) << 6) + (i3 & 63);
112                var b0 = (buf & (255 << 16)) >> 16;
113                var b1 = (i2 == 64) ? -1 : (buf & (255 << 8)) >> 8;
114                var b2 = (i3 == 64) ? -1 : (buf & 255);
115                decoded[decoded.length] = String.fromCharCode(b0);
116                if (b1 >= 0) decoded[decoded.length] = String.fromCharCode(b1);
117                if (b2 >= 0) decoded[decoded.length] = String.fromCharCode(b2);
118        }
119        return decoded.join('');
120}
121
122
123function setRestricted(name){
124        var continue_set = confirm(get_lang('This property will change the visibility of all users that have access to this file, continue?'));
125        if (continue_set)
126                cExecute('/index.php?menuaction=filemanager.vfs_functions.setRestricted&file='+base64_encode(name)+'&path='+base64_encode(currentPath),setRestricted_handler);
127}
128
129function setRestricted_handler(data){
130        if (data.indexOf("True") == 0){
131                returnVal = data.split(':');
132                var img_lock = document.getElementById('restrict_'+returnVal[1]);
133                if (img_lock.src.indexOf('button_unlock') > 0)
134                {
135                        img_lock.src = img_lock.src.replace(/button_unlock/g,'button_lock');
136                        write_msg(get_lang('%1 marked as restricted',returnVal[1]));
137                }
138                else
139                {
140                        img_lock.src = img_lock.src.replace(/button_lock/g,'button_unlock');
141                        write_msg(get_lang('%1 unmarked as restricted',returnVal[1]));
142                }
143        }
144        else
145                write_error("Could not mark as restricted");
146}
147
148function setComments(el){
149        var filename = base64_encode(el.id);
150        cExecute('/index.php?menuaction=filemanager.vfs_functions.editComment&file='+filename+'&comment='+base64_encode(el.value),updateComment);
151}
152
153function updateComment(data) {
154        var returnVal = data.split(':');
155        if (data.indexOf("True") == 0){
156                write_msg(get_lang('Updated comment for %1',returnVal[1]));
157        }
158        else
159        {
160                if (returnVal[1] == "badchar")
161                        write_error(get_lang('Comments cannot contain "%1"',returnVal[2]));
162                else
163                        write_error(get_lang('You have no permission to access this file'));
164        }
165
166}
167
168function handlerDelete(data){
169        var returnVal = data.split(':');
170        for (i=0; i < returnVal.length; i++)
171                if (returnVal[i] == 'False'){
172                        write_error(get_lang('Could not delete %1',returnVal[i+1]));
173                        return;
174                }else
175                {
176                        if (returnVal[i] != ""){
177                                write_msg(get_lang('Deleted %1',returnVal[i]));
178                                var element = document.getElementById(returnVal[i]);
179                                var pai = element.parentNode.parentNode;
180                                pai.parentNode.removeChild(pai);
181                                //Repaint stripes
182                        }
183                }
184        folderList.drawStripes();
185}
186
187function updateRename(data) {
188        var returnVal = data.split(':');
189        if (data.indexOf("True") == 0){
190                write_msg(get_lang('Renamed %1 to %2',returnVal[1],returnVal[2]));
191                var nameLink = document.createElement('A');
192                var inputName = document.getElementById('input_'+returnVal[1]);
193                nameLink.innerHTML = returnVal[2];
194                nameLink.href="./index.php?menuaction=filemanager.uifilemanager.view&file="+base64_encode(returnVal[2])+"&path="+base64_encode(currentPath);
195                inputName.parentNode.appendChild(nameLink);
196                inputName.parentNode.removeChild(inputName);
197        }
198        else
199        {
200                if (returnVal[1] == "badchar")
201                        write_error(get_lang('File names cannot contain "%1"',returnVal[2]));
202                else
203                        if (returnVal[1] == "slashes")
204                                write_error(get_lang('File names cannot contain \\ or /'));
205                        if (returnVal[1] == "editing")
206                                write_error(get_lang('This file is being edited right now'));
207                        else
208                                write_error(get_lang('Could not rename %1 to %2', returnVal[1], returnVal[2]));
209        }
210
211}
212
213function EditColumns(param){
214        if (param == 'close')
215        {
216                var menu = document.getElementById('menu_col_pref');
217                menu.parentNode.removeChild(menu);
218                return;
219        }
220        if(param == 'save')
221        {
222                var checkBoxes = document.getElementsByName('prefView');
223                var url="";
224                for (var i=0; i < checkBoxes.length; i++)
225                {
226                        if (checkBoxes[i].checked)
227                                preferences[checkBoxes[i].value] = '1';
228                        else
229                                preferences[checkBoxes[i].value] = '0';
230                }
231                cExecute('/index.php?menuaction=filemanager.user.save_preferences&preferences='+base64_encode(serialize(preferences)),function () { toolbar.control('reload'); EditColumns('close'); })
232                return;
233        }
234        var check = function(type) { if (preferences[type] =='1') return 'checked'; else return '';};
235        var inputHTML = '<input name="prefView" type="checkbox" value="';
236        form = inputHTML+'mime_type" '+check('mime_type')+'>'+get_lang('type')+'<br>'+
237                inputHTML+'size" '+check('size')+'>'+get_lang('size')+'<br>'+
238                inputHTML+'created" '+check('created')+'>'+get_lang('created')+'<br>'+
239                inputHTML+'modified" '+check('modified')+'>'+get_lang('modified')+'<br>'+
240                inputHTML+'owner" '+check('owner')+'>'+get_lang('owner')+'<br>'+
241                inputHTML+'createdby_id" '+check('createdby_id')+'>'+get_lang('created by')+'<br>'+
242                inputHTML+'modifiedby_id" '+check('modifiedby_id')+'>'+get_lang('modified by')+'<br>'+
243                inputHTML+'application" '+check('application')+'>'+get_lang('application')+'<br>'+
244                inputHTML+'comment" '+check('comment')+'>'+get_lang('comment')+'<br>'+
245                inputHTML+'version" '+check('version')+'>'+get_lang('version')+'<br>'+
246                '<input value="'+get_lang('save')+'" onclick="EditColumns(\'save\')" type="button">&nbsp;'+
247                '<input value="'+get_lang('cancel')+'" onclick="EditColumns(\'close\')" type="button">';
248
249                menu = document.createElement('DIV');
250                menu.id = "menu_col_pref";
251                menu.style.left = "100px";
252                menu.style.top = "200px";
253                menu.className = 'menubox';
254                menu.style.zIndex='1';
255                menu.innerHTML = form;
256                document.getElementById('divAppboxHeader').appendChild(menu);
257}
258
259
260function searchFile(){
261        var inputText = document.getElementById('em_message_search');
262        if (inputText.value.length < 4)
263        {
264                alert(get_lang('Your search must have at least 4 characters'));
265                return;
266        }
267        cExecute('/index.php?menuaction=filemanager.uifilemanager.search&text='+inputText.value,folderList.drawSearch);
268}
269function selectAll(el){
270        checkBoxes = document.getElementsByName('fileman');
271        if (el.checked)
272                for (i=0; i < checkBoxes.length; i++)
273                        checkBoxes[i].checked = true;
274        else
275                for (i=0; i < checkBoxes.length; i++)
276                        checkBoxes[i].checked = false;
277
278}
279function borkb(size){
280                kbyte = 1024;
281                mbyte = kbyte*1024;
282                gbyte = mbyte*1024;
283                if (!size)
284                        size = 0;
285                if (size < kbyte)
286                        return size + 'B';
287                else if (size < mbyte)
288                        return parseInt(size/kbyte) + 'KB';
289                else if (size < gbyte)
290                        return (size/mbyte).toFixed(1) + 'MB';
291                else
292                        return parseInt(size/gbyte).toFixed(1) + 'GB';
293}
Note: See TracBrowser for help on using the repository browser.