editortinymce.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. defined('ABSPATH') || exit;
  3. require_once NEWSLETTER_INCLUDES_DIR . '/controls.php';
  4. $controls = new NewsletterControls();
  5. $module = NewsletterEmails::instance();
  6. $email_id = (int) $_GET['id'];
  7. if ($controls->is_action('save') || $controls->is_action('next')) {
  8. $email['id'] = $email_id;
  9. $email['message'] = $controls->data['message'];
  10. $email['subject'] = $controls->data['subject'];
  11. $module->save_email($email);
  12. if ($controls->is_action('next')) {
  13. $controls->js_redirect($module->get_admin_page_url('edit') . '&id=' . $email_id);
  14. return;
  15. }
  16. }
  17. if ($controls->is_action('test')) {
  18. $module->send_test_email($module->get_email($email_id), $controls);
  19. }
  20. $controls->data = Newsletter::instance()->get_email($email_id, ARRAY_A);
  21. ?>
  22. <style>
  23. .mce-tinymce {
  24. margin-top: 15px;
  25. margin-bottom: 15px;
  26. }
  27. </style>
  28. <script src="<?php echo plugins_url('newsletter') ?>/vendor/tinymce/tinymce.min.js"></script>
  29. <script type="text/javascript">
  30. // https://www.tinymce.com/docs/advanced/editor-control-identifiers/#toolbarcontrols
  31. tinymce.init({
  32. height: 600,
  33. mode: "specific_textareas",
  34. editor_selector: "visual",
  35. statusbar: true,
  36. allow_conditional_comments: true,
  37. table_toolbar: "tableprops tablecellprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | " +
  38. "tableinsertcolbefore tableinsertcolafter tabledeletecol",
  39. toolbar: "formatselect fontselect fontsizeselect | bold italic underline strikethrough forecolor backcolor | alignleft alignright aligncenter alignjustify | bullist numlist | link unlink | image",
  40. //theme: "advanced",
  41. entity_encoding: "raw",
  42. image_advtab: true,
  43. image_title: true,
  44. plugins: "table fullscreen legacyoutput textcolor colorpicker link image code lists advlist fullpage",
  45. relative_urls: false,
  46. convert_urls: false,
  47. remove_script_host: false,
  48. document_base_url: "<?php echo esc_js(get_option('home')) ?>/",
  49. content_css: ["<?php echo plugins_url('newsletter') ?>/emails/editor.css", "<?php echo home_url('/') . '?na=emails-css&id=' . $email_id . '&' . time(); ?>"]
  50. });
  51. </script>
  52. <script>
  53. function tnp_media() {
  54. var tnp_uploader = wp.media({
  55. title: "Select an image",
  56. button: {
  57. text: "Select"
  58. },
  59. frame: 'post',
  60. multiple: false,
  61. displaySetting: true,
  62. displayUserSettings: true
  63. }).on("insert", function () {
  64. wp.media;
  65. var media = tnp_uploader.state().get("selection").first();
  66. if (media.attributes.url.indexOf("http") !== 0)
  67. media.attributes.url = "http:" + media.attributes.url;
  68. if (!media.attributes.mime.startsWith("image")) {
  69. tinyMCE.execCommand('mceInsertLink', false, media.attributes.url);
  70. } else {
  71. var display = tnp_uploader.state().display(media);
  72. var url = media.attributes.sizes[display.attributes.size].url;
  73. tinyMCE.execCommand('mceInsertContent', false, '<img src="' + url + '" style="max-width: 100%">');
  74. }
  75. }).open();
  76. }
  77. </script>
  78. <div id="tnp-notification">
  79. <?php $controls->show(); ?>
  80. </div>
  81. <div class="wrap tnp-emails-editor-html" id="tnp-wrap">
  82. <form action="" method="post">
  83. <?php $controls->init() ?>
  84. <?php $controls->text('subject', 60, 'Newsletter subject')?>
  85. <a href="#" class="button-primary" onclick="tnp_suggest_subject(); return false;"><?php _e('Get ideas', 'newsletter') ?></a>
  86. <input type="button" class="button-primary" value="Add media" onclick="tnp_media()">
  87. <?php $controls->editor('message', 30); ?>
  88. <div style="text-align: right ">
  89. <?php $controls->button_confirm('reset', __('Back to last save', 'newsletter'), 'Are you sure?'); ?>
  90. <?php $controls->button('test', __('Test', 'newsletter')); ?>
  91. <?php $controls->button('save', __('Save', 'newsletter')); ?>
  92. <?php $controls->button('next', __('Next', 'newsletter') . ' &raquo;'); ?>
  93. </div>
  94. </form>
  95. <?php include NEWSLETTER_DIR . '/emails/subjects.php'; ?>
  96. </div>