php-mailer.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  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"></i>
  79. </button>
  80. <button class="btn btn-info waves-effect waves-light" type="button" onclick="$('.mce-i-template').trigger('click');">
  81. <i class="fa fa-files-o"></i>
  82. </button>
  83. <button class="btn btn-info waves-effect waves-light unhide-user-list hidden" type="button">
  84. <i class="fa fa-eye"></i>
  85. </button>
  86. <button class="btn btn-info waves-effect waves-light" onclick="sendMail();"><i class="fa fa-paper-plane"></i></button>
  87. </div>
  88. </div>
  89. <div class="panel-wrapper collapse in main-email-panel" aria-expanded="true">
  90. <div class="panel-body">
  91. <div class="form-body">
  92. <div class="row">
  93. <div class="col-md-6">
  94. <div class="form-group">
  95. <label class="control-label" lang="en">To:</label>
  96. <input type="text" id="sendEmailToInput" class="form-control"></div>
  97. </div>
  98. <div class="col-md-6">
  99. <div class="form-group">
  100. <label class="control-label" lang="en">Subject</label>
  101. <input type="text" id="sendEmailSubjectInput" class="form-control"></div>
  102. </div>
  103. <div class="col-md-12" id="user-list-div">
  104. </div>
  105. </div>
  106. <!--/row-->
  107. </div>
  108. </div>
  109. </div>
  110. </div>
  111. </div>
  112. </div>
  113. <textarea id="sendEmail" name="area"></textarea>
  114. `;
  115. $('.email-div').html(htmlDOM);
  116. if ($("#sendEmail").length > 0) {
  117. var templates = [];
  118. if(activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-One"] !== ''){
  119. templates.push(
  120. {
  121. title: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-OneName"],
  122. description: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-OneSubject"],
  123. content: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-One"],
  124. }
  125. )
  126. }
  127. if(activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Two"] !== ''){
  128. templates.push(
  129. {
  130. title: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-TwoName"],
  131. description: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-TwoSubject"],
  132. content: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Two"],
  133. }
  134. )
  135. }
  136. if(activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Three"] !== ''){
  137. templates.push(
  138. {
  139. title: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-ThreeName"],
  140. description: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-ThreeSubject"],
  141. content: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Three"],
  142. }
  143. )
  144. }
  145. if(activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Four"] !== ''){
  146. templates.push(
  147. {
  148. title: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-FourName"],
  149. description: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-FourSubject"],
  150. content: activeInfo.plugins.includes["PHPMAILER-emailTemplateCustom-include-Four"],
  151. }
  152. )
  153. }
  154. tinymce.init({
  155. selector: "textarea#sendEmail",
  156. theme: "modern",
  157. height: 300,
  158. plugins: [
  159. "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"
  160. ],
  161. toolbar: "insertfile template undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | print preview media fullpage | forecolor backcolor",
  162. templates: templates,
  163. init_instance_callback: function (editor) {
  164. editor.on('SetContent', function (e) {
  165. $.each(e.target.settings.templates, function(i,v) {
  166. if(v.content == e.content){
  167. $('#sendEmailSubjectInput').val(v.description);
  168. }
  169. });
  170. });
  171. }
  172. });
  173. }
  174. }
  175. // EVENTS and LISTENERS
  176. $(document).on("change", "#email-user-list", function () {
  177. $('#sendEmailToInput').val($('#email-user-list').val());
  178. });
  179. $(document).on('click', '.loadUserList', function() {
  180. var post = {
  181. plugin:'PHPMailer/users/get', // used for switch case in your API call
  182. };
  183. ajaxloader(".content-wrap","in");
  184. organizrAPI('POST','api/?v1/plugin',post).success(function(data) {
  185. var response = JSON.parse(data);
  186. $('#user-list-div').html(buildUserList(response.data));
  187. $('#email-user-list').multiSelect();
  188. }).fail(function(xhr) {
  189. console.error("Organizr Function: API Connection Failed");
  190. });
  191. ajaxloader();
  192. });
  193. $(window).on('load', function() {
  194. if(activeInfo.plugins["PHPMAILER-enabled"] == true){
  195. if (activeInfo.user.loggedin === true && activeInfo.user.groupID <= 1) {
  196. 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>`;
  197. var htmlDOM = `
  198. <div id="email-area" class="white-popup mfp-with-anim mfp-hide">
  199. <div class="col-md-10 col-md-offset-1">
  200. <div class="email-div"></div>
  201. </div>
  202. </div>
  203. `;
  204. $('.organizr-area').after(htmlDOM);
  205. $('.append-menu').after(menuList);
  206. pageLoad();
  207. }
  208. }
  209. });
  210. $(document).on("click", ".emailModal", function(e) {
  211. buildEmailModal();
  212. });
  213. $(document).on("click", ".show-login", function(e) {
  214. setTimeout(addForgotPassword, 1000);
  215. });
  216. $(document).on("click", "#select-all-users-list", function(e) {
  217. $('#email-user-list').multiSelect('select_all');
  218. return false;
  219. });
  220. $(document).on("click", "#deselect-all-users-list", function(e) {
  221. $('#email-user-list').multiSelect('deselect_all');
  222. return false;
  223. });
  224. $(document).on("click", "#minimize-users-list, .unhide-user-list", function(e) {
  225. $('.main-email-panel').toggleClass('hidden');
  226. $('.loadUserList').toggleClass('hidden');
  227. $('.unhide-user-list').toggleClass('hidden');
  228. return false;
  229. });
  230. function addForgotPassword(){
  231. var item = '';
  232. if(activeInfo.plugins["PHPMAILER-enabled"] == true){
  233. if (activeInfo.user.loggedin === false) {
  234. 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>`;
  235. $('.remember-me').after(item);
  236. }
  237. }
  238. }
  239. // CHANGE CUSTOMIZE Options
  240. $(document).on('change asColorPicker::close', '#PHPMAILER-settings-page :input', function(e) {
  241. var input = $(this);
  242. switch ($(this).attr('type')) {
  243. case 'switch':
  244. case 'checkbox':
  245. var value = $(this).prop("checked") ? true : false;
  246. break;
  247. default:
  248. var value = $(this).val();
  249. }
  250. var post = {
  251. api:'api/?v1/update/config',
  252. name:$(this).attr("name"),
  253. type:$(this).attr("data-type"),
  254. value:value,
  255. messageTitle:'',
  256. messageBody:'Updated Value for '+$(this).parent().parent().find('label').text(),
  257. error:'Organizr Function: API Connection Failed'
  258. };
  259. var callbacks = $.Callbacks();
  260. //callbacks.add( buildCustomizeAppearance );
  261. settingsAPI(post,callbacks);
  262. //disable button then renable
  263. $('#PHPMAILER-settings-page :input').prop('disabled', 'true');
  264. setTimeout(
  265. function(){
  266. $('#PHPMAILER-settings-page :input').prop('disabled', null);
  267. input.emulateTab();
  268. },
  269. 2000
  270. );
  271. });
  272. $(document).on('click', '#PHPMAILER-settings-button', function() {
  273. var post = {
  274. plugin:'PHPMailer/settings/get', // used for switch case in your API call
  275. };
  276. ajaxloader(".content-wrap","in");
  277. organizrAPI('POST','api/?v1/plugin',post).success(function(data) {
  278. var response = JSON.parse(data);
  279. $('#PHPMAILER-settings-items').html(buildFormGroup(response.data));
  280. }).fail(function(xhr) {
  281. console.error("Organizr Function: API Connection Failed");
  282. });
  283. ajaxloader();
  284. });
  285. // SEND TEST EMAIL
  286. $(document).on('click', '.phpmSendTestEmail', function() {
  287. var post = {
  288. plugin:'PHPMailer/send/test', // used for switch case in your API call
  289. };
  290. ajaxloader(".content-wrap","in");
  291. organizrAPI('POST','api/?v1/plugin',post).success(function(data) {
  292. var response = JSON.parse(data);
  293. if(response.data == true){
  294. messageSingle('',window.lang.translate('Email Test Successful'),'bottom-right','#FFF','success','5000');
  295. }else{
  296. messageSingle('',response.data,'bottom-right','#FFF','error','5000');
  297. }
  298. }).fail(function(xhr) {
  299. console.error("Organizr Function: API Connection Failed");
  300. });
  301. ajaxloader();
  302. });