edit.phtml 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. use Magento\Framework\App\TemplateTypesInterface;
  7. // @codingStandardsIgnoreFile
  8. /* @var $block \Magento\Newsletter\Block\Adminhtml\Template\Edit */
  9. ?>
  10. <form action="<?= $block->escapeUrl($block->getSaveUrl()) ?>" method="post" id="newsletter_template_edit_form">
  11. <?= $block->getBlockHtml('formkey') ?>
  12. <div class="no-display">
  13. <input type="hidden" id="change_flag_element" name="_change_type_flag" value="" />
  14. <input type="hidden" id="save_as_flag" name="_save_as_flag" value="<?= $block->escapeHtmlAttr($block->getSaveAsFlag()) ?>" />
  15. </div>
  16. <?= /* @noEscape */ $block->getForm() ?>
  17. </form>
  18. <form action="<?= $block->escapeUrl($block->getPreviewUrl()) ?>" method="get" id="newsletter_template_preview_form" target="_blank">
  19. <div class="no-display">
  20. <input type="hidden" id="preview_type" name="type" value="<?= /* @noEscape */ $block->isTextType() ? 1 : 2 ?>" />
  21. <input type="hidden" id="preview_text" name="text" value="" />
  22. <input type="hidden" id="preview_styles" name="styles" value="" />
  23. <input type="hidden" id="preview_id" name="id" value="" />
  24. </div>
  25. </form>
  26. <script>
  27. require([
  28. 'jquery',
  29. 'wysiwygAdapter',
  30. 'Magento_Ui/js/modal/prompt',
  31. 'Magento_Ui/js/modal/confirm',
  32. 'mage/mage',
  33. 'prototype'
  34. ], function (jQuery, wysiwyg, prompt, confirm) {
  35. //<![CDATA[
  36. jQuery('#newsletter_template_edit_form').mage('form').mage('validation');
  37. jQuery('#newsletter_template_preview_form').mage('form').mage('validation');
  38. var templateControl = {
  39. unconvertedText: '',
  40. typeChange: false,
  41. templateName: false,
  42. id: 'text',
  43. events: {
  44. 'click [data-role=template-save]': 'save',
  45. 'click [data-role=template-save-as]': 'saveAs',
  46. 'click [data-role=template-preview]': 'preview',
  47. 'click [data-role=template-unstrip]': 'unStripTags',
  48. 'click [data-role=template-strip]': 'stripTags',
  49. 'click [data-role=template-delete]': 'deleteTemplate'
  50. },
  51. init: function () {
  52. if ($('convert_button_back')) {
  53. $('convert_button_back').hide();
  54. }
  55. wysiwyg.id = this.id;
  56. this.bindEvents();
  57. },
  58. bindEvents: function () {
  59. var events = this.events,
  60. eventName,
  61. selector,
  62. callback,
  63. key;
  64. for (key in events) {
  65. if (!events.hasOwnProperty(key)) {
  66. continue;
  67. }
  68. callback = this[events[key]];
  69. key = key.split(' ');
  70. eventName = key[0];
  71. selector = key.slice(1).join(' ');
  72. jQuery(selector).on(eventName, jQuery.proxy(callback, this));
  73. }
  74. },
  75. stripTags: function () {
  76. var self = this;
  77. confirm({
  78. content: "<?= $block->escapeJs($block->escapeHtml(__('Are you sure that you want to strip all tags?'))) ?>",
  79. actions: {
  80. confirm: function () {
  81. if (wysiwyg.activeEditor()) {
  82. wysiwyg.turnOff();
  83. wysiwyg.getToggleButton().hide();
  84. }
  85. self.unconvertedText = $(self.id).value;
  86. $('convert_button').hide();
  87. $('convert_button_back').show();
  88. $(self.id).value = $(self.id).value.stripScripts().stripTags();
  89. $('field_template_styles').hide();
  90. self.typeChange = true;
  91. }
  92. }
  93. });
  94. },
  95. unStripTags: function () {
  96. $('convert_button').show();
  97. $('convert_button_back').hide();
  98. $(this.id).value = this.unconvertedText;
  99. if (wysiwyg.activeEditor()) {
  100. wysiwyg.turnOn();
  101. wysiwyg.getToggleButton().show();
  102. }
  103. this.typeChange = false;
  104. $('field_template_styles').show();
  105. return false;
  106. },
  107. save: function () {
  108. if (this.typeChange) {
  109. $('change_flag_element').value = '1';
  110. }
  111. // Temporary solution will be replaced after refactoring of newsletter functionality
  112. jQuery('#newsletter_template_edit_form').triggerHandler('save');
  113. return false;
  114. },
  115. saveAs: function () {
  116. var self = this;
  117. if (this.typeChange) {
  118. $('change_flag_element').value = '1';
  119. }
  120. if ($F('code').blank() || $F('code') == templateControl.templateName) {
  121. prompt({
  122. content: '<?= $block->escapeJs($block->escapeHtml(__('Please enter a new template name.'))) ?>',
  123. value: templateControl.templateName + '<?= $block->escapeJs(__(' Copy')) ?>',
  124. actions: {
  125. confirm: function (value) {
  126. $('code').value = value;
  127. self._saveAs();
  128. return false;
  129. },
  130. cancel: function () {
  131. $('code').value = '';
  132. // Temporary solution will be replaced after refactoring of newsletter functionality
  133. jQuery('#newsletter_template_edit_form').triggerHandler('save');
  134. self._saveAs();
  135. return false;
  136. }
  137. }
  138. });
  139. }
  140. },
  141. _saveAs: function () {
  142. $('save_as_flag').value = '1';
  143. // Temporary solution will be replaced after refactoring of newsletter functionality
  144. jQuery('#newsletter_template_edit_form').triggerHandler('save');
  145. return false;
  146. },
  147. preview: function () {
  148. if (this.typeChange) {
  149. $('preview_type').value = <?= $block->escapeJs(TemplateTypesInterface::TYPE_TEXT) ?>;
  150. } else {
  151. $('preview_type').value = <?= $block->escapeJs($block->getTemplateType()) ?>;
  152. }
  153. if (wysiwyg.activeEditor()) {
  154. $('preview_text').value = wysiwyg.getContent();
  155. } else {
  156. $('preview_text').value = $(this.id).value;
  157. }
  158. if ($('template_styles') != undefined) {
  159. $('preview_styles').value = $('template_styles').value;
  160. }
  161. if ($('id') != undefined) {
  162. $('preview_id').value = $('id').value;
  163. }
  164. // Temporary solution will be replaced after refactoring of newsletter functionality
  165. jQuery('#newsletter_template_preview_form').triggerHandler('save');
  166. return false;
  167. },
  168. deleteTemplate: function () {
  169. confirm({
  170. content: "<?= $block->escapeJs($block->escapeHtml(__('Are you sure you want to delete this template?'))) ?>",
  171. actions: {
  172. confirm: function () {
  173. window.location.href = '<?= $block->escapeUrl($block->getDeleteUrl()) ?>';
  174. }
  175. }
  176. });
  177. }
  178. };
  179. templateControl.init();
  180. templateControl.templateName = "<?= $block->escapeJs($block->getJsTemplateName()) ?>";
  181. //]]>
  182. });
  183. </script>