php-mailer.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. /* PHP MAILER JS FILE */
  2. // FUNCTIONS
  3. phpmLaunch();
  4. function phpmLaunch(){
  5. if(typeof activeInfo == 'undefined'){
  6. setTimeout(function () {
  7. phpmLaunch();
  8. }, 1000);
  9. }else{
  10. if(activeInfo.plugins["PHPMAILER-enabled"] == true){
  11. if (activeInfo.user.loggedin === true && activeInfo.user.groupID <= 1) {
  12. var menuList = `<li><a class="inline-popups emailModal" href="#email-area" data-effect="mfp-zoom-out"><i class="fa fa-envelope fa-fw"></i> <span lang="en">E-Mail Center</span></a></li>`;
  13. var htmlDOM = `
  14. <div id="email-area" class="white-popup mfp-with-anim mfp-hide">
  15. <div class="col-md-10 col-md-offset-1">
  16. <div class="email-div"></div>
  17. </div>
  18. </div>
  19. `;
  20. $('.organizr-area').after(htmlDOM);
  21. $('.append-menu').after(menuList);
  22. pageLoad();
  23. }
  24. }
  25. }
  26. }
  27. function sendMail(){
  28. var to = $('#sendEmailToInput').val();
  29. var subject = $('#sendEmailSubjectInput').val();
  30. var body = tinyMCE.get('sendEmail').getContent();
  31. if(to == ''){
  32. messageSingle('','Please Enter Email',activeInfo.settings.notifications.position,'#FFF','error','5000');
  33. }else if(subject == ''){
  34. messageSingle('','Please Enter Subject',activeInfo.settings.notifications.position,'#FFF','error','5000');
  35. }else if(body == ''){
  36. messageSingle('','Please Enter Body',activeInfo.settings.notifications.position,'#FFF','error','5000');
  37. }else{
  38. messageSingle('','Sending Message',activeInfo.settings.notifications.position,'#FFF','success','5000');
  39. }
  40. if(to !== '' && subject !== '' && body !== ''){
  41. var post = {
  42. bcc:to,
  43. subject:subject,
  44. body:body
  45. };
  46. ajaxloader(".content-wrap","in");
  47. organizrAPI2('POST','api/v2/plugins/php-mailer/email/send',post).success(function(data) {
  48. var response = data.response;
  49. if(response.result == 'success'){
  50. $.magnificPopup.close();
  51. messageSingle('',window.lang.translate('Email Sent Successful'),activeInfo.settings.notifications.position,'#FFF','success','5000');
  52. }else{
  53. messageSingle('',response.message,activeInfo.settings.notifications.position,'#FFF','error','5000');
  54. }
  55. }).fail(function(xhr) {
  56. OrganizrApiError(xhr);
  57. });
  58. ajaxloader();
  59. }
  60. }
  61. function buildUserList(array){
  62. var users = '';
  63. var htmlDOM = '';
  64. $.each(array, function(i,v) {
  65. users += '<option value="'+v+'">'+i+'</option>';
  66. });
  67. htmlDOM = `
  68. <select multiple id="email-user-list" name="email-user-list[]">`+users+`</select>
  69. <div class="button-box m-t-20">
  70. <a id="select-all-users-list" class="btn btn-danger btn-outline" href="#">select all</a>
  71. <a id="deselect-all-users-list" class="btn btn-info btn-outline" href="#">deselect all</a>
  72. <a id="minimize-users-list" class="btn btn-primary btn-outline" href="#">minimize</a>
  73. </div>`;
  74. return htmlDOM;
  75. }
  76. function buildEmailModal(){
  77. var htmlDOM = `
  78. <div class="row">
  79. <div class="col-md-12">
  80. <div class="panel panel-info m-0">
  81. <div class="panel-heading">
  82. <span lang="en">Email Users</span>
  83. <div class="btn-group pull-right">
  84. <button class="btn btn-info waves-effect waves-light loadUserList" type="button">
  85. <i class="fa fa-user"></i>
  86. </button>
  87. <button class="btn btn-info waves-effect waves-light" type="button" onclick="$('.mce-i-template').trigger('click');">
  88. <i class="fa fa-files-o"></i>
  89. </button>
  90. <button class="btn btn-info waves-effect waves-light unhide-user-list hidden" type="button">
  91. <i class="fa fa-eye"></i>
  92. </button>
  93. <button class="btn btn-info waves-effect waves-light" onclick="sendMail();"><i class="fa fa-paper-plane"></i></button>
  94. </div>
  95. </div>
  96. <div class="panel-wrapper collapse in main-email-panel" aria-expanded="true">
  97. <div class="panel-body">
  98. <div class="form-body">
  99. <div class="row">
  100. <div class="col-md-6">
  101. <div class="form-group">
  102. <label class="control-label" lang="en">To:</label>
  103. <input type="text" id="sendEmailToInput" class="form-control"></div>
  104. </div>
  105. <div class="col-md-6">
  106. <div class="form-group">
  107. <label class="control-label" lang="en">Subject</label>
  108. <input type="text" id="sendEmailSubjectInput" class="form-control"></div>
  109. </div>
  110. <div class="col-md-12" id="user-list-div">
  111. </div>
  112. </div>
  113. <!--/row-->
  114. </div>
  115. </div>
  116. </div>
  117. </div>
  118. </div>
  119. </div>
  120. <textarea id="sendEmail" name="area"></textarea>
  121. `;
  122. $('.email-div').html(htmlDOM);
  123. if ($("#sendEmail").length > 0) {
  124. var templates = [];
  125. if(activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-One"] !== ''){
  126. templates.push(
  127. {
  128. title: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-OneName"],
  129. description: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-OneSubject"],
  130. content: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-One"],
  131. }
  132. )
  133. }
  134. if(activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Two"] !== ''){
  135. templates.push(
  136. {
  137. title: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-TwoName"],
  138. description: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-TwoSubject"],
  139. content: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Two"],
  140. }
  141. )
  142. }
  143. if(activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Three"] !== ''){
  144. templates.push(
  145. {
  146. title: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-ThreeName"],
  147. description: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-ThreeSubject"],
  148. content: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Three"],
  149. }
  150. )
  151. }
  152. if(activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Four"] !== ''){
  153. templates.push(
  154. {
  155. title: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-FourName"],
  156. description: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-FourSubject"],
  157. content: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Four"],
  158. }
  159. )
  160. }
  161. tinymce.init({
  162. selector: "textarea#sendEmail",
  163. theme: "modern",
  164. height: 300,
  165. plugins: [
  166. "advlist autolink link image lists charmap print preview hr anchor pagebreak spellchecker", "searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking", "save table contextmenu directionality emoticons template paste textcolor"
  167. ],
  168. toolbar: "insertfile template undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | print preview media fullpage | forecolor backcolor",
  169. templates: templates,
  170. init_instance_callback: function (editor) {
  171. editor.on('BeforeSetContent', function (e) {
  172. //tinyMCE.get('sendEmail').execCommand('selectAll');
  173. //tinyMCE.get('sendEmail').execCommand('delete');
  174. $.each(e.target.settings.templates, function(i,v) {
  175. if($.trim(v.content) == $.trim(e.content)){
  176. $('#sendEmailSubjectInput').val(v.description);
  177. }
  178. });
  179. });
  180. }
  181. });
  182. }
  183. }
  184. // EVENTS and LISTENERS
  185. $(document).on("change", "#email-user-list", function () {
  186. $('#sendEmailToInput').val($('#email-user-list').val());
  187. });
  188. $(document).on('click', '.loadUserList', function() {
  189. ajaxloader(".content-wrap","in");
  190. organizrAPI2('GET','api/v2/plugins/php-mailer/email/list').success(function(data) {
  191. var response = data.response;
  192. $('#user-list-div').html(buildUserList(response.data));
  193. $('#email-user-list').multiSelect();
  194. }).fail(function(xhr) {
  195. OrganizrApiError(xhr);
  196. });
  197. ajaxloader();
  198. });
  199. $(document).on("click", ".emailModal", function(e) {
  200. buildEmailModal();
  201. });
  202. $(document).on("click", ".show-login", function(e) {
  203. setTimeout(addForgotPassword, 1000);
  204. });
  205. $(document).on("click", "#select-all-users-list", function(e) {
  206. $('#email-user-list').multiSelect('select_all');
  207. return false;
  208. });
  209. $(document).on("click", "#deselect-all-users-list", function(e) {
  210. $('#email-user-list').multiSelect('deselect_all');
  211. return false;
  212. });
  213. $(document).on("click", "#minimize-users-list, .unhide-user-list", function(e) {
  214. $('.main-email-panel').toggleClass('hidden');
  215. $('.loadUserList').toggleClass('hidden');
  216. $('.unhide-user-list').toggleClass('hidden');
  217. return false;
  218. });
  219. function addForgotPassword(){
  220. var item = '';
  221. if(activeInfo.plugins["PHPMAILER-enabled"] == true){
  222. if (activeInfo.user.loggedin === false) {
  223. item = `<a href="javascript:void(0)" id="to-recover" class="text-dark pull-right"><i class="fa fa-lock m-r-5"></i> <span lang="en">Forgot pwd?</span></a>`;
  224. $('.remember-me').after(item);
  225. }
  226. }
  227. }
  228. $(document).on('click', '#PHPMAILER-settings-button', function() {
  229. ajaxloader(".content-wrap","in");
  230. organizrAPI2('GET','api/v2/plugins/php-mailer/settings').success(function(data) {
  231. var response = data.response;
  232. $('#PHPMAILER-settings-items').html(buildFormGroup(response.data));
  233. }).fail(function(xhr) {
  234. OrganizrApiError(xhr);
  235. });
  236. ajaxloader();
  237. });
  238. // SEND TEST EMAIL
  239. $(document).on('click', '.phpmSendTestEmail', function() {
  240. messageSingle('',window.lang.translate('Sending Test E-Mail'),activeInfo.settings.notifications.position,'#FFF','info','5000');
  241. ajaxloader(".content-wrap","in");
  242. organizrAPI2('GET','api/v2/plugins/php-mailer/email/test').success(function(data) {
  243. var response = data.response;
  244. if(response.message !== null && response.message.indexOf('|||DEBUG|||') == 0){
  245. messageSingle('',window.lang.translate('Press F11 to check Console for output'),activeInfo.settings.notifications.position,'#FFF','warning','5000');
  246. console.warn(response.message);
  247. }else if(response.result == 'success') {
  248. messageSingle('',window.lang.translate('Email Test Successful'),activeInfo.settings.notifications.position,'#FFF','success','20000');
  249. }else{
  250. messageSingle('',response.message,activeInfo.settings.notifications.position,'#FFF','error','5000');
  251. }
  252. }).fail(function(xhr, data) {
  253. OrganizrApiError(xhr, 'Mailer Error');
  254. });
  255. ajaxloader();
  256. });