Ignore:
Timestamp:
01/27/12 15:59:35 (12 years ago)
Author:
alexandrecorreia
Message:

Ticket #673 - Novas dialogs com Jquery para o novo visual do expresso.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/js/TreeS.js

    r5134 r5440  
    1 /**************************************************************************\ 
    2  Início  
    3 \**************************************************************************/ 
     1function treeS() 
     2{ 
     3        this.FOLDER             = ""; 
     4        this.xtools             = new xtools('../expressoMail1_2/templates/'); 
     5        this.parentHtml         = null; 
     6} 
    47 
    5         function treeS() 
     8treeS.prototype.make_Window = function() 
     9{ 
     10        var div         = null; 
     11        var args        = null; 
     12         
     13        args =  
    614        { 
    7                 this.arrayW = new Array(); 
    8                 this.el; 
    9                 this.FOLDER = ""; 
     15                "delete_folder"         : get_lang('Delete folder'), 
     16                "export_messages"       : get_lang('Export messages'), 
     17                "new_folder"            : get_lang('New folder'), 
     18                "rename_folder"         : get_lang('Rename folder') 
     19        }; 
     20 
     21        div                                     = document.createElement("div"); 
     22        div.innerHTML           = this.xtools.parse(this.xtools.xml('treeFolders'), 'treeFolders.xsl', args ); 
     23        this.parentHtml         = div; 
     24         
     25        var openWindow = function() 
     26        { 
     27                if( folders.length == 0 ) 
     28                { 
     29                        write_msg( "ERRO : Sem dados" ); 
     30                        $(div).dialog("destroy"); 
     31                        div.removeChild( div.firstChild ); 
     32                        return false; 
     33                } 
     34                else 
     35                { 
     36                        ttree.make_tree(div.firstChild); 
     37                } 
     38        }; 
     39 
     40        $(div).dialog( 
     41        { 
     42                resizable       : false, 
     43                title           : get_lang("Manager your folders and export messages"), 
     44                position        : 'center', 
     45                width           : 600, 
     46                height          : 300, 
     47                modal           : false, 
     48                buttons         : [ 
     49                                                { 
     50                                                        text: get_lang("Close"), 
     51                                                        click: function() 
     52                                                        { 
     53                                                                $(this).dialog("destroy"); 
     54                                                                div.removeChild(div.firstChild); 
     55                                                        }, 
     56                                                        style: "margin-top: -2.1em"  
     57                                                } 
     58                ], 
     59                beforeClose     : function() 
     60                {  
     61                        $(this).dialog("destroy"); 
     62                        div.removeChild(div.firstChild); 
     63                }, 
     64                open            : function() 
     65                { 
     66                        openWindow(); 
     67                } 
     68        }); 
     69         
     70} 
     71 
     72treeS.prototype.setFolder = function(folderName) 
     73{ 
     74        this.FOLDER = folderName; 
     75} 
     76 
     77treeS.prototype.make_tree = function () 
     78{ 
     79        var elementHtml = null; 
     80         
     81        if( arguments.length > 0 ) 
     82        { 
     83                elementHtml = arguments[0]; 
     84        } 
     85        else 
     86        { 
     87                if( Element('dftree_treeFolders') != null ) 
     88                { 
     89                        elementHtml = Element('dftree_treeFolders').parentNode.parentNode; 
     90                        Element('dftree_treeFolders').innerHTML = ""; 
     91                } 
     92        } 
     93         
     94        var treeFolders = new dFTree({ name : 'treeFolders' }); 
     95         
     96        if( !expresso_offline ) 
     97        { 
     98                var root        = new dNode({ id : 'root', caption: get_lang('My Folders'), onClick: "ttree.setFolder('root')" }); 
     99                 
     100                treeFolders.add(root, 'root'); 
     101 
     102                for(var i = 0; i < folders.length ; i++ ) 
     103                { 
     104                        var nn = new dNode({ id:folders[i].folder_id, caption: lang_folder(folders[i].folder_name), plusSign:folders[i].folder_hasChildren, onClick: "ttree.setFolder('"+folders[i].folder_id+"')"}); 
     105                         
     106                        if ( folders[i].folder_parent == '' ) 
     107                        { 
     108                                folders[i].folder_parent = 'root'; 
     109                        } 
     110            else if ( folders[i].folder_parent == 'user' ) 
     111            { 
     112                if ( treeFolders.getNodeById('user') ) 
     113                { 
     114                        var n_root_shared_folders = new dNode({ id:'user', caption:get_lang("Shared Folders"), plusSign:true}); 
     115                    treeFolders.add( n_root_shared_folders,'root'); 
     116                } 
     117            } 
     118 
     119                        // Ver Ticket #1548 
     120                        if( folders[i].folder_parent != 'root') 
     121                        { 
     122                var node_parent = treeFolders.getNodeById(folders[i].folder_parent); 
     123                 
     124                if( typeof node_parent != 'undefined') 
     125                { 
     126                        node_parent.plusSign = true; 
     127                        treeFolders.alter(node_parent); 
     128                } 
     129            } 
     130                         
     131                        treeFolders.add( nn, folders[i].folder_parent ); 
     132                } 
     133        }        
     134 
     135        //Pastas locais 
     136        if ( preferences.use_local_messages == 1 )  
     137        { 
     138                var n_root_local = new dNode({ id : "local_root", caption : get_lang("local folders"), onClick: "ttree.setFolder('root')" }); 
     139                 
     140                treeFolders.add( n_root_local, 'root' ); 
     141                 
     142                var local_folders = expresso_local_messages.list_local_folders(); 
     143                 
     144                //Coloca as pastas locais. 
     145                for (var i in local_folders) 
     146                {  
     147                        var node_parent = "local_root"; 
     148                        var new_caption = local_folders[i][0]; 
     149                         
     150                        if( local_folders[i][0].indexOf("/") != "-1" ) 
     151                        { 
     152                                final_pos       = local_folders[i][0].lastIndexOf("/"); 
     153                                node_parent = "local_"+local_folders[i][0].substr(0,final_pos); 
     154                                new_caption = local_folders[i][0].substr(final_pos+1); 
     155                        } 
     156                                     
     157                        if ( local_folders[i][1] > 0 ) 
     158                        { 
     159                                var nodeLocal = new dNode({ 
     160                                                                                        id: "local_" + local_folders[i][0], 
     161                                                                                        caption: lang_folder(new_caption) + '<font style=color:red>&nbsp(</font><span id="local_unseen" style=color:red>' + local_folders[i][1] + '</span><font style=color:red>)</font>', 
     162                                                                                        plusSign: local_folders[i][2] 
     163                                }); 
     164                        } 
     165                        else 
     166                        { 
     167                                var nodeLocal = new dNode({ 
     168                                                                                        id: "local_" + local_folders[i][0], 
     169                                                                                        caption: lang_folder(new_caption), 
     170                                                                                        plusSign: local_folders[i][2] 
     171                                }); 
     172                        } 
     173                        treeFolders.add(nodeLocal, node_parent); 
     174                } 
    10175        } 
    11176 
    12         treeS.prototype.make_Window = function(){ 
    13                 _this = this; 
    14                 connector.loadScript("TreeShow"); 
    15                 var title = ':: '+get_lang("Manager your folders and export messages")+' ::'; 
    16                 tree                              = document.createElement("DIV"); 
    17                 tree.style.visibility = "hidden"; 
    18                 tree.style.position   = "absolute"; 
    19                 tree.style.left           = "0px"; 
    20                 tree.style.width          = "0px"; 
    21                 tree.style.top            = "0px"; 
    22                 tree.style.height         = "0px"; 
    23                 tree.id                           = "window_tree"; 
    24                 document.body.appendChild(tree); 
    25  
    26                 tree.innerHTML = "&nbsp;&nbsp;&nbsp;<b><font color='BLACK' nowrap>"+title+"</font></b>"+ 
    27                 "&nbsp;&nbsp;<br><u></u>&nbsp;&nbsp;"; 
    28  
    29                 var div_buttons = document.createElement("DIV"); 
    30                 div_buttons.id = "div_buttons"; 
    31                 div_buttons.style.position = "absolute"; 
    32                 div_buttons.style.left = "440px"; 
    33                 div_buttons.style.top = "20px"           
    34                 div_buttons.style.width = "10px"; 
    35                 div_buttons.style.height = "214px"; 
    36                 div_buttons.innerHTML = "<table border='0' cellpading='0' cellspacing='0'>"+ 
    37                                                             "<tr>"+ 
    38                                                             "<td><input type='button' value='"+get_lang('New folder')+"' onclick='proxy_mensagens.proxy_create_folder()' "+ (is_ie ? "style=\"width:85px\"": "") +"></td>"+ 
    39                                                             "</tr>"+ 
    40                                                             "<tr>"+ 
    41                                                             "<td><input type='button' value='"+get_lang('Delete folder')+"' onclick='proxy_mensagens.proxy_remove_folder()'></td>"+ 
    42                                                             "</tr>"+ 
    43                                                             "<tr>"+ 
    44                                                             "<td><input type='button' value='"+get_lang('Rename folder')+"' onclick='proxy_mensagens.proxy_rename_folder()' "+ (is_ie ? "style=\"width:108px\"": "") +"></td>"+ 
    45                                                             "</tr>"+ 
    46                                                             "<tr>"+ 
    47                                                             //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Chama o proxy_mensagens para que uma pasta local também possa ser exportada 
    48                                                             "<td><input type='button' value='"+get_lang('Export messages')+"' onclick='proxy_mensagens.proxy_export_all_msg()' "+ (is_ie ? "style=\"width:130px\"": "") +"></td>"+ 
    49                                                             "</tr>"+ 
    50                                                             "<tr><td><br><br><br><br><br></td></tr>"+ 
    51                                                             "<tr><td><input type='button' value='"+get_lang('Close')+"' onclick='ttree.close_win()'></td></tr>"+ 
    52                                                             "</table>"; 
    53                 tree.appendChild(div_buttons);           
    54  
    55                 // Conf tree 
    56                 var jo = document.createElement("DIV"); 
    57                 jo.id = "div_tree"; 
    58                 jo.style.position = "absolute"; 
    59                 jo.style.left = "10px"; 
    60                 jo.style.top = "20px"; 
    61                 jo.style.width = "420px"; 
    62                 jo.style.height = "215px"; 
    63                 jo.style.borderStyle = "outset"; 
    64                 jo.style.borderColor = "black"; 
    65                 jo.style.borderWidth = "2px"; 
    66                 jo.style.background  = "#F7F7F7"; 
    67                 jo.style.overflow    = "auto"; 
    68                 jo.innerHTML = ""; 
    69                 tree.appendChild(jo); 
    70  
    71                 if(!expresso_offline) 
    72                         ttree.make_tree(folders,"div_tree","folders_tree","ttree.get_folder(\"root\")","","root",false); 
    73                 else 
    74                         ttree.make_tree(folders,"div_tree","folders_tree","ttree.get_folder(\"local_root\")","","local_root",false); 
    75                 _this.showWindow(tree); 
    76  
    77         } 
    78          
    79         treeS.prototype.get_folder = function(param){ 
    80                 this.FOLDER = param; 
    81         } 
    82  
    83         treeS.prototype.showWindow = function (div){ 
    84                 if(! div) { 
    85                         return; 
    86                 } 
    87                  
    88                 if(! this.arrayW[div.id]) { 
    89                         div.style.width  = "580px"; 
    90                         div.style.height = "250px"; 
    91                         div.style.zIndex = "10000";                      
    92                         var title = get_lang("Folder Management"); 
    93                         var wHeight = div.offsetHeight + "px"; 
    94                         var wWidth =  div.offsetWidth   + "px"; 
    95                         div.style.width = div.offsetWidth - 5; 
    96  
    97                         win = new dJSWin({ 
    98                                 id: 'win_'+div.id, 
    99                                 content_id: div.id, 
    100                                 width: wWidth, 
    101                                 height: wHeight, 
    102                                 title_color: '#3978d6', 
    103                                 bg_color: '#eee', 
    104                                 title: title, 
    105                                 title_text_color: 'white', 
    106                                 button_x_img: '../phpgwapi/images/winclose.gif', 
    107                                 border: true }); 
    108                          
    109                         this.arrayW[div.id] = win; 
    110                         win.draw(); 
    111                 } 
    112                 else { 
    113                         win = this.arrayW[div.id]; 
    114                 } 
    115                 win.open(); 
    116         } 
    117          
    118         treeS.prototype.close_win = function(){ 
    119          
    120                 this.FOLDER = ""; 
    121                 this.arrayW['window_tree'].close(); 
    122          
    123         } 
    124  
    125         treeS.prototype.make_tree = function (data,destination,name_tree, click_root, opentomb, selected,menu_folder){ 
    126                 //Somente para teste 
    127                 // alert("data: " + data.length + "\n" + "destination : " + destination + "\n" + "name_tree : " + name_tree + "\n" + "click_root : " + click_root + "\n" + "opentomb : " + opentomb + "\n" + "selected : " + selected + "\n" + "menu_folder : " + menu_folder);  
    128                          
    129                 if(Element('dftree_' + name_tree)){ 
    130                         Element('dftree_' + name_tree).innerHTML = ''; 
    131                 } 
    132                  
    133                 folders_tree = new dFTree({name: name_tree}); 
    134                 if (!expresso_offline) {                 
    135                         if(click_root != ""){ 
    136                                 var n_root = new dNode({id:'root', caption:get_lang("My Folders"), onClick:click_root}); 
    137                         }else{ 
    138                                 var n_root = new dNode({id:'root', caption:get_lang("My Folders")}); 
    139                         } 
    140                         folders_tree.add(n_root,'root'); //Places the root; second argument can be anything. 
    141          
    142                         if(data.length == 0){ 
    143                                 alert("sem dados"); 
    144                                 return false; 
    145                         } 
    146  
    147                         for (var i=0; i<data.length; i++){ 
    148                                 if(menu_folder){ 
    149                                         if (data[i].folder_unseen > 0) 
    150                                                 var nn = new dNode({id:data[i].folder_id, caption:lang_folder(data[i].folder_name) + '<font style=color:red>&nbsp(</font><span id="dftree_'+data[i].folder_id+'_unseen" style=color:red>'+data[i].folder_unseen+'</span><font style=color:red>)</font>', onClick:"change_folder('"+data[i].folder_id+"','"+data[i].folder_name+"')", plusSign:data[i].folder_hasChildren});  
    151                                         else 
    152                                                 var nn = new dNode({id:data[i].folder_id, caption:lang_folder(data[i].folder_name), onClick:"change_folder('"+data[i].folder_id+"','"+data[i].folder_name+"')", plusSign:data[i].folder_hasChildren});  
    153                                 }else{ 
    154                                         var nn = new dNode({id:data[i].folder_id, caption:lang_folder(data[i].folder_name), plusSign:data[i].folder_hasChildren}); 
    155                                 } 
    156          
    157                                 if (data[i].folder_parent == '') 
    158                                         data[i].folder_parent = 'root'; 
    159                                 else if (data[i].folder_parent == 'user'){ 
    160                                         if (tree_folders.getNodeById('user')){ 
    161                                                 var n_root_shared_folders = new dNode({id:'user', caption:get_lang("Shared Folders"), plusSign:true});  
    162                                                 folders_tree.add(n_root_shared_folders,'root'); 
    163                                         } 
    164                                 } 
    165                                  
    166                                 // Foi preciso fazer esse tratamento porque a api (imap_getmailboxes) do PHP retorna uma informação incorreta em algumas ocasiões 
    167                                 // a função imap_getmailboxes não retorna o atributo 32 (has_children) quando tem pastas seguindo o seguinte padrão: 
    168                                 // prefixo 
    169                                 //    subPasta1 
    170                                 //    subPasta2 
    171                                 // prefixo-pasta2  (tudo devido a este underscore aqui) 
    172                                 // Caso seja criada pastas dessa forma, a pasta "prefixo", fica com a flag folder_hasChildren como false 
    173                                 // sendo assim não aparece o sinal de "mais" na árvore de pastas para poder expandir 
    174                                 // Olhar a chamada para a função imap_getmailboxes() dentro do método expressoMail1_2.imap_functions.get_folders_list() 
    175                                 // Ticket #1548 
    176                                 if(data[i].folder_parent != 'root') { 
    177                                         var node_parent = folders_tree.getNodeById(data[i].folder_parent); 
    178                                         if(typeof node_parent != 'undefined'){ 
    179                                         node_parent.plusSign = true; 
    180                                         folders_tree.alter(node_parent); 
    181                                  
    182                                         } 
    183                                 } 
    184                                 folders_tree.add(nn,data[i].folder_parent); 
    185                                  
    186                         } 
    187                 } 
    188                 //Pastas locais 
    189                 if (preferences.use_local_messages == 1) { 
    190                         var n_root_local = new dNode({ 
    191                                 id: 'local_root', 
    192                                 caption: get_lang("local folders"), 
    193                                 plusSign: true, 
    194                                 onClick:"ttree.get_folder('local_root')" 
    195                         }); 
    196                         folders_tree.add(n_root_local, 'root'); 
    197                          
    198                         var local_folders = expresso_local_messages.list_local_folders(); 
    199                         for (var i in local_folders) { //Coloca as pastas locais. 
    200                          
    201                                 var node_parent = "local_root"; 
    202                                 var new_caption = local_folders[i][0]; 
    203                                 if(local_folders[i][0].indexOf("/")!="-1") { 
    204                                         final_pos = local_folders[i][0].lastIndexOf("/"); 
    205                                         node_parent = "local_"+local_folders[i][0].substr(0,final_pos); 
    206                                         new_caption = local_folders[i][0].substr(final_pos+1); 
    207                                 } 
    208                                  
    209                                 if (local_folders[i][1] > 0)  
    210                                         var nodeLocal = new dNode({ 
    211                                                 id: "local_" + local_folders[i][0], 
    212                                                 caption: lang_folder(new_caption) + '<font style=color:red>&nbsp(</font><span id="local_unseen" style=color:red>' + local_folders[i][1] + '</span><font style=color:red>)</font>', 
    213                                                 plusSign: local_folders[i][2] 
    214                                         }); 
    215                                 else  
    216                                         var nodeLocal = new dNode({ 
    217                                                 id: "local_" + local_folders[i][0], 
    218                                                 caption: lang_folder(new_caption), 
    219                                                 plusSign: local_folders[i][2] 
    220                                         }); 
    221                                 folders_tree.add(nodeLocal, node_parent); 
    222                         } 
    223                 } 
    224                 folders_tree.draw(Element(destination)); 
    225                 if(!expresso_offline) 
    226                         n_root.changeState(); 
    227                 else 
    228                         n_root_local.changeState(); 
    229                 if(opentomb != ""){folders_tree.openTo(opentomb);} 
    230                 if(selected != "" && folders_tree.getNodeById(selected)){folders_tree.getNodeById(selected)._select();} 
    231  
    232         } 
     177        treeFolders.draw(elementHtml); 
     178        treeFolders.getNodeById("root")._select(); 
     179        root.changeState(); 
     180} 
    233181 
    234182/* Build the Object */ 
    235         var ttree; 
    236         ttree = new treeS(); 
     183var ttree = new treeS(); 
Note: See TracChangeset for help on using the changeset viewer.