- Timestamp:
- 03/01/13 16:50:07 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/modules/mail/js/foldertree.js
r7887 r7936 108 108 } 109 109 110 function draw_new_tree_folder(callback, force){ 111 112 var folders = normalizeFolder( Folder.get( false, force ) ); 113 114 if(preferences.use_local_messages == 1){ 115 116 if(expresso_mail_archive.folders && !expresso_offline && expresso_mail_archive.enabled == true) { //MailArchive 117 //pega pastas locais do mailarchiver e insere no array de pastas 110 function draw_new_tree_folder(callback, force) 111 { 112 113 var folders = normalizeFolder(Folder.get(false, force)); 114 115 if(preferences.use_local_messages == 1) 116 { 117 118 if(expresso_mail_archive.folders && !expresso_offline && expresso_mail_archive.enabled == true) 119 { //MailArchive 120 //pega pastas locais do mailarchiver e insere no array de pastas 118 121 expresso_mail_archive.getFoldersList("home"); 119 122 treeFolders = expresso_mail_archive.folders; 120 123 121 for(var i=0; i<treeFolders.length; i++ ){ 124 for(var i = 0; i < treeFolders.length; i++) 125 { 122 126 mount_children_localfolders_list(treeFolders[i]); 123 127 } 124 125 for(var i = 0; i < treeFolders.length; i++){ 128 129 for(var i = 0; i < treeFolders.length; i++) 130 { 126 131 folders.push(treeFolders[i]); 127 132 } 128 129 } 130 } 131 132 if(!selected){ 133 134 } 135 } 136 137 if(!selected) 138 { 133 139 selected = "INBOX"; 134 140 } … … 137 143 var tree2 = new Array(); 138 144 var tree3 = new Array(); 139 for (var i=0; i<folders.length; i++) { 140 if (/^INBOX/.test(folders[i].id)) { 141 if (!unorphanize(tree1, folders[i])) { 145 for(var i = 0; i < folders.length; i++) 146 { 147 if(/^INBOX/.test(folders[i].id)) 148 { 149 if(!unorphanize(tree1, folders[i])) 150 { 142 151 folders[i].children = new Array(); 143 152 … … 145 154 } 146 155 } 147 else if (/^user/.test(folders[i].id)) { 148 if (!unorphanize(tree2, folders[i])) { 156 else if(/^user/.test(folders[i].id)) 157 { 158 if(!unorphanize(tree2, folders[i])) 159 { 149 160 folders[i].children = new Array(); 150 161 tree2.push(folders[i]); 151 162 } 152 163 } 153 else if (/^local_messages/.test(folders[i].id)) { 154 155 tree3.push(folders[i]); 156 157 } 158 } 159 160 for(var i =0; i<tree1.length; i++){ 164 else if(/^local_messages/.test(folders[i].id)) 165 { 166 167 tree3.push(folders[i]); 168 169 } 170 } 171 172 for(var i = 0; i < tree1.length; i++) 173 { 161 174 count_unseen_children(tree1[i]); 162 175 } 163 for(var i =0; i<tree2.length; i++){ 176 for(var i = 0; i < tree2.length; i++) 177 { 164 178 count_unseen_children(tree2[i]); 165 179 } 166 for(var i =0; i<tree3.length; i++){ 180 for(var i = 0; i < tree3.length; i++) 181 { 167 182 count_unseen_children(tree3[i]); 168 183 } … … 172 187 var shared_acls = {}; 173 188 174 $.each(cp_tree2, function(index, value){ 189 $.each(cp_tree2, function(index, value) 190 { 175 191 shared_acls[value.id] = value.acl_share; 176 192 }); 177 178 if(preferences.use_local_messages == 1){ 179 $("#content_folders").removeClass("menu-degrade").parent().removeClass("image-menu"); 180 mail_archive_url = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/admin"; 181 } 182 183 var html = DataLayer.render('../prototype/modules/mail/templates/detailedfoldertree.ejs', {folders: [tree1, tree2, tree3]}); 184 var folders_html = $("#content_folders").html(html).find(".mainfoldertree").treeview({ 185 persist: "cookie", 186 animated: "fast" 187 }).find(".folder").unbind("click").click(function(event){ 188 189 if ($(this).next().hasClass("local-connect")) { 193 194 if(preferences.use_local_messages == 1) 195 { 196 $("#content_folders").removeClass("menu-degrade").parent().removeClass("image-menu"); 197 mail_archive_url = mail_archive_protocol + "://" + mail_archive_host + ":" + mail_archive_port + "/admin"; 198 } 199 200 var html = DataLayer.render('../prototype/modules/mail/templates/detailedfoldertree.ejs', { 201 folders: [tree1, tree2, tree3] 202 }); 203 var folders_html = $("#content_folders").html(html).find(".mainfoldertree").treeview( 204 { 205 persist: "cookie", 206 animated: "fast" 207 }).find(".folder").unbind("click").click(function(event) 208 { 209 210 if($(this).next().hasClass("local-connect")) 211 { 190 212 return; 191 213 } 192 214 193 if ($(this).hasClass("local-folder")) { 215 if($(this).hasClass("local-folder")) 216 { 194 217 return; 195 218 } 196 219 197 220 // MUDANÇA DE PASTAS! 198 var target = $(this); 199 221 var target = $(this); 222 200 223 if($(".folders-loading").length) 224 { 201 225 return; 202 226 } 227 203 228 if($(event.target).parent().is(".float-menu")) 229 { 204 230 return; 205 206 if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable-hitarea, .lastExpandable-hitarea, .treeview ,.folder_unseen,.ui-icon, .float-menu, .new_folder, .folders-loading, .head_folder, .shared-folders') ) 231 } 232 233 if(target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable-hitarea, .lastExpandable-hitarea, .treeview ,.folder_unseen,.ui-icon, .float-menu, .new_folder, .folders-loading, .head_folder, .shared-folders')) 234 { 207 235 return; 208 209 if( target.parent().find(".new_folder").length) 236 } 237 238 if(target.parent().find(".new_folder").length) 239 { 210 240 return; 211 212 if( !target.attr('id') ) 241 } 242 243 if(!target.attr('id')) 244 { 213 245 target = target.parent(); 214 if (target[0] == $(".mainfoldertree")[0]) return; 246 } 247 if(target[0] == $(".mainfoldertree")[0]) 248 { 249 return; 250 } 251 215 252 var uiId = target.attr('id'); 216 253 var child = target.find('.folder'); 217 218 if(!target.is('.mainfoldertree > .expandable-hitarea, .mainfoldertree > .collapsable-hitarea')){ 254 255 if(!target.is('.mainfoldertree > .expandable-hitarea, .mainfoldertree > .collapsable-hitarea')) 256 { 219 257 $('.filetree span.folder.selected').removeClass('selected'); 220 258 $(target).children('.folder').addClass('selected'); … … 222 260 $(this).addClass("folders-loading"); 223 261 selected = target.attr('id'); 224 change_folder(target.attr('id'), child.attr('title')); 225 226 $.ajax({ 227 url : "controller.php?"+ $.param( { action: "$this.imap_functions.get_folders_list", folder: target.attr('id') } ), 228 success : function(data){ 229 data = connector.unserialize(data); 230 231 if(data) 262 change_folder(target.attr('id'), child.attr('title')); 263 264 $.ajax( 265 { 266 url: "controller.php?" + $.param( 267 { 268 action: "$this.imap_functions.get_folders_list", 269 folder: target.attr('id') 270 }), 271 success: function(data) 272 { 273 data = connector.unserialize(data); 274 275 if(data) 276 { 232 277 build_quota(data); 233 } 278 } 279 } 234 280 }); 235 281 236 }).filter('.followup-messages').click(function(event, ui){ 282 }).filter('.followup-messages').click(function(event, ui) 283 { 237 284 search_emails("UNDELETED KEYWORD \"$Followupflagged\""); 238 285 }).end().end(); 239 286 240 $('.upper').droppable({ 241 over: function(event, ui){ 242 $('#content_folders').autoscroll({ 287 $('.upper').droppable( 288 { 289 over: function(event, ui) 290 { 291 $('#content_folders').autoscroll( 292 { 243 293 direction: 'up', 244 294 step: 150, … … 246 296 }); 247 297 }, 248 out: function(event, ui){ 298 out: function(event, ui) 299 { 249 300 $('#content_folders').autoscroll('destroy'); 250 301 } 251 302 }); 252 303 253 $('.lower').droppable({ 254 over: function(event, ui){ 255 $('#content_folders').autoscroll({ 304 $('.lower').droppable( 305 { 306 over: function(event, ui) 307 { 308 $('#content_folders').autoscroll( 309 { 256 310 direction: 'down', 257 311 step: 150, … … 259 313 }); 260 314 }, 261 out: function(event, ui){ 315 out: function(event, ui) 316 { 262 317 $('#content_folders').autoscroll('destroy'); 263 318 } … … 266 321 267 322 268 folders_html.find('[id="'+selected+'"]').children().addClass("selected"); 269 $(".folder").not(".head_folder").not(".shared-folders").not(".shared-folders + ul .folder").parent().find(".folder").not(".head_folder,.inbox,.drafts,.sent,.spam,.trash").draggable({ 323 folders_html.find('[id="' + selected + '"]').children().addClass("selected"); 324 $(".folder") 325 .not(".head_folder") 326 .not(".shared-folders") 327 .not(".shared-folders + ul .folder") 328 .parent() 329 .find(".folder") 330 .not(".head_folder,.inbox,.drafts,.sent,.spam,.trash") 331 .draggable( 332 { 270 333 // DRAG DE PASTAS 271 start : function(){ 334 start: function() 335 { 272 336 $(this).css("color", "gray"); 273 337 $('.upper, .lower').show(); 274 $(".lower").css("top", ($("#content_folders").height() -18) + $("#content_folders").offset().top);338 $(".lower").css("top", ($("#content_folders").height() - 18) + $("#content_folders").offset().top); 275 339 }, 276 stop : function(){ 340 stop: function() 341 { 277 342 $(this).css("color", ""); 278 343 $('.upper, .lower').hide(); 279 344 }, 280 345 revert: "invalid", 281 helper: function(event){ 282 if($.trim(($(this).text().split("["))[0]).length > 18) 283 return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]).substring(0,18) + "...", type: "folder"})); 284 return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', {texto : (($(this).text().split("["))[0]), type: "folder"})); 346 helper: function(event) 347 { 348 if($.trim(($(this).text().split("["))[0]).length > 18) return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', { 349 texto: (($(this).text().split("["))[0]).substring(0, 18) + "...", 350 type: "folder" 351 })); 352 return $(DataLayer.render('../prototype/modules/mail/templates/draggin_box.ejs', { 353 texto: (($(this).text().split("["))[0]), 354 type: "folder" 355 })); 285 356 }, 286 357 delay: 150, 287 358 refreshPositions: true, 288 zIndex 359 zIndex: 2700, 289 360 //scroll: true, 290 361 //scrollSensitivity: 100, … … 292 363 containment: $("#divAppbox") 293 364 }); 294 $(".folder").not(".head_folder").not(".shared-folders").parent().find(".folder").not(".head_folder,.inbox,.drafts,.sent,.spam,.trash").end().droppable({ 365 $(".folder") 366 .not(".head_folder") 367 .not(".shared-folders") 368 .parent() 369 .find(".folder") 370 .not(".head_folder,.inbox,.drafts,.sent,.spam,.trash") 371 .end() 372 .droppable( 373 { 295 374 //DROP DE PASTAS 296 over : function(a, b){ 375 over: function(a, b) 376 { 297 377 //INICIO : SE A PASTA CONTER FILHAS EXPANDE 298 378 $(b.helper).find(".draggin-folder,.draggin-mail").css("color", "green"); 299 379 over = $(this); 300 380 $(this).addClass("folder-over"); 301 if(($(this)[0] != $(this).parent().find(".head_folder")[0])) 302 if($(this).prev()[0]) 303 if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]){ 304 setTimeout(function(){ 305 if(over.hasClass("folder-over")){ 306 over.prev().trigger("click"); 307 } 308 }, 500); 309 381 if(($(this)[0] != $(this).parent().find(".head_folder")[0])) if($(this).prev()[0]) if($(this).parent().find(".expandable-hitarea")[0] == $(this).prev()[0]) 382 { 383 setTimeout(function() 384 { 385 if(over.hasClass("folder-over")) 386 { 387 over.prev().trigger("click"); 310 388 } 389 }, 500); 390 391 } 311 392 //FIM : SE A PASTA CONTER FILHAS EXPANDE 312 //$("#content_folders").stop().scrollTo($(this), {axis:'y', margin:true, offset:-50, duration:400});313 393 //SETA BORDA EM VOLTA DA PASTA 314 394 // 315 395 }, 316 out : function(a, b){ 396 out: function(a, b) 397 { 317 398 //RETIRA BORDA EM VOLTA DA PASTA 318 399 $(b.helper).find(".draggin-folder,.draggin-mail").css("color", ""); 319 400 $(this).removeClass("folder-over"); 320 401 }, 321 drop : function(event, ui){ 402 drop: function(event, ui) 403 { 322 404 $(this).removeClass("folder-over"); 323 405 324 if ($(ui.draggable[0]).parent().find("input").val() == "localFolder" && $(this).parents("li").find("input").first().val() != "localFolder"){ 406 if($(ui.draggable[0]).parent().find("input").val() == "localFolder" && $(this).parents("li").find("input").first().val() != "localFolder") 407 { 325 408 return write_msg(get_lang("Ohh no, it isn't possible to send a folder by Archiver to My folders")); 326 } else if ( !$(ui.draggable[0]).parent().find("input").val() && $(this).parents("li").find("input").first().val() == "localFolder") { 409 } 410 else if(!$(ui.draggable[0]).parent().find("input").val() && $(this).parents("li").find("input").first().val() == "localFolder") 411 { 327 412 return write_msg(get_lang("Ohh no, it isn't possible to send a folder by My folders to Archiver")); 328 413 } 329 330 if($(this).parent().attr('id') == undefined){ 414 415 if($(this).parent().attr('id') == undefined) 416 { 331 417 332 418 var folder_to = 'INBOX'; 333 419 var to_folder_title = get_lang("Inbox"); 334 }else{ 420 } 421 else 422 { 335 423 var folder_to = $(this).parent().attr('id'); 336 424 var to_folder_title = $(this).attr('title'); 337 } 425 } 338 426 var folder_to_move = ui.draggable.parent().attr('id'); 339 427 var border_id = ui.draggable.find("input[type=hidden]").attr("name"); 340 428 // eventnsagens : SE O DROP VIER DA LISTA DE eventNSAGENS : 341 if(folder_to_move == "tbody_box"){ 342 move_msgs2(get_current_folder(), 'selected', 0, folder_to, to_folder_title,true); 429 if(folder_to_move == "tbody_box") 430 { 431 move_msgs2(get_current_folder(), 'selected', 0, folder_to, to_folder_title, true); 343 432 //Correção para realinhamento da grid de mensagens no navegador Chrome. 344 if(is_webkit){ 433 if(is_webkit) 434 { 345 435 var table = $('#table_box'); 346 436 $('#divScrollMain_0').html(''); … … 351 441 } 352 442 //SE FOR DE UMA PESQUISA RAPIDA 353 else if(ui.draggable.parents('[id^="content_id_"]')[0]){ 354 move_search_msgs("content_id_"+border_id, folder_to, to_folder_title); 443 else if(ui.draggable.parents('[id^="content_id_"]')[0]) 444 { 445 move_search_msgs("content_id_" + border_id, folder_to, to_folder_title); 355 446 return; 356 447 } 357 448 // eventnsagens : SE O DROP VIER DE UMA ABA ABERTA 358 else if(folder_to_move == "border_tr"){ 449 else if(folder_to_move == "border_tr") 450 { 359 451 var id_msg = border_id.split("_")[0]; 360 folder = $("#input_folder_" +border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder());452 folder = $("#input_folder_" + border_id + "_r")[0] ? $("#input_folder_" + border_id + "_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id] : get_current_folder()); 361 453 alternate_border(border_id); 362 move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title, true);454 move_msgs2(folder, id_msg, border_id, folder_to, to_folder_title, true); 363 455 return; 364 456 } 365 457 // SE O DROP VIER DA LISTA DE PASTAS 366 else{ 367 var folder_to_exist = folder_to_move.split(cyrus_delimiter); 368 folder_to_exist = folder_to+cyrus_delimiter+folder_to_exist[folder_to_exist.length-1]; 369 458 else 459 { 460 var folder_to_exist = folder_to_move.split(cyrus_delimiter); 461 folder_to_exist = folder_to + cyrus_delimiter + folder_to_exist[folder_to_exist.length - 1]; 462 370 463 //VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS 371 372 if(valid_tabs(ui.draggable.parent().find("li"), folder_to_move)){464 if(valid_tabs(ui.draggable.parent().find("li"), folder_to_move)) 465 { 373 466 return; 374 467 } 375 468 //FIM : VERIFICA SE EXISTE UMA eventNSAGENS ABERTA NESTA PASTA E NAS SUAS FILHAS; 376 377 469 // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA PARA O eventSMO LOCAL 378 if(folder_to_exist == folder_to_move){ 470 if(folder_to_exist == folder_to_move) 471 { 379 472 return write_msg(get_lang("Thie folder is already in this place")); 380 473 } 381 474 382 475 // VALIDA SE O USUARIO ESTA TENTANDO MOVER A PASTA ABERTA NO momentO 383 if(folder_to_move == get_current_folder()){ 476 if(folder_to_move == get_current_folder()) 477 { 384 478 return write_msg(get_lang("It's not possible move this folder, because it is being used in the moment!")); 385 479 } 386 480 387 481 // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA FILHA DA PASTA ABERTA NO momentO 388 if(ui.draggable.parent().find(".selected")[0]){ 482 if(ui.draggable.parent().find(".selected")[0]) 483 { 389 484 return write_msg(get_lang("It's not possible move this folder, because its subfolder is being used in the moment!")); 390 485 } 391 486 392 487 // VALIDA SE O USUARIO ESTA TENTANDO MOVER UMA PASTA PAI PARA DENTRO DE UMA FILHA 393 if(ui.draggable.parent().find('[id="'+folder_to+'"]')[0]){ 488 if(ui.draggable.parent().find('[id="' + folder_to + '"]')[0]) 489 { 394 490 return write_msg(get_lang("It's not possible to move this folder to its subfolders!")); 395 } 396 397 if($('[id="'+folder_to_exist+'"]').length){ 491 } 492 493 if($('[id="' + folder_to_exist + '"]').length) 494 { 398 495 return write_msg(get_lang("Can not move this folder to this location, because the target has already a folder with this name")); 399 496 } 400 497 401 498 $(this).addClass("folders-loading"); 402 499 403 500 404 if($(this).parents("li").find("input").first().val() == "localFolder"){ 501 if($(this).parents("li").find("input").first().val() == "localFolder") 502 { 405 503 var idFolder = $(this).parent().attr("id").split("_")[2]; 406 504 407 505 expresso_mail_archive.moveFolder(idFolder, folder_to_move.split("_")[2]); 408 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 409 } else { 410 $.ajax({ 411 url : "controller.php?"+ $.param( { action: "$this.imap_functions.move_folder", folder_to_move: folder_to_move, folder_to: folder_to } ), 412 success : function(data){ 506 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 507 } 508 else 509 { 510 $.ajax( 511 { 512 url: "controller.php?" + $.param( 513 { 514 action: "$this.imap_functions.move_folder", 515 folder_to_move: folder_to_move, 516 folder_to: folder_to 517 }), 518 success: function(data) 519 { 413 520 cExecute("$this.imap_functions.get_folders_list&onload=true", force_update_menu); 414 521 data = connector.unserialize(data); 415 if(data == "Permission denied"){ 522 if(data == "Permission denied") 523 { 416 524 write_msg(get_lang("Permission denied")); 417 }else if(data){ 525 } 526 else if(data) 527 { 418 528 write_msg(get_lang("The folder was successfully moved")); 419 } else { 529 } 530 else 531 { 420 532 write_msg(get_lang("ERROR moving your folder.")); 421 533 } … … 426 538 } 427 539 }); 428 $(".folder").not(".shared-folders, .followup-messages").parent().find(".folder").hover( 429 function(){ 430 //CASO A LI NÃO TENHA UM eventNU FLUTUANTE AINDA, O eventNU É ADICIONADO! 431 if(!$(this).children(":last").hasClass("float-menu") && !$(this).children(":last").hasClass("new_folder") && !($(this).next().hasClass("local-connect"))){ /*se houver a classe local-connect, não adiciona o botão de conectar*/ 432 var folder_ = $(this); 433 var folder_name; 434 var shared = { 435 head : false, 436 valid : false 437 }; 438 if(folder_.parent().attr('id')){ 439 folder_name = folder_.parent().attr('id').split(cyrus_delimiter); 440 folder_name = folder_name[folder_name.length -1]; 441 shared.valid = folder_.parent().attr('id').search("user/") == 0 ? true : false; 442 }else 443 folder_name = "Root"; 444 445 if(shared.valid){ 446 shared.head = folder_.parent().attr('id').split(cyrus_delimiter).length == 2 ? true : false; 447 var folder_name_parts = folder_.parent().attr('id').split(cyrus_delimiter); 448 var acls = shared_acls[folder_name_parts[0]+cyrus_delimiter+folder_name_parts[1]]; 449 } 450 451 html = DataLayer.render("../prototype/modules/mail/templates/float_folder_menu.ejs", {name_folder : folder_name, flag : shared, acl : acls}); 452 //FUNÇÃO DO eventNU FLUTUANTE EDITAR < BEGIN 453 var esc = false; 454 $(folder_).append(html).find(".float-menu-edit").click(function(){ 455 var folder_id = $(this).parents(".closed:first").attr('id'); 456 var name = $.trim($(this).parents(".closed:first").find("span:first").text().split("[")[0]); 457 if($(this).parents(".closed:first").find("span:first").hasClass("selected")) 458 return write_msg(get_lang("It's not possible rename this folder, because it is being used in the moment!")); 459 if($(this).parents(".closed:first").find("span.selected").length) 460 return write_msg(get_lang("It's not possible rename this folder, because its subfolder is being used in the moment!")); 461 if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 462 return; 463 $(this).parents(".closed:first").find("span:first").empty().append("<input class='new_folder folder' type='text' maxlength='100'></input>"); 464 $(".new_folder").focus().keydown(function(event){ 465 event.stopPropagation(); 466 if(event.keyCode == 13){ 467 if($(this).val() != ""){ 468 /* Verifica se existe caracteres especiais no nome da pasta ou se existe "local_" 469 * em parte do nome (palavra reservada para pastas locais) */ 470 if($(this).val().match(/[\/\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi) || $(this).val().indexOf("local_") != -1){ 471 return write_msg(get_lang("cannot create folder. try other folder name")); 472 } 473 var new_name = folder_id.replace(/[a-zA-Z0-9á-úÁ-Ú,=^\s_-]+$/, $(this).val()); 474 if($('[id="'+new_name+'"]').length){ 475 $(".folders-loading").removeClass("folders-loading"); 476 write_msg(get_lang("Mailbox already exists")); 477 return draw_new_tree_folder(); 478 } 479 $(".new_folder").parent().addClass("folders-loading"); 480 481 if($(this).parents("li").find("input").first().val() == "localFolder"){ 482 var idFolder = $(this).parents("li").first().attr("id").split("_")[2]; 483 expresso_mail_archive.renameFolder(idFolder, new_name); 484 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 485 } else { 486 487 $.ajax({ 488 url : "controller.php?action=$this.imap_functions.ren_mailbox", 489 type : "POST", 490 data : "current="+folder_id+"&rename="+new_name, 491 success : function(data){ 540 $(".folder") 541 .not(".shared-folders, .followup-messages") 542 .parent() 543 .find(".folder") 544 .hover( 545 function() 546 { 547 //CASO A LI NÃO TENHA UM eventNU FLUTUANTE AINDA, O eventNU É ADICIONADO! 548 if(!$(this).children(":last").hasClass("float-menu") && !$(this).children(":last").hasClass("new_folder") && !($(this).next().hasClass("local-connect"))) 549 { /*se houver a classe local-connect, não adiciona o botão de conectar*/ 550 var folder_ = $(this); 551 var folder_name; 552 var shared = { 553 head: false, 554 valid: false 555 }; 556 if(folder_.parent().attr('id')) 557 { 558 folder_name = folder_.parent().attr('id').split(cyrus_delimiter); 559 folder_name = folder_name[folder_name.length - 1]; 560 shared.valid = folder_.parent().attr('id').search("user/") == 0 ? true : false; 561 } 562 else folder_name = "Root"; 563 564 if(shared.valid) 565 { 566 shared.head = folder_.parent().attr('id').split(cyrus_delimiter).length == 2 ? true : false; 567 var folder_name_parts = folder_.parent().attr('id').split(cyrus_delimiter); 568 var acls = shared_acls[folder_name_parts[0] + cyrus_delimiter + folder_name_parts[1]]; 569 } 570 571 html = DataLayer.render("../prototype/modules/mail/templates/float_folder_menu.ejs", { 572 name_folder: folder_name, 573 flag: shared, 574 acl: acls 575 }); 576 //FUNÇÃO DO eventNU FLUTUANTE EDITAR < BEGIN 577 var esc = false; 578 $(folder_).append(html).find(".float-menu-edit").click(function() 579 { 580 var folder_id = $(this).parents(".closed:first").attr('id'); 581 var name = $.trim($(this).parents(".closed:first").find("span:first").text().split("[")[0]); 582 if($(this).parents(".closed:first").find("span:first").hasClass("selected")) 583 { 584 return write_msg(get_lang("It's not possible rename this folder, because it is being used in the moment!")); 585 } 586 if($(this).parents(".closed:first").find("span.selected").length) 587 { 588 return write_msg(get_lang("It's not possible rename this folder, because its subfolder is being used in the moment!")); 589 } 590 if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 591 { 592 return; 593 } 594 $(this).parents(".closed:first").find("span:first").empty().append("<input class='new_folder folder' type='text' maxlength='100'></input>"); 595 $(".new_folder").focus().keydown(function(event) 596 { 597 event.stopPropagation(); 598 if(event.keyCode == 13) 599 { 600 if($(this).val() != "") 601 { 602 /* Verifica se existe caracteres especiais no nome da pasta ou se existe "local_" 603 * em parte do nome (palavra reservada para pastas locais) */ 604 if($(this).val().match(/[\/\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi) || $(this).val().indexOf("local_") != -1) 605 { 606 return write_msg(get_lang("cannot create folder. try other folder name")); 607 } 608 var new_name = folder_id.replace(/[a-zA-Z0-9á-úÁ-Ú,=^\s_-]+$/, $(this).val()); 609 if($('[id="' + new_name + '"]').length) 610 { 611 $(".folders-loading").removeClass("folders-loading"); 612 write_msg(get_lang("Mailbox already exists")); 613 return draw_new_tree_folder(); 614 } 615 $(".new_folder").parent().addClass("folders-loading"); 616 617 if($(this).parents("li").find("input").first().val() == "localFolder") 618 { 619 var idFolder = $(this).parents("li").first().attr("id").split("_")[2]; 620 expresso_mail_archive.renameFolder(idFolder, new_name); 621 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 622 } 623 else 624 { 625 $.ajax( 626 { 627 url: "controller.php?action=$this.imap_functions.ren_mailbox", 628 type: "POST", 629 data: "current=" + folder_id + "&rename=" + new_name, 630 success: function(data) 631 { 492 632 data = connector.unserialize(data); 493 if(data == "Permission denied"){ 633 if(data == "Permission denied") 634 { 494 635 $(".folders-loading").removeClass("folders-loading"); 495 636 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); … … 501 642 }); 502 643 503 } 504 }else{ 505 $(".new_folder").focusout(); 506 } 507 }else if( event.keyCode == 27){ 508 draw_new_tree_folder(); 509 } 510 }).focusout(function(){ 644 } 645 } 646 else 647 { 648 $(".new_folder").focusout(); 649 } 650 } 651 else if(event.keyCode == 27) 652 { 511 653 draw_new_tree_folder(); 512 }).val(name);513 })514 //FUNÇÃO DO eventNU FLUTUANTE EDITAR < END515 //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < BEGIN516 .end().find(".float-menu-remove").click(function(){517 518 var folder_id = $(this).parents(".closed:first").attr('id');519 var folder_name = "<strong>"+$.trim($(this).parents(".closed:first").find(".folder").text().split("[")[0])+"</strong>";520 521 if(valid_tabs($(this).parents("li:first").find("li"), folder_id))522 return;523 $(this).parents(".closed:first").find(".folder").addClass("folders-loading");524 525 if($(this).parents(".closed:first").find("ul").length){526 $(this).parents(".closed:first").find(".folder").removeClass("folders-loading");527 return write_msg(get_lang("Delete/move subfolders first"));528 654 } 529 if($(this).parents(".closed:first").find("span.selected").length){ 530 $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 531 return write_msg(get_lang("It's not possible delete this folder, because it is being used in the moment!")); 532 } 533 var folder_span = $(this); 534 var confirm_text = get_lang("Do you wish to exclude the folder "); 535 536 $.Zebra_Dialog(confirm_text+folder_name, { 537 'type': 'question', 538 'overlay_opacity': '0.5', 539 'custom_class': 'custom-zebra-filter', 540 'buttons': [get_lang('Yes'), get_lang('No')], 541 'onClose': function(caption) { 542 543 if(caption == get_lang('Yes')){ 544 if(folder_span.parents("li").find("input").first().val() == "localFolder"){ 545 var idFolder = folder_span.parents("li").first().attr("id").split("_")[2]; 546 expresso_mail_archive.deleteFolder(idFolder, folder_name); 547 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 548 } else { 549 $.ajax({ 550 url : "controller.php?action=$this.imap_functions.delete_mailbox", 655 }).focusout(function() 656 { 657 draw_new_tree_folder(); 658 }).val(name); 659 }) 660 //FUNÇÃO DO eventNU FLUTUANTE EDITAR < END 661 //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < BEGIN 662 .end().find(".float-menu-remove").click(function() 663 { 664 665 var folder_id = $(this).parents(".closed:first").attr('id'); 666 var folder_name = "<strong>" + $.trim($(this).parents(".closed:first").find(".folder").text().split("[")[0]) + "</strong>"; 667 668 if(valid_tabs($(this).parents("li:first").find("li"), folder_id)) 669 { 670 return; 671 } 672 $(this).parents(".closed:first").find(".folder").addClass("folders-loading"); 673 674 if($(this).parents(".closed:first").find("ul").length) 675 { 676 $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 677 return write_msg(get_lang("Delete/move subfolders first")); 678 } 679 if($(this).parents(".closed:first").find("span.selected").length) 680 { 681 $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 682 return write_msg(get_lang("It's not possible delete this folder, because it is being used in the moment!")); 683 } 684 var folder_span = $(this); 685 var confirm_text = get_lang("Do you wish to exclude the folder "); 686 687 $.Zebra_Dialog(confirm_text + folder_name, { 688 'type': 'question', 689 'overlay_opacity': '0.5', 690 'custom_class': 'custom-zebra-filter', 691 'buttons': [get_lang('Yes'), get_lang('No')], 692 'onClose': function(caption) 693 { 694 695 if(caption == get_lang('Yes')) 696 { 697 if(folder_span.parents("li").find("input").first().val() == "localFolder") 698 { 699 var idFolder = folder_span.parents("li").first().attr("id").split("_")[2]; 700 expresso_mail_archive.deleteFolder(idFolder, folder_name); 701 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 702 } 703 else 704 { 705 $.ajax( 706 { 707 url: "controller.php?action=$this.imap_functions.delete_mailbox", 551 708 type: "POST", 552 data : "del_past="+folder_id, 553 success : function(data){ 709 data: "del_past=" + folder_id, 710 success: function(data) 711 { 554 712 data = connector.unserialize(data); 555 if(data == "Mailbox does not exist"){ 713 if(data == "Mailbox does not exist") 714 { 556 715 $(".folders-loading").removeClass("folders-loading"); 557 716 return write_msg(get_lang("Mailbox does not exist")); 558 }else if(data == "Permission denied"){ 717 } 718 else if(data == "Permission denied") 719 { 559 720 $(".folders-loading").removeClass("folders-loading"); 560 721 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); … … 565 726 } 566 727 }); 728 } 729 } 730 else 731 { 732 folder_span.parents(".closed:first").find(".folder").removeClass("folders-loading"); 733 return; 734 } 735 } 736 }); 737 }) 738 //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < END 739 //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < BEGIN 740 .end().find(".float-menu-new").click(function() 741 { 742 $(this).parents(".float-menu").hide(); 743 var selected_li = $(this).parents(".closed:first"); 744 if(selected_li.find("ul:first").length) 745 { 746 var new_folder = $("<li><input class='new_folder folder' type='text' maxlength='100'></input></li>").appendTo(selected_li.find("ul:first")); 747 if(selected_li.find(".expandable-hitarea").length) 748 { 749 selected_li.find(".expandable-hitarea").trigger('click'); 750 } 751 selected_li.find("ul:first").treeview( 752 { 753 add: new_folder 754 }); 755 } 756 else if(selected_li.length) 757 { 758 var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li); 759 selected_li.treeview( 760 { 761 add: new_folder 762 }); 763 } 764 else 765 { 766 selected_li = $(this).parents(".head_folder").parent(); 767 if($(this).parents(".head_folder").parent().find(".expandable-hitarea").length) 768 { 769 $(this).parents(".head_folder").parent().find(".expandable-hitarea").trigger('click'); 770 } 771 var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li); 772 selected_li.treeview( 773 { 774 add: new_folder 775 }); 776 } 777 var existsIdenticalFolder = false; 778 selected_li.find(".new_folder").Watermark("Nova Pasta").focus().keydown(function(event) 779 { 780 event.stopPropagation(); 781 782 existsIdenticalFolder = false; 783 784 var ok = false; 785 var makeChildren = function(auxNameFolder, father) 786 { 787 if(auxNameFolder.length == 0) return true; 788 789 790 if(auxNameFolder[0] == "") 791 { 792 auxNameFolder.shift(); 793 makeChildren(auxNameFolder, father); 794 return true; 795 } 796 if(ok == false) 797 { 798 expresso_mail_archive.createFolder((father ? father : "inbox"), auxNameFolder[0]); 799 } 800 801 expresso_mail_archive.getFoldersList(father); 802 803 for(var ii = 0; ii < expresso_mail_archive.folders.length; ii++) 804 { 805 if(auxNameFolder[0] == expresso_mail_archive.folders[ii].name) 806 { 807 auxNameFolder.shift(); 808 save = expresso_mail_archive.folders; 809 expresso_mail_archive.createFolder(expresso_mail_archive.folders[ii].id, auxNameFolder[0]); 810 expresso_mail_archive.folders = save; 811 ok = true; 812 makeChildren(auxNameFolder, expresso_mail_archive.folders[ii].id); 813 return true; 567 814 } 568 }else{ 569 folder_span.parents(".closed:first").find(".folder").removeClass("folders-loading"); 570 return; 571 } 572 } 573 }); 574 /* if(!confirm(confirm_text + folder_name)){ 575 $(this).parents(".closed:first").find(".folder").removeClass("folders-loading"); 576 return; 577 } */ 578 }) 579 //FUNÇÃO DO eventNU FLUTUANTE EXCLUIR < END 580 //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < BEGIN 581 .end().find(".float-menu-new").click(function(){ 582 $(this).parents(".float-menu").hide(); 583 var selected_li = $(this).parents(".closed:first"); 584 if(selected_li.find("ul:first").length){ 585 var new_folder = $("<li><input class='new_folder folder' type='text' maxlength='100'></input></li>").appendTo(selected_li.find("ul:first")); 586 if(selected_li.find(".expandable-hitarea").length){ 587 selected_li.find(".expandable-hitarea").trigger('click'); 588 } 589 selected_li.find("ul:first").treeview({ 590 add: new_folder 591 }); 592 }else if(selected_li.length){ 593 var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li); 594 selected_li.treeview({ 595 add: new_folder 596 }); 597 }else{ 598 selected_li = $(this).parents(".head_folder").parent(); 599 if($(this).parents(".head_folder").parent().find(".expandable-hitarea").length){ 600 $(this).parents(".head_folder").parent().find(".expandable-hitarea").trigger('click'); 601 } 602 var new_folder = $("<ul><li><input class='new_folder folder' type='text' maxlength='100'></input></li></ul>").appendTo(selected_li); 603 selected_li.treeview({ 604 add: new_folder 605 }); 815 } 816 } 817 818 819 if(event.keyCode == 13) 820 { 821 /* Verifica se existe caracteres especiais no nome da pasta ou se existe "local_" 822 * em parte do nome (palavra reservada para pastas locais) */ 823 if($(this).val().match(/[\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi) || $(this).val().indexOf("local_") != -1) 824 { 825 return write_msg(get_lang("cannot create folder. try other folder name")); 826 } 827 if($(this).parents("li").find("input[type=hidden]").val() == "localFolder") 828 { 829 830 $(".new_folder").parent().addClass("folders-loading"); 831 832 var folderName = $(this).val(); 833 var folder = (folderName != "" ? folderName : get_lang("New Folder")); 834 var father = typeof(selected_li.attr('id')) != "undefined" ? selected_li.attr('id').split("_")[2] : "home"; 835 836 $(this).parents(".treeview:first").find("li").each(function() 837 { 838 var eachFolder = $(this).find("span:first").text().trim(); 839 if(folder == eachFolder) 840 { 841 existsIdenticalFolder = true; 842 return false; 843 } 844 }); 845 846 if(existsIdenticalFolder) 847 { 848 event.stopPropagation(); 849 write_msg(get_lang("Mailbox already exists")); 850 draw_new_tree_folder(); 851 return false; 852 } 853 854 if(folderName.indexOf("/") != -1) 855 { 856 auxNameFolder = folderName.split("/"); 857 858 makeChildren(auxNameFolder, father); 859 } 860 else 861 { 862 var folder = (folderName != "" ? folderName : get_lang("New Folder")); 863 create_new_local_folder((selected_li.attr('id') ? selected_li.attr('id') : "inbox"), folder); 864 } 865 866 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 867 } 868 else 869 { 870 if($('[id="' + (selected_li.attr('id') ? selected_li.attr('id') : "INBOX") + cyrus_delimiter + $(this).val() + '"]').length) 871 { 872 $(".folders-loading").removeClass("folders-loading"); 873 write_msg(get_lang("Mailbox already exists")); 874 return draw_new_tree_folder(); 875 } 876 $(".new_folder").parent().addClass("folders-loading"); 877 create_new_folder(($(this).val() != "" ? $(this).val() : get_lang("New Folder")), (selected_li.attr('id') ? selected_li.attr('id') : "INBOX")); 878 } 879 606 880 } 607 var existsIdenticalFolder = false; 608 selected_li.find(".new_folder").Watermark("Nova Pasta").focus().keydown(function(event){ 609 event.stopPropagation(); 610 611 existsIdenticalFolder = false; 612 613 var ok = false; 614 var makeChildren = function(auxNameFolder, father){ 615 if(auxNameFolder.length == 0) return true; 616 617 618 if(auxNameFolder[0] == ""){ 619 auxNameFolder.shift(); 620 makeChildren(auxNameFolder, father); 621 return true; 622 } 623 if(ok == false) 624 expresso_mail_archive.createFolder((father ? father : "inbox"), auxNameFolder[0]); 625 626 expresso_mail_archive.getFoldersList(father); 627 628 for(var ii =0; ii<expresso_mail_archive.folders.length; ii++){ 629 if(auxNameFolder[0] == expresso_mail_archive.folders[ii].name){ 630 auxNameFolder.shift(); 631 save = expresso_mail_archive.folders; 632 expresso_mail_archive.createFolder(expresso_mail_archive.folders[ii].id, auxNameFolder[0]); 633 expresso_mail_archive.folders = save; 634 ok = true; 635 makeChildren(auxNameFolder, expresso_mail_archive.folders[ii].id); 636 return true; 637 } 638 } 881 else if(event.keyCode == 27) 882 { 883 draw_new_tree_folder(); 639 884 } 640 885 641 642 if(event.keyCode == 13){ 643 /* Verifica se existe caracteres especiais no nome da pasta ou se existe "local_" 644 * em parte do nome (palavra reservada para pastas locais) */ 645 if($(this).val().match(/[\`\~\^\<\>\|\\\"\!\@\#\$\%\&\*\+\(\)\[\]\{\}\?;:]/gi) || $(this).val().indexOf("local_") != -1){ 646 return write_msg(get_lang("cannot create folder. try other folder name")); 647 } 648 if($(this).parents("li").find("input[type=hidden]").val() == "localFolder"){ 649 650 $(".new_folder").parent().addClass("folders-loading"); 651 652 var folderName = $(this).val(); 653 var folder = (folderName != "" ? folderName : get_lang("New Folder")); 654 var father = typeof(selected_li.attr('id')) != "undefined" ? selected_li.attr('id').split("_")[2] : "home"; 655 656 $(this).parents(".treeview:first").find("li").each(function(){ 657 var eachFolder = $(this).find("span:first").text().trim(); 658 if(folder == eachFolder){ 659 existsIdenticalFolder = true; 660 return false; 661 } 662 }); 663 664 if(existsIdenticalFolder){ 665 event.stopPropagation(); 666 write_msg(get_lang("Mailbox already exists")); 667 draw_new_tree_folder(); 668 return false; 669 } 670 671 if(folderName.indexOf("/") != -1){ 672 auxNameFolder = folderName.split("/"); 673 674 makeChildren(auxNameFolder, father); 675 } else { 676 var folder = (folderName != "" ? folderName : get_lang("New Folder")); 677 create_new_local_folder((selected_li.attr('id') ? selected_li.attr('id') : "inbox") , folder); 678 } 679 680 cExecute("$this.imap_functions.get_folders_list&onload=true", update_menu); 681 } else { 682 if($('[id="'+ (selected_li.attr('id')? selected_li.attr('id') : "INBOX") + cyrus_delimiter + $(this).val()+'"]').length){ 683 $(".folders-loading").removeClass("folders-loading"); 684 write_msg(get_lang("Mailbox already exists")); 685 return draw_new_tree_folder(); 686 } 687 $(".new_folder").parent().addClass("folders-loading"); 688 create_new_folder(($(this).val() != "" ? $(this).val() : get_lang("New Folder")), (selected_li.attr('id')? selected_li.attr('id') : "INBOX")); 689 } 690 691 }else if( event.keyCode == 27){ 692 draw_new_tree_folder(); 693 } 694 695 }).focusout(function(){ 696 if(!existsIdenticalFolder){ 697 draw_new_tree_folder(); 698 } 699 700 }); 701 }).end().find(".float-menu-export").click(function(){ 702 //proxy_mensagens.export_all_messages($(this).parents("li:first").attr("id")) 703 704 var name_box = $(this).parents("li:first").attr("id"); 705 706 var name_folder = name_box.split(cyrus_delimiter)[name_box.split(cyrus_delimiter).length-1]; 707 708 709 var hand_export = function(data){ 710 clean_msg(); 711 if(!data){ 886 }).focusout(function() 887 { 888 if(!existsIdenticalFolder) 889 { 890 draw_new_tree_folder(); 891 } 892 893 }); 894 }).end().find(".float-menu-export").click(function() 895 { 896 var name_box = $(this).parents("li:first").attr("id"); 897 898 var name_folder = name_box.split(cyrus_delimiter)[name_box.split(cyrus_delimiter).length - 1]; 899 900 901 var hand_export = function(data) 902 { 903 clean_msg(); 904 if(!data) 905 { 712 906 write_msg(get_lang('Error compressing messages (ZIP). Contact the administrator.')) 713 }else if(data["empty_folder"] || data == "empty_folder"){ 907 } 908 else if(data["empty_folder"] || data == "empty_folder") 909 { 714 910 write_msg(get_lang("The selected folder is empty.")); 715 } else716 download_attachments(null, null, data, null,null, name_folder +'.zip'); 911 } 912 else download_attachments(null, null, data, null, null, name_folder + '.zip'); 717 913 } 718 if($(this).parents("li:first").find("input[type=hidden]:first").val() == "localFolder"){ 719 expresso_mail_archive.listMessages(name_box.split("_")[2]); 720 var msgsArchive = expresso_mail_archive.messageslisted; 721 722 buildExportArchiver(msgsArchive, name_box); 723 724 } else { 725 cExecute("$this.exporteml.export_all",hand_export,"folder="+name_box); 726 } 727 write_msg(get_lang('You must wait while the messages will be exported...'),true); 728 }); 729 //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < END 730 } 731 if(!$(".new_folder").length){ 732 $(this).find(".float-menu:first").css("display", ""); 733 } 734 }, 735 function(){ 736 $(this).find(".float-menu:first").hide(); 737 } 738 ); 739 $("#new_m").html($('.selected .message_unseen_count:first .folder_unseen').html() ? $('.selected .message_unseen_count:first .folder_unseen').html() : "0").css("color", "red"); 914 if($(this).parents("li:first").find("input[type=hidden]:first").val() == "localFolder") 915 { 916 expresso_mail_archive.listMessages(name_box.split("_")[2]); 917 var msgsArchive = expresso_mail_archive.messageslisted; 918 919 buildExportArchiver(msgsArchive, name_box); 920 921 } 922 else 923 { 924 cExecute("$this.exporteml.export_all", hand_export, "folder=" + name_box); 925 } 926 write_msg(get_lang('You must wait while the messages will be exported...'), true); 927 }); 928 //FUNÇÃO DO eventNU FLUTUANTE NOVA PASTA < END 929 } 930 if(!$(".new_folder").length) 931 { 932 $(this).find(".float-menu:first").css("display", ""); 933 } 934 }, function() 935 { 936 $(this).find(".float-menu:first").hide(); 937 }); 938 $("#new_m") 939 .html($('.selected .message_unseen_count:first .folder_unseen').html() ? $('.selected .message_unseen_count:first .folder_unseen').html() : "0") 940 .css("color", "red"); 740 941 }
Note: See TracChangeset
for help on using the changeset viewer.