php-mailer.js 14 KB

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