source: branches/2.4/expressoMail1_2/js/TreeShow.js @ 6607

Revision 6607, 9.5 KB checked in by eduardow, 12 years ago (diff)

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