source: sandbox/2.4.1-3/expressoMail1_2/js/TreeShow.js @ 5744

Revision 5744, 9.4 KB checked in by alexandrecorreia, 12 years ago (diff)

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

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