source: trunk/filemanager/js/draw_api.js @ 2000

Revision 2000, 30.9 KB checked in by amuller, 14 years ago (diff)

Ticket #597 - Implementação do módulo gerenciador de arquivos

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