Edit.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Backend\Block\System\Store;
  7. use Magento\Framework\App\ObjectManager;
  8. use Magento\Framework\Serialize\SerializerInterface;
  9. /**
  10. * @api
  11. *
  12. * Adminhtml store edit
  13. * @since 100.0.2
  14. */
  15. class Edit extends \Magento\Backend\Block\Widget\Form\Container
  16. {
  17. /**
  18. * Core registry
  19. *
  20. * @var \Magento\Framework\Registry
  21. */
  22. protected $_coreRegistry = null;
  23. /**
  24. * @var SerializerInterface
  25. */
  26. private $serializer;
  27. /**
  28. * @param \Magento\Backend\Block\Widget\Context $context
  29. * @param \Magento\Framework\Registry $registry
  30. * @param array $data
  31. * @param SerializerInterface|null $serializer
  32. */
  33. public function __construct(
  34. \Magento\Backend\Block\Widget\Context $context,
  35. \Magento\Framework\Registry $registry,
  36. array $data = [],
  37. SerializerInterface $serializer = null
  38. ) {
  39. $this->_coreRegistry = $registry;
  40. $this->serializer = $serializer ?: ObjectManager::getInstance()->get(SerializerInterface::class);
  41. parent::__construct($context, $data);
  42. }
  43. /**
  44. * Init class
  45. *
  46. * @return void
  47. */
  48. protected function _construct()
  49. {
  50. switch ($this->_coreRegistry->registry('store_type')) {
  51. case 'website':
  52. $this->_objectId = 'website_id';
  53. $saveLabel = __('Save Web Site');
  54. $deleteLabel = __('Delete Web Site');
  55. $deleteUrl = $this->getUrl(
  56. '*/*/deleteWebsite',
  57. ['item_id' => $this->_coreRegistry->registry('store_data')->getId()]
  58. );
  59. break;
  60. case 'group':
  61. $this->_objectId = 'group_id';
  62. $saveLabel = __('Save Store');
  63. $deleteLabel = __('Delete Store');
  64. $deleteUrl = $this->getUrl(
  65. '*/*/deleteGroup',
  66. ['item_id' => $this->_coreRegistry->registry('store_data')->getId()]
  67. );
  68. break;
  69. case 'store':
  70. $this->_objectId = 'store_id';
  71. $saveLabel = __('Save Store View');
  72. $deleteLabel = __('Delete Store View');
  73. $deleteUrl = $this->getUrl(
  74. '*/*/deleteStore',
  75. ['item_id' => $this->_coreRegistry->registry('store_data')->getId()]
  76. );
  77. break;
  78. default:
  79. $saveLabel = '';
  80. $deleteLabel = '';
  81. $deleteUrl = '';
  82. }
  83. $this->_blockGroup = 'Magento_Backend';
  84. $this->_controller = 'system_store';
  85. parent::_construct();
  86. $this->buttonList->update('save', 'label', $saveLabel);
  87. $this->buttonList->update('delete', 'label', $deleteLabel);
  88. $this->buttonList->update('delete', 'onclick', 'setLocation(\'' . $deleteUrl . '\');');
  89. if (!$this->_coreRegistry->registry('store_data')) {
  90. return;
  91. }
  92. if (!$this->_coreRegistry->registry('store_data')->isCanDelete()) {
  93. $this->buttonList->remove('delete');
  94. }
  95. if ($this->_coreRegistry->registry('store_data')->isReadOnly()) {
  96. $this->buttonList->remove('save');
  97. $this->buttonList->remove('reset');
  98. }
  99. }
  100. /**
  101. * Get Header text
  102. *
  103. * @return string
  104. */
  105. public function getHeaderText()
  106. {
  107. switch ($this->_coreRegistry->registry('store_type')) {
  108. case 'website':
  109. $editLabel = __('Edit Web Site');
  110. $addLabel = __('New Web Site');
  111. break;
  112. case 'group':
  113. $editLabel = __('Edit Store');
  114. $addLabel = __('New Store');
  115. break;
  116. case 'store':
  117. $editLabel = __('Edit Store View');
  118. $addLabel = __('New Store View');
  119. break;
  120. }
  121. return $this->_coreRegistry->registry('store_action') == 'add' ? $addLabel : $editLabel;
  122. }
  123. /**
  124. * Build child form class form name based on value of store_type in registry
  125. *
  126. * @return string
  127. */
  128. protected function _buildFormClassName()
  129. {
  130. return parent::_buildFormClassName() . '\\' . ucwords($this->_coreRegistry->registry('store_type'));
  131. }
  132. /**
  133. * Get data for store edit
  134. *
  135. * @return string
  136. * @since 100.2.0
  137. */
  138. public function getStoreData()
  139. {
  140. return $this->serializer->serialize($this->_coreRegistry->registry('store_data')->getData());
  141. }
  142. }