Changeset 6754 for branches/2.4/expressoMail1_2/js/draw_api.js
- Timestamp:
- 07/11/12 11:45:10 (12 years ago)
- Location:
- branches/2.4
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.4
-
Property
svn:mergeinfo
set to
(toggle deleted branches)
/trunk merged eligible /sandbox/2.4.1-3 6237-6527
-
Property
svn:mergeinfo
set to
(toggle deleted branches)
-
branches/2.4/expressoMail1_2/js/draw_api.js
r6732 r6754 8 8 * formatação, etc.) 9 9 */ 10 11 focusIn = ""; 12 canMakeBox = true; 13 fastSearch = false; 14 10 15 onceOpenedHeadersMessages = {}; 11 16 var cache = new Array(); 12 17 var openTab = { 13 18 'type' : [], // 8 types of tabs, further info. see expressolivre.org/dev/wiki/mail/Documentacao … … 891 896 var _mouse_out; 892 897 var _cell; 893 var colGroupMain = document.getElementById("colgroup_main_"+numBox); 894 898 var colGroupMain = document.getElementById("colgroup_main_"+numBox); 899 var colGroupHead = document.getElementById("colgroup_head_"+numBox); 895 900 for (var r=0;r<trM.length;r++) { 896 901 for (var c=0;c<trM[r].cells.length;c++) { … … 899 904 if (is_mozilla && !is_webkit) { 900 905 if (!emptyBody) { 901 colGroupMain.childNodes[c].setAttribute("width",colSizes[tbl][c]); 906 colGroupMain.childNodes[c].setAttribute("width",colSizes[tbl][c]); 902 907 } 903 colGroupHead.childNodes[c].setAttribute("width",colSizes[tbl][c]); 908 colGroupHead.childNodes[c].setAttribute("width",colSizes[tbl][c]); 904 909 if (tbH.rows[0].cells[c].className=="th_resizable") { 905 910 // lots of stupid fixes for FF to redraw cell content … … 929 934 document.getElementById("colgroup_main_"+numBox).childNodes[c].setAttribute("width",colSizes[tbl][c]); 930 935 931 } 932 if (is_webkit || is_ie){ 933 var arrHeader = $('.message_header td'); 934 var arrBody = $('#tbody_box :first td'); 935 for(i=0;i<arrHeader.length;i++){ 936 } 937 if (is_webkit || is_ie){ 938 var arrHeader = $('.message_header td'); 939 var arrBody = $('#tbody_box :first td'); 940 for(i=0;i<arrHeader.length;i++){ 936 941 if(arrBody[i] !== undefined && arrBody[i].width !== undefined) 937 arrHeader[i].width = arrBody[i].width; 938 } 942 arrHeader[i].width = arrBody[i].width; 943 } 939 944 } 940 945 } … … 1506 1511 if ((headers_msgs.Forwarded == 'F') || (headers_msgs.Draft == 'X' && headers_msgs.Answered == 'A')){ 1507 1512 td_element21.onclick=function(){search_emails(headers_msgs.subject.replace(/^(re: ?|fw: ?|enc: ?|res: ?|fwd: ?)*/gi,''),true);}; 1508 td_element21.innerHTML = "<img src ='templates/"+template+"/images/forwarded. gif' title='"+get_lang('Forwarded')+"'>";1513 td_element21.innerHTML = "<img src ='templates/"+template+"/images/forwarded.png' title='"+get_lang('Forwarded')+"'>"; 1509 1514 headers_msgs.Draft = '' 1510 1515 headers_msgs.Answered = ''; … … 1512 1517 } 1513 1518 else if (headers_msgs.Draft == 'X') 1514 td_element21.innerHTML = "<img src ='templates/"+template+"/images/draft. gif' title='"+get_lang('Draft')+"'>";1519 td_element21.innerHTML = "<img src ='templates/"+template+"/images/draft.png' title='"+get_lang('Draft')+"'>"; 1515 1520 else if (headers_msgs.Answered == 'A'){ 1516 1521 td_element21.onclick=function(){search_emails(headers_msgs.subject.replace(/^(re: ?|fw: ?|enc: ?|res: ?|fwd: ?)*/gi,''),true);}; 1517 td_element21.innerHTML = "<img src ='templates/"+template+"/images/answered. gif' title='"+get_lang('Answered')+"'>";1522 td_element21.innerHTML = "<img src ='templates/"+template+"/images/answered.png' title='"+get_lang('Answered')+"'>"; 1518 1523 }else 1519 1524 td_element21.innerHTML = " "; … … 1764 1769 .html('<img src="../prototype/modules/mail/img/flagEditor.png">'); 1765 1770 1766 if(fail != 'success'){ 1767 $('#td_message_followup_' + messageClickedId + ', ' + 1768 'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC"); 1769 MsgsCallbackFollowupflag[fail](); 1770 }else{ 1771 $('#td_message_followup_' + messageClickedId + ', ' + 1772 'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", headers_msgs.followupflagged.backgroundColor); 1773 updateCacheFollowupflag(messageClickedId, msg_folder, true); 1774 } 1771 1772 if(fail != 'success'){ 1773 $('#td_message_followup_' + messageClickedId + ', ' + 1774 'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).find(".flag-edited").css("background", "#CCCCCC"); 1775 MsgsCallbackFollowupflag[fail](); 1776 }else{ 1777 $('#td_message_followup_' + messageClickedId + ', ' + 1778 'tr[role="'+messageClickedId+'_'+msg_folder+'"] #td_message_followup_search_' + messageClickedId).attr('title', get_lang('Follow up')).find(".flag-edited").css("background", headers_msgs.followupflagged.backgroundColor); 1779 updateCacheFollowupflag(messageClickedId, msg_folder, true); 1780 } 1775 1781 }); 1776 1782 … … 1982 1988 var msg_selected; 1983 1989 function draw_message(info_msg, ID){ 1990 // remove a flag $FilteredMessage da mensagem ao ser lida 1991 if(info_msg.Unseen == "U"){ 1992 $.each(fromRules, function(index, value) { 1993 if(value == info_msg.msg_folder){ 1994 cExecute ("$this.imap_functions.removeFlagMessagesFilter&folder="+info_msg.msg_folder+"&msg_number="+info_msg.msg_number, function(){}); 1995 return false; 1996 } 1997 }); 1998 } 1984 1999 var content = document.getElementById('content_id_' + ID); 1985 2000 … … 3033 3048 var newAttendeeName = ""; 3034 3049 3035 var name = decoded.match(/"([^"]*)"/) ? decoded.match(/"([^"]*)"/)[1] : ''; 3036 var mail = decoded.match(/<([^<]*)>[\s]*$/) ? decoded.match(/<([^<]*)>[\s]*$/)[1].toLowerCase() : decoded;3037 3038 3039 3050 var name = decoded.match(/"([^"]*)"/) ? decoded.match(/"([^"]*)"/)[1] : ''; 3051 var mail = decoded.match(/<([^<]*)>[\s]*$/) ? decoded.match(/<([^<]*)>[\s]*$/)[1].toLowerCase() : decoded; 3052 3053 3054 var user = DataLayer.get('user', ["=", "mail", mail], true); 3040 3055 3041 3056 if( $.type(user) == "array") 3042 user = user[0]; 3043 3044 if(user != ''){ 3045 //user = {name : name , mail : mail};3046 if(User.me.mail == user.mail)3047 return(null);3048 user.isExternal = (!!user && !(!!user.isExternal)) ? 0 : 1;3049 3050 return DataLayer.merge({3051 name: user.name,3052 mail: user.mail,3053 acl: 'r',3054 delegatedFrom: '0',3055 status: '4',3056 isExternal: user.isExternal3057 }, !!user.id ? {id : DataLayer.put('participant', {user: user.id, isExternal: user.isExternal})} : {id: DataLayer.put('participant', {user: user})});3058 }else if(mail.match(/[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])/)){3059 3060 var userId = DataLayer.put('user', {3061 name: name,3062 mail: mail,3063 isExternal: '1'3064 });3065 var newAttendeeId = DataLayer.put('participant', {3066 user: userId,3067 isExternal: '1'3068 });3069 3070 return {3071 id: newAttendeeId,3072 name: name,3073 mail: mail,3074 acl: 'r',3075 delegatedFrom: '0',3076 status: '4',3077 isExternal: '1'3078 };3079 3080 }else3081 3057 user = user[0]; 3058 3059 if(user != ''){ 3060 //user = {name : name , mail : mail}; 3061 if(User.me.mail == user.mail) 3062 return(null); 3063 user.isExternal = (!!user && !(!!user.isExternal)) ? 0 : 1; 3064 3065 return DataLayer.merge({ 3066 name: user.name, 3067 mail: user.mail, 3068 acl: 'r', 3069 delegatedFrom: '0', 3070 status: '4', 3071 isExternal: user.isExternal 3072 }, !!user.id ? {id : DataLayer.put('participant', {user: user.id, isExternal: user.isExternal})} : {id: DataLayer.put('participant', {user: user})}); 3073 }else if(mail.match(/[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])/)){ 3074 3075 var userId = DataLayer.put('user', { 3076 name: name, 3077 mail: mail, 3078 isExternal: '1' 3079 }); 3080 var newAttendeeId = DataLayer.put('participant', { 3081 user: userId, 3082 isExternal: '1' 3083 }); 3084 3085 return { 3086 id: newAttendeeId, 3087 name: name, 3088 mail: mail, 3089 acl: 'r', 3090 delegatedFrom: '0', 3091 status: '4', 3092 isExternal: '1' 3093 }; 3094 3095 }else 3096 return (null); 3082 3097 }) 3083 3098 … … 3508 3523 resizeWindow(); 3509 3524 3510 $("#div_message_scroll_"+ID).scrollTo( 0, 400, {queue:true} ); 3525 $("#div_message_scroll_"+ID).scrollTo( 0, 400, {queue:true} ); 3511 3526 } 3512 3527 … … 3559 3574 } 3560 3575 3561 function input_binds(input, ID){ 3562 var mySource = new Array(); 3563 var myArray = contacts.split(","); 3564 for(var i in myArray){ 3565 var teste = myArray[i].split(";"); 3566 if(teste.length > 1) 3567 mySource.push({name : teste[0], email: teste[1], value : (teste[0] +" - "+teste[1])}); 3568 else 3569 mySource.push({name : "", email: teste[0], value :teste[0]}); 3570 } 3571 input.bind( "keydown", function( event ) { 3572 if ( event.keyCode === $.ui.keyCode.TAB && $( this ).data( "autocomplete" ).menu.active ) { 3573 event.preventDefault(); 3574 } 3575 if((event.keyCode) == 120){ 3576 //DESENHO DAS CAIXA DE EMAIL 3577 function draw_email_box(input_data, location, personal, shared){ 3578 if($.trim(input_data) != ""){ 3579 var box_data = valid_emails(input_data); 3580 DataLayer.render("../prototype/modules/mail/templates/emailBox.ejs", box_data, function(html){ 3581 var newBox = location.before(html).prev(); 3582 box_actions(newBox); 3583 if((preferences.expressoMail_ldap_identifier_recipient || personal)&& $(newBox).hasClass("invalid-email-box")){ 3584 //$(newBox).find(".loading").css("background-image", "../prototype/modules/mail/img/ajax-loader.gif"); 3585 show_detais(newBox, input_data, personal, shared); 3586 }else{ 3587 $(newBox).find(".box-loading").remove(); 3588 } 3589 }); 3590 } 3591 } 3592 3593 function valid_emails(email){ 3594 var ContactBox = {name:"", email:"", valid : false}; 3595 var reSimpleEmail = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[_a-z0-9-]+(\.[_a-z0-9-]+)+$/; 3596 var reComplexEmail = /<([^<]*)>[\s]*$/; 3597 var validation = email.split('"'); 3598 3599 //FUNÇÃO QUE VALIDA OS DADOS QUANDO O EMAIL É DIGITADO COM ("NOME SOBRENOME" <Email@dominio.com>) 3600 var complexValidation = function(complexMail){ 3601 var Objct = {}; 3602 if($.trim(complexMail[1]).match(reComplexEmail)){ 3603 if($.trim(complexMail[1]).match(reComplexEmail).length){ 3604 Objct['email'] = $.trim(complexMail[1]).match(reComplexEmail)[1]; 3605 } 3606 }else{ 3607 Objct['email'] = $.trim(complexMail[1]); 3608 } 3609 Objct['name'] = complexMail[0]; 3610 Objct['valid'] = reSimpleEmail.test(Objct['email'].toLowerCase()); 3611 return Objct; 3612 } 3613 switch (validation.length) { 3614 //PEGA TODO O CONTEUDO E SETA COMO SE FOSSE O EMAIL 3615 case 1: 3616 validation.unshift(""); 3617 ContactBox = complexValidation(validation); 3618 break; 3619 //CORRIGI ERRO DE DIGITAÇÃO COMO ( huahua"<huhau@hauhau.com>) ou (hahahaha"huahua@email.com) ou ainda (hahahaha"huahua@ema il.com) 3620 case 2: 3621 ContactBox = complexValidation(validation); 3622 break; 3623 //RECEBE O EMAIL CORRETAMENTE SÓ VALIDA POSSIVEIS ERROS COMO O DE CIMA E OS CORRIGI CASO ACONTEÇAM 3624 case 3: 3625 //RETIRA O PRIMEIRO INDICE QUE FICOU "INUTIL" 3626 validation.shift(); 3627 ContactBox = complexValidation(validation); 3628 break; 3629 //SE EXISTIREM MAIS DO QUE 2 (") 3630 default: 3631 if($.trim(validation[validation.length-1]).match(reComplexEmail)){ 3632 if($.trim(validation[validation.length-1]).match(reComplexEmail).length){ 3633 ContactBox.mail = $.trim(validation[validation.length-1]).match(reComplexEmail)[1]; 3634 } 3635 }else{ 3636 ContactBox.mail = $.trim(complexMail[1]); 3637 } 3638 ContactBox.valid = reSimpleEmail.test(ContactBox.mail.toLowerCase()); 3639 } 3640 return ContactBox; 3641 } 3642 3643 //EVENTO DOS INPUTS PARA - CC - CCO 3644 function input_keydowns(input, ID){ 3645 var f9 = false; 3646 input.keydown(function(e){ 3647 f9 = false; 3648 focusIn = input; 3649 var focusing = input.parent().find(".email-text"); 3650 //SE OS CONTATOS DINAMICOS ESTAO ATIVOS 3651 if(parseInt(preferences.use_dynamic_contacts) && !input.hasClass("box-input")){ 3652 //SELECIONA O CONTATO E EVITA OUTROS COMANDOS 3653 if ( e.keyCode === $.ui.keyCode.TAB && $( this ).data( "catcomplete" ).menu.active ) { 3654 e.preventDefault(); 3655 return false; 3656 } 3657 3658 //FECHA OS CONTATOS DINÂMICOS 3659 if( (e.keyCode == 27) && $( this ).data( "catcomplete" ).menu.active ){ 3660 e.stopPropagation(); 3661 e.preventDefault(); 3662 } 3663 3664 //SELECIONA O CONTATO E EVITA OUTROS COMANDOS 3665 if(e.keyCode == $.ui.keyCode.ENTER && $( this ).data( "catcomplete" ).menu.active){ 3666 e.preventDefault(); 3667 return false; 3668 } 3669 3670 if(e.keyCode == $.ui.keyCode.DELETE && $( this ).data( "catcomplete" ).menu.active){ 3671 if($($( this ).data( "catcomplete" ).menu.element).find(".ui-state-hover").parents("li:first").hasClass("dynamic-recent")) 3672 $($( this ).data( "catcomplete" ).menu.element).find(".ui-state-hover").next().trigger("click"); 3673 return false; 3674 } 3675 } 3676 //BUSCA COM A TECLA F9 3677 if((e.keyCode) == 120){ 3678 f9 = true; 3576 3679 emQuickSearch($(this).val(), "."+$(this).parents("tr:first").attr('class').split("-")[0], ID, undefined, true); 3577 }else if( (event.keyCode == 27) && $( this ).data( "autocomplete" ).menu.active ){ 3578 event.stopPropagation(); 3579 event.preventDefault(); 3580 } 3581 }).autocomplete({ 3582 minLength: 0, 3583 source: function( request, response ) { 3584 response( $.ui.autocomplete.filter( 3585 mySource, extractLast( request.term ) ) ); 3680 e.preventDefault(); 3681 return false; 3682 } 3683 3684 //AO DIGITAR ENTER, ";", "," " " 3685 if(e.keyCode == 13 || e.keyCode == 9 || (e.keyCode == 188 && !e.shiftKey) || (e.keyCode == 191 && !e.shiftKey) ){ 3686 if(e.keyCode == 13){ 3687 e.preventDefault(); 3688 } 3689 if(input.val() != ""){ 3690 if(e.keyCode != 9) 3691 e.preventDefault(); 3692 draw_email_box(input.val(), input); 3693 if(input.hasClass("box-input")){ 3694 input.remove(); 3695 focusing.focus(); 3696 return; 3697 } 3698 } 3699 if(input.length) 3700 input.val(""); 3701 } 3702 if((e.keyCode == 8 || e.keyCode == 37) && input.val() == "" && input.prev().hasClass("box")){ 3703 e.preventDefault(); 3704 input.prev().focus(); 3705 return; 3706 } 3707 //AO DIGITAR " " 3708 if(e.keyCode == 32){ 3709 if(!input.val().length){ 3710 e.preventDefault(); 3711 return; 3712 }else{ 3713 var texto = input.val(); 3714 texto = texto.substring(0, getPosition(input[0])); 3715 if(texto.split('"').length-1 == 0){ 3716 if(input.val().split('"').length-1 == 0){ 3717 e.preventDefault(); 3718 e.stopPropagation(); 3719 draw_email_box(input.val(), input); 3720 input.val(""); 3721 if(input.hasClass("box-input")){ 3722 input.remove(); 3723 focusing.focus(); 3724 return; 3725 } 3726 return; 3727 } 3728 } 3729 } 3730 } 3731 //AO DIGITAR ">" 3732 if(e.keyCode == 190 && e.shiftKey && input.val().length == getPosition(input[0])){ 3733 input.val(input.val()+">"); 3734 draw_email_box(input.val(), input); 3735 e.preventDefault(); 3736 input.val(""); 3737 if(input.hasClass("box-input")){ 3738 input.remove(); 3739 focusing.focus(); 3740 return; 3741 } 3742 } 3743 setTimeout(function(){ 3744 if(input.val()[input.val().length-1] == ";"){ 3745 draw_email_box(input.val().substring(0, input.val().length-1), input); 3746 input.val(""); 3747 } 3748 }, 100); 3749 //INPUT AUTO RESIZE 3750 setTimeout(function(){ 3751 input_search = $(input).val(); 3752 var char = input.val().charAt(input.val().length-1); 3753 var maiusculas = RegExp("[A-Z]"); 3754 /*Se o ultimo caracter for ">" é porque o campo está sendo editado (a partir de duplo clique)*/ 3755 var tamanho = 0; 3756 if(char == ">"){ 3757 /*Faz um calculo prévio do tamanho do campo de acordo com o tamanho de cada caracter da string*/ 3758 for(i=0; i<input.val().length; i++){ 3759 /*Se o caracter for maiúsculo, o valor de pixel é maior*/ 3760 if(maiusculas.test(input.val().substr(i, 1)) == true){ 3761 tamanho += 9; 3762 } 3763 else{ 3764 tamanho += 7.1; 3765 } 3766 } 3767 input.css("width", tamanho); 3768 } 3769 /*Ao inserir novo contato, não existe a necessidade de calcular tamanho do campo*/ 3770 else{ 3771 input.css("width", 15+(input.val().length * 9)); 3772 } 3773 input.parent().scrollTo(":last"); 3774 }, 100); 3775 }) 3776 //AO SAIR DO FOCO MONTAGEM DA CAIXA DE EMAIL 3777 .focusout(function(e){ 3778 var these = $(this); 3779 3780 // Função para monstar a caixinha de e-mail. 3781 function makeBoxMail(){ 3782 if(canMakeBox && !fastSearch){ 3783 if(!( f9 || click || $(this).parents("tr:first").find("button").hasClass("ui-state-active") )){ 3784 if($(input).val() != "") 3785 draw_email_box(input.val(), input); 3786 if(input.hasClass("box-input")) 3787 input.remove(); 3788 $(input).val(""); 3789 input_search = ""; 3790 } 3791 f9 = false; 3792 click = false; 3793 } 3794 canMakeBox = true; 3795 fastSearch = false; 3796 } 3797 3798 /* 3799 ** Verifica se o dynamic contact esta aberto ou fechado, caso esteja aberto, 3800 ** demora 250 millisegundos para executar a função makeBoxMail. 3801 */ 3802 these.data('is_open') ? setTimeout(makeBoxMail,250) : makeBoxMail(); 3803 }) 3804 //AO COLAR UM TEXTO NO CAMPO 3805 .bind("paste", function(e){ 3806 $(this).trigger("keydown"); 3807 var pthis = $(this); 3808 setTimeout(function() { 3809 var str = pthis.val().replace(/[,;\t\n]/gi, ","); 3810 str = str.split(","); 3811 $.each(str, function(index, value){ 3812 draw_email_box(value, pthis); 3813 }); 3814 pthis.val(""); 3815 }, 50); 3816 }); 3817 //SE FOR EDIÇÃO DE EMAILS RECALCULA O INPUT E SETA O FOCO 3818 if(input.hasClass("box-input")){ 3819 input.trigger("keydown"); 3820 input.focus(); 3821 } 3822 } 3823 var input_search = ""; 3824 var click = false; 3825 //EVENTOS DA CAIXA 3826 function box_actions(box){ 3827 //AO PRESSIONAR UMA TECLA COM A CAIXA SELECIONADA 3828 box.keydown(function(e){ 3829 switch (e.keyCode) { 3830 case $.ui.keyCode.LEFT: 3831 //VERIFICA SE EXISTE ALGUMA CAIXA A ESQUERDA 3832 if($(this).prev().hasClass("box")) 3833 $(this).removeClass("box-selected").prev().focus(); 3834 break; 3835 case $.ui.keyCode.RIGHT: 3836 //VERIFICA SE EXISTE ALGUMA CAIXA A DIREITA 3837 if($(this).next().hasClass("box")) 3838 $(this).removeClass("box-selected").next().focus(); 3839 //SENAO FOCO O INPUT DO EMAIL 3840 else 3841 $(this).removeClass("box-selected").next().focus(); 3842 break; 3843 case $.ui.keyCode.HOME: 3844 //SELECIONO A PRIMEIRA CAIXA 3845 e.preventDefault(); 3846 $(this).parents(".email-area").find("div:first").focus(); 3847 break; 3848 case $.ui.keyCode.END: 3849 //SELECIONO A ULTIMA CAIXA 3850 e.preventDefault(); 3851 $(this).parents(".email-area").find("div:last").focus(); 3852 break; 3853 case $.ui.keyCode.DELETE: 3854 //VERIFICA SE EXISTE ALGUMA CAIXA A DIREITA 3855 if($(this).next().hasClass("box")) 3856 $(this).next().focus(); 3857 //SENAO FOCO O INPUT DO EMAIL 3858 else 3859 $(this).next().focus(); 3860 //REMOVO ESTA CAIXA 3861 $(this).remove(); 3862 break; 3863 case $.ui.keyCode.BACKSPACE: 3864 //VERIFICA SE EXISTE ALGUMA CAIXA A ESQUERDA 3865 if($(this).prev().hasClass("box")) 3866 $(this).removeClass("box-selected").prev().focus(); 3867 //SENAO HOUVER VERIFICA SE EXISTE ALGUMA CAIXA A DIREITA 3868 else if($(this).next().hasClass("box")) 3869 $(this).next().focus(); 3870 //SENAO HOUVER NEM A DIREITA NEM A ESQUERDA SETO O FOCO NO INPUT DO EMAIL 3871 else 3872 $(this).next().focus(); 3873 //REMOVO ESTA CAIXA 3874 $(this).remove(); 3875 e.preventDefault(); 3876 break; 3877 case $.ui.keyCode.ENTER: 3878 e.preventDefault(); 3879 $(this).trigger("dblclick"); 3880 break; 3881 } 3882 }) 3883 //AO FAZER UM DUPLO CLICK NA CAIXA 3884 .dblclick(function(e){ 3885 var input = $(this).find("input").clone(); 3886 input.css("display" , "inline-block"); 3887 $(this).before(input); 3888 input_keydowns(input, currentTab); 3889 $(this).remove(); 3890 //CLICK SIMPLES NA CAIXA 3891 }).click(function(){ 3892 $(this).focus(); 3893 //AO DAR O FOCO NA CAIXA 3894 }).focus(function(){ 3895 $(this).parent().find("div").removeClass("box-selected"); 3896 $(this).addClass("box-selected"); 3897 }).focusout(function(){ 3898 $(this).removeClass("box-selected"); 3899 }).draggable({ 3900 revert: 'invalid', 3901 helper : 'clone', 3902 stack: "body", 3903 containment : ".new-msg-head-data", 3904 start: function(e, ui){ 3905 $(this).parent().droppable( "disable" ); 3586 3906 }, 3587 focus: function() { 3588 return false; 3589 }, 3590 select: function( event, ui ) { 3591 var terms = mySplit( this.value ); 3592 terms.pop(); 3593 terms.push( (ui.item.name != "" ? "\""+ui.item.name+"\" " : "") + (ui.item.email ? "<"+ui.item.email+">" : "")); 3594 terms.push( "" ); 3595 this.value = terms.join( ", " ); 3596 return false; 3597 }, 3598 autoFocus: true 3599 }).data( "autocomplete" )._renderItem = function( ul, item ) { 3600 ul.css({"max-height" : "115px", "overflow-y" : "auto"}); 3601 if( $(ul).find("li").length > 10 ){ 3907 stop : function(e, ui){ 3908 $(this).parent().droppable( "enable" ); 3909 } 3910 }); 3911 } 3912 3913 //MOSTRA OS DETALHES DAS CAIXA DE EMAIL NOS CAMPOS PARA - CC - CCO 3914 function show_detais(box, value, personal, shared){ 3915 var ldap_id = preferences.expressoMail_ldap_identifier_recipient; 3916 var group = (personal != undefined ? (personal == "G" ? true : false) : false); 3917 shared = shared ? shared : false; 3918 if(group){ 3919 REST.get("/"+ (shared ? "shared" : "") +"group/"+value, {}, function(data){ 3920 if(!data.error){ 3921 if(data.collection.error) 3922 box.find(".box-loading").remove(); 3923 else{ 3924 box.find(".box-loading").removeClass("box-loading").addClass("box-info"); 3925 box.addClass("box-"+value).removeClass("invalid-email-box"); 3926 loadGroupBox(data.collection, ".box-"+value); 3927 box.unbind("dblclick").bind("dblclick", function(e){ 3928 new $.Zebra_Dialog(get_lang("Impossible editing this contact, but it's possible to remove it"), { 3929 'buttons': false, 3930 'modal': false, 3931 'position': ['right - 20', 'top + 20'], 3932 'auto_close': 3000 3933 }); 3934 }).find(".box-input").val("\""+data.collection.data[1].value+"\" <"+data.collection.data[1].value+">"); 3935 box.find(".email-box-value").html( (data.collection.data[1].value.length > 18 ? data.collection.data[1].value.substring(0, 15)+"...": data.collection.data[1].value)) 3936 } 3937 }else{ 3938 box.find(".box-loading").remove(); 3939 } 3940 }); 3941 return; 3942 } 3943 3944 if(personal){ 3945 REST.get("/"+ (shared ? "shared" : "") +"contact/"+value, {}, function(data){ 3946 if(!data.error){ 3947 if(data.collection.error) 3948 box.find(".box-loading").remove(); 3949 else{ 3950 box.find(".box-loading").removeClass("box-loading").addClass("box-info"); 3951 box.addClass("box-"+value).removeClass("invalid-email-box"); 3952 loadExtraLDAPBox(data.collection.data, ".box-"+value); 3953 box.unbind("dblclick").bind("dblclick", function(e){ 3954 new $.Zebra_Dialog(get_lang("Impossible editing this contact, but it's possible to remove it"), { 3955 'buttons': false, 3956 'modal': false, 3957 'position': ['right - 20', 'top + 20'], 3958 'auto_close': 3000 3959 }); 3960 }).find(".box-input").val("\""+data.collection.data[0].value+"\" <"+data.collection.data[1].value+">"); 3961 box.find(".email-box-value").html( (data.collection.data[0].value.length > 18 ? data.collection.data[0].value.substring(0, 15)+"...": data.collection.data[0].value)) 3962 } 3963 }else{ 3964 box.find(".box-loading").remove(); 3965 } 3966 }); 3967 return; 3968 } 3969 3970 REST.get("/usersldap", {field : ldap_id,value: value}, function(data){ 3971 if(!data.error){ 3972 if(data.collection.error) 3973 box.find(".box-loading").remove(); 3974 else{ 3975 box.find(".box-loading").removeClass("box-loading").addClass("box-info"); 3976 box.addClass("box-"+value).removeClass("invalid-email-box"); 3977 loadExtraLDAPBox(data.collection.itens[0].data, ".box-"+value); 3978 box.unbind("dblclick").bind("dblclick", function(e){ 3979 new $.Zebra_Dialog(get_lang("Impossible editing this contact, but it's possible to remove it"), { 3980 'buttons': false, 3981 'modal': false, 3982 'position': ['right - 20', 'top + 20'], 3983 'auto_close': 3000 3984 }); 3985 }).find(".box-input").val("\""+data.collection.itens[0].data[0].value+"\" <"+data.collection.itens[0].data[1].value+">"); 3986 box.find(".email-box-value").html( (data.collection.itens[0].data[0].value.length > 18 ? data.collection.itens[0].data[0].value.substring(0, 15)+"...": data.collection.itens[0].data[0].value)) 3987 if(data.collection.itens[0].data[3].value == "TRUE"){ 3988 box.removeClass("invalid-email-box").addClass("out-office-box"); 3989 } 3990 } 3991 }else{ 3992 box.find(".box-loading").remove(); 3993 } 3994 }); 3995 } 3996 3997 //FUNÇÃO QUE "SETA" OS BINDS DOS CAMPOS PARA - CC - CCO 3998 function input_binds(div, ID){ 3999 4000 //AO CLICAR NA DIV SETA O FOCO NO INPUT 4001 div.click(function(e){ 4002 if(e.target == $(this)[0]){ 4003 $(this).find("input:last").focus(); 4004 $(this).find("div").removeClass("box-selected"); 4005 } 4006 }) 4007 4008 //AO SAIR DO FOCO DA DIV ELE RETIRA TODAS AS CLASSES DE CAIXAS SELECIONADAS 4009 .focusout(function(e){ 4010 if(!$(e.target).parents(".email-area:first").length) 4011 $(this).find("div").removeClass("box-selected"); 4012 }).droppable({ 4013 hoverClass: "box-draggable-hover", 4014 accept : ".box", 4015 drop : function(e, ui){ 4016 ui.draggable.parent().droppable( "enable" ); 4017 var box = ui.draggable.clone(); 4018 box_actions(box); 4019 if(box.find(".box-info").length){ 4020 box.unbind("dblclick").bind("dblclick", function(e){ 4021 new $.Zebra_Dialog('<strong>Impossivel editar</strong> um contato do ldap\n' + 4022 '<strong>Porém</strong>é possivel remove-lo', { 4023 'buttons': false, 4024 'modal': false, 4025 'position': ['right - 20', 'top + 20'], 4026 'auto_close': 3000 4027 }); 4028 }); 4029 } 4030 $(this).prepend(box); 4031 ui.draggable.remove(); 4032 } 4033 }); 4034 4035 //MAKE KEYDOWN 4036 input_keydowns(div.find("input"), ID); 4037 4038 4039 //VERIFICA PREFERENCIA DE CONTATOS DINÂMICOS ESTA ATIVA 4040 if(parseInt(preferences.use_dynamic_contacts)){ 4041 //PREPARAÇÃO DA ARRAY DOS CONTATOS DINÂMICOS 4042 4043 $.widget( "custom.catcomplete", $.ui.autocomplete, { 4044 _renderMenu: function( ul, items ) { 4045 var self = this, 4046 currentType = ""; 4047 $.each( items, function( index, item ) { 4048 if ( item.typel != currentType) { 4049 if(item.typel == "/groups" && $(ul).find(".dynamic-recent").length) 4050 self._renderItem( ul, {name:"", value:"", type:"linha"} ); 4051 if(item.typel == "/contacts" && ($(ul).find(".dynamic-group").length || $(ul).find(".dynamic-recent").length)) 4052 self._renderItem( ul, {name:"", value:"", type:"linha"} ); 4053 currentType = item.typel; 4054 } 4055 self._renderItem( ul, item ); 4056 $(ul).find("li:last").find(".dynamic-stars").raty({ 4057 readOnly : true, 4058 half : true, 4059 hints : ['','','','',''], 4060 score : ((item.number_of_messages*5)/topContact) > 0.5 ? ((item.number_of_messages*5)/topContact) : 0.5, 4061 starOn : '../../prototype/plugins/jq-raty/img/star-on.png', 4062 starOff : '../../prototype/plugins/jq-raty/img/star-off.png', 4063 starHalf : '../../prototype/plugins/jq-raty/img/star-half.png' 4064 }); 4065 }); 4066 if($(ul).find("li:last").hasClass("dynamic-separator")){ 4067 $(ul).find("li:last").remove(); 4068 } 4069 } 4070 }); 4071 //INSERÇÃO DO AUTO COMPLETE AO INPUT 4072 div.find("input").catcomplete({ 4073 minLength: 1, 4074 source: function(request, response){ 4075 if ( request.term in cache ) { 4076 response( cache[ request.term ] ); 4077 return; 4078 } 4079 dynamicContactsList = new Array(); 4080 REST.get("/usercontacts", false, function(data){ 4081 dynamicData = data.collection.itens; 4082 if(dynamicData){ 4083 $.each(dynamicData, function(index, value){ 4084 dynamic = {}; 4085 $.each(value.data, function(index, value){ 4086 dynamic[value.name] = value.value; 4087 }); 4088 dynamic['value'] = (dynamic.name ? dynamic.name +' - ': '') + dynamic.mail; 4089 dynamic['type'] = value.dataType; 4090 dynamic['typel'] = (value.dataType.substring(0,7) == "/shared" ? "/"+value.dataType.substring(7,value.dataType.length)+"s" : value.dataType) ; 4091 dynamicContactsList.push(dynamic); 4092 }); 4093 } 4094 var data = $.ui.autocomplete.filter(dynamicContactsList, request.term ); 4095 cache[ request.term ] = data; 4096 response( data ); 4097 }); 4098 }, 4099 focus: function() { 4100 return false; 4101 }, 4102 4103 //EVENTO AO SELECIONAR UM CONTATO DINÂMICO 4104 select: function( event, ui ) { 4105 canMakeBox = false; 4106 event.preventDefault(); 4107 $(this).val(""); 4108 if(ui.item.typel == "/contacts") 4109 draw_email_box(""+ui.item.id, $(this), true, (ui.item.type.substring(0,7) == "/shared" ? true : false)); 4110 else if(ui.item.typel == "/groups") 4111 draw_email_box(""+ui.item.id, $(this), "G", (ui.item.type.substring(0,7) == "/shared" ? true : false)); 4112 else 4113 draw_email_box(ui.item.name ? "\""+ui.item.name+"\" <"+ui.item.mail+">" : ui.item.mail, $(this)); 4114 return false; 4115 }, 4116 autoFocus: true, 4117 position : { my: "left top", at: "left bottom", collision: "fit" } 4118 }).bind('catcompleteopen', function(event, ui) { 4119 $(this).data('is_open',true); 4120 }).bind('catcompleteclose', function(event, ui) { 4121 canMakeBox = true; 4122 $(this).data('is_open',false); 4123 }) 4124 4125 //MONTAGEM DA LISTA DE CONTATOS DINÂMICOS DO AUTO COMPLETE 4126 .data( "catcomplete" )._renderItem = function( ul, item ) { 4127 if($(ul).find("li").length < 50){ 4128 var autocomplete = $(this)[0].element; 4129 //cálculo dinâmico da largura da lista 4130 var width = (item.label ? item.label.length : (item.value ? item.value.length : (item.email ? item.email.length : 20 ))); 4131 width = width*5 + (is_ie ? 170 : 200) + 16; 4132 if (width < $(ul).width()) 4133 width = $(ul).width(); 4134 ul.css({"min-width":width,"max-height" : "180px", "overflow-y" : "auto", "min-height": "30px"}); 4135 var listContacts = DataLayer.render("../prototype/modules/mail/templates/listContacts.ejs", item); 4136 return $(listContacts).data( "item.autocomplete", item ).appendTo( ul ).find("span:last").button({ 4137 icons : { 4138 primary : "ui-icon-close" 4139 }, 4140 text: false 4141 }).click(function(event){ 4142 var removeLi = $(this).parents("li:first"); 4143 if(!event.keyCode) 4144 autocomplete.catcomplete( "close" ); 4145 canMakeBox = false; 4146 $.Zebra_Dialog('Deseja remover <b>'+(item.name ? item.name+" - " : "")+ item.mail+'</b>?', { 4147 'type': 'question', 4148 'custom_class': (is_ie ? 'configure-zebra-dialog' : ''), 4149 'title': 'Atenção', 4150 'buttons': ['Sim','Não'], 4151 'overlay_opacity': '0.5', 4152 'onClose': function(caption) { 4153 if(caption == 'Sim'){ 4154 $(removeLi).remove(); 4155 REST.delete("/dynamiccontact/"+item.id); 4156 updateDynamicContact(); 4157 cache = new Array(); 4158 }else if(caption == 'Não'){ 4159 $(focusIn).focus(); 4160 } 4161 } 4162 }); 4163 }); 4164 } 3602 4165 return; 3603 } 3604 return $( "<li></li>" ) 3605 .data( "item.autocomplete", item ) 3606 .append( "<a>" + item.name + " - " + item.email + "</a>" ) 3607 .appendTo( ul ); 3608 }; 3609 input.parents("tr:first").find("button").button().click(function(){ 3610 emQuickSearch($(this).parents("tr:first").find("textarea").val(), "."+$(this).parents("tr:first").attr('class').split("-")[0], ID, undefined, true); 4166 }; 4167 } 4168 4169 //FUNÇÃO DOS BOTÕES PARA - CC - CCO 4170 div.parents("tr:first").find("button").button().click(function(){ 4171 click = true; 4172 fastSearch = true; 4173 if(!$(":focus").hasClass("new-message-input")) 4174 emQuickSearch(($(this).parents("tr:first").find("input").val() ? $(this).parents("tr:first").find("input").val() : input_search), "."+$(this).parents("tr:first").attr('class').split("-")[0], ID, undefined, true); 3611 4175 }); 3612 4176 } … … 3615 4179 connector.loadScript("color_palette"); 3616 4180 connector.loadScript('wfolders'); 4181 connector.loadScript("ccQuickAdd"); 3617 4182 3618 4183 if(typeof(RichTextEditor) == 'undefined' || typeof(ColorPalette) == 'undefined' || typeof(wfolders) == 'undefined') … … 3662 4227 button.toggleClass("expressomail-button-icon-ative"); 3663 4228 field.toggle(); 3664 field.find("textarea").val("").focus(); 3665 if(!field.find("textarea").hasClass("elastic")){ 3666 field.find("textarea").css({"max-height" : "115px", "overflow-y" : "auto"}).addClass("elastic").elastic().unbind('blur'); 3667 input_binds(field.find("textarea"), ID); 4229 field.find("textarea").val("").parent().find("input").focus(); 4230 field.find(".email-area div").remove(); 4231 if(!field.find("textarea").hasClass("track")){ 4232 field.find("textarea").css({"max-height" : "115px", "overflow-y" : "auto"}).addClass("track"); 4233 input_binds(field.find(".email-area"), ID); 3668 4234 } 3669 4235 } 3670 4236 3671 input_binds(content.find('[name="input_ to"]').css({"max-height" : "115px", "overflow-y" : "auto"}).addClass("elastic").elastic().unbind('blur').focus(), ID);4237 input_binds(content.find('[name="input_aux_to"]').css("max-width" , parseInt(content.find(".email-area").css("width"))-5).focus().parent().css({"max-height" : "115px", "overflow-y" : "auto"}), ID); 3672 4238 3673 4239 //Botão TextoRico/TextoSimples 3674 4240 content.find(".new-msg-head-right-buttons").find(".button").button().filter(".rich-button").click(function(){ 3675 /*Se o texto do botão for "Texto simples" exibirá a mensagem antes de alterar para texto simples*/ 3676 if($(".rich-button").find("span").text() == get_lang("Simple Text")){ 3677 $.Zebra_Dialog(get_lang("Convert this message into plain text can make parts of it are removed. Continue?"), { 3678 'type': 'warning', 3679 'overlay_opacity': '0.5', 3680 'buttons': ['OK','Cancelar'], 3681 'width' : 380, 3682 'onClose': function(clicked) { 3683 if(clicked == 'OK'){ 3684 RichTextEditor.setPlain(check_input(content.find('[name="textplain_rt_checkbox"]')), ID); 3685 $(".rich-button").find("span").text(get_lang("Rich Text")); 3686 }3687 } 3688 }) 3689 } 3690 /*Se o texto do botão for "Texto rico" simplesmente altera para texto rico*/ 3691 else{ 3692 RichTextEditor.setPlain(check_input(content.find('[name="textplain_rt_checkbox"]')), ID); 3693 $(".rich-button").find("span").text(get_lang("Simple Text")); 3694 4241 /*Se o texto do botão for "Texto simples" exibirá a mensagem antes de alterar para texto simples*/ 4242 if($(".rich-button").find("span").text() == get_lang("Simple Text")){ 4243 $.Zebra_Dialog(get_lang("Convert this message into plain text can make parts of it are removed. Continue?"), { 4244 'type': 'warning', 4245 'overlay_opacity': '0.5', 4246 'buttons': ['OK','Cancelar'], 4247 'width' : 380, 4248 'onClose': function(clicked) { 4249 if(clicked == 'OK'){ 4250 RichTextEditor.setPlain(check_input(content.find('[name="textplain_rt_checkbox"]')), ID); 4251 $(".rich-button").find("span").text(get_lang("Rich Text")); 4252 } 4253 } 4254 }) 4255 } 4256 /*Se o texto do botão for "Texto rico" simplesmente altera para texto rico*/ 4257 else{ 4258 RichTextEditor.setPlain(check_input(content.find('[name="textplain_rt_checkbox"]')), ID); 4259 $(".rich-button").find("span").text(get_lang("Simple Text")); 4260 } 3695 4261 }) 3696 4262 … … 3934 4500 3935 4501 var el_shared_users = Element("el_shared_users"); 4502 /* Recupera a pasta atual do usuário (selecionada) */ 4503 var user_shared = folder.split(cyrus_delimiter); 4504 /* Verifica se está nas próprias pastas */ 4505 if(user_shared[0] == "INBOX"){ 4506 user_shared = User.me.uid; 4507 }else{ 4508 user_shared = user_shared[1]; 4509 } 3936 4510 // The element was loaded and populated...so return. 3937 4511 if(el_shared_users){ … … 3944 4518 _option.text = el_shared_users.options[x].text; 3945 4519 _option.value = el_shared_users.options[x].value; 4520 /* Faz o tratamento do nome da pasta para fazer a verificação e selecionar o valor no select */ 4521 var str_begin_name = _option.text.indexOf('<') + 1; 4522 var str_end_name = _option.text.indexOf('@'); 4523 var user_selected_name = _option.text.substring(str_begin_name, str_end_name); 4524 /* Verifica se é o usuário da pasta selecionada */ 4525 if(user_selected_name == user_shared){ 4526 _option.selected = 'selected'; 4527 } 3946 4528 sel_from.options[sel_from.options.length] = _option ; 3947 4529 } … … 3969 4551 if(data.length > 0) { 3970 4552 tr1_1.style.display = ''; 3971 4553 var mycn = typeof(data.myname != 'undefined') ? data.myname : ''; 3972 4554 var _option = document.createElement("OPTION"); 3973 4555 _option.text = '"'+mycn+'" <'+Element("user_email").value+'>'; 3974 4556 _option.value = mycn+";"+Element("user_email").value; 4557 /* Verifica se é o usuário logado */ 4558 if(user_shared == User.me.uid) 4559 _option.selected = 'selected'; 3975 4560 sel_from.options[sel_from.options.length] = _option; 3976 4561 3977 4562 var options = ''; 3978 var cn = ''; 3979 4563 var cn = ''; 3980 4564 for (var x = 0; x < data.length; x++) { 3981 4565 cn = typeof(data[x].cn[0] != 'undefined') ? data[x].cn[0] : ''; … … 3983 4567 _option.text = '"'+cn+'" <'+data[x].mail[0]+'>'; 3984 4568 _option.value = cn+';'+data[x].mail[0]+';'+data[x].save_shared[0]+';'+data[x].uid[0]; 4569 /* Faz o tratamento do nome da pasta para fazer a verificação e selecionar o valor no select */ 4570 var str_begin_name = _option.text.indexOf('<') + 1; 4571 var str_end_name = _option.text.indexOf('@'); 4572 var user_selected_name = _option.text.substring(str_begin_name, str_end_name); 4573 /* Verifica se é o usuário da pasta selecionada */ 4574 if(user_selected_name == user_shared){ 4575 _option.selected = 'selected'; 4576 } 3985 4577 sel_from.options[sel_from.options.length] = _option ; 3986 4578 } … … 4335 4927 cc_data[3] = array_addrs[0]; 4336 4928 4929 var onclick = ''; 4930 $.each(cc_data, function(index, value){ 4931 onclick += "'"+value+"',"; 4932 }); 4933 onclick = onclick.substr(0, onclick.length-1); 4337 4934 var sm_envelope_img1 = '<img style="cursor:'+ (is_ie ? 'hand' : 'pointer') +'" title="' + get_lang("Add Contact") + 4338 '" onclick="ccQuickAddOne.showList( \''+cc_data+'\')" src="./templates/'+template+'/images/user_card.png">';4935 '" onclick="ccQuickAddOne.showList(['+onclick+'])" src="./templates/'+template+'/images/user_card.png">'; 4339 4936 var to_addybook_add = "<SPAN id='insert_plugin_"+idx_cc+"_"+ID+"'>"; 4340 4937 to_addybook_add += addrs;
Note: See TracChangeset
for help on using the changeset viewer.