source: branches/2.2/expressoMail1_2/js/TreeShow.js @ 3390

Revision 3390, 9.2 KB checked in by brunocosta, 14 years ago (diff)

Ticket #730 - Verificação de criação e renomeação de pastas.

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