php-mailer.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. /* PHP MAILER JS FILE */
  2. /*
  3. $(document).on('click', '#PHPMAILER-settings-button', function() {
  4. var post = {
  5. plugin:'PHPMailer/settings/get', // used for switch case in your API call
  6. api:'api/?v1/plugin', // API Endpoint will always be this for custom plugin API calls
  7. name:$(this).attr('data-plugin-name'),
  8. configName:$(this).attr('data-config-name'),
  9. messageTitle:'', // Send succees message title (top line)
  10. messageBody:'Disabled '+$(this).attr('data-plugin-name'), // Send succees message body (bottom line)
  11. error:'Organizr Function: API Connection Failed' // conole error message
  12. };
  13. var callbacks = $.Callbacks(); // init callbacks var
  14. //callbacks.add( ); // add function to callback to be fired after API call
  15. //settingsAPI(post,callbacks); // exec API call
  16. //ajaxloader(".content-wrap","in");
  17. //setTimeout(function(){ buildPlugins();ajaxloader(); }, 3000);
  18. });
  19. */
  20. // FUNCTIONS
  21. function sendMail(){
  22. var to = $('#sendEmailToInput').val();
  23. var subject = $('#sendEmailSubjectInput').val();
  24. var body = tinyMCE.get('sendEmail').getContent();
  25. if(to == ''){
  26. messageSingle('','Please Enter Email','bottom-right','#FFF','error','5000');
  27. }else if(subject == ''){
  28. messageSingle('','Please Enter Subject','bottom-right','#FFF','error','5000');
  29. }else if(body == ''){
  30. messageSingle('','Please Enter Body','bottom-right','#FFF','error','5000');
  31. }
  32. if(to !== '' && subject !== '' && body !== ''){
  33. var post = {
  34. plugin:'PHPMailer/send/email', // used for switch case in your API call
  35. bcc:to,
  36. subject:subject,
  37. body:body
  38. };
  39. ajaxloader(".content-wrap","in");
  40. organizrAPI('POST','api/?v1/plugin',post).success(function(data) {
  41. var response = JSON.parse(data);
  42. if(response.data == true){
  43. $.magnificPopup.close();
  44. messageSingle('',window.lang.translate('Email Sent Successful'),'bottom-right','#FFF','success','5000');
  45. }else{
  46. messageSingle('',response.data,'bottom-right','#FFF','error','5000');
  47. }
  48. }).fail(function(xhr) {
  49. console.error("Organizr Function: API Connection Failed");
  50. });
  51. ajaxloader();
  52. }
  53. }
  54. function buildUserList(array){
  55. var users = '';
  56. var htmlDOM = '';
  57. $.each(array, function(i,v) {
  58. users += '<option value="'+v+'">'+i+'</option>';
  59. });
  60. htmlDOM = `
  61. <select multiple id="email-user-list" name="email-user-list[]">`+users+`</select>
  62. <div class="button-box m-t-20">
  63. <a id="select-all-users-list" class="btn btn-danger btn-outline" href="#">select all</a>
  64. <a id="deselect-all-users-list" class="btn btn-info btn-outline" href="#">deselect all</a>
  65. <a id="minimize-users-list" class="btn btn-primary btn-outline" href="#">minimize</a>
  66. </div>`;
  67. return htmlDOM;
  68. }
  69. function buildEmailModal(){
  70. var htmlDOM = `
  71. <div class="row">
  72. <div class="col-md-12">
  73. <div class="panel panel-info m-0">
  74. <div class="panel-heading">
  75. <span lang="en">Email Users</span>
  76. <div class="btn-group pull-right">
  77. <button class="btn btn-info waves-effect waves-light loadUserList" type="button">
  78. <i class="fa fa-user m-r-5"></i>
  79. </button>
  80. <button class="btn btn-info waves-effect waves-light unhide-user-list hidden" type="button">
  81. <i class="fa fa-eye m-r-5"></i>
  82. </button>
  83. <button class="btn btn-info waves-effect waves-light" onclick="sendMail();"><i class="fa fa-paper-plane m-l-5"></i></button>
  84. </div>
  85. </div>
  86. <div class="panel-wrapper collapse in main-email-panel" aria-expanded="true">
  87. <div class="panel-body">
  88. <div class="form-body">
  89. <div class="row">
  90. <div class="col-md-6">
  91. <div class="form-group">
  92. <label class="control-label" lang="en">To:</label>
  93. <input type="text" id="sendEmailToInput" class="form-control"></div>
  94. </div>
  95. <div class="col-md-6">
  96. <div class="form-group">
  97. <label class="control-label" lang="en">Subject</label>
  98. <input type="text" id="sendEmailSubjectInput" class="form-control"></div>
  99. </div>
  100. <div class="col-md-12" id="user-list-div">
  101. </div>
  102. </div>
  103. <!--/row-->
  104. </div>
  105. </div>
  106. </div>
  107. </div>
  108. </div>
  109. </div>
  110. <textarea id="sendEmail" name="area"></textarea>
  111. `;
  112. $('.email-div').html(htmlDOM);
  113. if ($("#sendEmail").length > 0) {
  114. var templates = [];
  115. if(activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-One"] !== ''){
  116. templates.push(
  117. {
  118. title: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-OneName"],
  119. description: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-OneSubject"],
  120. content: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-One"],
  121. }
  122. )
  123. }
  124. if(activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Two"] !== ''){
  125. templates.push(
  126. {
  127. title: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-TwoName"],
  128. description: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-TwoSubject"],
  129. content: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Two"],
  130. }
  131. )
  132. }
  133. if(activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Three"] !== ''){
  134. templates.push(
  135. {
  136. title: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-ThreeName"],
  137. description: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-ThreeSubject"],
  138. content: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Three"],
  139. }
  140. )
  141. }
  142. if(activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Four"] !== ''){
  143. templates.push(
  144. {
  145. title: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-FourName"],
  146. description: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-FourSubject"],
  147. content: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Four"],
  148. }
  149. )
  150. }
  151. tinymce.init({
  152. selector: "textarea#sendEmail",
  153. theme: "modern",
  154. height: 300,
  155. plugins: [
  156. "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"
  157. ],
  158. toolbar: "insertfile template undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | print preview media fullpage | forecolor backcolor",
  159. templates: templates,
  160. init_instance_callback: function (editor) {
  161. editor.on('SetContent', function (e) {
  162. $.each(e.target.settings.templates, function(i,v) {
  163. if(v.content == e.content){
  164. $('#sendEmailSubjectInput').val(v.description);
  165. }
  166. });
  167. });
  168. }
  169. });
  170. }
  171. }
  172. // EVENTS and LISTENERS
  173. $(document).on("change", "#email-user-list", function () {
  174. $('#sendEmailToInput').val($('#email-user-list').val());
  175. });
  176. $(document).on('click', '.loadUserList', function() {
  177. var post = {
  178. plugin:'PHPMailer/users/get', // used for switch case in your API call
  179. };
  180. ajaxloader(".content-wrap","in");
  181. organizrAPI('POST','api/?v1/plugin',post).success(function(data) {
  182. var response = JSON.parse(data);
  183. $('#user-list-div').html(buildUserList(response.data));
  184. $('#email-user-list').multiSelect();
  185. }).fail(function(xhr) {
  186. console.error("Organizr Function: API Connection Failed");
  187. });
  188. ajaxloader();
  189. });
  190. $(window).on('load', function() {
  191. if(activeInfo.plugins["PHPMAILER-enabled"] == true){
  192. if (activeInfo.user.loggedin === true && activeInfo.user.groupID <= 1) {
  193. 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>`;
  194. var htmlDOM = `
  195. <div id="email-area" class="white-popup mfp-with-anim mfp-hide">
  196. <div class="col-md-10 col-md-offset-1">
  197. <div class="email-div"></div>
  198. </div>
  199. </div>
  200. `;
  201. $('.organizr-area').after(htmlDOM);
  202. $('.append-menu').after(menuList);
  203. pageLoad();
  204. }
  205. }
  206. });
  207. $(document).on("click", ".emailModal", function(e) {
  208. buildEmailModal();
  209. });
  210. $(document).on("click", ".show-login", function(e) {
  211. setTimeout(addForgotPassword, 1000);
  212. });
  213. $(document).on("click", "#select-all-users-list", function(e) {
  214. $('#email-user-list').multiSelect('select_all');
  215. return false;
  216. });
  217. $(document).on("click", "#deselect-all-users-list", function(e) {
  218. $('#email-user-list').multiSelect('deselect_all');
  219. return false;
  220. });
  221. $(document).on("click", "#minimize-users-list, .unhide-user-list", function(e) {
  222. $('.main-email-panel').toggleClass('hidden');
  223. $('.loadUserList').toggleClass('hidden');
  224. $('.unhide-user-list').toggleClass('hidden');
  225. return false;
  226. });
  227. function addForgotPassword(){
  228. var item = '';
  229. if(activeInfo.plugins["PHPMAILER-enabled"] == true){
  230. if (activeInfo.user.loggedin === false) {
  231. 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>`;
  232. $('.remember-me').after(item);
  233. }
  234. }
  235. }
  236. // CHANGE CUSTOMIZE Options
  237. $(document).on('change asColorPicker::close', '#PHPMAILER-settings-page :input', function(e) {
  238. var input = $(this);
  239. switch ($(this).attr('type')) {
  240. case 'switch':
  241. case 'checkbox':
  242. var value = $(this).prop("checked") ? true : false;
  243. break;
  244. default:
  245. var value = $(this).val();
  246. }
  247. var post = {
  248. api:'api/?v1/update/config',
  249. name:$(this).attr("name"),
  250. type:$(this).attr("data-type"),
  251. value:value,
  252. messageTitle:'',
  253. messageBody:'Updated Value for '+$(this).parent().parent().find('label').text(),
  254. error:'Organizr Function: API Connection Failed'
  255. };
  256. var callbacks = $.Callbacks();
  257. //callbacks.add( buildCustomizeAppearance );
  258. settingsAPI(post,callbacks);
  259. //disable button then renable
  260. $('#PHPMAILER-settings-page :input').prop('disabled', 'true');
  261. setTimeout(
  262. function(){
  263. $('#PHPMAILER-settings-page :input').prop('disabled', null);
  264. input.emulateTab();
  265. },
  266. 2000
  267. );
  268. });
  269. $(document).on('click', '#PHPMAILER-settings-button', function() {
  270. var post = {
  271. plugin:'PHPMailer/settings/get', // used for switch case in your API call
  272. };
  273. ajaxloader(".content-wrap","in");
  274. organizrAPI('POST','api/?v1/plugin',post).success(function(data) {
  275. var response = JSON.parse(data);
  276. $('#PHPMAILER-settings-items').html(buildFormGroup(response.data));
  277. }).fail(function(xhr) {
  278. console.error("Organizr Function: API Connection Failed");
  279. });
  280. ajaxloader();
  281. });
  282. // SEND TEST EMAIL
  283. $(document).on('click', '.phpmSendTestEmail', function() {
  284. var post = {
  285. plugin:'PHPMailer/send/test', // used for switch case in your API call
  286. };
  287. ajaxloader(".content-wrap","in");
  288. organizrAPI('POST','api/?v1/plugin',post).success(function(data) {
  289. var response = JSON.parse(data);
  290. if(response.data == true){
  291. messageSingle('',window.lang.translate('Email Test Successful'),'bottom-right','#FFF','success','5000');
  292. }else{
  293. messageSingle('',response.data,'bottom-right','#FFF','error','5000');
  294. }
  295. }).fail(function(xhr) {
  296. console.error("Organizr Function: API Connection Failed");
  297. });
  298. ajaxloader();
  299. });