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

Revision 1929, 9.6 KB checked in by amuller, 14 years ago (diff)

Ticket #597 - Correçao de caracteres especiais em nomes de arquivos

RevLine 
[1755]1function load(path,el){
[1719]2        currentPath = path;
[1755]3        contentFolders = document.getElementById('content_folders');
4        for (i=0; i < contentFolders.childNodes.length; i++)
5                if (contentFolders.childNodes[i].className == "sl")
6                        contentFolders.childNodes[i].className = "l";
7        el.className = "sl";
[1785]8        toolbar.control('reload');
[1704]9}
10
[1924]11function check(element){
12        element.firstChild.firstChild.checked = true;
13}
14
[1529]15function validateFileExtension(fileName){
16        var error_flag = false;
17        var fileExtension = fileName.split(".");
18        fileExtension = fileExtension[(fileExtension.length-1)];
19        for(var i=0; i<denyFileExtensions.length; i++)
20        {
21                if(denyFileExtensions[i] == fileExtension)
22                {
23                        error_flag = true;
24                        break;
25                }
26
27        }
28
29        if ( error_flag == true )
30        {
[1627]31                write_error(get_lang('File extension forbidden or invalid file') + '.');
[1529]32                return false;
33        }
34        return true;
35}
36
37function get_lang(_key){
38        var key = _key.toLowerCase();
39        if(array_lang[key])
40                var _value = array_lang[key];
41        else
42                var _value = _key+"*";
43
44        if(arguments.length > 1)
45                for(j = 1; typeof(arguments[j]) != 'undefined'; j++)
46                        _value = _value.replace("%"+j,arguments[j]);
47        return _value;
48
49}
[1627]50
51
52function newEmptyFile(){
53        var name = prompt(get_lang('Enter with the name of new file/directory'), '');
54        var input_text = document.getElementById('newfile_or_dir');
55        if (name != null && name != '' && validateFileExtension(name))
56        {
57                var fileExtension = name.split(".");
58                fileExtension = fileExtension[1];
59                if (typeof(fileExtension) == 'undefined')
60                        input_text.value = name+".html";
61                else
62                        input_text.value = name;
63                address = document.location.toString();
64                address = address.split("&");
[1654]65                document.location = address[0]+"&newfile.x=1&newfile_or_dir="+input_text.value;
[1627]66
67        }
68}
[1804]69function newUpload(data){
70        if (data == null)
71        {
72                address = document.location.toString();
73                address = address.split("?");
74                var url = address[0]+"?menuaction=filemanager.uifilemanager.showUploadboxes&path="+base64_encode(currentPath);
75                cExecute(url,newUpload);
76        }
77        else{
78                draw_window(data);
79        }
80}
[1880]81
82(function( )
83{
[1886]84        // TODO: use DES, RSA, PGP, or something strong
[1880]85        var sec_key = null;
86        function encode( data )
[1865]87        {
[1880]88                if (data == null)
89                        return null;
90                ret = "";
[1889]91                for ( var i=0;(i < data.length && data.charCodeAt(i) > 31); i++ )
[1880]92                {
93                        ret += String.fromCharCode(data.charCodeAt(i) ^ sec_key.charCodeAt(i));
94                }
95                return ret;
[1865]96        }
[1880]97
98        function crypt( input )
99        {
100                sec_key = input;
101        }
102
103        crypt.prototype.encode = encode;
104        window.crypt = crypt;
105})( );
106
[1627]107/*
108 * base64.js - Base64 encoding and decoding functions
109 *
110 * Copyright (c) 2007, David Lindquist <david.lindquist@gmail.com>
111 * Released under the MIT license
112 */
113
114function base64_encode(str) {
[1929]115        var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
[1627]116        var encoded = [];
117        var c = 0;
118        while (c < str.length) {
119                var b0 = str.charCodeAt(c++);
120                var b1 = str.charCodeAt(c++);
121                var b2 = str.charCodeAt(c++);
122                var buf = (b0 << 16) + ((b1 || 0) << 8) + (b2 || 0);
123                var i0 = (buf & (63 << 18)) >> 18;
124                var i1 = (buf & (63 << 12)) >> 12;
125                var i2 = isNaN(b1) ? 64 : (buf & (63 << 6)) >> 6;
126                var i3 = isNaN(b2) ? 64 : (buf & 63);
127                encoded[encoded.length] = chars.charAt(i0);
128                encoded[encoded.length] = chars.charAt(i1);
129                encoded[encoded.length] = chars.charAt(i2);
130                encoded[encoded.length] = chars.charAt(i3);
131        }
[1929]132        var retBuff = escape(encoded.join(''));
133        return retBuff.replace(/\+/g,"%2B");
[1627]134}
135
136function base64_decode(str) {
[1929]137        var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
[1627]138        var invalid = {
[1654]139        strlen: (str.length % 4 != 0),
[1627]140        chars:  new RegExp('[^' + chars + ']').test(str),
141        equals: (/=/.test(str) && (/=[^=]/.test(str) || /={3}/.test(str)))
142        };
143        if (invalid.strlen || invalid.chars || invalid.equals)
144                throw new Error('Invalid base64 data');
145        var decoded = [];
146        var c = 0;
147        while (c < str.length) {
148                var i0 = chars.indexOf(str.charAt(c++));
149                var i1 = chars.indexOf(str.charAt(c++));
150                var i2 = chars.indexOf(str.charAt(c++));
151                var i3 = chars.indexOf(str.charAt(c++));
152                var buf = (i0 << 18) + (i1 << 12) + ((i2 & 63) << 6) + (i3 & 63);
153                var b0 = (buf & (255 << 16)) >> 16;
154                var b1 = (i2 == 64) ? -1 : (buf & (255 << 8)) >> 8;
155                var b2 = (i3 == 64) ? -1 : (buf & 255);
156                decoded[decoded.length] = String.fromCharCode(b0);
157                if (b1 >= 0) decoded[decoded.length] = String.fromCharCode(b1);
158                if (b2 >= 0) decoded[decoded.length] = String.fromCharCode(b2);
159        }
160        return decoded.join('');
161}
162
163
[1719]164function setRestricted(name){
[1694]165        var continue_set = confirm(get_lang('This property will change the visibility of all users that have access to this file, continue?'));
166        if (continue_set)
[1846]167                cExecute('./index.php?menuaction=filemanager.vfs_functions.setRestricted&file='+base64_encode(name)+'&path='+base64_encode(currentPath),handler.restricted);
[1694]168}
169
[1786]170function presetComments(el){
171        if (permissions['edit'] == 0){
172                el.blur();
173                write_error(get_lang('You have no permission to access this file'));
174        }
[1803]175        oldValue = el.value;
[1786]176}
177
[1648]178function setComments(el){
[1803]179        if (el.value == oldValue) return;
[1648]180        var filename = base64_encode(el.id);
[1869]181        cExecute('./index.php?menuaction=filemanager.vfs_functions.editComment&file='+filename+'&comment='+base64_encode(el.value),handler.updateComment);
[1648]182}
183
[1791]184function enterComments(e,el){
185        if (e.keyCode == KEY_ENTER)
186                el.blur();
[1786]187}
188
[1648]189
[1704]190function EditColumns(param){
[1726]191        if (param == 'close')
192        {
[1704]193                var menu = document.getElementById('menu_col_pref');
194                menu.parentNode.removeChild(menu);
195                return;
196        }
[1726]197        if(param == 'save')
198        {
[1704]199                var checkBoxes = document.getElementsByName('prefView');
200                var url="";
201                for (var i=0; i < checkBoxes.length; i++)
202                {
203                        if (checkBoxes[i].checked)
204                                preferences[checkBoxes[i].value] = '1';
205                        else
206                                preferences[checkBoxes[i].value] = '0';
207                }
[1809]208                cExecute('./index.php?menuaction=filemanager.user.save_preferences&preferences='+base64_encode(serialize(preferences)),function () { toolbar.control('reload'); EditColumns('close'); });
[1704]209                return;
210        }
[1922]211        var checkList = (preferences['viewList'] == '1' ? 'checked="checked"': '');
212        var checkIcons = (preferences['viewIcons'] == '1' ? 'checked="checked"': '');
213        var typeHTML = '<input name="prefView" value="viewList" '+checkList+' type="radio">'+get_lang('view as list')+'<input name="prefView" '+checkIcons+' value="viewIcons" type="radio">'+get_lang('view as icons')+'<br>';
[1704]214        var check = function(type) { if (preferences[type] =='1') return 'checked'; else return '';};
[1727]215        var inputHTML = '<input name="prefView" type="checkbox" value="';
[1922]216        form = typeHTML+inputHTML+'mime_type" '+check('mime_type')+'>'+get_lang('type')+'<br>'+
[1727]217                inputHTML+'size" '+check('size')+'>'+get_lang('size')+'<br>'+
218                inputHTML+'created" '+check('created')+'>'+get_lang('created')+'<br>'+
219                inputHTML+'modified" '+check('modified')+'>'+get_lang('modified')+'<br>'+
220                inputHTML+'owner" '+check('owner')+'>'+get_lang('owner')+'<br>'+
221                inputHTML+'createdby_id" '+check('createdby_id')+'>'+get_lang('created by')+'<br>'+
222                inputHTML+'modifiedby_id" '+check('modifiedby_id')+'>'+get_lang('modified by')+'<br>'+
[1750]223        //      inputHTML+'application" '+check('application')+'>'+get_lang('application')+'<br>'+
[1727]224                inputHTML+'comment" '+check('comment')+'>'+get_lang('comment')+'<br>'+
225                inputHTML+'version" '+check('version')+'>'+get_lang('version')+'<br>'+
[1704]226                '<input value="'+get_lang('save')+'" onclick="EditColumns(\'save\')" type="button">&nbsp;'+
227                '<input value="'+get_lang('cancel')+'" onclick="EditColumns(\'close\')" type="button">';
228
229                menu = document.createElement('DIV');
230                menu.id = "menu_col_pref";
231                menu.style.left = "100px";
232                menu.style.top = "200px";
233                menu.className = 'menubox';
234                menu.style.zIndex='1';
235                menu.innerHTML = form;
236                document.getElementById('divAppboxHeader').appendChild(menu);
237}
[1726]238
239
240function searchFile(){
241        var inputText = document.getElementById('em_message_search');
242        if (inputText.value.length < 4)
243        {
244                alert(get_lang('Your search must have at least 4 characters'));
245                return;
246        }
[1748]247        cExecute('./index.php?menuaction=filemanager.uifilemanager.search&text='+inputText.value,folderList.drawSearch);
[1726]248}
[1730]249function selectAll(el){
250        checkBoxes = document.getElementsByName('fileman');
251        if (el.checked)
252                for (i=0; i < checkBoxes.length; i++)
253                        checkBoxes[i].checked = true;
254        else
255                for (i=0; i < checkBoxes.length; i++)
256                        checkBoxes[i].checked = false;
257
258}
259function borkb(size){
260                kbyte = 1024;
261                mbyte = kbyte*1024;
262                gbyte = mbyte*1024;
263                if (!size)
264                        size = 0;
265                if (size < kbyte)
266                        return size + 'B';
267                else if (size < mbyte)
268                        return parseInt(size/kbyte) + 'KB';
269                else if (size < gbyte)
[1785]270                        if (size/mbyte > 100)
271                                return (size/mbyte).toFixed(0) + 'MB';
272                        else
273                                return (size/mbyte).toFixed(1) + 'MB';
[1730]274                else
275                        return parseInt(size/gbyte).toFixed(1) + 'GB';
276}
[1804]277function addNewInput(){
278        var line = document.getElementById('uploadOption');
279        var newElement = document.createElement('TR');
280        var newElement2 = document.createElement('TD');
281        var newElement3 = document.createElement('TD');
282        newElement2.innerHTML = '<input onchange="javascript:addNewInput();" maxlength="255" name="upload_file[]" type="file">';
283        newElement3.innerHTML = '<input name="upload_comment[]" type="text">';
284        newElement.appendChild(newElement2);
285        newElement.appendChild(newElement3);
286        line.parentNode.appendChild(newElement);
287        document.getElementById('show_upload_boxes').value +=1;
288}
289
290function sendFiles(){
[1846]291                cExecuteForm(document.getElementById('form_up'),handler.upload);
[1804]292                document.getElementById('button_up').style.visibility = "hidden";
293                var line = document.getElementById('uploadOption');
294                line.parentNode.innerHTML = "<img src='"+templatePath+"images/progress.gif'>";
295}
Note: See TracBrowser for help on using the repository browser.