/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Edit/Tab/Main.php

https://bitbucket.org/sunil_nextbits/magento2 · PHP · 264 lines · 190 code · 29 blank · 45 comment · 13 complexity · 0823bc747a6bd7b809338c5422391e26 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@magentocommerce.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.magentocommerce.com for more information.
  20. *
  21. * @category Mage
  22. * @package Mage_Adminhtml
  23. * @copyright Copyright (c) 2012 X.commerce, Inc. (http://www.magentocommerce.com)
  24. * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
  25. */
  26. /**
  27. * Product attribute add/edit form main tab
  28. *
  29. * @category Mage
  30. * @package Mage_Adminhtml
  31. * @author Magento Core Team <core@magentocommerce.com>
  32. */
  33. class Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Main extends Mage_Eav_Block_Adminhtml_Attribute_Edit_Main_Abstract
  34. {
  35. /**
  36. * Adding product form elements for editing attribute
  37. *
  38. * @return Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Main
  39. */
  40. protected function _prepareForm()
  41. {
  42. parent::_prepareForm();
  43. $attributeObject = $this->getAttributeObject();
  44. /* @var $form Varien_Data_Form */
  45. $form = $this->getForm();
  46. /* @var $fieldset Varien_Data_Form_Element_Fieldset */
  47. $fieldset = $form->getElement('base_fieldset');
  48. $frontendInputElm = $form->getElement('frontend_input');
  49. $additionalTypes = array(
  50. array(
  51. 'value' => 'price',
  52. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Price')
  53. ),
  54. array(
  55. 'value' => 'media_image',
  56. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Media Image')
  57. )
  58. );
  59. if ($attributeObject->getFrontendInput() == 'gallery') {
  60. $additionalTypes[] = array(
  61. 'value' => 'gallery',
  62. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Gallery')
  63. );
  64. }
  65. $response = new Varien_Object();
  66. $response->setTypes(array());
  67. Mage::dispatchEvent('adminhtml_product_attribute_types', array('response'=>$response));
  68. $_disabledTypes = array();
  69. $_hiddenFields = array();
  70. foreach ($response->getTypes() as $type) {
  71. $additionalTypes[] = $type;
  72. if (isset($type['hide_fields'])) {
  73. $_hiddenFields[$type['value']] = $type['hide_fields'];
  74. }
  75. if (isset($type['disabled_types'])) {
  76. $_disabledTypes[$type['value']] = $type['disabled_types'];
  77. }
  78. }
  79. Mage::register('attribute_type_hidden_fields', $_hiddenFields);
  80. Mage::register('attribute_type_disabled_types', $_disabledTypes);
  81. $frontendInputValues = array_merge($frontendInputElm->getValues(), $additionalTypes);
  82. $frontendInputElm->setValues($frontendInputValues);
  83. $yesnoSource = Mage::getModel('Mage_Backend_Model_Config_Source_Yesno')->toOptionArray();
  84. $scopes = array(
  85. Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE =>Mage::helper('Mage_Catalog_Helper_Data')->__('Store View'),
  86. Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE =>Mage::helper('Mage_Catalog_Helper_Data')->__('Website'),
  87. Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL =>Mage::helper('Mage_Catalog_Helper_Data')->__('Global'),
  88. );
  89. if ($attributeObject->getAttributeCode() == 'status' || $attributeObject->getAttributeCode() == 'tax_class_id') {
  90. unset($scopes[Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE]);
  91. }
  92. $fieldset->addField('is_global', 'select', array(
  93. 'name' => 'is_global',
  94. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Scope'),
  95. 'title' => Mage::helper('Mage_Catalog_Helper_Data')->__('Scope'),
  96. 'note' => Mage::helper('Mage_Catalog_Helper_Data')->__('Declare attribute value saving scope'),
  97. 'values'=> $scopes
  98. ), 'attribute_code');
  99. $fieldset->addField('apply_to', 'apply', array(
  100. 'name' => 'apply_to[]',
  101. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Apply To'),
  102. 'values' => Mage_Catalog_Model_Product_Type::getOptions(),
  103. 'mode_labels' => array(
  104. 'all' => Mage::helper('Mage_Catalog_Helper_Data')->__('All Product Types'),
  105. 'custom' => Mage::helper('Mage_Catalog_Helper_Data')->__('Selected Product Types')
  106. ),
  107. 'required' => true,
  108. 'disabled' => !$attributeObject->getIsUserDefined() && $attributeObject->getId(),
  109. ), 'frontend_class');
  110. $fieldset->addField('is_configurable', 'select', array(
  111. 'name' => 'is_configurable',
  112. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Use To Create Configurable Product'),
  113. 'values' => $yesnoSource,
  114. ), 'apply_to');
  115. // frontend properties fieldset
  116. $fieldset = $form->addFieldset('front_fieldset', array('legend'=>Mage::helper('Mage_Catalog_Helper_Data')->__('Frontend Properties')));
  117. $fieldset->addField('is_searchable', 'select', array(
  118. 'name' => 'is_searchable',
  119. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Use in Quick Search'),
  120. 'title' => Mage::helper('Mage_Catalog_Helper_Data')->__('Use in Quick Search'),
  121. 'values' => $yesnoSource,
  122. ));
  123. $fieldset->addField('is_visible_in_advanced_search', 'select', array(
  124. 'name' => 'is_visible_in_advanced_search',
  125. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Use in Advanced Search'),
  126. 'title' => Mage::helper('Mage_Catalog_Helper_Data')->__('Use in Advanced Search'),
  127. 'values' => $yesnoSource,
  128. ));
  129. $fieldset->addField('is_comparable', 'select', array(
  130. 'name' => 'is_comparable',
  131. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Comparable on Front-end'),
  132. 'title' => Mage::helper('Mage_Catalog_Helper_Data')->__('Comparable on Front-end'),
  133. 'values' => $yesnoSource,
  134. ));
  135. $fieldset->addField('is_filterable', 'select', array(
  136. 'name' => 'is_filterable',
  137. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__("Use In Layered Navigation"),
  138. 'title' => Mage::helper('Mage_Catalog_Helper_Data')->__('Can be used only with catalog input type Dropdown, Multiple Select and Price'),
  139. 'note' => Mage::helper('Mage_Catalog_Helper_Data')->__('Can be used only with catalog input type Dropdown, Multiple Select and Price'),
  140. 'values' => array(
  141. array('value' => '0', 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('No')),
  142. array('value' => '1', 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Filterable (with results)')),
  143. array('value' => '2', 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Filterable (no results)')),
  144. ),
  145. ));
  146. $fieldset->addField('is_filterable_in_search', 'select', array(
  147. 'name' => 'is_filterable_in_search',
  148. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__("Use In Search Results Layered Navigation"),
  149. 'title' => Mage::helper('Mage_Catalog_Helper_Data')->__('Can be used only with catalog input type Dropdown, Multiple Select and Price'),
  150. 'note' => Mage::helper('Mage_Catalog_Helper_Data')->__('Can be used only with catalog input type Dropdown, Multiple Select and Price'),
  151. 'values' => $yesnoSource,
  152. ));
  153. $fieldset->addField('is_used_for_promo_rules', 'select', array(
  154. 'name' => 'is_used_for_promo_rules',
  155. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Use for Promo Rule Conditions'),
  156. 'title' => Mage::helper('Mage_Catalog_Helper_Data')->__('Use for Promo Rule Conditions'),
  157. 'values' => $yesnoSource,
  158. ));
  159. $fieldset->addField('position', 'text', array(
  160. 'name' => 'position',
  161. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Position'),
  162. 'title' => Mage::helper('Mage_Catalog_Helper_Data')->__('Position in Layered Navigation'),
  163. 'note' => Mage::helper('Mage_Catalog_Helper_Data')->__('Position of attribute in layered navigation block'),
  164. 'class' => 'validate-digits',
  165. ));
  166. $fieldset->addField('is_wysiwyg_enabled', 'select', array(
  167. 'name' => 'is_wysiwyg_enabled',
  168. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Enable WYSIWYG'),
  169. 'title' => Mage::helper('Mage_Catalog_Helper_Data')->__('Enable WYSIWYG'),
  170. 'values' => $yesnoSource,
  171. ));
  172. $htmlAllowed = $fieldset->addField('is_html_allowed_on_front', 'select', array(
  173. 'name' => 'is_html_allowed_on_front',
  174. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Allow HTML Tags on Frontend'),
  175. 'title' => Mage::helper('Mage_Catalog_Helper_Data')->__('Allow HTML Tags on Frontend'),
  176. 'values' => $yesnoSource,
  177. ));
  178. if (!$attributeObject->getId() || $attributeObject->getIsWysiwygEnabled()) {
  179. $attributeObject->setIsHtmlAllowedOnFront(1);
  180. }
  181. $fieldset->addField('is_visible_on_front', 'select', array(
  182. 'name' => 'is_visible_on_front',
  183. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Visible on Product View Page on Front-end'),
  184. 'title' => Mage::helper('Mage_Catalog_Helper_Data')->__('Visible on Product View Page on Front-end'),
  185. 'values' => $yesnoSource,
  186. ));
  187. $fieldset->addField('used_in_product_listing', 'select', array(
  188. 'name' => 'used_in_product_listing',
  189. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Used in Product Listing'),
  190. 'title' => Mage::helper('Mage_Catalog_Helper_Data')->__('Used in Product Listing'),
  191. 'note' => Mage::helper('Mage_Catalog_Helper_Data')->__('Depends on design theme'),
  192. 'values' => $yesnoSource,
  193. ));
  194. $fieldset->addField('used_for_sort_by', 'select', array(
  195. 'name' => 'used_for_sort_by',
  196. 'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Used for Sorting in Product Listing'),
  197. 'title' => Mage::helper('Mage_Catalog_Helper_Data')->__('Used for Sorting in Product Listing'),
  198. 'note' => Mage::helper('Mage_Catalog_Helper_Data')->__('Depends on design theme'),
  199. 'values' => $yesnoSource,
  200. ));
  201. $form->getElement('apply_to')->setSize(5);
  202. if ($applyTo = $attributeObject->getApplyTo()) {
  203. $applyTo = is_array($applyTo) ? $applyTo : explode(',', $applyTo);
  204. $form->getElement('apply_to')->setValue($applyTo);
  205. } else {
  206. $form->getElement('apply_to')->addClass('no-display ignore-validate');
  207. }
  208. // define field dependencies
  209. $this->setChild(
  210. 'form_after',
  211. $this->getLayout()->createBlock('Mage_Adminhtml_Block_Widget_Form_Element_Dependence')
  212. ->addFieldMap("is_wysiwyg_enabled", 'wysiwyg_enabled')
  213. ->addFieldMap("is_html_allowed_on_front", 'html_allowed_on_front')
  214. ->addFieldMap("frontend_input", 'frontend_input_type')
  215. ->addFieldDependence('wysiwyg_enabled', 'frontend_input_type', 'textarea')
  216. ->addFieldDependence('html_allowed_on_front', 'wysiwyg_enabled', '0')
  217. );
  218. Mage::dispatchEvent('adminhtml_catalog_product_attribute_edit_prepare_form', array(
  219. 'form' => $form,
  220. 'attribute' => $attributeObject
  221. ));
  222. return $this;
  223. }
  224. /**
  225. * Retrieve additional element types for product attributes
  226. *
  227. * @return array
  228. */
  229. protected function _getAdditionalElementTypes()
  230. {
  231. return array(
  232. 'apply' => Mage::getConfig()->getBlockClassName('Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Apply'),
  233. );
  234. }
  235. }