php-mailer.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  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. messageSingle('',window.lang.translate('Email Sent Successful'),'bottom-right','#FFF','success','5000');
  44. }else{
  45. messageSingle('',response.data,'bottom-right','#FFF','error','5000');
  46. }
  47. }).fail(function(xhr) {
  48. console.error("Organizr Function: API Connection Failed");
  49. });
  50. ajaxloader();
  51. }
  52. }
  53. function buildUserList(array){
  54. var users = '';
  55. var htmlDOM = '';
  56. $.each(array, function(i,v) {
  57. users += '<option value="'+v+'">'+i+'</option>';
  58. });
  59. htmlDOM = `
  60. <select multiple id="email-user-list" name="email-user-list[]">`+users+`</select>
  61. <div class="button-box m-t-20">
  62. <a id="select-all-users-list" class="btn btn-danger btn-outline" href="#">select all</a>
  63. <a id="deselect-all-users-list" class="btn btn-info btn-outline" href="#">deselect all</a>
  64. <a id="minimize-users-list" class="btn btn-primary btn-outline" href="#">minimize</a>
  65. </div>`;
  66. return htmlDOM;
  67. }
  68. function buildEmailModal(){
  69. var htmlDOM = `
  70. <div class="row">
  71. <div class="col-md-12">
  72. <div class="panel panel-info m-0">
  73. <div class="panel-heading">
  74. <span lang="en">Email Users</span>
  75. <div class="btn-group pull-right">
  76. <button class="btn btn-info waves-effect waves-light loadUserList" type="button">
  77. <i class="fa fa-user m-r-5"></i>
  78. </button>
  79. <button class="btn btn-info waves-effect waves-light unhide-user-list hidden" type="button">
  80. <i class="fa fa-eye m-r-5"></i>
  81. </button>
  82. <button class="btn btn-info waves-effect waves-light" onclick="sendMail();"><i class="fa fa-paper-plane m-l-5"></i></button>
  83. </div>
  84. </div>
  85. <div class="panel-wrapper collapse in main-email-panel" aria-expanded="true">
  86. <div class="panel-body">
  87. <div class="form-body">
  88. <div class="row">
  89. <div class="col-md-6">
  90. <div class="form-group">
  91. <label class="control-label" lang="en">To:</label>
  92. <input type="text" id="sendEmailToInput" class="form-control"></div>
  93. </div>
  94. <div class="col-md-6">
  95. <div class="form-group">
  96. <label class="control-label" lang="en">Subject</label>
  97. <input type="text" id="sendEmailSubjectInput" class="form-control"></div>
  98. </div>
  99. <div class="col-md-12" id="user-list-div">
  100. </div>
  101. </div>
  102. <!--/row-->
  103. </div>
  104. </div>
  105. </div>
  106. </div>
  107. </div>
  108. </div>
  109. <textarea id="sendEmail" name="area"></textarea>
  110. `;
  111. $('.email-div').html(htmlDOM);
  112. if ($("#sendEmail").length > 0) {
  113. tinymce.init({
  114. selector: "textarea#sendEmail",
  115. theme: "modern",
  116. height: 300,
  117. plugins: [
  118. "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"
  119. ],
  120. toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | l ink image | print preview media fullpage | forecolor backcolor emoticons",
  121. });
  122. }
  123. }
  124. // EVENTS and LISTENERS
  125. $(document).on("change", "#email-user-list", function () {
  126. $('#sendEmailToInput').val($('#email-user-list').val());
  127. });
  128. $(document).on('click', '.loadUserList', function() {
  129. var post = {
  130. plugin:'PHPMailer/users/get', // used for switch case in your API call
  131. };
  132. ajaxloader(".content-wrap","in");
  133. organizrAPI('POST','api/?v1/plugin',post).success(function(data) {
  134. var response = JSON.parse(data);
  135. console.log(response);
  136. $('#user-list-div').html(buildUserList(response.data));
  137. $('#email-user-list').multiSelect();
  138. }).fail(function(xhr) {
  139. console.error("Organizr Function: API Connection Failed");
  140. });
  141. ajaxloader();
  142. });
  143. $(window).on('load', function() {
  144. if(activeInfo.plugins["PHPMAILER-enabled"] == true){
  145. if (activeInfo.user.loggedin === true && activeInfo.user.groupID <= 1) {
  146. 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>`;
  147. var htmlDOM = `
  148. <div id="email-area" class="white-popup mfp-with-anim mfp-hide">
  149. <div class="col-md-10 col-md-offset-1">
  150. <div class="email-div"></div>
  151. </div>
  152. </div>
  153. `;
  154. $('.organizr-area').after(htmlDOM);
  155. $('.append-menu').after(menuList);
  156. pageLoad();
  157. }
  158. }
  159. });
  160. $(document).on("click", ".emailModal", function(e) {
  161. buildEmailModal();
  162. });
  163. $(document).on("click", ".show-login", function(e) {
  164. setTimeout(addForgotPassword, 1000);
  165. });
  166. $(document).on("click", "#select-all-users-list", function(e) {
  167. $('#email-user-list').multiSelect('select_all');
  168. return false;
  169. });
  170. $(document).on("click", "#deselect-all-users-list", function(e) {
  171. $('#email-user-list').multiSelect('deselect_all');
  172. return false;
  173. });
  174. $(document).on("click", "#minimize-users-list, .unhide-user-list", function(e) {
  175. $('.main-email-panel').toggleClass('hidden');
  176. $('.loadUserList').toggleClass('hidden');
  177. $('.unhide-user-list').toggleClass('hidden');
  178. return false;
  179. });
  180. function addForgotPassword(){
  181. var item = '';
  182. if(activeInfo.plugins["PHPMAILER-enabled"] == true){
  183. if (activeInfo.user.loggedin === false) {
  184. 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>`;
  185. $('.remember-me').after(item);
  186. }
  187. }
  188. }
  189. // CHANGE CUSTOMIZE Options
  190. $(document).on('change asColorPicker::close', '#PHPMAILER-settings-page :input', function(e) {
  191. var input = $(this);
  192. switch ($(this).attr('type')) {
  193. case 'switch':
  194. case 'checkbox':
  195. var value = $(this).prop("checked") ? true : false;
  196. break;
  197. default:
  198. var value = $(this).val();
  199. }
  200. var post = {
  201. api:'api/?v1/update/config',
  202. name:$(this).attr("name"),
  203. type:$(this).attr("data-type"),
  204. value:value,
  205. messageTitle:'',
  206. messageBody:'Updated Value for '+$(this).parent().parent().find('label').text(),
  207. error:'Organizr Function: API Connection Failed'
  208. };
  209. var callbacks = $.Callbacks();
  210. //callbacks.add( buildCustomizeAppearance );
  211. settingsAPI(post,callbacks);
  212. //disable button then renable
  213. $('#PHPMAILER-settings-page :input').prop('disabled', 'true');
  214. setTimeout(
  215. function(){
  216. $('#PHPMAILER-settings-page :input').prop('disabled', null);
  217. input.emulateTab();
  218. },
  219. 2000
  220. );
  221. });
  222. $(document).on('click', '#PHPMAILER-settings-button', function() {
  223. var post = {
  224. plugin:'PHPMailer/settings/get', // used for switch case in your API call
  225. };
  226. ajaxloader(".content-wrap","in");
  227. organizrAPI('POST','api/?v1/plugin',post).success(function(data) {
  228. var response = JSON.parse(data);
  229. $('#PHPMAILER-settings-items').html(buildFormGroup(response.data));
  230. }).fail(function(xhr) {
  231. console.error("Organizr Function: API Connection Failed");
  232. });
  233. ajaxloader();
  234. });
  235. // SEND TEST EMAIL
  236. $(document).on('click', '.phpmSendTestEmail', function() {
  237. var post = {
  238. plugin:'PHPMailer/send/test', // used for switch case in your API call
  239. };
  240. ajaxloader(".content-wrap","in");
  241. organizrAPI('POST','api/?v1/plugin',post).success(function(data) {
  242. var response = JSON.parse(data);
  243. if(response.data == true){
  244. messageSingle('',window.lang.translate('Email Test Successful'),'bottom-right','#FFF','success','5000');
  245. }else{
  246. messageSingle('',response.data,'bottom-right','#FFF','error','5000');
  247. }
  248. }).fail(function(xhr) {
  249. console.error("Organizr Function: API Connection Failed");
  250. });
  251. ajaxloader();
  252. });