1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
26:
27: 28: 29: 30: 31: 32: 33:
34: abstract class Mage_Eav_Block_Adminhtml_Attribute_Edit_Options_Abstract extends Mage_Adminhtml_Block_Widget
35: {
36:
37: public function __construct()
38: {
39: parent::__construct();
40: $this->setTemplate('catalog/product/attribute/options.phtml');
41: }
42:
43: 44: 45: 46: 47:
48: protected function _prepareLayout()
49: {
50: $this->setChild('delete_button',
51: $this->getLayout()->createBlock('adminhtml/widget_button')
52: ->setData(array(
53: 'label' => Mage::helper('eav')->__('Delete'),
54: 'class' => 'delete delete-option'
55: )));
56:
57: $this->setChild('add_button',
58: $this->getLayout()->createBlock('adminhtml/widget_button')
59: ->setData(array(
60: 'label' => Mage::helper('eav')->__('Add Option'),
61: 'class' => 'add',
62: 'id' => 'add_new_option_button'
63: )));
64: return parent::_prepareLayout();
65: }
66:
67: 68: 69: 70: 71:
72: public function getDeleteButtonHtml()
73: {
74: return $this->getChildHtml('delete_button');
75: }
76:
77: 78: 79: 80: 81:
82: public function getAddNewButtonHtml()
83: {
84: return $this->getChildHtml('add_button');
85: }
86:
87: 88: 89: 90: 91:
92: public function getStores()
93: {
94: $stores = $this->getData('stores');
95: if (is_null($stores)) {
96: $stores = Mage::getModel('core/store')
97: ->getResourceCollection()
98: ->setLoadDefault(true)
99: ->load();
100: $this->setData('stores', $stores);
101: }
102: return $stores;
103: }
104:
105: 106: 107: 108: 109:
110: public function getOptionValues()
111: {
112: $attributeType = $this->getAttributeObject()->getFrontendInput();
113: $defaultValues = $this->getAttributeObject()->getDefaultValue();
114: if ($attributeType == 'select' || $attributeType == 'multiselect') {
115: $defaultValues = explode(',', $defaultValues);
116: } else {
117: $defaultValues = array();
118: }
119:
120: switch ($attributeType) {
121: case 'select':
122: $inputType = 'radio';
123: break;
124: case 'multiselect':
125: $inputType = 'checkbox';
126: break;
127: default:
128: $inputType = '';
129: break;
130: }
131:
132: $values = $this->getData('option_values');
133: if (is_null($values)) {
134: $values = array();
135: $optionCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
136: ->setAttributeFilter($this->getAttributeObject()->getId())
137: ->setPositionOrder('desc', true)
138: ->load();
139:
140: foreach ($optionCollection as $option) {
141: $value = array();
142: if (in_array($option->getId(), $defaultValues)) {
143: $value['checked'] = 'checked="checked"';
144: } else {
145: $value['checked'] = '';
146: }
147:
148: $value['intype'] = $inputType;
149: $value['id'] = $option->getId();
150: $value['sort_order'] = $option->getSortOrder();
151: foreach ($this->getStores() as $store) {
152: $storeValues = $this->getStoreOptionValues($store->getId());
153: if (isset($storeValues[$option->getId()])) {
154: $value['store'.$store->getId()] = htmlspecialchars($storeValues[$option->getId()]);
155: }
156: else {
157: $value['store'.$store->getId()] = '';
158: }
159: }
160: $values[] = new Varien_Object($value);
161: }
162: $this->setData('option_values', $values);
163: }
164:
165: return $values;
166: }
167:
168: 169: 170: 171: 172:
173: public function getLabelValues()
174: {
175: $values = array();
176: $values[0] = $this->getAttributeObject()->getFrontend()->getLabel();
177:
178: $frontendLabel = $this->getAttributeObject()->getFrontend()->getLabel();
179: if (is_array($frontendLabel)) {
180: $frontendLabel = array_shift($frontendLabel);
181: }
182: $storeLabels = $this->getAttributeObject()->getStoreLabels();
183: foreach ($this->getStores() as $store) {
184: if ($store->getId() != 0) {
185: $values[$store->getId()] = isset($storeLabels[$store->getId()]) ? $storeLabels[$store->getId()] : '';
186: }
187: }
188: return $values;
189: }
190:
191: 192: 193: 194: 195: 196:
197: public function getStoreOptionValues($storeId)
198: {
199: $values = $this->getData('store_option_values_'.$storeId);
200: if (is_null($values)) {
201: $values = array();
202: $valuesCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
203: ->setAttributeFilter($this->getAttributeObject()->getId())
204: ->setStoreFilter($storeId, false)
205: ->load();
206: foreach ($valuesCollection as $item) {
207: $values[$item->getId()] = $item->getValue();
208: }
209: $this->setData('store_option_values_'.$storeId, $values);
210: }
211: return $values;
212: }
213:
214: 215: 216: 217: 218:
219: public function getAttributeObject()
220: {
221: return Mage::registry('entity_attribute');
222: }
223:
224: }
225: