DefaultTemplate.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Email\Controller\Adminhtml\Email\Template;
  8. class DefaultTemplate extends \Magento\Email\Controller\Adminhtml\Email\Template
  9. {
  10. /**
  11. * @var \Magento\Email\Model\Template\Config
  12. */
  13. private $emailConfig;
  14. /**
  15. * @var \Magento\Framework\Serialize\Serializer\Json
  16. */
  17. private $serializer;
  18. /**
  19. * @param \Magento\Backend\App\Action\Context $context
  20. * @param \Magento\Framework\Registry $coreRegistry
  21. * @param \Magento\Email\Model\Template\Config $emailConfig
  22. * @param \Magento\Framework\Serialize\Serializer\Json|null $serializer
  23. * @throws \RuntimeException
  24. */
  25. public function __construct(
  26. \Magento\Backend\App\Action\Context $context,
  27. \Magento\Framework\Registry $coreRegistry,
  28. \Magento\Email\Model\Template\Config $emailConfig,
  29. \Magento\Framework\Serialize\Serializer\Json $serializer = null
  30. ) {
  31. $this->emailConfig = $emailConfig;
  32. $this->serializer = $serializer ?: \Magento\Framework\App\ObjectManager::getInstance()
  33. ->get(\Magento\Framework\Serialize\Serializer\Json::class);
  34. parent::__construct($context, $coreRegistry);
  35. }
  36. /**
  37. * Set template data to retrieve it in template info form
  38. *
  39. * @return void
  40. * @throws \RuntimeException
  41. */
  42. public function execute()
  43. {
  44. $this->_view->loadLayout();
  45. $template = $this->_initTemplate('id');
  46. $templateId = $this->getRequest()->getParam('code');
  47. try {
  48. $parts = $this->emailConfig->parseTemplateIdParts($templateId);
  49. $templateId = $parts['templateId'];
  50. $theme = $parts['theme'];
  51. if ($theme) {
  52. $template->setForcedTheme($templateId, $theme);
  53. }
  54. $template->setForcedArea($templateId);
  55. $template->loadDefault($templateId);
  56. $template->setData('orig_template_code', $templateId);
  57. $template->setData(
  58. 'template_variables',
  59. $this->serializer->serialize($template->getVariablesOptionArray(true))
  60. );
  61. $templateBlock = $this->_view->getLayout()->createBlock(
  62. \Magento\Email\Block\Adminhtml\Template\Edit::class,
  63. 'template_edit',
  64. [
  65. 'data' => [
  66. 'email_template' => $template
  67. ]
  68. ]
  69. );
  70. $template->setData('orig_template_currently_used_for', $templateBlock->getCurrentlyUsedForPaths(false));
  71. $this->getResponse()->representJson(
  72. $this->serializer->serialize($template->getData())
  73. );
  74. } catch (\Exception $e) {
  75. $this->_objectManager->get(\Psr\Log\LoggerInterface::class)->critical($e);
  76. }
  77. }
  78. }