PageRenderTime 38ms CodeModel.GetById 9ms RepoModel.GetById 0ms app.codeStats 0ms

/app/code/core/Mage/Adminhtml/Block/System/Store/Edit/Form.php

https://github.com/speedupmate/Magento-CE-Mirror
PHP | 346 lines | 266 code | 35 blank | 45 comment | 44 complexity | 7aed8f61d80c162731bb4faa03043d65 MD5 | raw file
  1. <?php
  2. /**
  3. * Magento
  4. *
  5. * NOTICE OF LICENSE
  6. *
  7. * This source file is subject to the Open Software License (OSL 3.0)
  8. * that is bundled with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://opensource.org/licenses/osl-3.0.php
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@magento.com so we can send you a copy immediately.
  14. *
  15. * DISCLAIMER
  16. *
  17. * Do not edit or add to this file if you wish to upgrade Magento to newer
  18. * versions in the future. If you wish to customize Magento for your
  19. * needs please refer to http://www.magento.com for more information.
  20. *
  21. * @category Mage
  22. * @package Mage_Adminhtml
  23. * @copyright Copyright (c) 2006-2020 Magento, Inc. (http://www.magento.com)
  24. * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
  25. */
  26. /**
  27. * Adminhtml store edit form
  28. *
  29. * @category Mage
  30. * @package Mage_Adminhtml
  31. * @author Magento Core Team <core@magentocommerce.com>
  32. */
  33. class Mage_Adminhtml_Block_System_Store_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
  34. {
  35. /**
  36. * Class constructor
  37. *
  38. */
  39. public function __construct()
  40. {
  41. parent::__construct();
  42. $this->setId('coreStoreForm');
  43. }
  44. /**
  45. * Prepare form data
  46. *
  47. * return Mage_Adminhtml_Block_Widget_Form
  48. */
  49. protected function _prepareForm()
  50. {
  51. if (Mage::registry('store_type') == 'website') {
  52. $websiteModel = Mage::registry('store_data');
  53. $showWebsiteFieldset = true;
  54. $showGroupFieldset = $showStoreFieldset = false;
  55. } elseif (Mage::registry('store_type') == 'group') {
  56. $groupModel = Mage::registry('store_data');
  57. $showGroupFieldset = true;
  58. $showWebsiteFieldset = $showStoreFieldset = false;
  59. } elseif (Mage::registry('store_type') == 'store') {
  60. $storeModel = Mage::registry('store_data');
  61. $showWebsiteFieldset = $showGroupFieldset = false;
  62. $showStoreFieldset = true;
  63. }
  64. /* @var $websiteModel Mage_Core_Model_Website */
  65. /* @var $groupModel Mage_Core_Model_Store_Group */
  66. /* @var $storeModel Mage_Core_Model_Store */
  67. $form = new Varien_Data_Form(array(
  68. 'id' => 'edit_form',
  69. 'action' => $this->getData('action'),
  70. 'method' => 'post'
  71. ));
  72. if ($showWebsiteFieldset) {
  73. if ($postData = Mage::registry('store_post_data')) {
  74. $websiteModel->setData($postData['website']);
  75. }
  76. $fieldset = $form->addFieldset('website_fieldset', array(
  77. 'legend' => Mage::helper('core')->__('Website Information')
  78. ));
  79. /* @var $fieldset Varien_Data_Form */
  80. $fieldset->addField('website_name', 'text', array(
  81. 'name' => 'website[name]',
  82. 'label' => Mage::helper('core')->__('Name'),
  83. 'value' => $websiteModel->getName(),
  84. 'required' => true,
  85. 'disabled' => $websiteModel->isReadOnly(),
  86. ));
  87. $fieldset->addField('website_code', 'text', array(
  88. 'name' => 'website[code]',
  89. 'label' => Mage::helper('core')->__('Code'),
  90. 'value' => $websiteModel->getCode(),
  91. 'required' => true,
  92. 'disabled' => $websiteModel->isReadOnly(),
  93. ));
  94. $fieldset->addField('website_sort_order', 'text', array(
  95. 'name' => 'website[sort_order]',
  96. 'label' => Mage::helper('core')->__('Sort Order'),
  97. 'value' => $websiteModel->getSortOrder(),
  98. 'required' => false,
  99. 'disabled' => $websiteModel->isReadOnly(),
  100. ));
  101. if (Mage::registry('store_action') == 'edit') {
  102. $groups = Mage::getModel('core/store_group')->getCollection()
  103. ->addWebsiteFilter($websiteModel->getId())
  104. ->setWithoutStoreViewFilter()
  105. ->toOptionArray();
  106. $fieldset->addField('website_default_group_id', 'select', array(
  107. 'name' => 'website[default_group_id]',
  108. 'label' => Mage::helper('core')->__('Default Store'),
  109. 'value' => $websiteModel->getDefaultGroupId(),
  110. 'values' => $groups,
  111. 'required' => false,
  112. 'disabled' => $websiteModel->isReadOnly(),
  113. ));
  114. }
  115. if (!$websiteModel->getIsDefault() && $websiteModel->getStoresCount()) {
  116. $fieldset->addField('is_default', 'checkbox', array(
  117. 'name' => 'website[is_default]',
  118. 'label' => Mage::helper('core')->__('Set as Default'),
  119. 'value' => 1,
  120. 'disabled' => $websiteModel->isReadOnly(),
  121. ));
  122. }
  123. else {
  124. $fieldset->addField('is_default', 'hidden', array(
  125. 'name' => 'website[is_default]',
  126. 'value' => $websiteModel->getIsDefault()
  127. ));
  128. }
  129. $fieldset->addField('website_website_id', 'hidden', array(
  130. 'name' => 'website[website_id]',
  131. 'value' => $websiteModel->getId()
  132. ));
  133. }
  134. if ($showGroupFieldset) {
  135. if ($postData = Mage::registry('store_post_data')) {
  136. $groupModel->setData($postData['group']);
  137. }
  138. $fieldset = $form->addFieldset('group_fieldset', array(
  139. 'legend' => Mage::helper('core')->__('Store Information')
  140. ));
  141. if (Mage::registry('store_action') == 'edit'
  142. || (Mage::registry('store_action') == 'add' && Mage::registry('store_type') == 'group')) {
  143. $websites = Mage::getModel('core/website')->getCollection()->toOptionArray();
  144. $fieldset->addField('group_website_id', 'select', array(
  145. 'name' => 'group[website_id]',
  146. 'label' => Mage::helper('core')->__('Website'),
  147. 'value' => $groupModel->getWebsiteId(),
  148. 'values' => $websites,
  149. 'required' => true,
  150. 'disabled' => $groupModel->isReadOnly(),
  151. ));
  152. if ($groupModel->getId() && $groupModel->getWebsite()->getDefaultGroupId() == $groupModel->getId()) {
  153. if ($groupModel->getWebsite()->getIsDefault() || $groupModel->getWebsite()->getGroupsCount() == 1) {
  154. $form->getElement('group_website_id')->setDisabled(true);
  155. $fieldset->addField('group_hidden_website_id', 'hidden', array(
  156. 'name' => 'group[website_id]',
  157. 'no_span' => true,
  158. 'value' => $groupModel->getWebsiteId()
  159. ));
  160. }
  161. else {
  162. $fieldset->addField('group_original_website_id', 'hidden', array(
  163. 'name' => 'group[original_website_id]',
  164. 'no_span' => true,
  165. 'value' => $groupModel->getWebsiteId()
  166. ));
  167. }
  168. }
  169. }
  170. $fieldset->addField('group_name', 'text', array(
  171. 'name' => 'group[name]',
  172. 'label' => Mage::helper('core')->__('Name'),
  173. 'value' => $groupModel->getName(),
  174. 'required' => true,
  175. 'disabled' => $groupModel->isReadOnly(),
  176. ));
  177. $categories = Mage::getModel('adminhtml/system_config_source_category')->toOptionArray();
  178. $fieldset->addField('group_root_category_id', 'select', array(
  179. 'name' => 'group[root_category_id]',
  180. 'label' => Mage::helper('core')->__('Root Category'),
  181. 'value' => $groupModel->getRootCategoryId(),
  182. 'values' => $categories,
  183. 'required' => true,
  184. 'disabled' => $groupModel->isReadOnly(),
  185. ));
  186. if (Mage::registry('store_action') == 'edit') {
  187. $stores = Mage::getModel('core/store')->getCollection()
  188. ->addGroupFilter($groupModel->getId())->toOptionArray();
  189. //array_unshift($stores, array('label'=>'', 'value'=>0));
  190. $fieldset->addField('group_default_store_id', 'select', array(
  191. 'name' => 'group[default_store_id]',
  192. 'label' => Mage::helper('core')->__('Default Store View'),
  193. 'value' => $groupModel->getDefaultStoreId(),
  194. 'values' => $stores,
  195. 'required' => false,
  196. 'disabled' => $groupModel->isReadOnly(),
  197. ));
  198. }
  199. $fieldset->addField('group_group_id', 'hidden', array(
  200. 'name' => 'group[group_id]',
  201. 'no_span' => true,
  202. 'value' => $groupModel->getId()
  203. ));
  204. }
  205. if ($showStoreFieldset) {
  206. if ($postData = Mage::registry('store_post_data')) {
  207. $storeModel->setData($postData['store']);
  208. }
  209. $fieldset = $form->addFieldset('store_fieldset', array(
  210. 'legend' => Mage::helper('core')->__('Store View Information')
  211. ));
  212. if (Mage::registry('store_action') == 'edit'
  213. || Mage::registry('store_action') == 'add' && Mage::registry('store_type') == 'store') {
  214. $websites = Mage::getModel('core/website')->getCollection();
  215. $allgroups = Mage::getModel('core/store_group')->getCollection();
  216. $groups = array();
  217. foreach ($websites as $website) {
  218. $values = array();
  219. foreach ($allgroups as $group) {
  220. if ($group->getWebsiteId() == $website->getId()) {
  221. $values[] = array('label'=>$group->getName(),'value'=>$group->getId());
  222. }
  223. }
  224. $groups[] = array('label' => $this->escapeHtml($website->getName()), 'value' => $values);
  225. }
  226. $fieldset->addField('store_group_id', 'select', array(
  227. 'name' => 'store[group_id]',
  228. 'label' => Mage::helper('core')->__('Store'),
  229. 'value' => $storeModel->getGroupId(),
  230. 'values' => $groups,
  231. 'required' => true,
  232. 'disabled' => $storeModel->isReadOnly(),
  233. ));
  234. if ($storeModel->getId() && $storeModel->getGroup()->getDefaultStoreId() == $storeModel->getId()) {
  235. if ($storeModel->getGroup() && $storeModel->getGroup()->getStoresCount() > 1) {
  236. $form->getElement('store_group_id')->setDisabled(true);
  237. $fieldset->addField('store_hidden_group_id', 'hidden', array(
  238. 'name' => 'store[group_id]',
  239. 'no_span' => true,
  240. 'value' => $storeModel->getGroupId()
  241. ));
  242. }
  243. else {
  244. $fieldset->addField('store_original_group_id', 'hidden', array(
  245. 'name' => 'store[original_group_id]',
  246. 'no_span' => true,
  247. 'value' => $storeModel->getGroupId()
  248. ));
  249. }
  250. }
  251. }
  252. $fieldset->addField('store_name', 'text', array(
  253. 'name' => 'store[name]',
  254. 'label' => Mage::helper('core')->__('Name'),
  255. 'value' => $storeModel->getName(),
  256. 'required' => true,
  257. 'disabled' => $storeModel->isReadOnly(),
  258. ));
  259. $fieldset->addField('store_code', 'text', array(
  260. 'name' => 'store[code]',
  261. 'label' => Mage::helper('core')->__('Code'),
  262. 'value' => $storeModel->getCode(),
  263. 'required' => true,
  264. 'disabled' => $storeModel->isReadOnly(),
  265. ));
  266. $fieldset->addField('store_is_active', 'select', array(
  267. 'name' => 'store[is_active]',
  268. 'label' => Mage::helper('core')->__('Status'),
  269. 'value' => $storeModel->getIsActive(),
  270. 'options' => array(
  271. 0 => Mage::helper('adminhtml')->__('Disabled'),
  272. 1 => Mage::helper('adminhtml')->__('Enabled')),
  273. 'required' => true,
  274. 'disabled' => $storeModel->isReadOnly(),
  275. ));
  276. $fieldset->addField('store_sort_order', 'text', array(
  277. 'name' => 'store[sort_order]',
  278. 'label' => Mage::helper('core')->__('Sort Order'),
  279. 'value' => $storeModel->getSortOrder(),
  280. 'required' => false,
  281. 'disabled' => $storeModel->isReadOnly(),
  282. ));
  283. $fieldset->addField('store_is_default', 'hidden', array(
  284. 'name' => 'store[is_default]',
  285. 'no_span' => true,
  286. 'value' => $storeModel->getIsDefault(),
  287. ));
  288. $fieldset->addField('store_store_id', 'hidden', array(
  289. 'name' => 'store[store_id]',
  290. 'no_span' => true,
  291. 'value' => $storeModel->getId(),
  292. 'disabled' => $storeModel->isReadOnly(),
  293. ));
  294. }
  295. $form->addField('store_type', 'hidden', array(
  296. 'name' => 'store_type',
  297. 'no_span' => true,
  298. 'value' => Mage::registry('store_type')
  299. ));
  300. $form->addField('store_action', 'hidden', array(
  301. 'name' => 'store_action',
  302. 'no_span' => true,
  303. 'value' => Mage::registry('store_action')
  304. ));
  305. $form->setAction($this->getUrl('*/*/save'));
  306. $form->setUseContainer(true);
  307. $this->setForm($form);
  308. Mage::dispatchEvent('adminhtml_store_edit_form_prepare_form', array('block' => $this));
  309. return parent::_prepareForm();
  310. }
  311. }