main.js 9.5 KB

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