source: branches/2.2.0.1/expressoMail1_2/js/TreeShow.js @ 4537

Revision 4537, 9.6 KB checked in by brunocosta, 13 years ago (diff)

Ticket #1944 - muda regex de validação de nome de pastas.

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