source: sandbox/expressoMail1_2/MailArchiver/2.2/filemanager/js/draw_api.js @ 5035

Revision 5035, 33.9 KB checked in by fernando-alberto, 13 years ago (diff)

Ticket #1269 - Mergiando revisoes do branch22 de rev4972 ate rev5034

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