source: trunk/expressoMail1_2/js/TreeShow.js @ 1368

Revision 1368, 8.5 KB checked in by amuller, 15 years ago (diff)

Ticket #620 - Corrige problema das pastas, que não são selecionadas

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1/**************************************************************************\
2 Início
3\**************************************************************************/
4
5        function Tree_Box(){
6               
7                this.name_folder = "";
8                this.name_func   = "";
9                connector.loadScript("TreeS");
10        }
11        Tree_Box.prototype.update_folder = function(){
12
13                var handler_update_folders = function(data){
14                        folders = data;
15                        // update element dftree_folders_tree;
16                        ttree.make_tree(data,"div_tree","folders_tree","ttree.get_folder(\"root\")",ttreeBox.name_folder,ttreeBox.name_folder,false);
17                       
18                        // update element dftree_tree_folders;
19                        if(Element('content_folders')){Element('content_folders').innerHTML = "";}
20                        draw_tree_folders(folders);
21                       
22                        // update element dftree_wfolders_tree;
23                        if (Element('dftree_wfolders_tree')){
24                                Element('dftree_wfolders_tree').innerHTML = '';
25                                ttree.make_tree(data,"wfolders_content_tree","wfolders_tree","","","",false);   
26                        }
27                        ttree.FOLDER = ttreeBox.name_folder;
28                        if (tree_folders.getNodeById(get_current_folder()))
29                                tree_folders.getNodeById(get_current_folder())._select();
30                }
31                if(!expresso_offline)
32                        cExecute ("$this.imap_functions.get_folders_list&folder="+current_folder, handler_update_folders);             
33                else
34                        handler_update_folders('');
35        }
36
37        Tree_Box.prototype.verify_children = function(param){
38                var aux;
39                var aux1;
40                var cont = parseInt(0);
41                for(var i=0 ; i < folders.length; i++){
42                        aux = folders[i].folder_id.split(cyrus_delimiter);
43                        aux.pop();
44                        for(var j=0; j < aux.length; j++){
45                                if(j == 0)
46                                        aux1 = aux[j];
47                                else
48                                        aux1 += cyrus_delimiter + aux[j];
49                        }
50                        if( aux1 == param){
51                                cont++;
52                        }
53                }
54                if( cont == 0){
55                        ttreeBox.del_past(param);
56                }else{
57                       alert(get_lang("Delete your sub-folders first"));
58                }
59                cont = parseInt(0);
60        }
61       
62        Tree_Box.prototype.verify = function(exp)
63        {
64                // IE does not understand regExp!!!
65                if (is_ie)
66                        var reTipo = /^[a-z0-9 \-_+=]*$/i;
67                else
68                        eval('var reTipo = /^[a-z0-9 \-_+=áéíóúàèìòùâêôãõÃÕÁÉÍÓÚÀÈÌÒÙÂÊÔçÇüñ]*$/i');
69                return reTipo.test(exp);
70        }
71
72        // Função para verificar o nome da caixa;
73        Tree_Box.prototype.verify_names = function(name_folder){
74            var arr_nm_folder = new Array("INBOX",trashfolder,draftsfolder,sentfolder,spamfolder);
75                for(var i=0 ; i < arr_nm_folder.length; i++){
76                        if(name_folder == arr_nm_folder[i]){
77                                ttree.FOLDER = "";
78                                return true;
79                        }
80                }
81                return false;
82        }
83       
84        // Valida os nomes das pastas
85        Tree_Box.prototype.validate = function(func){
86       
87                var aux = ttree.FOLDER.split(cyrus_delimiter);
88                var aux2;
89                if(ttree.FOLDER != ""){
90                        if(aux.length[1] > 1){aux2 = aux[1];}
91                        else{aux2 = aux[0];}
92                        if(func == "rename" && this.verify_names(aux2)){
93                               alert(get_lang("It's not possible rename the folder: ") + (get_lang(special_folders[aux2])));
94                               return false;
95                        }else{
96                        if(func == "newpast"){
97                            var button = prompt(get_lang('Enter the name of the new folder:'),"");
98                                        if (button.indexOf("local_") != -1  || button.toUpperCase() == "INBOX") {
99                                                alert(get_lang("cannot create folder. try other folder name"));
100                                                return false; //Não posso criar pastas contendo a string local_                                 
101                                        }
102
103                                        if(trim(button) == "" || trim(button) == null){
104                                                return false;
105                                        }else{
106                                                ttreeBox.new_past(button);
107                                        }
108                                }
109                                if(func == "rename"){
110                                        if(ttree.FOLDER == "root"){
111                                alert(get_lang("It's not possible rename this folder!"));
112                                                return false;
113                                        }
114                                        if(ttree.FOLDER == get_current_folder()){
115                        alert(get_lang("It's not possible rename this folder, because it is being used in the moment!"));
116                                                return false;
117                                        }
118                    var button1 = prompt(get_lang("Enter a name for the box"), "");
119                                        if (button1.indexOf("local_") != -1 || button1.toUpperCase() == "INBOX") {
120                                                alert(get_lang("cannot create folder. try other folder name"));
121                                                return false; //Não posso criar pastas contendo a string local_                                 
122                                        }
123                                        if(trim(button1) == "" || trim(button1) == null){
124                                                return false;
125                                        }else{
126                                                ttreeBox.rename(button1);
127                                        }
128                                }
129                        }
130                }else{
131            alert(get_lang("Select a folder!"));
132                        return false;
133                }
134        }
135
136// Para criar a nova pasta;
137        Tree_Box.prototype.new_past = function(newp){
138
139                var aux   = ttree.FOLDER.split(cyrus_delimiter);
140                var newp2 = "";
141                if( aux[0] == "root"){
142                        if(!this.verify(newp)){
143                                alert(get_lang("Type without spaces, dots or special characters!"));
144                                newp = "";
145                                return false;
146                        }else{
147                                newp2 = newp;
148                                newp = "INBOX" + cyrus_delimiter + newp;
149                        }
150                }else{
151                        if(!this.verify(newp)){
152                                alert(get_lang("Type without spaces, dots or special characters!"));
153                                newp = "";
154                                return false;
155                        }else{
156                                newp2 = newp;
157                                newp = ttree.FOLDER + cyrus_delimiter + newp;
158                        }
159                }
160
161                if(newp != ""){
162                        var handler_return = function(data){           
163                                if(data != "Ok"){
164                                        alert(data);
165                                }else{
166                                        ttreeBox.name_folder = newp;
167                                        this.name_func = "newpast";
168                                        purgeCache();
169                                        ttreeBox.update_folder();
170                                }
171                        }
172                        var args = "$this.imap_functions.create_mailbox";
173                        var params = "newp="+newp;
174                        cExecute(args,handler_return,params);
175                }       
176        }
177       
178        // Funcao para renomear a pasta;
179        Tree_Box.prototype.rename = function(rename){
180                var old_box  = ttree.FOLDER;
181                var aux = old_box.split(cyrus_delimiter);
182                var rename_new = "";
183               
184                if(old_box == "root"){
185            alert(get_lang("Select a folder!"));
186                        return false;
187                }
188                if(aux.length == 1){
189            alert(get_lang("It's not possible rename the folder: ") + aux[0]);
190                        rename = "";
191                        return false;
192                }else{
193                        if(this.verify_names(aux[1])){
194                alert(get_lang("It's not possible rename the folder: ") + aux[1]);
195                                rename = "";
196                                return false;
197                        }else{
198                                if(!this.verify(rename)){
199                    alert(get_lang("Type without spaces, dots or special characters!"));
200                                        rename = "";
201                                        return false;
202                                }else{
203                                        aux.pop();
204                                        aux.push(rename);
205                                        for(var i=0; i< aux.length; i++){
206                                                if( i == 0)
207                                                        rename_new = aux[i];
208                                                else
209                                                        rename_new += cyrus_delimiter + aux[i];
210                                        }
211                                }       
212                        }
213                }
214                if(rename != ""){
215                        var handler_return = function(data)
216                        {               
217                                ttree.FOLDER = "";
218                                ttreeBox.update_folder();                               
219                        }
220                        var args = "$this.imap_functions.ren_mailbox";
221                        var params = "rename="+rename_new+"&current="+old_box;
222                        cExecute(args,handler_return,params);
223                }
224        }
225        //
226        Tree_Box.prototype.export_all_msg = function(){
227                       
228                if(ttree.FOLDER == "root"){return false;}
229                var nm_bx = ttree.FOLDER.split(cyrus_delimiter);
230                var name_f = nm_bx[nm_bx.length -1];
231                var hand_export = function(data){
232                        if(!data){
233                                write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.'))
234                        }else
235                          download_attachments(null, null, data, null,null, name_f +'.zip');
236                }
237                cExecute("$this.exporteml.export_all",hand_export,"folder="+ttree.FOLDER);     
238                write_msg(get_lang('You must wait while the messages will be exported...'));                   
239        }
240       
241        // Função para deletar a pasta;
242        Tree_Box.prototype.del = function(){
243                var folder_name = ttree.FOLDER;
244                var aux = ttree.FOLDER.split(cyrus_delimiter);
245
246                if(aux[0] == "root" || ttree.FOLDER == ""){
247                        alert(get_lang("Select a folder!"));
248                        return false;
249                }
250               
251                if(aux.length == 1){
252            alert(get_lang("It's not possible delete the folder: ") + get_lang("Inbox"));
253                        return false;
254                }else{
255                        if(this.verify_names(aux[1]) && typeof(aux[2]) == 'undefined'){
256                    alert(get_lang("It's not possible delete the folder: ") + get_lang(special_folders[aux[1]]));       
257                        return false;
258                        }else{
259                                this.verify_children(folder_name);
260                        }
261                }       
262        }
263       
264        Tree_Box.prototype.del_past = function(param){
265                var aux = param.split(cyrus_delimiter);
266                var aux1 = aux.pop();
267
268                if(ttree.FOLDER == get_current_folder()){
269            alert(get_lang("It's not possible rename this folder, because it is being used in the moment!"));
270                        return false;
271                }
272        if(confirm(get_lang("Do you wish to exclude the folder ") + aux1+ "?")){
273                        var handler_return = function(data)
274                        {               
275                                if(data != "Ok")
276                                {
277                                        alert(data);
278                                }else{
279                                        purgeCache();
280                                        ttreeBox.name_folder = "root";
281                                        ttreeBox.update_folder();
282                                        alert(get_lang("The folder %1 was successfully removed", aux1));
283                                }
284                        }
285                        var args = "$this.imap_functions.delete_mailbox";
286                        var params = "del_past="+param;
287                        cExecute(args,handler_return,params);
288                }else{
289                        alert(get_lang("The folder was not deleted!"));
290                }
291       
292        }
293/* - Build Object -*/
294        var ttreeBox;
295        ttreeBox = new Tree_Box();
Note: See TracBrowser for help on using the repository browser.