template.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. defined('ABSPATH') || exit;
  3. @include_once NEWSLETTER_INCLUDES_DIR . '/controls.php';
  4. $controls = new NewsletterControls();
  5. $module = NewsletterSubscription::instance();
  6. $current_language = $module->get_current_language();
  7. $is_all_languages = $module->is_all_languages();
  8. if (!$is_all_languages) {
  9. $controls->warnings[] = 'You are configuring the language <strong>' . $current_language . '</strong>.';
  10. }
  11. if (!$controls->is_action()) {
  12. $controls->data = $module->get_options('template', $current_language);
  13. } else {
  14. if ($controls->is_action('save')) {
  15. $module->save_options($controls->data, 'template', null, $current_language);
  16. $controls->add_message_saved();
  17. }
  18. if ($controls->is_action('reset')) {
  19. // TODO: Reset by language?
  20. $module->reset_options('template');
  21. $controls->data = $module->get_options('template', $current_language);
  22. $controls->add_message_done();
  23. }
  24. if ($controls->is_action('test')) {
  25. $users = $module->get_test_users();
  26. if (count($users) == 0) {
  27. $controls->errors = __('No test subscribers found.', 'newsletter') . ' <a href="https://www.thenewsletterplugin.com/plugins/newsletter/subscribers-module#test" target="_blank"><i class="fa fa-info-circle"></i></a>';
  28. } else {
  29. $template = $controls->data['template'];
  30. $message = '<p>This is a generic example of message embedded inside the template.</p>';
  31. $message .= '<p>Subscriber data can be referenced using tags. See the <a href="https://www.thenewsletterplugin.com/documentation">plugin documentation</a>.</p>';
  32. $message .= '<p>First name: {name}</p>';
  33. $message .= '<p>Last name: {surname}</p>';
  34. $message .= '<p>Email: {email}</p>';
  35. $message .= '<p>Here an image as well. Make them styled with the CSS rule "max-width: 100%"</p>';
  36. $message .= '<p><img src="' . plugins_url('newsletter') . '/images/test.jpg" style="max-width: 100%"></p>';
  37. $message = str_replace('{message}', $message, $template);
  38. $addresses = array();
  39. foreach ($users as $user) {
  40. $addresses[] = $user->email;
  41. Newsletter::instance()->mail($user->email, 'Newsletter Messages Template Test', $module->replace($message, $user));
  42. }
  43. $controls->messages .= 'Test emails sent to ' . count($users) . ' test subscribers: ' .
  44. implode(', ', $addresses) . '.' . ' <a href="https://www.thenewsletterplugin.com/plugins/newsletter/subscribers-module#test" target="_blank"><i class="fa fa-info-circle"></i></a>';
  45. }
  46. }
  47. }
  48. if (strpos($controls->data['template'], '{message}') === false) {
  49. $controls->errors = __('The tag {message} is missing in your template', 'newsletter');
  50. }
  51. ?>
  52. <?php include NEWSLETTER_INCLUDES_DIR . '/codemirror.php'; ?>
  53. <style>
  54. .CodeMirror {
  55. height: 100%;
  56. }
  57. </style>
  58. <script>
  59. jQuery(function () {
  60. templateEditor = CodeMirror.fromTextArea(document.getElementById("options-template"), {
  61. lineNumbers: true,
  62. mode: 'htmlmixed',
  63. extraKeys: {"Ctrl-Space": "autocomplete"}
  64. });
  65. });
  66. </script>
  67. <div class="wrap" id="tnp-wrap">
  68. <?php include NEWSLETTER_DIR . '/tnp-header.php'; ?>
  69. <div id="tnp-heading">
  70. <h2><?php _e('Messages template', 'newsletter') ?></h2>
  71. <p>
  72. Edit the default template of confirmation, welcome and cancellation emails. Add the {message} tag where you
  73. want the specific message text to be included.
  74. </p>
  75. </div>
  76. <div id="tnp-body">
  77. <form method="post" action="">
  78. <?php $controls->init(); ?>
  79. <p>
  80. <?php $controls->button_save(); ?>
  81. <?php $controls->button_reset(); ?>
  82. <?php $controls->button('test', 'Send a test'); ?>
  83. </p>
  84. <h3><?php _e('Template', 'newsletter') ?></h3>
  85. <?php $controls->textarea_preview('template', '100%', '700px'); ?>
  86. <br><br>
  87. <p>
  88. <?php $controls->button_save(); ?>
  89. <?php $controls->button_reset(); ?>
  90. <?php $controls->button('test', 'Send a test'); ?>
  91. </p>
  92. </form>
  93. </div>
  94. <?php include NEWSLETTER_DIR . '/tnp-footer.php'; ?>
  95. </div>