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

Revision 5440, 9.3 KB checked in by alexandrecorreia, 12 years ago (diff)

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

  • 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(expand_local_root){
12                               
13                var handler_update_folders = function(data)
14                {
15                        folders = data;
16                       
17                        ttree.make_tree();
18                       
19                        // Update dftree_tree_folders;
20                        if(Element('content_folders'))
21                        {
22                                Element('content_folders').innerHTML = "";
23                        }
24                       
25                        draw_tree_folders(folders);
26                       
27                        ttree.FOLDER = ttreeBox.name_folder;
28                       
29                        if (tree_folders.getNodeById(ttree.FOLDER))
30                                tree_folders.getNodeById(ttree.FOLDER)._select();
31
32                        if(expand_local_root)
33                                tree_folders.getNodeById('local_root').changeState();
34                }
35               
36                if(!expresso_offline)
37                        cExecute ("$this.imap_functions.get_folders_list&folder="+current_folder, handler_update_folders);             
38                else
39                        handler_update_folders('');
40        }
41
42        Tree_Box.prototype.verify_children = function(param){
43                var aux;
44                var aux1;
45                var cont = parseInt(0);
46                for(var i=0 ; i < folders.length; i++){
47                        aux = folders[i].folder_id.split(cyrus_delimiter);
48                        aux.pop();
49                        for(var j=0; j < aux.length; j++){
50                                if(j == 0)
51                                        aux1 = aux[j];
52                                else
53                                        aux1 += cyrus_delimiter + aux[j];
54                        }
55                        if( aux1 == param){
56                                cont++;
57                        }
58                }
59                if( cont == 0){
60                        ttreeBox.del_past(param);
61                }else{
62                       alert(get_lang("Delete your sub-folders first"));
63                }
64                cont = parseInt(0);
65        }
66       
67        Tree_Box.prototype.verify = function(exp)
68        {
69                // IE does not understand accents in regex! that \xNN are the hex codes for the accented characters!
70        var reTipo = /^[\w\xda\xc1\xc9\xcd\xd3\xdd\xe1\xe9\xed\xfa\xfd\xf3\xc0\xc8\xcc\xd2\xe0\xe8\xec\xf2\xf9\xd9\xc3\xd1\xd5\xe3\xf1\xf5\xc2\xca\xce\xd4\xe2\xea\xee\xf4\xdb\xfb\xc7\xe7\xc4\xd6\xe4\xf6\xfc\xcb\xcf\xeb\xef\xff \-_+=]*$/i;
71       
72        var _return = (exp.search(reTipo) == -1) ? false : true;
73       
74        return _return;
75        }
76
77        // Função para verificar o nome da caixa;
78        Tree_Box.prototype.verify_names = function(name_folder)
79        {
80            var arr_nm_folder = new Array("INBOX",trashfolder,draftsfolder,sentfolder,spamfolder);
81                for(var i=0 ; i < arr_nm_folder.length; i++)
82                {
83                        if(name_folder == arr_nm_folder[i])
84                        {
85                                ttree.FOLDER = "";
86                                return true;
87                        }
88                }
89                return false;
90        }
91       
92        // Valida os nomes das pastas
93        Tree_Box.prototype.validate = function(func)
94        {
95                var aux = ttree.FOLDER.split(cyrus_delimiter);
96                var aux2;
97
98                if( ttree.FOLDER != "" )
99                {
100                        if(aux.length > 1)
101                        {
102                                aux2 = aux[1];
103                        }
104                        else
105                        {
106                                aux2 = aux[0];
107                        }
108                        if( func == "rename" && this.verify_names(aux2) )
109                        {
110                               alert(get_lang("It's not possible rename the folder: ") + lang_folder(aux2) + '.');
111                               return false;
112                        }
113                        else
114                        {
115                                if( func == "newpast" )
116                                {
117                                        var newFolder = prompt( get_lang('Enter the name of the new folder:') , "");
118                                       
119                                        if( newFolder )
120                                        {
121                                                if ( newFolder.indexOf("local_") != -1  || newFolder.toUpperCase() == "INBOX" ) {
122                                                        alert(get_lang("cannot create folder. try other folder name"));
123                                                        return false; //Não posso criar pastas contendo a string local_                                 
124                                                }
125                                               
126                                                if( newFolder.match(/[\/\\\!\@\#\$\%\&\*\+\(\)]/gi) )
127                                                {
128                                                    alert(get_lang("cannot create folder. try other folder name"));
129                                                    return false;
130                                                }
131       
132                                                if( trim(newFolder) != "" && trim(newFolder) != null )
133                                                {
134                                                        ttreeBox.new_past(newFolder);
135                                                }
136                                        }
137                                }
138                               
139                                if( func == "rename" )
140                                {
141                                        if(ttree.FOLDER == "root"){
142                                alert(get_lang("It's not possible rename this folder!"));
143                                                return false;
144                                        }
145                                        if(ttree.FOLDER == get_current_folder()){
146                        alert(get_lang("It's not possible rename this folder, because it is being used in the moment!"));
147                                                return false;
148                                        }
149                    var renameFolder = prompt(get_lang("Enter a name for the box"), "");
150                   
151                    if( renameFolder )
152                    {   
153                                                if ( renameFolder.indexOf("local_") != -1 || renameFolder.toUpperCase() == "INBOX") {
154                                                        alert(get_lang("cannot create folder. try other folder name"));
155                                                        return false; //Não posso criar pastas contendo a string local_                                 
156                                                }
157       
158                                                if(renameFolder.match(/[\/\\\!\@\#\$\%\&\*\+\(\)]/gi)){
159                                                    alert(get_lang("It's not possible rename this folder. try other folder name"));
160                                                    return false;
161                                                }
162       
163                                                if( trim(renameFolder) != "" || trim(renameFolder) != null)
164                                                {
165                                                        ttreeBox.rename(renameFolder);
166                                                }
167                    }
168                                }
169                        }
170                }
171                else
172                {
173            alert(get_lang("Select a folder!"));
174                        return false;
175                }
176        }
177
178// Para criar a nova pasta;
179        Tree_Box.prototype.new_past = function(newp)
180        {
181
182                var aux   = ttree.FOLDER.split(cyrus_delimiter);
183                var delimExp = new RegExp('\\'+cyrus_delimiter,"g");
184                newp = newp.replace(delimExp,'_');
185                var newp2 = "";
186                if( aux[0] == "root"){
187                        if(!this.verify(newp)){
188                                alert(get_lang("Type without spaces, dots or special characters!"));
189                                newp = "";
190                                return false;
191                        }else{
192                                newp2 = newp;
193                                newp = "INBOX" + cyrus_delimiter + newp;
194                        }
195                }else{
196                        if(!this.verify(newp)){
197                                alert(get_lang("Type without spaces, dots or special characters!"));
198                                newp = "";
199                                return false;
200                        }else{
201                                newp2 = newp;
202                                newp = ttree.FOLDER + cyrus_delimiter + newp;
203                        }
204                }
205
206                if( newp != "" )
207                {
208                        var handler_return = function(data)
209                        {               
210                                if(data != "Ok")
211                                {
212                                        alert( get_lang(data) );
213                                }
214                                else
215                                {
216                                        ttreeBox.name_folder = "root"; //or use var newpast
217                                        this.name_func = "newpast";
218                                        connector.purgeCache();
219                                        ttreeBox.update_folder();
220                                }
221                        }
222                       
223                        var args = "$this.imap_functions.create_mailbox";
224                        var params = "newp="+newp;
225                        cExecute(args,handler_return,params);
226                }       
227        }
228       
229        // Funcao para renomear a pasta;
230        Tree_Box.prototype.rename = function(rename){
231                var old_box  = ttree.FOLDER;
232                var aux = old_box.split(cyrus_delimiter);
233                var rename_new = "";
234               
235                if(old_box == "root"){
236            alert(get_lang("Select a folder!"));
237                        return false;
238                }
239                if(aux.length == 1){
240            alert(get_lang("It's not possible rename the folder: ") + aux[0] + '.');
241                        rename = "";
242                        return false;
243                }else{
244                        if(this.verify_names(aux[1])){
245                alert(get_lang("It's not possible rename the folder: ") + aux[1] + '.');
246                                rename = "";
247                                return false;
248                        }else{
249                                if(!this.verify(rename)){
250                    alert(get_lang("Type without spaces, dots or special characters!"));
251                                        rename = "";
252                                        return false;
253                                }else{
254                                        aux.pop();
255                                        aux.push(rename);
256                                        for(var i=0; i< aux.length; i++){
257                                                if( i == 0)
258                                                        rename_new = aux[i];
259                                                else
260                                                        rename_new += cyrus_delimiter + aux[i];
261                                        }
262                                }       
263                        }
264                }
265                if(rename != ""){
266                        var handler_return = function(data)
267                        {
268                                connector.purgeCache();
269                                ttreeBox.name_folder = "root";
270                                ttreeBox.update_folder();
271                        }
272                        var args = "$this.imap_functions.ren_mailbox";
273                        var params = "rename="+rename_new+"&current="+old_box;
274                        cExecute(args,handler_return,params);
275                }
276        }
277        //
278        Tree_Box.prototype.export_all_msg = function(){
279                       
280                if(ttree.FOLDER == "root"){return false;}
281                var nm_bx = ttree.FOLDER.split(cyrus_delimiter);
282                var name_f = nm_bx[nm_bx.length -1];
283                var hand_export = function(data){
284                        if(!data){
285                                write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.'))
286                        }else if(data["empty_folder"]){
287                                write_msg(get_lang("The selected folder is empty."));
288                                alert(get_lang("The selected folder is empty."));
289                        }else
290                          download_attachments(null, null, data, null,null, name_f +'.zip');
291                }
292                cExecute("$this.exporteml.export_all",hand_export,"folder="+ttree.FOLDER);     
293                write_msg(get_lang('You must wait while the messages will be exported...'));                   
294        }
295       
296        // Função para deletar a pasta;
297        Tree_Box.prototype.del = function(){
298                var folder_name = ttree.FOLDER;
299                var aux = ttree.FOLDER.split(cyrus_delimiter);
300
301                if(aux[0] == "root" || ttree.FOLDER == ""){
302                        alert(get_lang("Select a folder!"));
303                        return false;
304                }
305               
306                if(aux.length == 1){
307            alert(get_lang("It's not possible delete the folder: ") + get_lang("Inbox") + '.');
308                        return false;
309                }else{
310                        if(this.verify_names(aux[1]) && typeof(aux[2]) == 'undefined'){
311                    alert(get_lang("It's not possible delete the folder: ") + get_lang(special_folders[aux[1]]) + '.'); 
312                        return false;
313                        }else{
314                                this.verify_children(folder_name);
315                        }
316                }       
317        }
318       
319        Tree_Box.prototype.del_past = function(param){
320                var aux = param.split(cyrus_delimiter);
321                var aux1 = aux.pop();
322
323                if(ttree.FOLDER == get_current_folder()){
324            alert(get_lang("It's not possible delete this folder, because it is being used in the moment!"));
325                        return false;
326                }
327        if(confirm(get_lang("Do you wish to exclude the folder ") + aux1+ "?")){
328                        var handler_return = function(data)
329                        {               
330                                if(data != "Ok")
331                                {
332                                        alert(data);
333                                }else{
334                                        connector.purgeCache();
335                                        ttreeBox.name_folder = "root";
336                                        ttreeBox.update_folder();
337                                        write_msg(get_lang("The folder %1 was successfully removed", aux1));
338                                }
339                        }
340                        var args = "$this.imap_functions.delete_mailbox";
341                        var params = "del_past="+param;
342                        cExecute(args,handler_return,params);
343                }
344       
345        }
346/* - Build Object -*/
347        var ttreeBox;
348        ttreeBox = new Tree_Box();
Note: See TracBrowser for help on using the repository browser.