source: sandbox/2.3-MailArchiver/expressoMail1_2/js/TreeS.js @ 6779

Revision 6779, 11.9 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado Expresso(branch 2.3) integrado ao MailArchiver?.

Line 
1/**************************************************************************\
2 Inï¿œcio
3\**************************************************************************/
4
5        function treeS()
6        {
7                this.arrayW = new Array();
8                this.el;
9                this.FOLDER = "";
10        }
11
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.top            = "0px";
21                tree.style.width          = "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 = "130px";
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()'></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()'></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()'></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                //window.alert('make_tree com name_tree = ' + name_tree);
130                //       
131                if(Element('dftree_' + name_tree)){
132                        Element('dftree_' + name_tree).innerHTML = '';
133                }
134                                       
135               
136                folders_tree = new dFTree({name: name_tree});
137                if (!expresso_offline) {               
138                        if(click_root != ""){
139                                var n_root = new dNode({id:'root', caption:get_lang("My Folders"), onClick:click_root});
140                        }else{
141                                var n_root = new dNode({id:'root', caption:get_lang("My Folders")});
142                        }
143                        folders_tree.add(n_root,'root'); //Places the root; second argument can be anything.
144       
145                        if(data.length == 0){
146                                alert("sem dados");
147                                return false;
148                        }
149
150                        for (var i=0; i<data.length; i++){
151                                if(menu_folder){
152                                        if (data[i].folder_unseen > 0)
153                                                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});
154                                        else
155                                                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});
156                                }else{
157                                        var nn = new dNode({id:data[i].folder_id, caption:lang_folder(data[i].folder_name), plusSign:data[i].folder_hasChildren});
158                                }
159       
160                                if (data[i].folder_parent == '')
161                                        data[i].folder_parent = 'root';
162                                else if (data[i].folder_parent == 'user'){
163                                        if (tree_folders.getNodeById('user')){
164                                                var n_root_shared_folders = new dNode({id:'user', caption:get_lang("Shared Folders"), plusSign:true});
165                                                folders_tree.add(n_root_shared_folders,'root');
166                                        }
167                                }
168                               
169                                // Foi preciso fazer esse tratamento porque a api (imap_getmailboxes) do PHP retorna uma informaᅵᅵo incorreta em algumas ocasiï¿œes
170                                // a funᅵᅵo imap_getmailboxes nï¿œo retorna o atributo 32 (has_children) quando tem pastas seguindo o seguinte padrï¿œo:
171                                // prefixo
172                                //    subPasta1
173                                //    subPasta2
174                                // prefixo-pasta2  (tudo devido a este underscore aqui)
175                                // Caso seja criada pastas dessa forma, a pasta "prefixo", fica com a flag folder_hasChildren como false
176                                // sendo assim nï¿œo aparece o sinal de "mais" na ï¿œrvore de pastas para poder expandir
177                                // Olhar a chamada para a funᅵᅵo imap_getmailboxes() dentro do mï¿œtodo expressoMail1_2.imap_functions.get_folders_list()
178                                // Ticket #1548
179                                if(data[i].folder_parent != 'root') {
180                                        var node_parent = folders_tree.getNodeById(data[i].folder_parent);
181                                        node_parent.plusSign = true;
182                                        folders_tree.alter(node_parent);
183                                }
184                               
185                                folders_tree.add(nn,data[i].folder_parent);
186                        }
187                }
188                /*
189                //Pastas locais
190                if (preferences.use_local_messages == 1) {
191                        var n_root_local = new dNode({
192                                id: 'local_root',
193                                caption: get_lang("local messages"),
194                                plusSign: true,
195                                onClick:"ttree.get_folder('local_root')"
196                        });
197                        folders_tree.add(n_root_local, 'root');
198                       
199                        var local_folders = expresso_local_messages.list_local_folders();
200                        for (var i in local_folders) { //Coloca as pastas locais.
201                       
202                                var node_parent = "local_root";
203                                var new_caption = local_folders[i][0];
204                                if(local_folders[i][0].indexOf("/")!="-1") {
205                                        final_pos = local_folders[i][0].lastIndexOf("/");
206                                        node_parent = "local_"+local_folders[i][0].substr(0,final_pos);
207                                        new_caption = local_folders[i][0].substr(final_pos+1);
208                                }
209                               
210                                if (local_folders[i][1] > 0)
211                                        var nodeLocal = new dNode({
212                                                id: "local_" + local_folders[i][0],
213                                                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>',
214                                                plusSign: local_folders[i][2]
215                                        });
216                                else
217                                        var nodeLocal = new dNode({
218                                                id: "local_" + local_folders[i][0],
219                                                caption: lang_folder(new_caption),
220                                                plusSign: local_folders[i][2]
221                                        });
222                                folders_tree.add(nodeLocal, node_parent);
223                        }
224                }*/
225                //Pastas locais
226                if (preferences.use_local_messages == 1) {
227                        //MAILARCHIVER-01
228                        if((ArchiveServices) && (expresso_mail_archive.enabled)){
229                            var n_root_local = new dNode({
230                                id: 'local_root',
231                                caption: get_lang("local messages"),
232                                plusSign: true,
233                                onClick:"ttree.get_folder('local_root')"
234                            });
235                            folders_tree.add(n_root_local, 'root');
236                           
237                            //var drawinginfo = {treeObject: folders_tree, treeName: 'folders_tree'};
238                            var drawinginfo = {treeObject: folders_tree, treeName: name_tree};
239                            expresso_mail_archive.drawdata = drawinginfo;
240                            expresso_mail_archive.drawdata.folderName = 'local_root';
241                            //expresso_mail_archive.getFoldersList("");
242                        }
243                        else{
244                            //window.alert('NO local storage...');
245                        }
246                        /*var n_root_local = new dNode({
247                                id: 'local_root',
248                                caption: get_lang("local messages"),
249                                plusSign: true,
250                                onClick:"ttree.get_folder('local_root')"
251                        });
252                        folders_tree.add(n_root_local, 'root');
253                       
254                        var local_folders = expresso_local_messages.list_local_folders();
255                        for (var i in local_folders) { //Coloca as pastas locais.
256
257                                var node_parent = "local_root";
258                                var new_caption = local_folders[i][0];
259                                if(local_folders[i][0].indexOf("/")!="-1") {
260                                        final_pos = local_folders[i][0].lastIndexOf("/");
261                                        node_parent = "local_"+local_folders[i][0].substr(0,final_pos);
262                                        new_caption = local_folders[i][0].substr(final_pos+1);
263                                }
264
265                                if (local_folders[i][1] > 0)
266                                        var nodeLocal = new dNode({
267                                                id: "local_" + local_folders[i][0],
268                                                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>',
269                                                plusSign: local_folders[i][2]
270                                        });
271                                else
272                                        var nodeLocal = new dNode({
273                                                id: "local_" + local_folders[i][0],
274                                                caption: lang_folder(new_caption),
275                                                plusSign: local_folders[i][2]
276                                        });
277                                folders_tree.add(nodeLocal, node_parent);
278                        }*/
279                }
280/*              if(folders_tree._folderPr.length > 0 && destination == "div_tree"){
281                        var nw_rt = new dNode({id:'proble', caption:'<font style=color:red><b>' + get_lang('Problems') + '</b></font>', plusSign:true});
282                        folders_tree.add(nw_rt,'root');
283
284                        for(var i=0; i < folders_tree._folderPr.length; i++){
285                                var nm_fl = folders_tree._folderPr[i].split(cyrus_delimiter);
286                                if( nm_fl[0] == "INBOX")
287                                        var nm = folders_tree._folderPr[i].substr(6,folders_tree._folderPr[i].length);
288                                else
289                                        var nm = folders_tree._folderPr[i].substr(5,folders_tree._folderPr[i].length);
290                                var nw_rm = new dNode({id:folders_tree._folderPr[i], caption:nm, plusSign:false});
291                                folders_tree.add(nw_rm,'proble');
292                        }
293                        folders_tree._folderPr.splice(0,folders_tree._folderPr.length);
294                }
295                */           
296                folders_tree.draw(Element(destination));
297                if(!expresso_offline)
298                        n_root.changeState();
299                else
300                        n_root_local.changeState();
301                if(opentomb != ""){folders_tree.openTo(opentomb);}
302                if(selected != "" && folders_tree.getNodeById(selected)){folders_tree.getNodeById(selected)._select();}
303
304        }
305
306/* Build the Object */
307        var ttree;
308        ttree = new treeS();
Note: See TracBrowser for help on using the repository browser.