123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Newsletter\Block\Adminhtml\Queue\Edit;
- /**
- * Newsletter queue edit form
- *
- * @author Magento Core Team <core@magentocommerce.com>
- */
- class Form extends \Magento\Backend\Block\Widget\Form\Generic
- {
- /**
- * @var \Magento\Cms\Model\Wysiwyg\Config
- */
- protected $_wysiwygConfig;
- /**
- * @var \Magento\Store\Model\System\Store
- */
- protected $_systemStore;
- /**
- * @var \Magento\Newsletter\Model\QueueFactory
- */
- protected $_queueFactory;
- /**
- * @param \Magento\Backend\Block\Template\Context $context
- * @param \Magento\Framework\Registry $registry
- * @param \Magento\Framework\Data\FormFactory $formFactory
- * @param \Magento\Newsletter\Model\QueueFactory $queueFactory
- * @param \Magento\Store\Model\System\Store $systemStore
- * @param \Magento\Cms\Model\Wysiwyg\Config $wysiwygConfig
- * @param array $data
- */
- public function __construct(
- \Magento\Backend\Block\Template\Context $context,
- \Magento\Framework\Registry $registry,
- \Magento\Framework\Data\FormFactory $formFactory,
- \Magento\Newsletter\Model\QueueFactory $queueFactory,
- \Magento\Store\Model\System\Store $systemStore,
- \Magento\Cms\Model\Wysiwyg\Config $wysiwygConfig,
- array $data = []
- ) {
- $this->_wysiwygConfig = $wysiwygConfig;
- $this->_systemStore = $systemStore;
- $this->_queueFactory = $queueFactory;
- parent::__construct($context, $registry, $formFactory, $data);
- }
- /**
- * Prepare form for newsletter queue editing.
- * Form can be run from newsletter template grid by option "Queue newsletter"
- * or from newsletter queue grid by edit option.
- *
- * @return $this
- * @SuppressWarnings(PHPMD.CyclomaticComplexity)
- * @SuppressWarnings(PHPMD.NPathComplexity)
- * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
- */
- protected function _prepareForm()
- {
- /* @var $queue \Magento\Newsletter\Model\Queue */
- $queue = $this->getQueue();
- /** @var \Magento\Framework\Data\Form $form */
- $form = $this->_formFactory->create();
- $fieldset = $form->addFieldset(
- 'base_fieldset',
- ['legend' => __('Queue Information'), 'class' => 'fieldset-wide']
- );
- $dateFormat = $this->_localeDate->getDateFormat(
- \IntlDateFormatter::MEDIUM
- );
- $timeFormat = $this->_localeDate->getTimeFormat(
- \IntlDateFormatter::MEDIUM
- );
- if ($queue->getQueueStatus() == \Magento\Newsletter\Model\Queue::STATUS_NEVER) {
- $fieldset->addField(
- 'date',
- 'date',
- [
- 'name' => 'start_at',
- 'date_format' => $dateFormat,
- 'time_format' => $timeFormat,
- 'label' => __('Queue Date Start')
- ]
- );
- if (!$this->_storeManager->hasSingleStore()) {
- $fieldset->addField(
- 'stores',
- 'multiselect',
- [
- 'name' => 'stores[]',
- 'label' => __('Subscribers From'),
- 'values' => $this->_systemStore->getStoreValuesForForm(),
- 'value' => $queue->getStores()
- ]
- );
- } else {
- $fieldset->addField(
- 'stores',
- 'hidden',
- ['name' => 'stores[]', 'value' => $this->_storeManager->getStore(true)->getId()]
- );
- }
- } else {
- $fieldset->addField(
- 'date',
- 'date',
- [
- 'name' => 'start_at',
- 'disabled' => 'true',
- 'style' => 'width:38%;',
- 'date_format' => $dateFormat,
- 'time_format' => $timeFormat,
- 'label' => __('Queue Date Start')
- ]
- );
- if (!$this->_storeManager->hasSingleStore()) {
- $fieldset->addField(
- 'stores',
- 'multiselect',
- [
- 'name' => 'stores[]',
- 'label' => __('Subscribers From'),
- 'required' => true,
- 'values' => $this->_systemStore->getStoreValuesForForm(),
- 'value' => $queue->getStores()
- ]
- );
- } else {
- $fieldset->addField(
- 'stores',
- 'hidden',
- ['name' => 'stores[]', 'value' => $this->_storeManager->getStore(true)->getId()]
- );
- }
- }
- if ($queue->getQueueStartAt()) {
- $form->getElement(
- 'date'
- )->setValue(
- $this->_localeDate->date(new \DateTime($queue->getQueueStartAt()))
- );
- }
- $fieldset->addField(
- 'subject',
- 'text',
- [
- 'name' => 'subject',
- 'label' => __('Subject'),
- 'required' => true,
- 'value' => $queue->isNew() ? $queue
- ->getTemplate()
- ->getTemplateSubject() : $queue
- ->getNewsletterSubject()
- ]
- );
- $fieldset->addField(
- 'sender_name',
- 'text',
- [
- 'name' => 'sender_name',
- 'label' => __('Sender Name'),
- 'title' => __('Sender Name'),
- 'required' => true,
- 'value' => $queue->isNew() ? $queue
- ->getTemplate()
- ->getTemplateSenderName() : $queue
- ->getNewsletterSenderName()
- ]
- );
- $fieldset->addField(
- 'sender_email',
- 'text',
- [
- 'name' => 'sender_email',
- 'label' => __('Sender Email'),
- 'title' => __('Sender Email'),
- 'class' => 'validate-email',
- 'required' => true,
- 'value' => $queue->isNew() ? $queue
- ->getTemplate()
- ->getTemplateSenderEmail() : $queue
- ->getNewsletterSenderEmail()
- ]
- );
- $wysiwygConfig = $this->_wysiwygConfig->getConfig($this->getAdditionalWysiwygConfig());
- if ($queue->isNew()) {
- $fieldset->addField(
- 'text',
- 'editor',
- [
- 'name' => 'text',
- 'label' => __('Message'),
- 'state' => 'html',
- 'required' => true,
- 'value' => $queue->getTemplate()->getTemplateText(),
- 'style' => 'height: 600px;',
- 'config' => $wysiwygConfig
- ]
- );
- $fieldset->addField(
- 'styles',
- 'textarea',
- [
- 'name' => 'styles',
- 'label' => __('Newsletter Styles'),
- 'container_id' => 'field_newsletter_styles',
- 'value' => $queue->getTemplate()->getTemplateStyles()
- ]
- );
- } elseif (\Magento\Newsletter\Model\Queue::STATUS_NEVER != $queue->getQueueStatus()) {
- $fieldset->addField(
- 'text',
- 'textarea',
- ['name' => 'text', 'label' => __('Message'), 'value' => $queue->getNewsletterText()]
- );
- $fieldset->addField(
- 'styles',
- 'textarea',
- ['name' => 'styles', 'label' => __('Newsletter Styles'), 'value' => $queue->getNewsletterStyles()]
- );
- $form->getElement('text')->setDisabled('true')->setRequired(false);
- $form->getElement('styles')->setDisabled('true')->setRequired(false);
- $form->getElement('subject')->setDisabled('true')->setRequired(false);
- $form->getElement('sender_name')->setDisabled('true')->setRequired(false);
- $form->getElement('sender_email')->setDisabled('true')->setRequired(false);
- $form->getElement('stores')->setDisabled('true');
- } else {
- $fieldset->addField(
- 'text',
- 'editor',
- [
- 'name' => 'text',
- 'label' => __('Message'),
- 'state' => 'html',
- 'required' => true,
- 'value' => $queue->getNewsletterText(),
- 'style' => 'height: 600px;',
- 'config' => $wysiwygConfig
- ]
- );
- $fieldset->addField(
- 'styles',
- 'textarea',
- [
- 'name' => 'styles',
- 'label' => __('Newsletter Styles'),
- 'value' => $queue->getNewsletterStyles(),
- 'style' => 'height: 300px;'
- ]
- );
- }
- $this->setForm($form);
- return $this;
- }
- /**
- * This is extension point for customizing configuration of WYSIWYG
- * You can add afterGetAdditionalWysiwygConfig plugin
- * in order to extend current configuration
- *
- * @return array
- */
- public function getAdditionalWysiwygConfig()
- {
- return [
- 'widget_filers' => [
- 'is_email_compatible' => 1
- ]
- ];
- }
- /**
- * Retrieve queue object
- *
- * @return \Magento\Newsletter\Model\Queue
- */
- protected function getQueue()
- {
- $queue = $this->_coreRegistry->registry('current_queue');
- if (!$queue) {
- $queue = $this->_queueFactory->create();
- }
- return $queue;
- }
- }
|