Changeset 7304 for sandbox/2.4.3-expresso-rest/expressoMail1_2
- Timestamp:
- 09/26/12 10:36:21 (12 years ago)
- Location:
- sandbox/2.4.3-expresso-rest
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
sandbox/2.4.3-expresso-rest
- Property svn:mergeinfo changed
/trunk merged: 7274-7278,7285-7286,7297-7299,7303
- Property svn:mergeinfo changed
-
sandbox/2.4.3-expresso-rest/expressoMail1_2/inc/class.imap_functions.inc.php
r7273 r7304 2649 2649 } 2650 2650 2651 function send_mail($params) { 2651 function send_mail($params) { 2652 2652 require_once dirname(__FILE__) . '/../../services/class.servicelocator.php'; 2653 2653 require_once dirname(__FILE__) . '/../../prototype/api/controller.php'; … … 2658 2658 $fromaddress = $params['input_from'] ? explode(';', $params['input_from']) : ""; 2659 2659 $message_attachments_contents = (isset($params['message_attachments_content'])) ? $params['message_attachments_content'] : false; 2660 2660 2661 2661 ## 2662 2662 # @AUTHOR Rodrigo Souza dos Santos … … 2674 2674 } 2675 2675 2676 $params['input_to'] = mb_convert_encoding($params['input_to'], "ISO-8859-1","UTF-8, ISO-8859-1"); 2677 $params['input_cc'] = mb_convert_encoding($params['input_cc'], "ISO-8859-1","UTF-8, ISO-8859-1"); 2678 $params['input_cco'] = mb_convert_encoding($params['input_cco'], "ISO-8859-1","UTF-8, ISO-8859-1"); 2679 2680 if (substr($params['input_to'], -1) == ',') 2681 $params['input_to'] = substr($params['input_to'], 0, -1); 2682 2683 if (substr($params['input_cc'], -1) == ',') 2684 $params['input_cc'] = substr($params['input_cc'], 0, -1); 2685 2686 if (substr($params['input_cco'], -1) == ',') 2687 $params['input_cco'] = substr($params['input_cco'], 0, -1); 2688 2676 2689 /*Wraps the text dividing the emails as from ">,"*/ 2677 2690 $toaddress = $db->getAddrs(preg_split('/>,/',preg_replace('/>,/', '>>,', $params['input_to']))); … … 2701 2714 2702 2715 $replytoaddress = $params['input_reply_to']; 2703 $subject = $params['input_subject'];2716 $subject = mb_convert_encoding($params['input_subject'], "ISO-8859-1","UTF-8, ISO-8859-1"); 2704 2717 $return_receipt = $params['input_return_receipt']; 2705 2718 $is_important = $params['input_important_message']; … … 2710 2723 $message_attachments = $params['message_attachments']; 2711 2724 2712 if (substr($params['input_to'], -1) == ',') 2713 $params['input_to'] = substr($params['input_to'], 0, -1); 2714 2715 if (substr($params['input_cc'], -1) == ',') 2716 $params['input_cc'] = substr($params['input_cc'], 0, -1); 2717 2718 if (substr($params['input_cco'], -1) == ',') 2719 $params['input_cco'] = substr($params['input_cco'], 0, -1); 2725 2720 2726 2721 2727 // Valida numero Maximo de Destinatarios … … 2834 2840 } else { 2835 2841 //Compatibilização com Outlook, ao encaminhar a mensagem 2836 $body = mb_ereg_replace('<!--\[', '<!-- [', $params['body']);2842 $body = mb_ereg_replace('<!--\[', '<!-- [', base64_decode($params['body'])); 2837 2843 $body = str_replace("<","&yzwkx;",$body); //Alterar as Entities padrão das tags < > para compatibilizar com o Expresso 2838 2844 $body = str_replace(">","&xzwky;",$body); … … 2884 2890 } 2885 2891 2886 2887 if ($fromaddress) 2888 $mailService->setFrom('"' . $fromaddress[0] . '" <' . $fromaddress[1] . '>'); 2889 else 2890 $mailService->setFrom('"' . $_SESSION['phpgw_info']['expressomail']['user']['firstname'] . ' ' . $_SESSION['phpgw_info']['expressomail']['user']['lastname'] . '" <' . $_SESSION['phpgw_info']['expressomail']['user']['email'] . '>'); 2891 2892 $mailService->addHeaderField('Reply-To', $replytoaddress); 2892 $from = $fromaddress ? ('"' . $fromaddress[0] . '" <' . $fromaddress[1] . '>') : ('"' . $_SESSION['phpgw_info']['expressomail']['user']['firstname'] . ' ' . $_SESSION['phpgw_info']['expressomail']['user']['lastname'] . '" <' . $_SESSION['phpgw_info']['expressomail']['user']['email'] . '>'); 2893 $mailService->setFrom($from); 2894 2895 $mailService->addHeaderField('Reply-To', !!$replytoaddress ? $replytoaddress : $from); 2893 2896 2894 2897 $bol = $this->add_recipients('to', $toaddress, $mailService); … … 3016 3019 3017 3020 $attachment = json_decode($params['attachments'],TRUE); 3018 3021 $message_size_total = 0; 3019 3022 foreach ($attachment as &$value) 3020 3023 { -
sandbox/2.4.3-expresso-rest/expressoMail1_2/js/common_functions.js
r7145 r7304 1148 1148 var info = "Todas as <b>"+totalFolderMsgs+"</b> mensagens "+filterFlag+" em "+folder+" foram selecionadas. "+link; 1149 1149 div.html("<span>"+info+"<span>"); 1150 div.show();1150 //div.show(); 1151 1151 $('.select-link').bind('click',function(){ 1152 1152 selectAllFolderMsgs(); … … 1159 1159 var info = "Todas as <b>"+$('#table_box tr').length+"</b> mensagens desta página foram selecionadas. "+link; 1160 1160 div.html("<span>"+info+"<span>"); 1161 div.show();1161 //div.show(); 1162 1162 $('.select-link').bind('click',function(){ 1163 1163 selectAllFolderMsgs(true); … … 1190 1190 }); 1191 1191 } 1192 else div.hide(); 1193 1192 else div.html('<span class="none-selected">Nenhuma mensagem foi selecionada.</span>'); 1194 1193 } 1195 1194 resizeWindow(); -
sandbox/2.4.3-expresso-rest/expressoMail1_2/js/draw_api.js
r7273 r7304 1079 1079 function drawSelectMsgsTable(){ 1080 1080 var div = $('<div>'); 1081 div.html('<span class="none-selected">Nenhuma mensagem foi selecionada.</span>'); 1081 1082 div.attr('class','select-all-messages'); 1082 1083 $('#content_id_0').first().prepend(div); 1083 div.css('display','none');1084 //div.css('display','none'); 1084 1085 } 1085 1086 … … 1164 1165 }); 1165 1166 } 1167 else if (total_pages > 1){ 1168 div.html('<span class="none-selected">Nenhuma mensagem foi selecionada.</span>'); 1169 } 1166 1170 else{ 1167 1171 div.hide(); 1168 } 1172 } 1169 1173 resizeWindow(); 1170 1174 } … … 1182 1186 var info = "Todas as <b>"+totalFolderMsgs+"</b> mensagens "+filterFlag+" em "+folder+" foram selecionadas. "+link; 1183 1187 div.html("<span>"+info+"<span>"); 1184 div.show();1188 //div.show(); 1185 1189 $('.select-link').bind('click',function(){ 1186 1190 selectAllFolderMsgs(); … … 1201 1205 selectedPagingMsgs[obj] = false; 1202 1206 } 1203 div.h ide();1207 div.html('<span class="none-selected">Nenhuma mensagem foi selecionada.</span>'); 1204 1208 } 1205 1209 resizeWindow(); … … 4791 4795 }).end().end().end().filter(".message-attach-link").click(function(){ 4792 4796 jQuery('#message-attach-dialog').html(DataLayer.render("../prototype/modules/attach_message/attach_message.ejs", {})); 4797 var lastFolderSelected = $('#content_folders .folder.selected'); 4793 4798 $( "#mailpreview_container span.ui-icon-close" ).click(); 4794 4799 jQuery('#message-attach-dialog').dialog({ … … 4802 4807 event.stopPropagation(); 4803 4808 if(typeof(shortcut) != 'undefined') shortcut.disabled = false; 4809 lastFolderSelected.toggleClass('selected'); 4804 4810 }, 4805 4811 open: function(event, ui) -
sandbox/2.4.3-expresso-rest/expressoMail1_2/js/main.js
r7273 r7304 2858 2858 if (preferences.auto_save_draft == 1) 2859 2859 autoSaveControl.status[ID] = true; 2860 2860 2861 var content = $("#content_id_"+ID); 2861 2862 var save_link = $("#content_id_"+ID).find(".save"); … … 2864 2865 save_link.button({disabled: true}); 2865 2866 2866 ID_tmp = ID; 2867 2868 var handler_send_message = function(data){ 2869 send_message_return(data, this.ID_tmp); // this is a hack to escape quotation form connector bug 2870 }; 2871 2872 var mail_as_plain = document.getElementById( 'textplain_rt_checkbox_' + ID ); 2873 mail_as_plain = ( mail_as_plain ) ? mail_as_plain.checked : false; 2874 2875 var content_body = RichTextEditor.getData('body_'+ID); 2876 var textArea = document.createElement("TEXTAREA"); 2877 textArea.style.display='none'; 2878 textArea.name = "body"; 2879 textArea.value = content_body; 2880 2881 var input_folder = document.createElement("INPUT"); 2882 input_folder.style.display='none'; 2883 input_folder.name = "folder"; 2884 input_folder.value = folder; 2885 2886 var input_type = document.createElement("INPUT"); 2887 input_type.style.display='none'; 2888 input_type.name = "type"; 2889 input_type.value = RichTextEditor.plain[ID] ? 'plain' : 'html'; 2890 2891 var uids = document.createElement("INPUT"); 2892 uids.style.display='none'; 2893 uids.name = "uids_save"; 2894 uids.value = uidsSave[ID].toString(); 2895 2896 var save_folder = document.createElement("INPUT"); 2897 save_folder.style.display='none'; 2898 save_folder.name = "save_folder"; 2899 save_folder.value = (openTab.imapBox[ID] && openTab.type[ID] < 6) ? openTab.imapBox[ID]: "INBOX" + cyrus_delimiter + draftsfolder; 2900 2901 var msg_attachments = document.createElement("INPUT"); 2902 msg_attachments.style.display='none'; 2903 msg_attachments.name = "attachments"; 2904 msg_attachments.value = listAttachment(ID); 2905 2906 if (is_ie){ 2907 var i = 0; 2908 while (document.forms(i).name != "form_message_"+ID){i++} 2909 form = document.forms(i); 2910 } 2911 else 2912 form = document.forms["form_message_"+ID]; 2913 2914 // Evita que e-mails assinados sejam enviados quando o usuário tenta enviar um e-mail 2915 // não assinado (desmarcou a opção) após tentar enviar um e-mail assinado que não passou 2916 // no teste de validação. 2917 var checkSign = document.getElementById('return_digital_'+ID); 2918 if (checkSign && !checkSign.checked){ 2919 var smime = Element('smime'); 2920 if (smime) 2921 { 2922 var parent = smime.parentNode; 2923 parent.removeChild(smime); 2924 } 2925 } 2926 2927 form.appendChild(textArea); 2928 form.appendChild(input_folder); 2929 form.appendChild(input_type); 2930 // Implementação do In_Reply_To e References 2931 var msgId = document.createElement("INPUT"); 2932 msgId.style.display = 'none'; 2933 msgId.name = 'messageNum'; 2934 msgId.value = currentTab; 2935 2936 form.appendChild(msgId); 2937 form.appendChild(save_folder); 2938 form.appendChild(uids); 2939 form.appendChild(msg_attachments); 2940 2941 var mail_type = document.createElement('input'); 2942 mail_type.setAttribute('type', 'hidden'); 2943 mail_type.name = 'type'; 2944 mail_type.value = ( mail_as_plain ) ? 'plain' : 'html'; 2945 form.parentNode.appendChild(mail_type); 2946 2947 var _subject = trim(content.find(".subject").val()); 2948 if((_subject.length == 0) && !confirm(get_lang("Send this message without a subject?"))) { 2949 save_link.click(onClick); 2950 content.find(".subject").focus(); 2951 return; 2952 } 2953 //stringEmail = content.find('[name="input_to"]').val(); 2867 var _subject = trim(content.find(".subject").val()); 2868 if((_subject.length == 0) && !confirm(get_lang("Send this message without a subject?"))) { 2869 save_link.click(onClick); 2870 content.find(".subject").focus(); 2871 return; 2872 } 2954 2873 2955 2874 var stringReply = ""; … … 2959 2878 $.each(array, function(index, value){ 2960 2879 stringReply += $(value).find("input").val() + ","; 2880 }); 2881 var stringToEmail = ""; 2882 draw_email_box(content.find(".to-tr").find("textarea:first").val() || content.find(".to-tr").find("input:visible").val(), content.find(".to-tr").find("textarea:first")); 2883 content.find(".to-tr").find("textarea:first").val(""); 2884 content.find(".to-tr").find("input:visible").val(""); 2885 var array = content.find(".to-tr").find(".box"); 2886 $.each(array, function(index, value){ 2887 stringToEmail += $(value).find("input").val() + ","; 2961 2888 }); 2962 content.find('[name="input_reply_to"]').val(stringReply); 2963 2964 var stringEmail = ""; 2965 var stringToEmail = ""; 2966 draw_email_box(content.find(".to-tr").find("textarea:first").val() || content.find(".to-tr").find("input:visible").val(), content.find(".to-tr").find("textarea:first")); 2967 content.find(".to-tr").find("textarea:first").val(""); 2968 content.find(".to-tr").find("input:visible").val(""); 2969 var array = content.find(".to-tr").find(".box"); 2970 $.each(array, function(index, value){ 2971 //stringEmail += $(value).find("input").val() + ","; 2972 stringToEmail += $(value).find("input").val() + ","; 2973 }); 2974 content.find('[name="input_to"]').val(stringToEmail); 2975 stringEmail = stringToEmail; 2976 var stringCCoEmail = ""; 2977 if ( content.find('[name="input_cco"]').length){ 2978 if(content.find(".cco-tr").css("display") != "none"){ 2979 draw_email_box(content.find(".cco-tr").find("textarea:first").val() || content.find(".cco-tr").find("input:visible").val(), content.find(".cco-tr").find("textarea:first")); 2980 content.find(".cco-tr").find("textarea:first").val(""); 2981 content.find(".cco-tr").find("input:visible").val(""); 2982 var array = content.find(".cco-tr").find(".box"); 2983 $.each(array, function(index, value){ 2984 //stringEmail += $(value).find("input").val() + ","; 2985 stringCCoEmail += $(value).find("input").val() + ","; 2986 }); 2987 content.find('[name="input_cco"]').val(stringCCoEmail); 2988 } 2989 } 2990 stringEmail += stringCCoEmail; 2991 var stringCCEmail = ""; 2992 if(content.find(".cc-tr").css("display") != "none") 2993 { 2994 draw_email_box(content.find(".cc-tr").find("textarea:first").val() || content.find(".cc-tr").find("input:visible").val(), content.find(".cc-tr").find("textarea:first")); 2995 content.find(".cc-tr").find("textarea:first").val(""); 2996 content.find(".cc-tr").find("input:visible").val(""); 2997 var array = content.find(".cc-tr").find(".box"); 2998 $.each(array, function(index, value){ 2999 //stringEmail += $(value).find("input").val() + ","; 3000 stringCCEmail += $(value).find("input").val() + ","; 2889 var stringEmail = ""; 2890 stringEmail = stringToEmail; 2891 var stringCCoEmail = ""; 2892 if ( content.find('[name="input_cco"]').length){ 2893 if(content.find(".cco-tr").css("display") != "none"){ 2894 draw_email_box(content.find(".cco-tr").find("textarea:first").val() || content.find(".cco-tr").find("input:visible").val(), content.find(".cco-tr").find("textarea:first")); 2895 content.find(".cco-tr").find("textarea:first").val(""); 2896 content.find(".cco-tr").find("input:visible").val(""); 2897 var array = content.find(".cco-tr").find(".box"); 2898 $.each(array, function(index, value){ 2899 stringCCoEmail += $(value).find("input").val() + ","; 2900 }); 2901 } 2902 } 2903 stringEmail += stringCCoEmail; 2904 var stringCCEmail = ""; 2905 if(content.find(".cc-tr").css("display") != "none") 2906 { 2907 draw_email_box(content.find(".cc-tr").find("textarea:first").val() || content.find(".cc-tr").find("input:visible").val(), content.find(".cc-tr").find("textarea:first")); 2908 content.find(".cc-tr").find("textarea:first").val(""); 2909 content.find(".cc-tr").find("input:visible").val(""); 2910 var array = content.find(".cc-tr").find(".box"); 2911 $.each(array, function(index, value){ 2912 stringCCEmail += $(value).find("input").val() + ","; 2913 }); 2914 } 2915 stringEmail += stringCCEmail; 2916 2917 var mailData = new Object(); 2918 mailData.body = Base64.encode(RichTextEditor.getData('body_'+ID)); 2919 mailData.folder = folder; 2920 mailData.type = RichTextEditor.plain[ID] ? 'plain' : 'html'; 2921 mailData.uids_save = uidsSave[ID].toString(); 2922 mailData.save_folder = (openTab.imapBox[ID] && openTab.type[ID] < 6) ? openTab.imapBox[ID]: "INBOX" + cyrus_delimiter + draftsfolder; 2923 mailData.attachments = listAttachment(ID); 2924 mailData.messageNum = currentTab; 2925 mailData.input_subject = trim(content.find(".subject").val()); 2926 mailData.input_reply_to = stringReply; 2927 mailData.input_to = stringToEmail; 2928 mailData.input_cco = stringCCoEmail; 2929 mailData.input_cc = stringCCEmail; 2930 mailData.input_cc = stringCCEmail; 2931 mailData.abaID = $(content).find('[name="abaID"]').val(); 2932 mailData.input_important_message = $(content).find('input:checkbox:checked[name="input_important_message"]').val(); 2933 mailData.input_return_receipt = $(content).find('input:checkbox:checked[name="input_return_receipt"]').val(); 2934 mailData.msg_forward_from = $(content).find('[name="msg_forward_from"]').val(); 2935 mailData.msg_reply_from = $(content).find('[name="msg_reply_from"]').val(); 2936 2937 if ($(content).find('select[name="input_from"]').val()) 2938 mailData.input_from = $(content).find('select[name="input_from"]').val(); 2939 2940 2941 if(stringEmail != ""){ 2942 $.ajax({ 2943 url: "controller.php?action=$this.imap_functions.send_mail", 2944 data: mailData, 2945 type: 'POST', 2946 success: function(data){ 2947 send_message_return(connector.unserialize(data),ID); 2948 }, 2949 error: function(){ 2950 write_msg("Erro ao tentar enviar a mensagem. Nova tentativa em alguns segundos..."); 2951 var interval = setInterval(function(){ 2952 send_valided_message(ID,folder,folder_name); 2953 clearInterval(interval); 2954 },15000); 2955 return; 2956 } 3001 2957 }); 3002 content.find('[name="input_cc"]').val(stringCCEmail); 3003 } 3004 stringEmail += stringCCEmail; 3005 if (expresso_offline) { 3006 3007 var invalidEmail = searchEmail(stringEmail); 3008 if(content.find('[name="input_to"]').val()=="" && content.find('[name="input_cco"]').val()=="" && content.find('[name="input_cc"]').val()=="") { 3009 write_msg(get_lang("message without receiver")); 3010 return; 3011 }else if(invalidEmail[0] == true){ 3012 write_msg("Os endereços de destinatário a seguir estão incorretos: "+invalidEmail[1]); 3013 return; 3014 } 3015 3016 sucess = expresso_local_messages.send_to_queue(form); 3017 var data_return = new Array(); 3018 data_return.success = sucess; 3019 handler_send_message(data_return,ID); 3020 } 3021 else{ 3022 if(stringEmail != ""){ 3023 $.ajax({ 3024 url: "controller.php?", 3025 success: function(data){ 3026 cExecuteForm("$this.imap_functions.send_mail", form, handler_send_message, ID); 3027 }, 3028 error: function(){ 3029 write_msg("Erro ao tentar enviar a mensagem. Nova tentativa em alguns segundos..."); 3030 var interval = setInterval(function(){ 3031 send_valided_message(ID,folder,folder_name); 3032 clearInterval(interval); 3033 },15000); 3034 return; 3035 } 3036 }); 3037 }else{ 3038 write_msg(get_lang("message without receiver")); 3039 return; 3040 } 3041 } 3042 3043 } 3044 2958 }else{ 2959 write_msg(get_lang("message without receiver")); 2960 return; 2961 } 2962 2963 2964 } 3045 2965 3046 2966 function is_valid_email(campo){ -
sandbox/2.4.3-expresso-rest/expressoMail1_2/templates/default/main.css
r7273 r7304 1468 1468 } 1469 1469 1470 .none-selected{ 1471 color: #9F9F9F; 1472 } 1470 1473 .selected_shortcut_msg{ 1471 1474 color: white; … … 1578 1581 overflow: hidden; 1579 1582 vertical-align: middle; 1580 } 1583 cursor: text; 1584 }
Note: See TracChangeset
for help on using the changeset viewer.