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

Revision 3886, 33.8 KB checked in by alexandrecorreia, 13 years ago (diff)

Ticket #1657 - Correcao de layout para exibicao do historico do arquivo

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