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

Revision 1121, 8.6 KB checked in by eduardoalex, 15 years ago (diff)

Ticket #548 - Implementação do Expresso (Mail) Offline

  • 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        // Função para verificar ponto e espacos;
63        Tree_Box.prototype.verify = function(exp)
64        {
65                var reTipo = /^(.*)(\/)(.*)$/;
66               
67                if(reTipo.test(exp)){
68                        return false;
69                }
70                return true;
71        }
72
73        // Função para verificar o nome da caixa;
74        Tree_Box.prototype.verify_names = function(name_folder){
75            var arr_nm_folder = new Array("INBOX",trashfolder,draftsfolder,sentfolder,spamfolder);
76                for(var i=0 ; i < arr_nm_folder.length; i++){
77                        if(name_folder == arr_nm_folder[i]){
78                                ttree.FOLDER = "";
79                                return true;
80                        }
81                }
82                return false;
83        }
84       
85        // Valida os nomes das pastas
86        Tree_Box.prototype.validate = function(func){
87       
88                var aux = ttree.FOLDER.split(cyrus_delimiter);
89                var aux2;
90
91                if(ttree.FOLDER != ""){
92                        if(aux.length > 1){aux2 = aux[1];}
93                        else{aux2 = aux[0];}
94                        if(this.verify_names(aux2)){
95                                if(func == "newpast")
96                   alert(get_lang("It's not possible create inside: ") + (get_lang(special_folders[aux2])));
97                                if(func == "rename")
98                   alert(get_lang("It's not possible rename the folder: ") + (get_lang(special_folders[aux2])));
99                                return false;
100                        }else{
101                                if(func == "newpast"){
102                    var button = prompt(get_lang('Enter the name of the new folder:'),"");
103                                       
104                                        if (button.indexOf("local_") != -1  || button.toUpperCase() == "INBOX") {
105                                                alert(get_lang("cannot create folder. try other folder name"));
106                                                return false; //Não posso criar pastas contendo a string local_                                 
107                                        }
108
109                                        if(trim(button) == "" || trim(button) == null){
110                                                return false;
111                                        }else{
112                                                ttreeBox.new_past(button);
113                                        }
114                                }
115                                if(func == "rename"){
116                                        if(ttree.FOLDER == "root"){
117                                alert(get_lang("It's not possible rename this folder!"));
118                                                return false;
119                                        }
120                                        if(ttree.FOLDER == get_current_folder()){
121                        alert(get_lang("It's not possible rename this folder, because it is being used in the moment!"));
122                                                return false;
123                                        }
124                    var button1 = prompt(get_lang("Enter a name for the box"), "");
125                                        if (button1.indexOf("local_") != -1 || button1.toUpperCase() == "INBOX") {
126                                                alert(get_lang("cannot create folder. try other folder name"));
127                                                return false; //Não posso criar pastas contendo a string local_                                 
128                                        }
129                                        if(trim(button1) == "" || trim(button1) == null){
130                                                return false;
131                                        }else{
132                                                ttreeBox.rename(button1);
133                                        }
134                                }
135                        }
136                }else{
137            alert(get_lang("Select a folder!"));
138                        return false;
139                }
140        }
141       
142        // Para criar a nova pasta;
143        Tree_Box.prototype.new_past = function(newp){
144
145        var aux   = ttree.FOLDER.split(cyrus_delimiter);
146        var newp2 = "";
147               
148                if(aux.length == 1 && aux[0] != "root"){
149            alert(get_lang("It's not possible create inside: ") + aux[0]);
150                        newp = "";
151                }else{
152                        if( aux[0] == "root"){
153                                if(!this.verify(newp)){
154                    alert(get_lang("Type without spaces, dots or special characters!"));
155                                        newp = "";
156                                        return false;
157                                }else{
158                                        newp2 = newp;
159                                        newp = "INBOX" + cyrus_delimiter + newp;
160                                }
161                        }else{
162                                if(!this.verify(newp)){
163                    alert(get_lang("Type without spaces, dots or special characters!"));
164                                        newp = "";
165                                        return false;
166                                }else{
167                                        newp2 = newp;
168                                        newp = ttree.FOLDER + cyrus_delimiter + newp;
169                                }
170                        }
171                }
172                if(newp != ""){
173                        var handler_return = function(data){           
174                                if(data != "Ok"){
175                                        alert(data);
176                                }else{
177                                        ttreeBox.name_folder = newp;
178                                        this.name_func = "newpast";
179                                        ttreeBox.update_folder();
180                                }
181                        }
182                        var args = "$this.imap_functions.create_mailbox";
183                        var params = "newp="+newp;
184                        cExecute(args,handler_return,params);
185                }       
186        }
187       
188        // Funcao para renomear a pasta;
189        Tree_Box.prototype.rename = function(rename){
190                var old_box  = ttree.FOLDER;
191                var aux = old_box.split(cyrus_delimiter);
192                var rename_new = "";
193               
194                if(old_box == "root"){
195            alert(get_lang("Select a folder!"));
196                        return false;
197                }
198                if(aux.length == 1){
199            alert(get_lang("It's not possible rename the folder: ") + aux[0]);
200                        rename = "";
201                        return false;
202                }else{
203                        if(this.verify_names(aux[1])){
204                alert(get_lang("It's not possible rename the folder: ") + aux[1]);
205                                rename = "";
206                                return false;
207                        }else{
208                                if(!this.verify(rename)){
209                    alert(get_lang("Type without spaces, dots or special characters!"));
210                                        rename = "";
211                                        return false;
212                                }else{
213                                        aux.pop();
214                                        aux.push(rename);
215                                        for(var i=0; i< aux.length; i++){
216                                                if( i == 0)
217                                                        rename_new = aux[i];
218                                                else
219                                                        rename_new += cyrus_delimiter + aux[i];
220                                        }
221                                }       
222                        }
223                }
224                if(rename != ""){
225                        var handler_return = function(data)
226                        {               
227                                ttree.FOLDER = "";
228                                ttreeBox.update_folder();                               
229                        }
230                        var args = "$this.imap_functions.ren_mailbox";
231                        var params = "rename="+rename_new+"&current="+old_box;
232                        cExecute(args,handler_return,params);
233                }
234        }
235        //
236        Tree_Box.prototype.export_all_msg = function(){
237                       
238                if(ttree.FOLDER == "root"){return false;}
239                var nm_bx = ttree.FOLDER.split(cyrus_delimiter);
240                var name_f = nm_bx[nm_bx.length -1];
241                var hand_export = function(data){
242                        if(!data){
243                                write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.'))
244                        }else
245                          download_attachments(null, null, data, null,null, name_f +'.zip');
246                }
247                cExecute("$this.exporteml.export_all",hand_export,"folder="+ttree.FOLDER);     
248                write_msg(get_lang('You must wait while the messages will be exported...'));                   
249        }
250       
251        // Função para deletar a pasta;
252        Tree_Box.prototype.del = function(){
253       
254                var aux = ttree.FOLDER.split(cyrus_delimiter);
255
256                if(aux[0] == "root" || ttree.FOLDER == ""){
257                        alert(get_lang("Select a folder!"));
258                        return false;
259                }
260               
261                if(aux.length == 1){
262            alert(get_lang("It's not possible delete the folder: ") + get_lang("Inbox"));
263                        return false;
264                }else{
265                        if(this.verify_names(aux[1])){
266                    alert(get_lang("It's not possible delete the folder: ") + get_lang(special_folders[aux[1]]));       
267                        return false;
268                        }else{
269                                this.verify_children(ttree.FOLDER);
270                        }
271                }       
272        }
273       
274        Tree_Box.prototype.del_past = function(param){
275
276                var aux = param.split(cyrus_delimiter);
277                var aux1 = aux.pop();
278
279                if(ttree.FOLDER == get_current_folder()){
280            alert(get_lang("It's not possible rename this folder, because it is being used in the moment!"));
281                        return false;
282                }
283        if(confirm(get_lang("Do you wish to exclude the folder ") + aux1+ "?")){
284                        var handler_return = function(data)
285                        {               
286                                if(data != "Ok")
287                                {
288                                        alert(data);
289                                }else{
290                                        ttree.FOLDER = "";
291                                        ttreeBox.update_folder();
292                    alert(get_lang("The folder %1 was successfully removed", aux1));
293                                }
294                        }
295                        var args = "$this.imap_functions.delete_mailbox";
296                        var params = "del_past="+param;
297                        cExecute(args,handler_return,params);
298                }else{
299                        alert(get_lang("The folder was not deleted!"));
300                }
301       
302        }
303/* - Build Object -*/
304        var ttreeBox;
305        ttreeBox = new Tree_Box();
Note: See TracBrowser for help on using the repository browser.