source: branches/2.2/filemanager/js/draw_api.js @ 3879

Revision 3879, 32.4 KB checked in by alexandrecorreia, 13 years ago (diff)

Ticket #1648 - Correcao( codigo ) e melhoria( laytou/informacao ) no upload de arquivos para o servidor.

Line 
1
2var offset;
3var showHidden  = null;
4var Xtools              = null;
5var zIndex              = 1000;
6
7function getPointer(e) {
8        if (is_ie) {
9                DocX = event.clientX + document.body.scrollLeft;
10                DocY = event.clientY + document.body.scrollTop;
11        } else {
12                DocX = e.pageX;
13                DocY = e.pageY;
14        }
15}
16
17function loadHistory(filename){
18        cExecute_('./index.php?menuaction=filemanager.uifilemanager.history&file='+base64_encode(filename)+"&path="+base64_encode(currentPath),draw_window);
19}
20
21function loadXtools()
22{
23        if( Xtools == null )
24                Xtools = new xtools( path_filemanager + "tp/expressowindow/" );
25}
26
27function loadPermissions(data)
28{
29        var permission = parseInt(data);
30        var ACL_READ = 1;
31        var ACL_ADD = 2;
32        var ACL_EDIT = 4;
33        var ACL_DELETE = 8;
34        var ACL_PRIVATE = 16;
35
36        permissions['read']=(permission & ACL_READ);
37        permissions['add']=(permission & ACL_ADD);
38        permissions['edit']=(permission & ACL_EDIT);
39        permissions['delete']=(permission & ACL_DELETE);
40        permissions['private']=(permission & ACL_PRIVATE);
41        toolbar.load();
42}
43
44function close_window()
45{
46        _winBuild( 'dwindow' + ( zIndex-1 ) , "remove" );
47}
48
49function draw_window( )
50{
51        if( arguments.length > 0 )
52        {
53                var htmlData    = arguments[0];
54                var sizeW               = ( arguments[1] ) ? arguments[1] : 420 ;
55                var sizeH               = ( arguments[2] ) ? arguments[2] : 200 ;
56                var titleAction = ( arguments[3] ) ? " - " + arguments[3] : "";
57                var id_window   = ( arguments[4] ) ? "dwindow" + arguments[4] : "dwindow" + zIndex;
58               
59                var _janela =
60                {
61                        id_window       : id_window,
62                        width           : sizeW,
63                        height          : sizeH,
64                        top             : 200,
65                        left            : ( ( screen.width / 2 ) - ( sizeW / 2) ),
66                        draggable       : true,
67                        visible         : "display",
68                        resizable       : true,
69                        zindex          : ++zIndex,
70                        title           : "Expresso - " + get_lang("filemanager") + titleAction,
71                        closeAction     : "remove",
72                        content         : htmlData
73                };
74       
75                _winBuild( _janela );
76        }
77}
78
79function draw_menu()
80{
81        var _options    = arguments[0];
82        var _parent             = arguments[1];
83        var dt                  = new Date();   
84       
85        if( showHidden == null )
86                showHidden = new ShowHidden( 200 );
87
88        var _itens = "";
89               
90        for( var i in _options )
91        {
92                if( _options[i].constructor == Function )
93                        continue;
94
95                _itens += '<img src="' + _options[i][2] + '" '+ _options[i][3] +'/>';
96                _itens += '<a href='+_options[i][1]+' style="cursor:pointer; margin:3px;">' + _options[i][0] + '</a><br/>'
97        }
98
99        var _optionsItens                               = document.createElement("div");
100                _optionsItens.id                        = "fastMenuFileManager";
101                _optionsItens.className         = "x-menu";
102                _optionsItens.style.zIndex      = zIndex++;
103                _optionsItens.innerHTML         = _itens;
104                _optionsItens.onclick           = function(){ showHidden.hiddenObject(false); };
105                _optionsItens.onmouseout        = function(){ showHidden.hiddenObject(false); };
106                _optionsItens.onmouseover       = function(){ showHidden.hiddenObject(true); };
107                                                         
108                showHidden.action('onmouseover', 'onmouseout', _optionsItens);
109
110                _parent.parentNode.appendChild( _optionsItens );
111}
112
113function resizeDiv(){
114        defaultHeight = document.body.clientHeight ? document.body.clientHeight : document.body.offsetHeight;
115        document.getElementById('fmFileWindow').style.height = defaultHeight-170;
116        document.getElementById('content_folders').style.height = defaultHeight - (is_ie ? 230 : 215);
117
118}
119var headerMsgLock = false;
120var labelBefore = "";
121function write_msg (message){
122        connector.hideProgressBar();
123        if (headerMsgLock){
124                setTimeout('write_msg("'+message+'");', 300);
125                return;
126        }
127        headerMsgLock = true;
128        headerDiv = document.getElementById("main_title");
129        labelBefore = headerDiv.innerHTML;
130        headerDiv.innerHTML = '<table width=100% cellspacing="0" cellpadding="0" border="0"><tbody><tr><th width="40%"></th><th noWrap class="action_info_th">'+message+'</th><th width="40%"></th></tr></tbody></table>';
131        setTimeout('headerMsgLock = false; document.getElementById("main_title").innerHTML = labelBefore;', 3000);
132}
133
134function write_error (message){
135        connector.hideProgressBar();
136        if (headerMsgLock){
137                setTimeout('write_error("'+message+'");', 300);
138                return;
139        }
140        headerMsgLock = true;
141        headerDiv = document.getElementById("main_title");
142        labelBefore = headerDiv.innerHTML;
143        headerDiv.innerHTML = '<table width=100% cellspacing="0" cellpadding="0" border="0"><tbody><tr><th width="40%"></th><th noWrap class="action_error_th">'+message+'</th><th width="40%"></th></tr></tbody></table>';
144        setTimeout('headerMsgLock = false; document.getElementById("main_title").innerHTML = labelBefore;', 3000);
145}
146
147function displayMessages(){
148        var messages = document.getElementById("allMessages");
149
150        for (i=0; i < messages.childNodes.length; i++){
151                if (messages.childNodes[i].innerHTML.indexOf(get_lang('Error:')) == 0)
152                        write_error(messages.childNodes[i].innerHTML);
153                else
154                        write_msg(messages.childNodes[i].innerHTML);
155        }
156}
157
158function loadPreferences(){
159        preferencesEl = document.getElementById('userPreferences');
160        preferences = unserialize(preferencesEl.value);
161        preferencesEl.parentNode.removeChild(preferencesEl);
162}
163function reloadFiles(newCriteria){
164        if (newCriteria == criteria)
165                order_type = (order_type=='1'?'0':'1')
166        else
167                criteria = newCriteria;
168        toolbar.control('reload');
169}
170
171function initDrawApi()
172{
173        var SecEl = document.getElementById('userKey');
174        crypt = new crypt(SecEl.value);
175       
176        SecEl.parentNode.removeChild(SecEl);
177
178        loadPreferences();
179        preferences.files_per_page = (preferences.files_per_page != undefined) ? preferences.files_per_page : 10;
180        offset = (current_page-1)*preferences.files_per_page;
181
182        currentPath = document.getElementById('currentPath').value;
183        document.getElementById('divAppboxHeader').innerHTML = title_app;
184        displayMessages();
185        resizeDiv();
186        window.onresize = resizeDiv;
187        document.body.style.overflow = "hidden";
188        cExecute_('./index.php?menuaction=filemanager.uifilemanager.get_folders_list', handler.draw_folders_list );
189}
190
191function folderList()
192{
193        this.td = '<td style="padding-left: 2px; padding-right: 2px;" valign="middle">';
194}
195
196folderList.prototype.init = function()
197{
198        this.element = document.getElementById('fmFileWindow');
199}
200
201folderList.prototype.clear = function()
202{
203        this.element.innerHTML = "";
204}
205
206folderList.prototype.drawSearch = function(data)
207{
208        var fl = folderList;
209        var files = unserialize(data);
210        if (files == null)
211        {
212                alert(get_lang('No results found'));
213                return
214        }
215        toolbar.clear();
216        fl.init();
217        fl.clear();
218        var newpage;
219        var sp_hd = '<span name="head" style="cursor: pointer; cursor: hand;"';
220        var sp_tl = '</span></td>';
221        newpage = '<table cellspacing="0" cellpadding="2" width="100%"><tbody><tr class="message_header">';
222        newpage += fl.td+'<input onclick="selectAll(this)" type="checkbox"></td><td></td><td></td>';
223        newpage += fl.td+sp_hd+' id="name">'+get_lang('file name')+sp_tl;
224        newpage += fl.td+sp_hd+' id="folder">'+get_lang('folder')+sp_tl;
225        if (preferences.mime_type =='1')
226                newpage += fl.td+sp_hd+' id="mime_type">'+get_lang('mime type')+sp_tl;
227        if (preferences.size =='1')
228                newpage += fl.td+sp_hd+' id="size">'+get_lang('size')+'</a>'+sp_tl;
229        if (preferences.created =='1')
230                newpage += fl.td+sp_hd+' id="created">'+get_lang('created')+'</a>'+sp_tl;
231        if (preferences.modified =='1')
232                newpage += fl.td+sp_hd+' id="modified">'+get_lang('modified')+'</a>'+sp_tl;
233        if (preferences.createdby_id =='1')
234                newpage += fl.td+sp_hd+' id="createdby_id">'+get_lang('created by')+'</a>'+sp_tl;
235        if (preferences.modifiedby_id =='1')
236                newpage += fl.td+sp_hd+' id="modifiedby_id">'+get_lang('modified by')+'</a>'+sp_tl;
237        if (preferences.comment =='1')
238                newpage += fl.td+sp_hd+' id="comment">'+get_lang('comment')+'</a>'+sp_tl;
239        if (preferences.version =='1') newpage += fl.td+sp_hd+' id="version">'+get_lang('version')+'</a>'+sp_tl+'</tr>';
240
241        for (var i=0; i < files.length; i++)
242        {
243                newpage += '<tr>'+fl.td;
244                newpage += '<input name="fileman" value="'+files[i].name+'" type="checkbox"></td>';
245                newpage += '<td></td><td></td>';
246                newpage += fl.td+'<img src="'+files[i].icon+'">';
247                newpage += '<a id="name_'+files[i].name+'" href="./index.php?menuaction=filemanager.uifilemanager.view&file='+base64_encode(files[i].name)+'&path='+base64_encode(files[i].directory)+'" target="_blank">'+files[i].name+'</a>&nbsp;</td>';
248                newpage += fl.td+files[i].directory+'</td>';
249                if (preferences.mime_type =='1') newpage += fl.td+files[i].mime_type+'</td>';
250                if (preferences.size =='1') newpage += fl.td+borkb(files[i].size)+'</td>';
251                if (preferences.created =='1') newpage += fl.td+files[i].created+'</td>';
252                if (preferences.modified =='1') newpage += fl.td+files[i].modified+'</td>';
253                if (preferences.createdby_id =='1') newpage += fl.td+files[i].createdby_id+'</td>';
254                if (preferences.modifiedby_id =='1') newpage += fl.td+files[i].modifiedby_id+'</td>';
255                if (preferences.comment =='1') newpage += fl.td+'<span id="'+files[i].name+'">'+files[i].comment+'</span></td>';
256                if (preferences.version =='1') newpage += fl.td+'<span>'+files[i].version+'</span></td></tr>';
257
258        }
259        fl.element.innerHTML = newpage;
260        fl.drawStripes();
261}
262folderList.prototype.createLine = function(file){
263                var fl = folderList;
264                retBuff = '<tr id="line_'+file.name+'" onmouseout="clearTimeout(menuTimeout)" onmousedown="_dragArea.dragEl=this;_dragArea.operation=\'drag\'">';
265                retBuff += fl.td;
266                retBuff += '<input name="fileman" value="'+file.name+'" type="checkbox"></td>';
267                if (permissions['private']) {
268                        retBuff += '<td><div id="restrict_'+file.name+'" onclick="setRestricted(\''+file.name+'\')" ';
269                        retBuff += 'style="background-image:url('+templatePath+'images/button_'+(file.pub == '1'?'lock':'unlock')+'.png);background-repeat: repeat-none;width:15px;height:12px;"></div></td>';
270                }
271                else
272                        retBuff += '<td></td>';
273
274                switch (file.mime_type)
275                {
276                        case 'text/html':
277                                retBuff += '<td><a href="./index.php?menuaction=filemanager.uifilemanager.export&file='+base64_encode(file.name)+'&path='+base64_encode(currentPath)+'"><div class="exportButton" alt="'+get_lang('export')+'" title="'+get_lang('export')+'"></div></a></td>';
278                                break;
279                        case 'application/zip':
280                                retBuff += '<td><div class="exportButton" onclick="unarchive(\''+file.name+'\')" alt="'+get_lang('unarchive')+'" title="'+get_lang('unarchive')+'"></a></td>'
281                                break;
282                        default:
283                                retBuff += '<td></td>';
284                }
285                retBuff += fl.td+'<div style="background-image:url('+(file.icon)+'); background-repeat: no-repeat; height:16px; padding-left: 18px; overflow: hidden;">';
286                if((file.mime_type).toUpperCase().indexOf('IMAGE') == 0)
287                        var mousefunc = 'draw_card(\'preview\',\''+file.name+'\')'
288                else
289                        var mousefunc = 'hide_card()';
290                retBuff += '<span class="fileLink" onmouseover="'+mousefunc+'" id="name_'+file.name+'" onclick="window.open(\'./index.php?menuaction=filemanager.uifilemanager.view&file='+base64_encode(file.name)+'&path='+base64_encode(currentPath)+'\');">'+file.name+'</span></div></td>';
291                if (preferences.mime_type =='1') retBuff += fl.td+file.mime_type+'</td>';
292                if (preferences.size =='1') retBuff += fl.td+borkb(file.size)+'</td>';
293                var now = new Date();
294                var midnight = Date.parse(now.toDateString());
295                var dtString = "";
296                if (preferences.created =='1') {
297                        var created = new Date();
298                        created.setTime(file.created*1000);
299                        if (created.getTime() > midnight)
300                                if (created.getMinutes() < 10 )
301                                        dtString = created.getHours()+":0"+created.getMinutes();
302                                else
303                                        dtString = created.getHours()+":"+created.getMinutes();
304                        else {
305                                dtString = (created.getDate() < 10) ? "0"+created.getDate()+"/" : created.getDate()+"/";
306                                dtString += (created.getMonth() < 9) ? "0" : "";
307                                dtString += (created.getMonth()+1)+"/"+created.getFullYear();
308                        }
309                        retBuff += fl.td+dtString+'</td>';
310                }
311                if (preferences.modified =='1'){
312                        var modified = new Date();
313                        modified.setTime(file.modified*1000);
314                        if (file.modified != "")
315                                if (modified.getTime() > midnight)
316                                        if (modified.getMinutes() < 10)
317                                                dtString = modified.getHours()+":0"+modified.getMinutes();
318                                        else
319                                                dtString = modified.getHours()+":"+modified.getMinutes();
320                                else {
321                                        dtString = (modified.getDate() < 10) ? "0"+modified.getDate()+"/" : modified.getDate()+"/";
322                                        dtString += (modified.getMonth() < 9) ? "0" : "";
323                                        dtString += (modified.getMonth()+1)+"/"+modified.getFullYear();
324                                }
325                        else
326                                dtString = "";
327                        retBuff += fl.td+dtString+'</td>';
328                }
329                if (preferences.owner =='1'){
330                        retBuff += fl.td;
331                        retBuff += '<div onmouseover="draw_card(\'user\',\''+file.owner+'\')">'+file.owner+'</div></td>';
332                }
333                if (preferences.createdby_id =='1'){
334                        retBuff += fl.td;
335                        retBuff += '<div onmouseover="draw_card(\'user\',\''+file.createdby_id+'\')">'+file.createdby_id+'</div></td>';
336                }
337                if (preferences.modifiedby_id =='1'){
338                        retBuff += fl.td;
339                        retBuff += '<div onmouseover="draw_card(\'user\',\''+file.modifiedby_id+'\')">'+file.modifiedby_id+'</div></td>';
340                }
341                if (preferences.comment =='1') retBuff += fl.td+'<input id="'+file.name+'" class="inputComment" onkeydown="enterComments(event,this)" onclick="presetComments(this)" onblur="setComments(this)" value="'+(file.comment==null?'':file.comment)+'" alt="'+get_lang('Click to change comments')+'" title="'+get_lang('Click to change comments')+'"></input></td>';
342                if (preferences.version =='1') retBuff += fl.td+'<span onclick="loadHistory(\''+file.name+'\')">'+file.version+'</span></td>';
343                retBuff += "</tr>";
344                return retBuff;
345}
346folderList.prototype.updateQuota = function(quotaSize,usedSpace){
347        if (parseInt(quotaSize) != 0){
348                var contentQuota = document.getElementById('content_quota');
349                if (contentQuota != null)
350                        contentQuota.innerHTML = '<table width="102" cellspacing="0" cellpadding="0" border="0" id="table_quota"><tbody><tr><td width="102" nowrap="true" height="15" background="../phpgwapi/templates/default/images/dsunused.gif"><table cellspacing="0" cellpadding="0" border="0" style="width: '+parseInt((usedSpace/quotaSize)*100)+'%;"><tbody><tr><td height="15" class="dsused"/></tr></tbody></table></td><td nowrap="true" align="center"><span class="boxHeaderText">'+parseInt(usedSpace/quotaSize*100)+'% ('+borkb(usedSpace)+'/'+borkb(quotaSize)+')</span></td></tr></tbody></table></td></tr></table>';
351        }
352}
353folderList.prototype.drawFiles = function(data){
354        var fl = folderList;
355        var returnData = unserialize(data);
356        loadPermissions(returnData.permissions);
357        var files = returnData.files;
358        draw_paging(returnData.files_count,data);
359        fl.init();
360        fl.clear();
361        var newpage = '';
362        if (preferences.viewIcons == 1){
363                for (var i = 0; i < files.length; i++)
364                {
365                        newicon = '<div class="icon">';
366                        newicon += '<a href="./index.php?menuaction=filemanager.uifilemanager.view&file='+base64_encode(files[i].name)+'&path='+base64_encode(currentPath)+'" target="_blank">';
367                        newicon += '<div style="width:64; height:64; background-image:url('+files[i].icon+'); background-repeat: no-repeat;"></div>';
368                        newicon += '<span class="iconCaption">'+files[i].name+'</span>';
369                        newicon += '</a></div>';
370                        newpage += newicon;
371                }
372
373                fl.element.innerHTML = newpage;
374        }
375        else
376        {
377                var sp_hd = '<span name="head" style="cursor: pointer; cursor: hand;" onclick="reloadFiles(\'';
378                var sp_tl = '</span></td>';
379                newpage = '<table cellspacing="0" cellpadding="2" width="100%"><tbody><tr class="message_header">';
380                newpage += fl.td+'<input onclick="selectAll(this)" type="checkbox"></td><td></td><td></td>';
381                newpage += fl.td+sp_hd+'name\')" id="name">'+get_lang('file name')+sp_tl;
382                if (preferences.mime_type =='1')
383                        newpage += fl.td+sp_hd+'mime_type\')" id="mime_type">'+get_lang('mime type')+sp_tl;
384                if (preferences.size =='1')
385                        newpage += fl.td+sp_hd+'size\')" id="size">'+get_lang('size')+'</a>'+sp_tl;
386                if (preferences.created =='1')
387                        newpage += fl.td+sp_hd+'created\')" id="created">'+get_lang('created')+'</a>'+sp_tl;
388                if (preferences.modified =='1')
389                        newpage += fl.td+sp_hd+'modified\')" id="modified">'+get_lang('modified')+'</a>'+sp_tl;
390                if (preferences.owner =='1')
391                        newpage += fl.td+sp_hd+'owner\')" id="owner">'+get_lang('owner')+'</a>'+sp_tl;
392                if (preferences.createdby_id =='1')
393                        newpage += fl.td+sp_hd+'createdby_id\')" id="createdby_id">'+get_lang('created by')+'</a>'+sp_tl;
394                if (preferences.modifiedby_id =='1')
395                        newpage += fl.td+sp_hd+'modifiedby_id\')" id="modifiedby_id">'+get_lang('modified by')+'</a>'+sp_tl;
396                if (preferences.comment =='1')
397                        newpage += fl.td+sp_hd+'comment\')" id="comment">'+get_lang('comment')+'</a>'+sp_tl;
398                if (preferences.version =='1') newpage += fl.td+sp_hd+'version\')" id="version">'+get_lang('version')+'</a>'+sp_tl+'</tr>';
399                if (files != null)
400                        for (var i = 0; i < files.length; i++)
401                        {
402                                newpage += fl.createLine(files[i]);
403                        }
404                else
405                        newpage = "<b>"+get_lang('no files in this directory.')+"</b>";
406                fl.element.innerHTML = newpage;
407                header = document.getElementsByName('head');
408                for (var i=0; i < header.length; i++)
409                {
410                        if (header[i].id == criteria){
411                                header[i].style.fontWeight = 'bold';
412                                arrow = document.createElement('IMG');
413                                if (order_type == '1')
414                                        arrow.src = templatePath+'images/arrow_ascendant.gif';
415                                else
416                                        arrow.src = templatePath+'images/arrow_descendant.gif';
417                                header[i].appendChild(arrow);
418                        }
419                }
420                fl.drawStripes();
421        }
422        folderList.updateQuota(returnData.quota.quotaSize,returnData.quota.usedSpace);
423}
424folderList.prototype.drawStripes = function(){
425        var classTr = "tr_msg_read";
426        folderList.init();
427        var elements = folderList.element.firstChild.firstChild.childNodes;
428        for (var i = 1; i < elements.length; i++){
429                elements[i].className = classTr;
430                classTr = (classTr == "tr_msg_read"?"tr_msg_read2":"tr_msg_read");
431        }
432}
433var folderList = new folderList();
434
435function toolbar()
436{
437        var element;
438}
439toolbar.prototype.clear = function (){
440        this.element.innerHTML = "";
441}
442toolbar.prototype.load = function (){
443        this.element = document.getElementById('fmMenu');
444        if (permissions['read'] == 0){
445                this.element.innerHTML = "";
446                return;
447        }
448        var pageContent = '<table><tbody><tr>';
449        var createButton = function(name) { return '<td name="'+name+'" class="toolButton" onclick="toolbar.control(\''+name+'\');" title="'+name+'"><img src="'+templatePath+'images/button_'+name+'.png" alt="'+name+'"><small>'+get_lang(name.replace('_',' '))+'</small></td>'; }
450
451        if (permissions['edit'] != 0){
452                pageContent += createButton('edit');
453                pageContent += createButton('rename');
454        }
455        if (permissions['delete'] != 0){
456                pageContent += createButton('delete');
457                pageContent += createButton('move_to');
458        }
459        pageContent += createButton('copy_to');
460
461        this.element.innerHTML = pageContent+'</tr></tbody></table>';
462
463}
464toolbar.prototype.getCheckedFiles = function () {
465        filesUrl = "";
466        var one_checked = false;
467        files=document.getElementsByName('fileman');
468        var j=0;
469        for (i = 0; i <  files.length; i++)
470                if (files[i].checked){
471                        one_checked = true;
472                        filesUrl += "&fileman["+j+"]="+base64_encode(files[i].value);
473                        j++;
474                }
475        if (!one_checked)
476        {
477                write_msg(get_lang('Please select a file'));
478                return;
479        }
480        return filesUrl;
481}
482
483toolbar.prototype.control = function ()
484{
485        var _arg        = arguments[0];
486        var _parent     = ( arguments[1] ) ? arguments[1] : null ;
487
488        switch ( _arg )
489        {
490                case 'new':
491                       
492                        address = document.location.toString();
493                        address = address.split("?");
494                       
495                        var itens = [
496                                        [ get_lang('empty file'),'javascript:newEmptyFile()',templatePath+'images/group_close.gif', '' ],
497                                        [ get_lang('File from model'), address[0]+"?menuaction=filemanager.uifilemanager.fileModels", templatePath+'images/group_close.gif', '' ],
498                                        [ get_lang('Upload'), 'javascript:newUpload()', templatePath+'images/group_close.gif', '' ]
499                                    ];
500                       
501                        draw_menu( itens, _parent );
502
503                        break;
504                       
505                case 'rename':
506                        var one_checked = false;
507                        files=document.getElementsByName('fileman');
508                        for (i = 0; i <  files.length; i++)
509                                if (files[i].checked){
510                                        one_checked = true;
511                                        files[i].checked = false;
512                                        var nameLink = document.getElementById('name_'+files[i].value);
513                                        var inputName = document.createElement('INPUT');
514                                        inputName.id = 'input_'+files[i].value;
515                                        var filename = nameLink.innerHTML;
516                                        inputName.value = filename;
517                                        inputName.onclick = function () { oldValue = inputName.value; }
518                                        inputName.onblur = function () { if (inputName.value == oldValue) handler.rename(); else cExecute_('./index.php?menuaction=filemanager.vfs_functions.rename&file='+base64_encode(this.id.substr(6))+'&to='+base64_encode(this.value)+"&path="+base64_encode(currentPath),handler.rename) };
519                                        inputName.onkeydown=function (event) {if (event.keyCode == KEY_ENTER) this.blur(); };
520                                        nameLink.parentNode.appendChild(inputName);
521                                        nameLink.parentNode.removeChild(nameLink);
522                                }
523                        if (!one_checked)
524                                write_msg(get_lang('Please select a file'));
525                        break;
526                case 'edit':
527                        var one_checked = false;
528                        files=document.getElementsByName('fileman');
529                        for (i = 0; i <  files.length; i++)
530                                if (files[i].checked){
531                                        one_checked = true;
532                                        var filename=files[i].value;
533                                }
534                        if (one_checked){
535                                address = document.location.toString();
536                                address = address.split("&");
537                                document.location = address[0]+"&"+_arg+".x=1&filename="+base64_encode(filename)+".&path="+base64_encode(currentPath);
538                        }
539                        else
540                        {
541                                write_msg(get_lang('Please select a file'));
542                                return;
543                        }
544                        break;
545                case 'delete':
546                        var filesUrl = this.getCheckedFiles();
547                        cExecute_('./index.php?menuaction=filemanager.vfs_functions.delete&path='+
548                                        base64_encode(currentPath)+filesUrl,handler.del);
549                        break;
550                case 'archive':
551                        var filesUrl = this.getCheckedFiles();
552                        password = prompt(get_lang('Please, type a strong password (suggestion: at least 8 characters, letters and numbers) or leave it empty to archive only'));
553                        if (password == null)
554                                return;
555                        if (password.length > 0)
556                        {
557                                password2 = prompt(get_lang('Please, retype your password'));
558                                if (password != password2)
559                                {
560                                        alert(get_lang('Error:')+get_lang('passwords are differents'));
561                                        return;
562                                }
563                        }
564                        var pswd = crypt.encode(password);
565                        cExecute_('./index.php?menuaction=filemanager.vfs_functions.archive&pswd='
566                                        + base64_encode(pswd.toString())+'&path='+base64_encode(currentPath)+filesUrl,handler.archive);
567                        break;
568                case 'move_to':
569                case 'copy_to':
570                       
571                        var filesUrl = this.getCheckedFiles();
572                       
573                        if ( filesUrl != undefined)
574                        {
575                                DocY -= ( folders.length * 30 );
576                               
577                                var action = ( ( _arg == 'move_to') ? get_lang('move to:') : get_lang('copy to:') );
578                               
579                                loadXtools();
580                               
581                                var _xml        = Xtools.xml('files');
582                                var _files      = _xml.documentElement;
583                                var _links      = _xml.createElement('links');
584                               
585                                for( var i = 0 ; i < folders.length ; i++ )
586                                {       
587                                        var _lk = _xml.createElement('lk');
588                                                _lk.setAttribute('function', "javascript:"+escape(_arg)+"('"+folders[i]+"','"+filesUrl+"'); close_window();" );
589                                                _lk.appendChild( _xml.createTextNode( folders[i].replace( my_home_filemanager , get_lang("My folder") ) ) );
590                                                _links.appendChild( _lk );
591                                }
592                               
593                                _files.appendChild( _links );
594
595                                var img_1 = path_filemanager + "templates/default/images/button_copy_to.png";
596                                var img_2 = path_filemanager + "templates/default/images/button_move_to.png";
597                                var img_3 = templatePath+"images/group_close.gif";     
598                               
599                                var pArgs =
600                                {
601                                        'action'        : action,
602                                        'img'           : ( ( _arg == 'move_to') ? img_2 : img_1 ),
603                                        'img_1'         : img_3,
604                                        'width'         : 380,
605                                        'height'        : 200
606                                };
607                               
608                                var code = Xtools.parse( _files, "copy_move_files.xsl", pArgs );
609
610                                draw_window( code , 380, 200 );
611                        }
612
613                        break;
614               
615                case 'reload':
616                       
617                        last_folder = last_folder ? last_folder : currentPath;
618                        current_folder = ( current_folder != "" ) ? current_folder : currentPath;
619                        cExecute_('./index.php?menuaction=filemanager.uifilemanager.dir_ls&path='+base64_encode(currentPath)+'&criteria='+criteria+'&otype='+order_type+'&limit='+preferences.files_per_page+'&offset='+offset,folderList.drawFiles);
620                        return;
621
622                case 'tools':
623                       
624                        var itens = [
625                                        [ get_lang('Preferences'), 'preferences/preferences.php?appname=filemanager', templatePath+'images/preferences.png', 'width="16px" height="16px"' ],
626                                        [ get_lang('Edit Folders'), 'javascript:editFolders()', templatePath+'images/button_createdir.png', 'width="16px" height="16px"'],
627                                        [ get_lang('Share Folders'), './index.php?menuaction=preferences.uiaclprefs.index&acl_app=filemanager', templatePath+'images/mime16_directory.png', 'width="16px" height="16px"'],
628                                        [ get_lang('View'), 'javascript:EditColumns()', templatePath+'images/editpaste.png', 'width="16px" height="16px"' ],
629                                        [ get_lang('Archive'), 'javascript:toolbar.control("archive")', templatePath+'images/button_zip.png', 'width="16px" height="16px"' ]
630                                    ];
631                                               
632                        draw_menu( itens, _parent );
633                       
634                        break;
635                default:
636                        return;
637        }
638}
639
640var toolbar = new toolbar();
641
642function unarchive(filename)
643{
644        var password = crypt.encode(prompt(get_lang('Please, type archive password or leave it empty if it is not encrypted')));
645
646        if (password != null )
647        {
648                cExecute_('./index.php?menuaction=filemanager.vfs_functions.unarchive&pswd='
649                                + base64_encode(password)+'&path='+base64_encode(currentPath)+'&file='+base64_encode(filename), handler.archive);
650        }
651        else
652                return;
653}
654
655function move_to(to,filesUrl)
656{
657        cExecute_( './index.php?menuaction=filemanager.vfs_functions.moveto&from='
658                        + base64_encode(currentPath)+'&to='+base64_encode(to)+filesUrl, handler.moveto );
659}
660
661function copy_to(to,filesUrl)
662{
663        cExecute_('./index.php?menuaction=filemanager.vfs_functions.copyto&from='
664                                + base64_encode(currentPath)+'&to='+base64_encode(to)+filesUrl, handler.copyto );
665}
666
667function draw_card(type,name)
668{
669        clearTimeout(menuTimeout);
670        switch(type){
671                case 'preview':
672                        var url = './index.php?menuaction=filemanager.vfs_functions.summary&file='+base64_encode(name)+"&path="+base64_encode(currentPath);
673                        var htmlData = '<img src=\"'+url+'\">';
674                        menuTimeout = setTimeout("draw_window_card(\'"+htmlData+"\')",500);
675                        break;
676                case 'user':
677                        var url = './index.php?menuaction=filemanager.user.card&lid='+base64_encode(name);
678                        menuTimeout = setTimeout("cExecute_('"+url+"',draw_window_card)",500);
679                        break;
680                default:
681                        break;
682        }
683
684}
685function editFolders( operation )
686{
687       
688        if( operation == 'new' || operation == 'remove')
689        {
690                var _selectFolders      = document.getElementById('folders_box');
691                var Dfolder                     = "";
692                var parentDir           = "";
693               
694                for( var i = 0 ; i < _selectFolders.options.length; i++ )
695                {
696                        if( _selectFolders.options[i].selected )
697                        {
698                                Dfolder         = _selectFolders.options[i].value;
699                                parentDir       = _selectFolders.options[i].value;
700                        }
701                }
702        }
703       
704        if ( operation == 'new' )
705        {
706                var name = prompt(get_lang('Enter with the name of new file/directory'), '');
707               
708                if ( name != null && name != '' )
709                {
710                        if( parentDir == "" )
711                                parentDir = my_home_filemanager;
712                               
713                        var parentDir_en = base64_encode( parentDir );
714                        cExecute_('./index.php?menuaction=filemanager.uifilemanager.createdir&path='
715                                        + parentDir_en+'&filename='+base64_encode(name), handler.refreshDir);
716                               
717                        currentPath = parentDir + '/' + name;
718                        close_window();
719                }
720        }
721        else
722        {
723                if ( operation == 'remove' )
724                {
725                        if( Dfolder != "" )
726                        {       
727                                if ( confirm(get_lang('Do you really want to remove folder: %1?',
728                                                Dfolder.replace(my_home_filemanager, get_lang("My folder"))), '') )
729                                {
730                                        var Dfolder_en = base64_encode( Dfolder );
731                                       
732                                        cExecute_('./index.php?menuaction=filemanager.uifilemanager.removedir&path=' + Dfolder_en ,handler.refreshDir );
733                                        var lastIndex = Dfolder.lastIndexOf('/');
734                                        currentPath = Dfolder.substr(0,lastIndex);
735                                        close_window();
736                                }
737                        }
738                        else
739                                alert( get_lang("You must choose a folder !") );
740                }
741                else
742                {
743                        loadXtools();
744                       
745                        var _xml                = Xtools.xml("root");
746                        var _doc                = _xml.documentElement;
747                        var _folders    = _xml.createElement("folders");
748                       
749                        for( var i = 0; i < folders.length; i++ )
750                        {
751                                if( folders[i].indexOf(my_home_filemanager) > -1 )
752                                {
753                                        var fd = _xml.createElement('name');
754                                                fd.setAttribute('value', folders[i] );
755                                                fd.appendChild( _xml.createTextNode(folders[i].replace(my_home_filemanager, get_lang("My folder"))) );
756                                                _folders.appendChild(fd);
757                                }
758                        }
759                       
760                        _doc.appendChild( _folders );
761                       
762                        var pArgs =
763                        {
764                                'lang_new_folder'               : get_lang('new folder'),
765                                'lang_remove_folder'            : get_lang('remove folder'),
766                                'path_filemanager'              : path_filemanager,
767                                'onclick_new_folder'            : 'editFolders("new")',
768                                'onclick_remove_folder' : 'editFolders("remove")'
769                        };
770                       
771                        var code = Xtools.parse( _doc, "edit_folders.xsl", pArgs );
772                       
773                        draw_window( code, 310, 230 );
774                }
775        }
776}
777
778function draw_window_card(content)
779{
780        var menu = document.getElementById('menu_newFile');
781        if (menu == null)
782        {
783                menu = document.createElement('DIV');
784                menu.className = 'menubox';
785                menu.id = "menu_newFile";
786                menu.style.left = DocX;
787                menu.style.top = (DocY+20)+"px";
788                menu.width = "100%";
789                menu.onmouseout = function () { menuTimeout = setTimeout("hide_card()",50);}
790                menu.onmouseover = function () { clearTimeout(menuTimeout); };
791                menu.style.zIndex='1';
792                document.getElementById('divAppbox').appendChild(menu);
793        }
794        else
795        {
796                menu.style.left = DocX;
797                menu.style.top = (DocY+20)+"px";
798        }
799        menu.innerHTML = content;
800
801        menu.style.visibility = 'visible';
802        clearTimeout(menuTimeout);
803        menuTimeout = setTimeout("hide_card()",4000);
804}
805function hide_card()
806{
807        var menuNewFile = document.getElementById('menu_newFile');
808       
809        if ( menuNewFile != null )
810                menuNewFile.style.visibility = 'hidden';
811}
812
813function draw_paging( num_files, data)
814{
815        num_files = parseInt(num_files);
816        var total_pages = 1;
817
818        if( last_folder != current_folder )
819        {
820                lastPage = 1;
821                current_page = 1;
822                last_folder = current_folder;
823        }
824
825        if( num_files > parseInt(preferences.files_per_page) )
826        {
827                total_pages = parseInt(num_files/preferences.files_per_page);
828               
829                if( (num_files/preferences.files_per_page) > total_pages )
830                        total_pages++;
831        }
832
833        if( total_pages == 1)
834        {
835                if( span_paging = document.getElementById("span_paging") )
836                {
837                        span_paging.parentNode.removeChild(span_paging);
838                }
839               
840                return;
841        }
842
843        span_paging = document.getElementById("span_paging");
844
845        if( !span_paging )
846        {
847                span_paging = document.createElement("DIV");
848                span_paging.id = "span_paging";
849                span_paging.className = "boxHeaderText";
850                span_paging.align="right";
851                document.getElementById("div_menu_c3").appendChild(span_paging);
852        }
853        span_paging.style.width="100%";
854        span_paging.innerHTML="";
855        files_range_begin = 1;
856        files_range_end = preferences.files_per_page;
857       
858        if ( current_page != 1)
859        {
860                lnk_page = document.createElement("A");
861                lnk_page.setAttribute("href", "javascript:current_page=1;offset=0;toolbar.control('reload');");
862        }
863        else
864        {
865                lnk_page = document.createElement("SPAN");
866        }
867       
868        span_paging.appendChild(lnk_page);
869
870        lnk_page.innerHTML = "&lt;&lt;";
871        lnk_page.title = get_lang("First");
872        span_paging.innerHTML += "&nbsp;";
873
874        if( current_page == lastPage + numPages)
875                lastPage = current_page - 1;
876        else if( (lastPage != 1 && lastPage == current_page) || current_page == total_pages )
877                lastPage = current_page - (numPages - 1);
878        else if( current_page == 1 )
879                lastPage = 1;
880
881        if(lastPage < 1)
882                lastPage = 1;
883        else if( lastPage > 1 && (lastPage > (total_pages -(numPages - 1))) )
884                lastPage = total_pages -(numPages - 1);
885
886        var     hasMarked = false;
887
888        for( i = lastPage; i <= total_pages; i++)
889        {
890                if( current_page == i || (i == total_pages && !hasMarked))
891                {
892                        lnk_page = document.createElement("SPAN");
893                        span_paging.appendChild(lnk_page);
894                        lnk_page.innerHTML = "&nbsp;<b>"+i+"</b>&nbsp;";
895                        hasMarked = true;
896                        continue;
897                }
898                else
899                {
900                        lnk_page = document.createElement("A");
901                        span_paging.appendChild(lnk_page);
902                        files_range_begin = ((i*preferences.files_per_page)-(preferences.files_per_page-1));
903                        files_range_end = (i*preferences.files_per_page);
904                        lnk_page.setAttribute("href", "javascript:current_page="+i+";offset=((current_page-1)*preferences.files_per_page);toolbar.control('reload');");
905                }
906
907                lnk_page.innerHTML = "&nbsp;...&nbsp;";
908
909                if( i == (lastPage + numPages) )
910                        break;
911                else if(lastPage == 1 || i != lastPage)
912                        lnk_page.innerHTML = "&nbsp;"+i+"&nbsp;";
913
914                span_paging.innerHTML += "&nbsp;";                                                                           
915        }
916
917        if( current_page != total_pages ) 
918        {
919                lnk_page = document.createElement("A");
920                files_range_begin = ((total_pages*preferences.files_per_page)-(preferences.files_per_page-1));
921                files_range_end = (total_pages*preferences.files_per_page);
922                lnk_page.setAttribute("href", "javascript:current_page="+total_pages+";offset=((current_page-1)*preferences.files_per_page);toolbar.control('reload');");
923        }
924        else
925        {
926                lnk_page = document.createElement("SPAN");
927        }
928       
929        span_paging.innerHTML += "&nbsp;";
930        span_paging.appendChild(lnk_page);
931
932        lnk_page.title = get_lang("Last");
933        lnk_page.innerHTML = "&gt;&gt;";
934}
Note: See TracBrowser for help on using the repository browser.