Hwg_Attributemanager - Version 0.1.0

Version Notes

First version

Download this release

Release Info

Developer Sanjay Modasia
Extension Hwg_Attributemanager
Version 0.1.0
Comparing to
See all releases


Version 0.1.0

Files changed (35) hide show
  1. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Address.php +20 -0
  2. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Address/Edit.php +99 -0
  3. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Address/Edit/Form.php +14 -0
  4. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Address/Edit/Tab/Main.php +308 -0
  5. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Address/Edit/Tab/Options.php +153 -0
  6. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Address/Edit/Tabs.php +42 -0
  7. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Address/Grid.php +106 -0
  8. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category.php +20 -0
  9. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Edit.php +91 -0
  10. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Edit/Form.php +15 -0
  11. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Edit/Tab/Front.php +73 -0
  12. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Edit/Tab/Main.php +267 -0
  13. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Edit/Tab/Options.php +153 -0
  14. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Edit/Tab/System.php +103 -0
  15. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Edit/Tabs.php +43 -0
  16. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Grid.php +102 -0
  17. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer.php +20 -0
  18. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Edit.php +91 -0
  19. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Edit/Form.php +15 -0
  20. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Edit/Tab/Front.php +73 -0
  21. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Edit/Tab/Main.php +274 -0
  22. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Edit/Tab/Options.php +153 -0
  23. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Edit/Tab/System.php +103 -0
  24. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Edit/Tabs.php +43 -0
  25. app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Grid.php +107 -0
  26. app/code/local/Hwg/Attributemanager/Helper/Data.php +141 -0
  27. app/code/local/Hwg/Attributemanager/Model/Attributemanager.php +50 -0
  28. app/code/local/Hwg/Attributemanager/controllers/Adminhtml/AddressController.php +201 -0
  29. app/code/local/Hwg/Attributemanager/controllers/Adminhtml/CategoryController.php +200 -0
  30. app/code/local/Hwg/Attributemanager/controllers/Adminhtml/CustomerController.php +197 -0
  31. app/code/local/Hwg/Attributemanager/controllers/Adminhtml/IndexController.php +264 -0
  32. app/code/local/Hwg/Attributemanager/etc/config.xml +87 -0
  33. app/design/adminhtml/default/default/layout/attributemanager.xml +20 -0
  34. app/etc/modules/Hwg_Attributemanager.xml +9 -0
  35. package.xml +18 -0
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Address.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Address extends Mage_Adminhtml_Block_Widget_Grid_Container
3
+ {
4
+ public function __construct()
5
+ {
6
+ $this->_controller = 'adminhtml_address';
7
+ $this->_blockGroup = 'attributemanager';
8
+ $this->_headerText = Mage::helper('attributemanager')->__('Manage Customer Address Attribute');
9
+ $this->_addButtonLabel = Mage::helper('attributemanager')->__('Add New Attribute');
10
+ parent::__construct();
11
+
12
+ $this->_addButton('add', array(
13
+ 'label' => $this->getAddButtonLabel(),
14
+ 'onclick' => 'setLocation(\''.$this->getUrl('*/*/new', array('type' => 'customer_address','attribute_id'=>0)).'\')',
15
+ 'class' => 'add',
16
+ ));
17
+ }
18
+ }
19
+
20
+ ?>
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Address/Edit.php ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Address_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
3
+ {
4
+ protected function _prepareLayout()
5
+ {
6
+ $this->setChild('form', $this->getLayout()->createBlock($this->_blockGroup . '/' . $this->_mode . '_form'));
7
+ return parent::_prepareLayout();
8
+ }
9
+
10
+ public function __construct()
11
+ {
12
+ $this->_objectId = 'attribute_id';
13
+ $this->_controller = 'adminhtml_address';
14
+ $this->_blockGroup = 'attributemanager';
15
+
16
+ parent::__construct();
17
+
18
+ if($this->getRequest()->getParam('popup')) {
19
+ $this->_removeButton('back');
20
+ $this->_addButton(
21
+ 'close',
22
+ array(
23
+ 'label' => Mage::helper('catalog')->__('Close Window'),
24
+ 'class' => 'cancel',
25
+ 'onclick' => 'window.close()',
26
+ 'level' => -1
27
+ )
28
+ );
29
+ }
30
+
31
+ $this->_updateButton('back', 'onclick', "setLocation('".$this->getUrl('*/*/address')."')");
32
+
33
+ $this->_updateButton('save', 'label', Mage::helper('catalog')->__('Save Attribute'));
34
+ $this->_addButton(
35
+ 'save_and_edit_button',
36
+ array(
37
+ 'label' => Mage::helper('catalog')->__('Save And Continue Edit'),
38
+ 'onclick' => 'saveAndContinueEdit()',
39
+ 'class' => 'save'
40
+ ),
41
+ 100
42
+ );
43
+ $this->_formScripts[] = "
44
+ function toggleEditor() {
45
+ if (tinyMCE.getInstanceById('company_content') == null) {
46
+ tinyMCE.execCommand('mceAddControl', false, 'company_content');
47
+ } else {
48
+ tinyMCE.execCommand('mceRemoveControl', false, 'company_content');
49
+ }
50
+ }
51
+
52
+ function saveAndContinueEdit(){
53
+ editForm.submit($('edit_form').action+'back/edit/');
54
+ }
55
+ ";
56
+ if (! Mage::registry('attributemanager_data')->getIsUserDefined()) {
57
+ $this->_removeButton('delete');
58
+ } else {
59
+ $this->_updateButton('delete', 'label', Mage::helper('catalog')->__('Delete Attribute'));
60
+ $this->_updateButton('delete', 'onclick', "deleteConfirm(
61
+ '".Mage::helper('adminhtml')->__('Are you sure you want to do this?')."',
62
+ '".$this->getUrl('*/*/delete/type/'.$this->getRequest()->getParam('type').'/attribute_id/'.$this->getRequest()->getParam('attribute_id')
63
+ )."')");
64
+ }
65
+ }
66
+
67
+ public function getHeaderText()
68
+ {
69
+ switch ($this->getRequest()->getParam('type')){
70
+ case 'catalog_category':
71
+ $type="Category";
72
+ break;
73
+ case 'customer':
74
+ $type="Customer";
75
+ break;
76
+ case 'customer_address':
77
+ $type="Customer address";
78
+ break;
79
+ }
80
+
81
+ if (Mage::registry('attributemanager_data')->getId()) {
82
+ return Mage::helper('attributemanager')->__('Edit %s Attribute "%s"', $type, $this->htmlEscape(Mage::registry('attributemanager_data')->getFrontendLabel()));
83
+ }
84
+ else {
85
+ return Mage::helper('attributemanager')->__('New %s Attribute', $type);
86
+ }
87
+
88
+ }
89
+
90
+ public function getValidationUrl()
91
+ {
92
+ return $this->getUrl('*/*/validate', array('_current'=>true));
93
+ }
94
+
95
+ public function getSaveUrl()
96
+ {
97
+ return $this->getUrl('*/*/save', array('_current'=>true, 'back'=>null));
98
+ }
99
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Address/Edit/Form.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Address_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
3
+ {
4
+
5
+ protected function _prepareForm()
6
+ {
7
+ $form = new Varien_Data_Form(array('id' => 'edit_form', 'action' => $this->getData('action'), 'method' => 'post'));
8
+
9
+ $form->setUseContainer(true);
10
+ $this->setForm($form);
11
+ return parent::_prepareForm();
12
+ }
13
+
14
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Address/Edit/Tab/Main.php ADDED
@@ -0,0 +1,308 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Address_Edit_Tab_Main extends Mage_Adminhtml_Block_Widget_Form
3
+ {
4
+
5
+ protected function _prepareForm()
6
+ {
7
+ $model = Mage::registry('attributemanager_data');
8
+
9
+ $form = new Varien_Data_Form(array(
10
+ 'id' => 'edit_form',
11
+ 'action' => $this->getData('action'),
12
+ 'method' => 'post'
13
+ ));
14
+
15
+ $fieldset = $form->addFieldset('base_fieldset',
16
+ array('legend'=>Mage::helper('catalog')->__('Attribute Properties'))
17
+ );
18
+ if ($model->getId()) {
19
+ $fieldset->addField('attribute_id', 'hidden', array(
20
+ 'name' => 'attribute_id',
21
+ ));
22
+ }
23
+
24
+ $this->_addElementTypes($fieldset);
25
+
26
+ $yesno = array(
27
+ array(
28
+ 'value' => 0,
29
+ 'label' => Mage::helper('catalog')->__('No')
30
+ ),
31
+ array(
32
+ 'value' => 1,
33
+ 'label' => Mage::helper('catalog')->__('Yes')
34
+ ));
35
+
36
+ $fieldset->addField('attribute_code', 'text', array(
37
+ 'name' => 'attribute_code',
38
+ 'label' => Mage::helper('catalog')->__('Attribute Code'),
39
+ 'title' => Mage::helper('catalog')->__('Attribute Code'),
40
+ 'note' => Mage::helper('catalog')->__('For internal use. Must be unique with no spaces'),
41
+ 'class' => 'validate-code',
42
+ 'required' => true,
43
+ ));
44
+
45
+ $scopes = array(
46
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE =>Mage::helper('catalog')->__('Store View'),
47
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE =>Mage::helper('catalog')->__('Website'),
48
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL =>Mage::helper('catalog')->__('Global'),
49
+ );
50
+
51
+ if ($model->getAttributeCode() == 'status' || $model->getAttributeCode() == 'tax_class_id') {
52
+ unset($scopes[Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE]);
53
+ }
54
+
55
+ $fieldset->addField('is_global', 'select', array(
56
+ 'name' => 'is_global',
57
+ 'label' => Mage::helper('catalog')->__('Scope'),
58
+ 'title' => Mage::helper('catalog')->__('Scope'),
59
+ 'note' => Mage::helper('catalog')->__('Declare attribute value saving scope'),
60
+ 'values'=> $scopes
61
+ ));
62
+
63
+ $inputTypes = array(
64
+ array(
65
+ 'value' => 'text',
66
+ 'label' => Mage::helper('catalog')->__('Text Field')
67
+ ),
68
+ array(
69
+ 'value' => 'textarea',
70
+ 'label' => Mage::helper('catalog')->__('Text Area')
71
+ ),
72
+ array(
73
+ 'value' => 'date',
74
+ 'label' => Mage::helper('catalog')->__('Date')
75
+ ),
76
+ array(
77
+ 'value' => 'boolean',
78
+ 'label' => Mage::helper('catalog')->__('Yes/No')
79
+ ),
80
+ array(
81
+ 'value' => 'multiselect',
82
+ 'label' => Mage::helper('catalog')->__('Multiple Select')
83
+ ),
84
+ array(
85
+ 'value' => 'select',
86
+ 'label' => Mage::helper('catalog')->__('Dropdown')
87
+ ),
88
+ );
89
+
90
+
91
+ $response = new Varien_Object();
92
+ $response->setTypes(array());
93
+ //Mage::dispatchEvent('adminhtml_product_attribute_types', array('response'=>$response));
94
+
95
+ $_disabledTypes = array();
96
+ $_hiddenFields = array();
97
+ foreach ($response->getTypes() as $type) {
98
+ $inputTypes[] = $type;
99
+ if (isset($type['hide_fields'])) {
100
+ $_hiddenFields[$type['value']] = $type['hide_fields'];
101
+ }
102
+ if (isset($type['disabled_types'])) {
103
+ $_disabledTypes[$type['value']] = $type['disabled_types'];
104
+ }
105
+ }
106
+ Mage::register('attribute_type_hidden_fields', $_hiddenFields);
107
+ Mage::register('attribute_type_disabled_types', $_disabledTypes);
108
+
109
+
110
+ $fieldset->addField('frontend_input', 'select', array(
111
+ 'name' => 'frontend_input',
112
+ 'label' => Mage::helper('catalog')->__('Catalog Input Type for Store Owner'),
113
+ 'title' => Mage::helper('catalog')->__('Catalog Input Type for Store Owner'),
114
+ 'value' => 'text',
115
+ 'values'=> $inputTypes
116
+ ));
117
+ /****** champs cach�s dans le formulaire **********/
118
+ $fieldset->addField('entity_type_id', 'hidden', array(
119
+ 'name' => 'entity_type_id',
120
+ 'value' => Mage::getModel('eav/entity')->setType($this->getRequest ()->getParam ( 'type' ))->getTypeId()
121
+ ));
122
+
123
+
124
+
125
+ $fieldset->addField('is_user_defined', 'hidden', array(
126
+ 'name' => 'is_user_defined',
127
+ 'value' => 1
128
+ ));
129
+
130
+ $fieldset->addField('attribute_set_id', 'hidden', array(
131
+ 'name' => 'attribute_set_id',
132
+ 'value' => Mage::getModel('eav/entity')->setType($this->getRequest ()->getParam ( 'type' ))->getTypeId()
133
+ ));
134
+
135
+ $fieldset->addField('attribute_group_id', 'hidden', array(
136
+ 'name' => 'attribute_group_id',
137
+ 'value' => Mage::getModel('eav/entity')->setType($this->getRequest ()->getParam ( 'type' ))->getTypeId()
138
+ ));
139
+
140
+
141
+ /*******************************************************/
142
+ $fieldset->addField('is_unique', 'select', array(
143
+ 'name' => 'is_unique',
144
+ 'label' => Mage::helper('catalog')->__('Unique Value'),
145
+ 'title' => Mage::helper('catalog')->__('Unique Value (not shared with other products)'),
146
+ 'note' => Mage::helper('catalog')->__('Not shared with other products'),
147
+ 'values' => $yesno,
148
+ ));
149
+
150
+ $fieldset->addField('is_required', 'select', array(
151
+ 'name' => 'is_required',
152
+ 'label' => Mage::helper('catalog')->__('Values Required'),
153
+ 'title' => Mage::helper('catalog')->__('Values Required'),
154
+ 'values' => $yesno,
155
+ ));
156
+ $fieldset->addField('is_visible', 'select', array(
157
+ 'name' => 'is_visible',
158
+ 'label' => Mage::helper('catalog')->__('Is Visible'),
159
+ 'title' => Mage::helper('catalog')->__('Is Visible'),
160
+ 'values' => $yesno,
161
+ ));
162
+ $fieldset->addField('frontend_class', 'select', array(
163
+ 'name' => 'frontend_class',
164
+ 'label' => Mage::helper('catalog')->__('Input Validation for Store Owner'),
165
+ 'title' => Mage::helper('catalog')->__('Input Validation for Store Owner'),
166
+ 'values'=> array(
167
+ array(
168
+ 'value' => '',
169
+ 'label' => Mage::helper('catalog')->__('None')
170
+ ),
171
+ array(
172
+ 'value' => 'validate-number',
173
+ 'label' => Mage::helper('catalog')->__('Decimal Number')
174
+ ),
175
+ array(
176
+ 'value' => 'validate-digits',
177
+ 'label' => Mage::helper('catalog')->__('Integer Number')
178
+ ),
179
+ array(
180
+ 'value' => 'validate-email',
181
+ 'label' => Mage::helper('catalog')->__('Email')
182
+ ),
183
+ array(
184
+ 'value' => 'validate-url',
185
+ 'label' => Mage::helper('catalog')->__('Url')
186
+ ),
187
+ array(
188
+ 'value' => 'validate-alpha',
189
+ 'label' => Mage::helper('catalog')->__('Letters')
190
+ ),
191
+ array(
192
+ 'value' => 'validate-alphanum',
193
+ 'label' => Mage::helper('catalog')->__('Letters(a-zA-Z) or Numbers(0-9)')
194
+ ),
195
+ )
196
+ ));
197
+
198
+ // -----
199
+
200
+
201
+ // frontend properties fieldset
202
+ $fieldset = $form->addFieldset('front_fieldset',
203
+ array('legend'=>Mage::helper('catalog')->__('Frontend Properties')));
204
+
205
+
206
+
207
+ /* $fieldset->addField('position', 'text', array(
208
+ 'name' => 'position',
209
+ 'label' => Mage::helper('catalog')->__('Position'),
210
+ 'title' => Mage::helper('catalog')->__('Position In Layered Navigation'),
211
+ 'note' => Mage::helper('catalog')->__('Position of attribute in layered navigation block'),
212
+ 'class' => 'validate-digits',
213
+ ));*/
214
+ if($model->getId())
215
+ {
216
+ $write = Mage::getSingleton('core/resource')->getConnection('core_write');
217
+ $readresult=$write->query("SELECT * from customer_form_attribute WHERE attribute_id=".$model->getId());
218
+ while ($row = $readresult->fetch() ) {
219
+ $customerForm[$row['form_code']] = 'checked';
220
+ }
221
+ }
222
+ /*$fieldset->addField('adminhtml_customer', 'checkbox', array(
223
+ 'name' => 'customer_form[]',
224
+ 'label' => Mage::helper('catalog')->__('Adminhtml Customer'),
225
+ 'value' => 'adminhtml_customer',
226
+ 'checked' => isset($customerForm['adminhtml_customer'])?$customerForm['adminhtml_customer']:'',
227
+ ));*/
228
+ $fieldset->addField('customer_account_edit', 'checkbox', array(
229
+ 'name' => 'customer_form[]',
230
+ 'label' => Mage::helper('catalog')->__('Customer Account Edit'),
231
+ 'value' => 'customer_account_edit',
232
+ 'checked' => isset($customerForm['customer_account_edit'])?$customerForm['customer_account_edit']:'',
233
+ ));
234
+ $fieldset->addField('adminhtml_customer_address', 'checkbox', array(
235
+ 'name' => 'customer_form[]',
236
+ 'label' => Mage::helper('catalog')->__('Adminhtml Customer Address'),
237
+ 'value' => 'adminhtml_customer_address',
238
+ 'checked' => isset($customerForm['adminhtml_customer_address'])?$customerForm['adminhtml_customer_address']:'',
239
+ ));
240
+ $fieldset->addField('checkout_register', 'checkbox', array(
241
+ 'name' => 'customer_form[]',
242
+ 'label' => Mage::helper('catalog')->__('Checkout Register'),
243
+ 'value' => 'checkout_register',
244
+ 'checked' => isset($customerForm['checkout_register'])?$customerForm['checkout_register']:'',
245
+ ));
246
+ $fieldset->addField('customer_account_create', 'checkbox', array(
247
+ 'name' => 'customer_form[]',
248
+ 'label' => Mage::helper('catalog')->__('Customer Account Create'),
249
+ 'value' => 'customer_account_create',
250
+ 'checked' => isset($customerForm['customer_account_create'])?$customerForm['customer_account_create']:'',
251
+ ));
252
+ $fieldset->addField('customer_register_address', 'checkbox', array(
253
+ 'name' => 'customer_form[]',
254
+ 'label' => Mage::helper('catalog')->__('Customer Register Address'),
255
+ 'value' => 'customer_register_address',
256
+ 'checked' => isset($customerForm['customer_register_address'])?$customerForm['customer_register_address']:'',
257
+ ));
258
+ $fieldset->addField('customer_address_edit', 'checkbox', array(
259
+ 'name' => 'customer_form[]',
260
+ 'label' => Mage::helper('catalog')->__('Customer Address Edit'),
261
+ 'value' => 'customer_address_edit',
262
+ 'checked' => isset($customerForm['customer_address_edit'])?$customerForm['customer_address_edit']:'',
263
+ ));
264
+
265
+ $fieldset->addField('sort_order', 'text', array(
266
+ 'name' => 'sort_order',
267
+ 'label' => Mage::helper('catalog')->__('Sort Order'),
268
+ 'title' => Mage::helper('catalog')->__('Order in form'),
269
+ //'note' => Mage::helper('catalog')->__('order of attribute in form edit/create. Leave blank for form bottom.'),
270
+ 'class' => 'validate-digits',
271
+ 'value' => $model->getAttributeSetInfo()
272
+ ));
273
+
274
+ if ($model->getId())
275
+ {
276
+ $form->getElement('attribute_code')->setDisabled(1);
277
+ $form->getElement('frontend_input')->setDisabled(1);
278
+
279
+ if (isset($disableAttributeFields[$model->getAttributeCode()]))
280
+ {
281
+ foreach ($disableAttributeFields[$model->getAttributeCode()] as $field)
282
+ {
283
+ $form->getElement($field)->setDisabled(1);
284
+ }
285
+ }
286
+ }
287
+ /* if (!$model->getIsUserDefined() && $model->getId()) {
288
+ $form->getElement('is_unique')->setDisabled(1);
289
+ }
290
+ */
291
+ //var_dump($model->getData());exit;
292
+ $form->addValues($model->getData());
293
+
294
+
295
+
296
+ $this->setForm($form);
297
+
298
+ return parent::_prepareForm();
299
+ }
300
+
301
+ protected function _getAdditionalElementTypes()
302
+ {
303
+ return array(
304
+ 'apply' => Mage::getConfig()->getBlockClassName('adminhtml/catalog_product_helper_form_apply')
305
+ );
306
+ }
307
+
308
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Address/Edit/Tab/Options.php ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Address_Edit_Tab_Options extends Mage_Adminhtml_Block_Widget
3
+ {
4
+
5
+ public function __construct()
6
+ {
7
+ parent::__construct();
8
+ $this->setTemplate('attributemanager/options.phtml');
9
+ }
10
+
11
+ protected function _prepareLayout()
12
+ {
13
+ $this->setChild('delete_button',
14
+ $this->getLayout()->createBlock('adminhtml/widget_button')
15
+ ->setData(array(
16
+ 'label' => Mage::helper('catalog')->__('Delete'),
17
+ 'class' => 'delete delete-option'
18
+ )));
19
+
20
+ $this->setChild('add_button',
21
+ $this->getLayout()->createBlock('adminhtml/widget_button')
22
+ ->setData(array(
23
+ 'label' => Mage::helper('catalog')->__('Add Option'),
24
+ 'class' => 'add',
25
+ 'id' => 'add_new_option_button'
26
+ )));
27
+ return parent::_prepareLayout();
28
+ }
29
+
30
+ public function getDeleteButtonHtml()
31
+ {
32
+ return $this->getChildHtml('delete_button');
33
+ }
34
+
35
+ public function getAddNewButtonHtml()
36
+ {
37
+ return $this->getChildHtml('add_button');
38
+ }
39
+
40
+ public function getStores()
41
+ {
42
+ $stores = $this->getData('stores');
43
+ if (is_null($stores)) {
44
+ $stores = Mage::getModel('core/store')
45
+ ->getResourceCollection()
46
+ ->setLoadDefault(true)
47
+ ->load();
48
+ $this->setData('stores', $stores);
49
+ }
50
+ return $stores;
51
+ }
52
+
53
+ public function getOptionValues()
54
+ {
55
+ $attributeType = $this->getAttributeObject()->getFrontendInput();
56
+ $defaultValues = $this->getAttributeObject()->getDefaultValue();
57
+ if ($attributeType == 'select' || $attributeType == 'multiselect') {
58
+ $defaultValues = explode(',', $defaultValues);
59
+ } else {
60
+ $defaultValues = array();
61
+ }
62
+
63
+ switch ($attributeType) {
64
+ case 'select':
65
+ $inputType = 'radio';
66
+ break;
67
+ case 'multiselect':
68
+ $inputType = 'checkbox';
69
+ break;
70
+ default:
71
+ $inputType = '';
72
+ break;
73
+ }
74
+
75
+ $values = $this->getData('option_values');
76
+ if (is_null($values)) {
77
+ $values = array();
78
+ $optionCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
79
+ ->setAttributeFilter($this->getAttributeObject()->getId())
80
+ ->setPositionOrder('desc', true)
81
+ ->load();
82
+
83
+ foreach ($optionCollection as $option) {
84
+ $value = array();
85
+ if (in_array($option->getId(), $defaultValues)) {
86
+ $value['checked'] = 'checked="checked"';
87
+ } else {
88
+ $value['checked'] = '';
89
+ }
90
+
91
+ $value['intype'] = $inputType;
92
+ $value['id'] = $option->getId();
93
+ $value['sort_order'] = $option->getSortOrder();
94
+ foreach ($this->getStores() as $store) {
95
+ $storeValues = $this->getStoreOptionValues($store->getId());
96
+ if (isset($storeValues[$option->getId()])) {
97
+ $value['store'.$store->getId()] = htmlspecialchars($storeValues[$option->getId()]);
98
+ }
99
+ else {
100
+ $value['store'.$store->getId()] = '';
101
+ }
102
+ }
103
+ $values[] = new Varien_Object($value);
104
+ }
105
+ $this->setData('option_values', $values);
106
+ }
107
+
108
+ return $values;
109
+ }
110
+
111
+ public function getLabelValues()
112
+ {
113
+ $values = array();
114
+ $values[0] = $this->getAttributeObject()->getFrontend()->getLabel();
115
+ // it can be array and cause bug
116
+ $frontendLabel = $this->getAttributeObject()->getFrontend()->getLabel();
117
+ if (is_array($frontendLabel)) {
118
+ $frontendLabel = array_shift($frontendLabel);
119
+ }
120
+ $translations = Mage::getModel('core/translate_string')
121
+ ->load(Mage_Catalog_Model_Entity_Attribute::MODULE_NAME.Mage_Core_Model_Translate::SCOPE_SEPARATOR.$frontendLabel)
122
+ ->getStoreTranslations();
123
+ foreach ($this->getStores() as $store) {
124
+ if ($store->getId() != 0) {
125
+ $values[$store->getId()] = isset($translations[$store->getId()]) ? $translations[$store->getId()] : '';
126
+ }
127
+ }
128
+ return $values;
129
+ }
130
+
131
+ public function getStoreOptionValues($storeId)
132
+ {
133
+ $values = $this->getData('store_option_values_'.$storeId);
134
+ if (is_null($values)) {
135
+ $values = array();
136
+ $valuesCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
137
+ ->setAttributeFilter($this->getAttributeObject()->getId())
138
+ ->setStoreFilter($storeId, false)
139
+ ->load();
140
+ foreach ($valuesCollection as $item) {
141
+ $values[$item->getId()] = $item->getValue();
142
+ }
143
+ $this->setData('store_option_values_'.$storeId, $values);
144
+ }
145
+ return $values;
146
+ }
147
+
148
+ public function getAttributeObject()
149
+ {
150
+ return Mage::registry('attributemanager_data');
151
+ }
152
+
153
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Address/Edit/Tabs.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Address_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs
3
+ {
4
+
5
+ public function __construct()
6
+ {
7
+ parent::__construct();
8
+ $this->setId('attributemanager_tabs');
9
+ $this->setDestElementId('edit_form');
10
+ $this->setTitle(Mage::helper('catalog')->__('Attribute Information'));
11
+ }
12
+
13
+ protected function _beforeToHtml()
14
+ {
15
+ $model = Mage::registry('attributemanager_data');
16
+
17
+ $this->addTab('main', array(
18
+ 'label' => Mage::helper('catalog')->__('Properties'),
19
+ 'title' => Mage::helper('catalog')->__('Properties'),
20
+ 'content' => $this->getLayout()->createBlock('attributemanager/adminhtml_address_edit_tab_main')->toHtml(),
21
+ 'active' => true
22
+ ));
23
+
24
+
25
+ $this->addTab('labels', array(
26
+ 'label' => Mage::helper('catalog')->__('Manage Label / Options'),
27
+ 'title' => Mage::helper('catalog')->__('Manage Label / Options'),
28
+ 'content' => $this->getLayout()->createBlock('attributemanager/adminhtml_address_edit_tab_options')->toHtml(),
29
+ ));
30
+
31
+ /*if ('select' == $model->getFrontendInput()) {
32
+ $this->addTab('options_section', array(
33
+ 'label' => Mage::helper('catalog')->__('Options Control'),
34
+ 'title' => Mage::helper('catalog')->__('Options Control'),
35
+ 'content' => $this->getLayout()->createBlock('attributemanager/edit_tab_options')->toHtml(),
36
+ ));
37
+ }*/
38
+
39
+ return parent::_beforeToHtml();
40
+ }
41
+
42
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Address/Grid.php ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Address_Grid extends Mage_Adminhtml_Block_Widget_Grid
3
+ {
4
+ public function __construct()
5
+ {
6
+ parent::__construct();
7
+ $this->setId('attributemanagergrid');
8
+ $this->setDefaultSort('attribute_code');
9
+ $this->setDefaultDir('ASC');
10
+ $this->setSaveParametersInSession(true);
11
+ }
12
+
13
+ protected function _prepareCollection()
14
+ {
15
+ $type='customer_address';
16
+ $block='address';
17
+ $this->type =$type;
18
+ $this->block =$block;
19
+ $this->type=$type;
20
+
21
+ $collection = Mage::getResourceModel('eav/entity_attribute_collection')
22
+ ->setEntityTypeFilter( Mage::getModel('eav/entity')->setType($type)->getTypeId() )
23
+ ->addFieldToFilter("is_user_defined", 1);
24
+
25
+ $this->setCollection($collection);
26
+ return parent::_prepareCollection();
27
+
28
+ }
29
+
30
+ protected function _prepareColumns()
31
+ {
32
+ $this->addColumn('attribute_code', array(
33
+ 'header'=>Mage::helper('catalog')->__('Attribute Code'),
34
+ 'sortable'=>true,
35
+ 'index'=>'attribute_code'
36
+ ));
37
+
38
+ $this->addColumn('frontend_label', array(
39
+ 'header'=>Mage::helper('catalog')->__('Attribute Label'),
40
+ 'sortable'=>true,
41
+ 'index'=>'frontend_label'
42
+ ));
43
+
44
+ $this->addColumn('is_visible', array(
45
+ 'header'=>Mage::helper('catalog')->__('Visible'),
46
+ 'sortable'=>true,
47
+ 'index'=>'is_visible_on_front',
48
+ 'type' => 'options',
49
+ 'options' => array(
50
+ '1' => Mage::helper('catalog')->__('Yes'),
51
+ '0' => Mage::helper('catalog')->__('No'),
52
+ ),
53
+ 'align' => 'center',
54
+ ));
55
+
56
+ $this->addColumn('is_global', array(
57
+ 'header'=>Mage::helper('catalog')->__('Scope'),
58
+ 'sortable'=>true,
59
+ 'index'=>'is_global',
60
+ 'type' => 'options',
61
+ 'options' => array(
62
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE =>Mage::helper('catalog')->__('Store View'),
63
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE =>Mage::helper('catalog')->__('Website'),
64
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL =>Mage::helper('catalog')->__('Global'),
65
+ ),
66
+ 'align' => 'center',
67
+ ));
68
+
69
+ $this->addColumn('is_required', array(
70
+ 'header'=>Mage::helper('catalog')->__('Required'),
71
+ 'sortable'=>true,
72
+ 'index'=>'is_required',
73
+ 'type' => 'options',
74
+ 'options' => array(
75
+ '1' => Mage::helper('catalog')->__('Yes'),
76
+ '0' => Mage::helper('catalog')->__('No'),
77
+ ),
78
+ 'align' => 'center',
79
+ ));
80
+
81
+ $this->addColumn('is_user_defined', array(
82
+ 'header'=>Mage::helper('catalog')->__('System'),
83
+ 'sortable'=>true,
84
+ 'index'=>'is_user_defined',
85
+ 'type' => 'options',
86
+ 'align' => 'center',
87
+ 'options' => array(
88
+ '0' => Mage::helper('catalog')->__('Yes'), // intended reverted use
89
+ '1' => Mage::helper('catalog')->__('No'), // intended reverted use
90
+ ),
91
+ ));
92
+
93
+ $this->addExportType('*/*/exportCsv'.$this->_block, Mage::helper('attributemanager')->__('CSV'));
94
+ $this->addExportType('*/*/exportXml'.$this->_block, Mage::helper('attributemanager')->__('XML'));
95
+
96
+ return parent::_prepareColumns();
97
+ }
98
+
99
+ public function getRowUrl($row)
100
+ {
101
+ return $this->getUrl('*/*/edit', array('type' => $this->type,'attribute_id' => $row->getAttributeId()));
102
+ }
103
+
104
+ }
105
+
106
+ ?>
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Category extends Mage_Adminhtml_Block_Widget_Grid_Container
3
+ {
4
+ public function __construct()
5
+ {
6
+ $this->_controller = 'adminhtml_category';
7
+ $this->_blockGroup = 'attributemanager';
8
+ $this->_headerText = Mage::helper('attributemanager')->__('Manage Category Attribute');
9
+ $this->_addButtonLabel = Mage::helper('attributemanager')->__('Add New Attribute');
10
+ parent::__construct();
11
+
12
+ $this->_addButton('add', array(
13
+ 'label' => $this->getAddButtonLabel(),
14
+ 'onclick' => 'setLocation(\''.$this->getUrl('*/*/new', array('type' => 'catalog_category','attribute_id'=>0)).'\')',
15
+ 'class' => 'add',
16
+ ));
17
+ }
18
+ }
19
+
20
+ ?>
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Edit.php ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Category_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
3
+ {
4
+
5
+ protected function _prepareLayout()
6
+ {
7
+
8
+ $this->setChild('form', $this->getLayout()->createBlock($this->_blockGroup . '/' . $this->_mode . '_form'));
9
+ return parent::_prepareLayout();
10
+ }
11
+
12
+ public function __construct()
13
+ {
14
+
15
+ $this->_objectId = 'attribute_id';
16
+ $this->_controller = 'adminhtml_category';
17
+ $this->_blockGroup = 'attributemanager';
18
+
19
+ parent::__construct();
20
+
21
+ if($this->getRequest()->getParam('popup')) {
22
+ $this->_removeButton('back');
23
+ $this->_addButton(
24
+ 'close',
25
+ array(
26
+ 'label' => Mage::helper('catalog')->__('Close Window'),
27
+ 'class' => 'cancel',
28
+ 'onclick' => 'window.close()',
29
+ 'level' => -1
30
+ )
31
+ );
32
+ }
33
+
34
+ $this->_updateButton('back', 'onclick', "setLocation('".$this->getUrl('*/*/category')."')");
35
+
36
+ $this->_updateButton('save', 'label', Mage::helper('catalog')->__('Save Attribute'));
37
+ $this->_addButton(
38
+ 'save_and_edit_button',
39
+ array(
40
+ 'label' => Mage::helper('catalog')->__('Save And Continue Edit'),
41
+ 'onclick' => 'saveAndContinueEdit()',
42
+ 'class' => 'save'
43
+ ),
44
+ 100
45
+ );
46
+ $this->_formScripts[] = "
47
+ function toggleEditor() {
48
+ if (tinyMCE.getInstanceById('company_content') == null) {
49
+ tinyMCE.execCommand('mceAddControl', false, 'company_content');
50
+ } else {
51
+ tinyMCE.execCommand('mceRemoveControl', false, 'company_content');
52
+ }
53
+ }
54
+
55
+ function saveAndContinueEdit(){
56
+ editForm.submit($('edit_form').action+'back/edit/');
57
+ }
58
+ ";
59
+ if (! Mage::registry('attributemanager_data')->getIsUserDefined()) {
60
+ $this->_removeButton('delete');
61
+ } else {
62
+ $this->_updateButton('delete', 'label', Mage::helper('catalog')->__('Delete Attribute'));
63
+ $this->_updateButton('delete', 'onclick', "deleteConfirm(
64
+ '".Mage::helper('adminhtml')->__('Are you sure you want to do this?')."',
65
+ '".$this->getUrl('*/*/delete/type/catalog_category/attribute_id/'.$this->getRequest()->getParam('attribute_id')
66
+ )."')");
67
+ }
68
+ }
69
+
70
+ public function getHeaderText()
71
+ {
72
+ $type="Category";
73
+ if (Mage::registry('attributemanager_data')->getId()) {
74
+ return Mage::helper('attributemanager')->__('Edit %s Attribute "%s"', $type, $this->htmlEscape(Mage::registry('attributemanager_data')->getFrontendLabel()));
75
+ }
76
+ else {
77
+ return Mage::helper('attributemanager')->__('New %s Attribute', $type);
78
+ }
79
+
80
+ }
81
+
82
+ public function getValidationUrl()
83
+ {
84
+ return $this->getUrl('*/*/validate', array('_current'=>true));
85
+ }
86
+
87
+ public function getSaveUrl()
88
+ {
89
+ return $this->getUrl('*/*/save', array('_current'=>true, 'back'=>null));
90
+ }
91
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Edit/Form.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Hwg_Attributemanager_Block_Adminhtml_Category_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
4
+ {
5
+
6
+ protected function _prepareForm()
7
+ {
8
+ $form = new Varien_Data_Form(array('id' => 'edit_form', 'action' => $this->getData('action'), 'method' => 'post'));
9
+
10
+ $form->setUseContainer(true);
11
+ $this->setForm($form);
12
+ return parent::_prepareForm();
13
+ }
14
+
15
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Edit/Tab/Front.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Category_Edit_Tab_Front extends Mage_Adminhtml_Block_Widget_Form
3
+ {
4
+
5
+ protected function _prepareForm()
6
+ {
7
+ $model = Mage::registry('attributemanager_data');
8
+
9
+ $form = new Varien_Data_Form(array('id' => 'edit_form', 'action' => $this->getData('action'), 'method' => 'post'));
10
+
11
+ $fieldset = $form->addFieldset('base_fieldset', array('legend'=>Mage::helper('catalog')->__('Frontend Properties')));
12
+
13
+ $yesno = array(
14
+ array(
15
+ 'value' => 0,
16
+ 'label' => Mage::helper('catalog')->__('No')
17
+ ),
18
+ array(
19
+ 'value' => 1,
20
+ 'label' => Mage::helper('catalog')->__('Yes')
21
+ ));
22
+
23
+
24
+ $fieldset->addField('is_searchable', 'select', array(
25
+ 'name' => 'is_searchable',
26
+ 'label' => Mage::helper('catalog')->__('Use in quick search'),
27
+ 'title' => Mage::helper('catalog')->__('Use in quick search'),
28
+ 'values' => $yesno,
29
+ ));
30
+
31
+ $fieldset->addField('is_visible_in_advanced_search', 'select', array(
32
+ 'name' => 'is_visible_in_advanced_search',
33
+ 'label' => Mage::helper('catalog')->__('Use in advanced search'),
34
+ 'title' => Mage::helper('catalog')->__('Use in advanced search'),
35
+ 'values' => $yesno,
36
+ ));
37
+
38
+ $fieldset->addField('is_comparable', 'select', array(
39
+ 'name' => 'is_comparable',
40
+ 'label' => Mage::helper('catalog')->__('Comparable on Front-end'),
41
+ 'title' => Mage::helper('catalog')->__('Comparable on Front-end'),
42
+ 'values' => $yesno,
43
+ ));
44
+
45
+
46
+ $fieldset->addField('is_filterable', 'select', array(
47
+ 'name' => 'is_filterable',
48
+ 'label' => Mage::helper('catalog')->__("Use In Layered Navigation<br/>(Can be used only with catalog input type 'Dropdown')"),
49
+ 'title' => Mage::helper('catalog')->__('Can be used only with catalog input type Dropdown'),
50
+ 'values' => array(
51
+ array('value' => '0', 'label' => Mage::helper('catalog')->__('No')),
52
+ array('value' => '1', 'label' => Mage::helper('catalog')->__('Filterable (with results)')),
53
+ array('value' => '2', 'label' => Mage::helper('catalog')->__('Filterable (no results)')),
54
+ ),
55
+ ));
56
+
57
+ // if ($model->getIsUserDefined() || !$model->getId()) {
58
+ $fieldset->addField('is_visible_on_front', 'select', array(
59
+ 'name' => 'is_visible_on_front',
60
+ 'label' => Mage::helper('catalog')->__('Visible on Catalog Pages on Front-end'),
61
+ 'title' => Mage::helper('catalog')->__('Visible on Catalog Pages on Front-end'),
62
+ 'values' => $yesno,
63
+ ));
64
+ // }
65
+
66
+ $form->setValues($model->getData());
67
+
68
+ $this->setForm($form);
69
+
70
+ return parent::_prepareForm();
71
+ }
72
+
73
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Edit/Tab/Main.php ADDED
@@ -0,0 +1,267 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Hwg_Attributemanager_Block_Adminhtml_Category_Edit_Tab_Main extends Mage_Adminhtml_Block_Widget_Form
4
+ {
5
+
6
+ protected function _prepareForm()
7
+ {
8
+ $model = Mage::registry('attributemanager_data');
9
+
10
+ $form = new Varien_Data_Form(array(
11
+ 'id' => 'edit_form',
12
+ 'action' => $this->getData('action'),
13
+ 'method' => 'post'
14
+ ));
15
+
16
+ $fieldset = $form->addFieldset('base_fieldset',
17
+ array('legend'=>Mage::helper('catalog')->__('Attribute Properties'))
18
+ );
19
+ if ($model->getId()) {
20
+ $fieldset->addField('attribute_id', 'hidden', array(
21
+ 'name' => 'attribute_id',
22
+ ));
23
+ }
24
+
25
+ $this->_addElementTypes($fieldset);
26
+
27
+ $yesno = array(
28
+ array(
29
+ 'value' => 0,
30
+ 'label' => Mage::helper('catalog')->__('No')
31
+ ),
32
+ array(
33
+ 'value' => 1,
34
+ 'label' => Mage::helper('catalog')->__('Yes')
35
+ ));
36
+
37
+ $fieldset->addField('attribute_code', 'text', array(
38
+ 'name' => 'attribute_code',
39
+ 'label' => Mage::helper('catalog')->__('Attribute Code'),
40
+ 'title' => Mage::helper('catalog')->__('Attribute Code'),
41
+ 'note' => Mage::helper('catalog')->__('For internal use. Must be unique with no spaces'),
42
+ 'class' => 'validate-code',
43
+ 'required' => true,
44
+ ));
45
+
46
+ $scopes = array(
47
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE =>Mage::helper('catalog')->__('Store View'),
48
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE =>Mage::helper('catalog')->__('Website'),
49
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL =>Mage::helper('catalog')->__('Global'),
50
+ );
51
+
52
+ if ($model->getAttributeCode() == 'status' || $model->getAttributeCode() == 'tax_class_id') {
53
+ unset($scopes[Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE]);
54
+ }
55
+
56
+ $fieldset->addField('is_global', 'select', array(
57
+ 'name' => 'is_global',
58
+ 'label' => Mage::helper('catalog')->__('Scope'),
59
+ 'title' => Mage::helper('catalog')->__('Scope'),
60
+ 'note' => Mage::helper('catalog')->__('Declare attribute value saving scope'),
61
+ 'values'=> $scopes
62
+ ));
63
+
64
+ $inputTypes = array(
65
+ array(
66
+ 'value' => 'text',
67
+ 'label' => Mage::helper('catalog')->__('Text Field')
68
+ ),
69
+ array(
70
+ 'value' => 'textarea',
71
+ 'label' => Mage::helper('catalog')->__('Text Area')
72
+ ),
73
+ array(
74
+ 'value' => 'date',
75
+ 'label' => Mage::helper('catalog')->__('Date')
76
+ ),
77
+ array(
78
+ 'value' => 'boolean',
79
+ 'label' => Mage::helper('catalog')->__('Yes/No')
80
+ ),
81
+ array(
82
+ 'value' => 'multiselect',
83
+ 'label' => Mage::helper('catalog')->__('Multiple Select')
84
+ ),
85
+ array(
86
+ 'value' => 'select',
87
+ 'label' => Mage::helper('catalog')->__('Dropdown')
88
+ ),
89
+ );
90
+ if($this->getRequest ()->getParam ( 'type' )==="catalog_category"){
91
+ $inputTypes[]= array(
92
+ 'value' => 'image',
93
+ 'label' => Mage::helper('catalog')->__('Image')
94
+
95
+ );
96
+ }
97
+
98
+ $response = new Varien_Object();
99
+ $response->setTypes(array());
100
+ //Mage::dispatchEvent('adminhtml_product_attribute_types', array('response'=>$response));
101
+
102
+ $_disabledTypes = array();
103
+ $_hiddenFields = array();
104
+ foreach ($response->getTypes() as $type) {
105
+ $inputTypes[] = $type;
106
+ if (isset($type['hide_fields'])) {
107
+ $_hiddenFields[$type['value']] = $type['hide_fields'];
108
+ }
109
+ if (isset($type['disabled_types'])) {
110
+ $_disabledTypes[$type['value']] = $type['disabled_types'];
111
+ }
112
+ }
113
+ Mage::register('attribute_type_hidden_fields', $_hiddenFields);
114
+ Mage::register('attribute_type_disabled_types', $_disabledTypes);
115
+
116
+
117
+ $fieldset->addField('frontend_input', 'select', array(
118
+ 'name' => 'frontend_input',
119
+ 'label' => Mage::helper('catalog')->__('Catalog Input Type for Store Owner'),
120
+ 'title' => Mage::helper('catalog')->__('Catalog Input Type for Store Owner'),
121
+ 'value' => 'text',
122
+ 'values'=> $inputTypes
123
+ ));
124
+ /****** champs cach�s dans le formulaire **********/
125
+ $fieldset->addField('entity_type_id', 'hidden', array(
126
+ 'name' => 'entity_type_id',
127
+ 'value' => Mage::getModel('eav/entity')->setType($this->getRequest ()->getParam ( 'type' ))->getTypeId()
128
+ ));
129
+
130
+
131
+
132
+ $fieldset->addField('is_user_defined', 'hidden', array(
133
+ 'name' => 'is_user_defined',
134
+ 'value' => 1
135
+ ));
136
+
137
+ $fieldset->addField('attribute_set_id', 'hidden', array(
138
+ 'name' => 'attribute_set_id',
139
+ 'value' => Mage::getModel('eav/entity')->setType($this->getRequest ()->getParam ( 'type' ))->getTypeId()
140
+ ));
141
+
142
+ $fieldset->addField('attribute_group_id', 'hidden', array(
143
+ 'name' => 'attribute_group_id',
144
+ 'value' => Mage::getModel('eav/entity')->setType($this->getRequest ()->getParam ( 'type' ))->getTypeId()
145
+ ));
146
+
147
+
148
+ /*******************************************************/
149
+ $fieldset->addField('is_unique', 'select', array(
150
+ 'name' => 'is_unique',
151
+ 'label' => Mage::helper('catalog')->__('Unique Value'),
152
+ 'title' => Mage::helper('catalog')->__('Unique Value (not shared with other products)'),
153
+ 'note' => Mage::helper('catalog')->__('Not shared with other products'),
154
+ 'values' => $yesno,
155
+ ));
156
+
157
+ $fieldset->addField('is_required', 'select', array(
158
+ 'name' => 'is_required',
159
+ 'label' => Mage::helper('catalog')->__('Values Required'),
160
+ 'title' => Mage::helper('catalog')->__('Values Required'),
161
+ 'values' => $yesno,
162
+ ));
163
+
164
+ $fieldset->addField('frontend_class', 'select', array(
165
+ 'name' => 'frontend_class',
166
+ 'label' => Mage::helper('catalog')->__('Input Validation for Store Owner'),
167
+ 'title' => Mage::helper('catalog')->__('Input Validation for Store Owner'),
168
+ 'values'=> array(
169
+ array(
170
+ 'value' => '',
171
+ 'label' => Mage::helper('catalog')->__('None')
172
+ ),
173
+ array(
174
+ 'value' => 'validate-number',
175
+ 'label' => Mage::helper('catalog')->__('Decimal Number')
176
+ ),
177
+ array(
178
+ 'value' => 'validate-digits',
179
+ 'label' => Mage::helper('catalog')->__('Integer Number')
180
+ ),
181
+ array(
182
+ 'value' => 'validate-email',
183
+ 'label' => Mage::helper('catalog')->__('Email')
184
+ ),
185
+ array(
186
+ 'value' => 'validate-url',
187
+ 'label' => Mage::helper('catalog')->__('Url')
188
+ ),
189
+ array(
190
+ 'value' => 'validate-alpha',
191
+ 'label' => Mage::helper('catalog')->__('Letters')
192
+ ),
193
+ array(
194
+ 'value' => 'validate-alphanum',
195
+ 'label' => Mage::helper('catalog')->__('Letters(a-zA-Z) or Numbers(0-9)')
196
+ ),
197
+ )
198
+ ));
199
+
200
+ // -----
201
+
202
+
203
+ // frontend properties fieldset
204
+ $fieldset = $form->addFieldset('front_fieldset',
205
+ array('legend'=>Mage::helper('catalog')->__('Frontend Properties')));
206
+
207
+
208
+
209
+ $fieldset->addField('position', 'text', array(
210
+ 'name' => 'position',
211
+ 'label' => Mage::helper('catalog')->__('Position'),
212
+ 'title' => Mage::helper('catalog')->__('Position In Layered Navigation'),
213
+ 'note' => Mage::helper('catalog')->__('Position of attribute in layered navigation block'),
214
+ 'class' => 'validate-digits',
215
+ ));
216
+
217
+ if ($model->getIsUserDefined() || !$model->getId()) {
218
+ $fieldset->addField('is_visible_on_front', 'select', array(
219
+ 'name' => 'is_visible_on_front',
220
+ 'label' => Mage::helper('catalog')->__('Visible on Catalog Pages on Front-end'),
221
+ 'title' => Mage::helper('catalog')->__('Visible on Catalog Pages on Front-end'),
222
+ 'values' => $yesno,
223
+ ));
224
+ }
225
+
226
+ $fieldset->addField('sort_order', 'text', array(
227
+ 'name' => 'sort_order',
228
+ 'label' => Mage::helper('catalog')->__('Order'),
229
+ 'title' => Mage::helper('catalog')->__('Order in form'),
230
+ 'note' => Mage::helper('catalog')->__('order of attribute in form edit/create. Leave blank for form bottom.'),
231
+ 'class' => 'validate-digits',
232
+ 'value' => $model->getAttributeSetInfo()
233
+ ));
234
+
235
+
236
+ if ($model->getId()) {
237
+ $form->getElement('attribute_code')->setDisabled(1);
238
+ $form->getElement('frontend_input')->setDisabled(1);
239
+
240
+ if (isset($disableAttributeFields[$model->getAttributeCode()])) {
241
+ foreach ($disableAttributeFields[$model->getAttributeCode()] as $field) {
242
+ $form->getElement($field)->setDisabled(1);
243
+ }
244
+ }
245
+ }
246
+ /* if (!$model->getIsUserDefined() && $model->getId()) {
247
+ $form->getElement('is_unique')->setDisabled(1);
248
+ }
249
+ */
250
+ //var_dump($model->getData());exit;
251
+ $form->addValues($model->getData());
252
+
253
+
254
+
255
+ $this->setForm($form);
256
+
257
+ return parent::_prepareForm();
258
+ }
259
+
260
+ protected function _getAdditionalElementTypes()
261
+ {
262
+ return array(
263
+ 'apply' => Mage::getConfig()->getBlockClassName('adminhtml/catalog_product_helper_form_apply')
264
+ );
265
+ }
266
+
267
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Edit/Tab/Options.php ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Category_Edit_Tab_Options extends Mage_Adminhtml_Block_Widget
3
+ {
4
+
5
+ public function __construct()
6
+ {
7
+ parent::__construct();
8
+ $this->setTemplate('attributemanager/options.phtml');
9
+ }
10
+
11
+ protected function _prepareLayout()
12
+ {
13
+ $this->setChild('delete_button',
14
+ $this->getLayout()->createBlock('adminhtml/widget_button')
15
+ ->setData(array(
16
+ 'label' => Mage::helper('catalog')->__('Delete'),
17
+ 'class' => 'delete delete-option'
18
+ )));
19
+
20
+ $this->setChild('add_button',
21
+ $this->getLayout()->createBlock('adminhtml/widget_button')
22
+ ->setData(array(
23
+ 'label' => Mage::helper('catalog')->__('Add Option'),
24
+ 'class' => 'add',
25
+ 'id' => 'add_new_option_button'
26
+ )));
27
+ return parent::_prepareLayout();
28
+ }
29
+
30
+ public function getDeleteButtonHtml()
31
+ {
32
+ return $this->getChildHtml('delete_button');
33
+ }
34
+
35
+ public function getAddNewButtonHtml()
36
+ {
37
+ return $this->getChildHtml('add_button');
38
+ }
39
+
40
+ public function getStores()
41
+ {
42
+ $stores = $this->getData('stores');
43
+ if (is_null($stores)) {
44
+ $stores = Mage::getModel('core/store')
45
+ ->getResourceCollection()
46
+ ->setLoadDefault(true)
47
+ ->load();
48
+ $this->setData('stores', $stores);
49
+ }
50
+ return $stores;
51
+ }
52
+
53
+ public function getOptionValues()
54
+ {
55
+ $attributeType = $this->getAttributeObject()->getFrontendInput();
56
+ $defaultValues = $this->getAttributeObject()->getDefaultValue();
57
+ if ($attributeType == 'select' || $attributeType == 'multiselect') {
58
+ $defaultValues = explode(',', $defaultValues);
59
+ } else {
60
+ $defaultValues = array();
61
+ }
62
+
63
+ switch ($attributeType) {
64
+ case 'select':
65
+ $inputType = 'radio';
66
+ break;
67
+ case 'multiselect':
68
+ $inputType = 'checkbox';
69
+ break;
70
+ default:
71
+ $inputType = '';
72
+ break;
73
+ }
74
+
75
+ $values = $this->getData('option_values');
76
+ if (is_null($values)) {
77
+ $values = array();
78
+ $optionCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
79
+ ->setAttributeFilter($this->getAttributeObject()->getId())
80
+ ->setPositionOrder('desc', true)
81
+ ->load();
82
+
83
+ foreach ($optionCollection as $option) {
84
+ $value = array();
85
+ if (in_array($option->getId(), $defaultValues)) {
86
+ $value['checked'] = 'checked="checked"';
87
+ } else {
88
+ $value['checked'] = '';
89
+ }
90
+
91
+ $value['intype'] = $inputType;
92
+ $value['id'] = $option->getId();
93
+ $value['sort_order'] = $option->getSortOrder();
94
+ foreach ($this->getStores() as $store) {
95
+ $storeValues = $this->getStoreOptionValues($store->getId());
96
+ if (isset($storeValues[$option->getId()])) {
97
+ $value['store'.$store->getId()] = htmlspecialchars($storeValues[$option->getId()]);
98
+ }
99
+ else {
100
+ $value['store'.$store->getId()] = '';
101
+ }
102
+ }
103
+ $values[] = new Varien_Object($value);
104
+ }
105
+ $this->setData('option_values', $values);
106
+ }
107
+
108
+ return $values;
109
+ }
110
+
111
+ public function getLabelValues()
112
+ {
113
+ $values = array();
114
+ $values[0] = $this->getAttributeObject()->getFrontend()->getLabel();
115
+ // it can be array and cause bug
116
+ $frontendLabel = $this->getAttributeObject()->getFrontend()->getLabel();
117
+ if (is_array($frontendLabel)) {
118
+ $frontendLabel = array_shift($frontendLabel);
119
+ }
120
+ $translations = Mage::getModel('core/translate_string')
121
+ ->load(Mage_Catalog_Model_Entity_Attribute::MODULE_NAME.Mage_Core_Model_Translate::SCOPE_SEPARATOR.$frontendLabel)
122
+ ->getStoreTranslations();
123
+ foreach ($this->getStores() as $store) {
124
+ if ($store->getId() != 0) {
125
+ $values[$store->getId()] = isset($translations[$store->getId()]) ? $translations[$store->getId()] : '';
126
+ }
127
+ }
128
+ return $values;
129
+ }
130
+
131
+ public function getStoreOptionValues($storeId)
132
+ {
133
+ $values = $this->getData('store_option_values_'.$storeId);
134
+ if (is_null($values)) {
135
+ $values = array();
136
+ $valuesCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
137
+ ->setAttributeFilter($this->getAttributeObject()->getId())
138
+ ->setStoreFilter($storeId, false)
139
+ ->load();
140
+ foreach ($valuesCollection as $item) {
141
+ $values[$item->getId()] = $item->getValue();
142
+ }
143
+ $this->setData('store_option_values_'.$storeId, $values);
144
+ }
145
+ return $values;
146
+ }
147
+
148
+ public function getAttributeObject()
149
+ {
150
+ return Mage::registry('attributemanager_data');
151
+ }
152
+
153
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Edit/Tab/System.php ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Category_Edit_Tab_System extends Mage_Adminhtml_Block_Widget_Form
3
+ {
4
+
5
+ protected function _prepareForm()
6
+ {
7
+ $model = Mage::registry('entity_attribute');
8
+
9
+ $form = new Varien_Data_Form();
10
+ $fieldset = $form->addFieldset('base_fieldset', array('legend'=>Mage::helper('catalog')->__('System Properties')));
11
+
12
+ if ($model->getAttributeId()) {
13
+ $fieldset->addField('attribute_id', 'hidden', array(
14
+ 'name' => 'attribute_id',
15
+ ));
16
+ }
17
+
18
+ $yesno = array(
19
+ array(
20
+ 'value' => 0,
21
+ 'label' => Mage::helper('catalog')->__('No')
22
+ ),
23
+ array(
24
+ 'value' => 1,
25
+ 'label' => Mage::helper('catalog')->__('Yes')
26
+ ));
27
+
28
+ /*$fieldset->addField('attribute_model', 'text', array(
29
+ 'name' => 'attribute_model',
30
+ 'label' => Mage::helper('catalog')->__('Attribute Model'),
31
+ 'title' => Mage::helper('catalog')->__('Attribute Model'),
32
+ ));
33
+
34
+ $fieldset->addField('backend_model', 'text', array(
35
+ 'name' => 'backend_model',
36
+ 'label' => Mage::helper('catalog')->__('Backend Model'),
37
+ 'title' => Mage::helper('catalog')->__('Backend Model'),
38
+ ));*/
39
+
40
+ $fieldset->addField('backend_type', 'select', array(
41
+ 'name' => 'backend_type',
42
+ 'label' => Mage::helper('catalog')->__('Data Type for Saving in Database'),
43
+ 'title' => Mage::helper('catalog')->__('Data Type for Saving in Database'),
44
+ 'options' => array(
45
+ 'text' => Mage::helper('catalog')->__('Text'),
46
+ 'varchar' => Mage::helper('catalog')->__('Varchar'),
47
+ 'static' => Mage::helper('catalog')->__('Static'),
48
+ 'datetime' => Mage::helper('catalog')->__('Datetime'),
49
+ 'decimal' => Mage::helper('catalog')->__('Decimal'),
50
+ 'int' => Mage::helper('catalog')->__('Integer'),
51
+ ),
52
+ ));
53
+
54
+ /*$fieldset->addField('backend_table', 'text', array(
55
+ 'name' => 'backend_table',
56
+ 'label' => Mage::helper('catalog')->__('Backend Table'),
57
+ 'title' => Mage::helper('catalog')->__('Backend Table Title'),
58
+ ));
59
+
60
+ $fieldset->addField('frontend_model', 'text', array(
61
+ 'name' => 'frontend_model',
62
+ 'label' => Mage::helper('catalog')->__('Frontend Model'),
63
+ 'title' => Mage::helper('catalog')->__('Frontend Model'),
64
+ ));*/
65
+
66
+ /*$fieldset->addField('is_visible', 'select', array(
67
+ 'name' => 'is_visible',
68
+ 'label' => Mage::helper('catalog')->__('Visible'),
69
+ 'title' => Mage::helper('catalog')->__('Visible'),
70
+ 'values' => $yesno,
71
+ ));*/
72
+
73
+ /*$fieldset->addField('source_model', 'text', array(
74
+ 'name' => 'source_model',
75
+ 'label' => Mage::helper('catalog')->__('Source Model'),
76
+ 'title' => Mage::helper('catalog')->__('Source Model'),
77
+ ));*/
78
+
79
+ $fieldset->addField('is_global', 'select', array(
80
+ 'name' => 'is_global',
81
+ 'label' => Mage::helper('catalog')->__('Globally Editable'),
82
+ 'title' => Mage::helper('catalog')->__('Globally Editable'),
83
+ 'values'=> $yesno,
84
+ ));
85
+
86
+
87
+
88
+ $form->setValues($model->getData());
89
+
90
+ if ($model->getAttributeId()) {
91
+ $form->getElement('backend_type')->setDisabled(1);
92
+ if ($model->getIsGlobal()) {
93
+ #$form->getElement('is_global')->setDisabled(1);
94
+ }
95
+ } else {
96
+ }
97
+
98
+ $this->setForm($form);
99
+
100
+ return parent::_prepareForm();
101
+ }
102
+
103
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Edit/Tabs.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Hwg_Attributemanager_Block_Adminhtml_Category_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs
4
+ {
5
+
6
+ public function __construct()
7
+ {
8
+ parent::__construct();
9
+ $this->setId('attributemanager_tabs');
10
+ $this->setDestElementId('edit_form');
11
+ $this->setTitle(Mage::helper('catalog')->__('Attribute Information'));
12
+ }
13
+
14
+ protected function _beforeToHtml()
15
+ {
16
+ $model = Mage::registry('attributemanager_data');
17
+
18
+ $this->addTab('main', array(
19
+ 'label' => Mage::helper('catalog')->__('Properties'),
20
+ 'title' => Mage::helper('catalog')->__('Properties'),
21
+ 'content' => $this->getLayout()->createBlock('attributemanager/adminhtml_category_edit_tab_main')->toHtml(),
22
+ 'active' => true
23
+ ));
24
+
25
+
26
+ $this->addTab('labels', array(
27
+ 'label' => Mage::helper('catalog')->__('Manage Label / Options'),
28
+ 'title' => Mage::helper('catalog')->__('Manage Label / Options'),
29
+ 'content' => $this->getLayout()->createBlock('attributemanager/adminhtml_category_edit_tab_options')->toHtml(),
30
+ ));
31
+
32
+ /*if ('select' == $model->getFrontendInput()) {
33
+ $this->addTab('options_section', array(
34
+ 'label' => Mage::helper('catalog')->__('Options Control'),
35
+ 'title' => Mage::helper('catalog')->__('Options Control'),
36
+ 'content' => $this->getLayout()->createBlock('attributemanager/edit_tab_options')->toHtml(),
37
+ ));
38
+ }*/
39
+
40
+ return parent::_beforeToHtml();
41
+ }
42
+
43
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Category/Grid.php ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Category_Grid extends Mage_Adminhtml_Block_Widget_Grid
3
+ {
4
+ public function __construct()
5
+ {
6
+ parent::__construct();
7
+ $this->setId('attributemanagergrid');
8
+ $this->setDefaultSort('attribute_code');
9
+ $this->setDefaultDir('ASC');
10
+ $this->setSaveParametersInSession(true);
11
+ }
12
+
13
+ protected function _prepareCollection()
14
+ {
15
+ $type='catalog_category';
16
+ $this->type=$type;
17
+ $collection = Mage::getResourceModel('eav/entity_attribute_collection')
18
+ ->setEntityTypeFilter( Mage::getModel('eav/entity')->setType($type)->getTypeId() )
19
+ ->addFieldToFilter("is_user_defined", 1);
20
+
21
+ $this->setCollection($collection);
22
+ return parent::_prepareCollection();
23
+
24
+ }
25
+
26
+ protected function _prepareColumns()
27
+ {
28
+ $this->addColumn('attribute_code', array(
29
+ 'header'=>Mage::helper('catalog')->__('Attribute Code'),
30
+ 'sortable'=>true,
31
+ 'index'=>'attribute_code'
32
+ ));
33
+
34
+ $this->addColumn('frontend_label', array(
35
+ 'header'=>Mage::helper('catalog')->__('Attribute Label'),
36
+ 'sortable'=>true,
37
+ 'index'=>'frontend_label'
38
+ ));
39
+
40
+ $this->addColumn('is_visible', array(
41
+ 'header'=>Mage::helper('catalog')->__('Visible'),
42
+ 'sortable'=>true,
43
+ 'index'=>'is_visible_on_front',
44
+ 'type' => 'options',
45
+ 'options' => array(
46
+ '1' => Mage::helper('catalog')->__('Yes'),
47
+ '0' => Mage::helper('catalog')->__('No'),
48
+ ),
49
+ 'align' => 'center',
50
+ ));
51
+
52
+ $this->addColumn('is_global', array(
53
+ 'header'=>Mage::helper('catalog')->__('Scope'),
54
+ 'sortable'=>true,
55
+ 'index'=>'is_global',
56
+ 'type' => 'options',
57
+ 'options' => array(
58
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE =>Mage::helper('catalog')->__('Store View'),
59
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE =>Mage::helper('catalog')->__('Website'),
60
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL =>Mage::helper('catalog')->__('Global'),
61
+ ),
62
+ 'align' => 'center',
63
+ ));
64
+
65
+ $this->addColumn('is_required', array(
66
+ 'header'=>Mage::helper('catalog')->__('Required'),
67
+ 'sortable'=>true,
68
+ 'index'=>'is_required',
69
+ 'type' => 'options',
70
+ 'options' => array(
71
+ '1' => Mage::helper('catalog')->__('Yes'),
72
+ '0' => Mage::helper('catalog')->__('No'),
73
+ ),
74
+ 'align' => 'center',
75
+ ));
76
+
77
+ $this->addColumn('is_user_defined', array(
78
+ 'header'=>Mage::helper('catalog')->__('System'),
79
+ 'sortable'=>true,
80
+ 'index'=>'is_user_defined',
81
+ 'type' => 'options',
82
+ 'align' => 'center',
83
+ 'options' => array(
84
+ '0' => Mage::helper('catalog')->__('Yes'), // intended reverted use
85
+ '1' => Mage::helper('catalog')->__('No'), // intended reverted use
86
+ ),
87
+ ));
88
+
89
+ $this->addExportType('*/*/exportCsv'.$this->_block, Mage::helper('attributemanager')->__('CSV'));
90
+ $this->addExportType('*/*/exportXml'.$this->_block, Mage::helper('attributemanager')->__('XML'));
91
+
92
+ return parent::_prepareColumns();
93
+ }
94
+
95
+ public function getRowUrl($row)
96
+ {
97
+ return $this->getUrl('*/*/edit', array('type' => $this->type,'attribute_id' => $row->getAttributeId()));
98
+ }
99
+
100
+ }
101
+
102
+ ?>
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Customer extends Mage_Adminhtml_Block_Widget_Grid_Container
3
+ {
4
+ public function __construct()
5
+ {
6
+ $this->_controller = 'adminhtml_customer';
7
+ $this->_blockGroup = 'attributemanager';
8
+ $this->_headerText = Mage::helper('attributemanager')->__('Manage Customer Attribute');
9
+ $this->_addButtonLabel = Mage::helper('attributemanager')->__('Add New Attribute');
10
+ parent::__construct();
11
+
12
+ $this->_addButton('add', array(
13
+ 'label' => $this->getAddButtonLabel(),
14
+ 'onclick' => 'setLocation(\''.$this->getUrl('*/*/new', array('type' => 'customer','attribute_id'=>0)).'\')',
15
+ 'class' => 'add',
16
+ ));
17
+ }
18
+ }
19
+
20
+ ?>
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Edit.php ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Customer_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
3
+ {
4
+
5
+ protected function _prepareLayout()
6
+ {
7
+
8
+ $this->setChild('form', $this->getLayout()->createBlock($this->_blockGroup . '/' . $this->_mode . '_form'));
9
+ return parent::_prepareLayout();
10
+ }
11
+
12
+ public function __construct()
13
+ {
14
+
15
+ $this->_objectId = 'attribute_id';
16
+ $this->_controller = 'adminhtml_customer';
17
+ $this->_blockGroup = 'attributemanager';
18
+
19
+ parent::__construct();
20
+
21
+ if($this->getRequest()->getParam('popup')) {
22
+ $this->_removeButton('back');
23
+ $this->_addButton(
24
+ 'close',
25
+ array(
26
+ 'label' => Mage::helper('catalog')->__('Close Window'),
27
+ 'class' => 'cancel',
28
+ 'onclick' => 'window.close()',
29
+ 'level' => -1
30
+ )
31
+ );
32
+ }
33
+
34
+ $this->_updateButton('back', 'onclick', "setLocation('".$this->getUrl('*/*/customer')."')");
35
+
36
+ $this->_updateButton('save', 'label', Mage::helper('catalog')->__('Save Attribute'));
37
+ $this->_addButton(
38
+ 'save_and_edit_button',
39
+ array(
40
+ 'label' => Mage::helper('catalog')->__('Save And Continue Edit'),
41
+ 'onclick' => 'saveAndContinueEdit()',
42
+ 'class' => 'save'
43
+ ),
44
+ 100
45
+ );
46
+ $this->_formScripts[] = "
47
+ function toggleEditor() {
48
+ if (tinyMCE.getInstanceById('company_content') == null) {
49
+ tinyMCE.execCommand('mceAddControl', false, 'company_content');
50
+ } else {
51
+ tinyMCE.execCommand('mceRemoveControl', false, 'company_content');
52
+ }
53
+ }
54
+
55
+ function saveAndContinueEdit(){
56
+ editForm.submit($('edit_form').action+'back/edit/');
57
+ }
58
+ ";
59
+ if (! Mage::registry('attributemanager_data')->getIsUserDefined()) {
60
+ $this->_removeButton('delete');
61
+ } else {
62
+ $this->_updateButton('delete', 'label', Mage::helper('catalog')->__('Delete Attribute'));
63
+ $this->_updateButton('delete', 'onclick', "deleteConfirm(
64
+ '".Mage::helper('adminhtml')->__('Are you sure you want to do this?')."',
65
+ '".$this->getUrl('*/*/delete/type/'.$this->getRequest()->getParam('type').'/attribute_id/'.$this->getRequest()->getParam('attribute_id')
66
+ )."')");
67
+ }
68
+ }
69
+
70
+ public function getHeaderText()
71
+ {
72
+ $type="Customer";
73
+ if (Mage::registry('attributemanager_data')->getId()) {
74
+ return Mage::helper('attributemanager')->__('Edit %s Attribute "%s"', $type, $this->htmlEscape(Mage::registry('attributemanager_data')->getFrontendLabel()));
75
+ }
76
+ else {
77
+ return Mage::helper('attributemanager')->__('New %s Attribute', $type);
78
+ }
79
+
80
+ }
81
+
82
+ public function getValidationUrl()
83
+ {
84
+ return $this->getUrl('*/*/validate', array('_current'=>true));
85
+ }
86
+
87
+ public function getSaveUrl()
88
+ {
89
+ return $this->getUrl('*/*/save', array('_current'=>true, 'back'=>null));
90
+ }
91
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Edit/Form.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Hwg_Attributemanager_Block_Adminhtml_Customer_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
4
+ {
5
+
6
+ protected function _prepareForm()
7
+ {
8
+ $form = new Varien_Data_Form(array('id' => 'edit_form', 'action' => $this->getData('action'), 'method' => 'post'));
9
+
10
+ $form->setUseContainer(true);
11
+ $this->setForm($form);
12
+ return parent::_prepareForm();
13
+ }
14
+
15
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Edit/Tab/Front.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Customer_Edit_Tab_Front extends Mage_Adminhtml_Block_Widget_Form
3
+ {
4
+
5
+ protected function _prepareForm()
6
+ {
7
+ $model = Mage::registry('attributemanager_data');
8
+
9
+ $form = new Varien_Data_Form(array('id' => 'edit_form', 'action' => $this->getData('action'), 'method' => 'post'));
10
+
11
+ $fieldset = $form->addFieldset('base_fieldset', array('legend'=>Mage::helper('catalog')->__('Frontend Properties')));
12
+
13
+ $yesno = array(
14
+ array(
15
+ 'value' => 0,
16
+ 'label' => Mage::helper('catalog')->__('No')
17
+ ),
18
+ array(
19
+ 'value' => 1,
20
+ 'label' => Mage::helper('catalog')->__('Yes')
21
+ ));
22
+
23
+
24
+ $fieldset->addField('is_searchable', 'select', array(
25
+ 'name' => 'is_searchable',
26
+ 'label' => Mage::helper('catalog')->__('Use in quick search'),
27
+ 'title' => Mage::helper('catalog')->__('Use in quick search'),
28
+ 'values' => $yesno,
29
+ ));
30
+
31
+ $fieldset->addField('is_visible_in_advanced_search', 'select', array(
32
+ 'name' => 'is_visible_in_advanced_search',
33
+ 'label' => Mage::helper('catalog')->__('Use in advanced search'),
34
+ 'title' => Mage::helper('catalog')->__('Use in advanced search'),
35
+ 'values' => $yesno,
36
+ ));
37
+
38
+ $fieldset->addField('is_comparable', 'select', array(
39
+ 'name' => 'is_comparable',
40
+ 'label' => Mage::helper('catalog')->__('Comparable on Front-end'),
41
+ 'title' => Mage::helper('catalog')->__('Comparable on Front-end'),
42
+ 'values' => $yesno,
43
+ ));
44
+
45
+
46
+ $fieldset->addField('is_filterable', 'select', array(
47
+ 'name' => 'is_filterable',
48
+ 'label' => Mage::helper('catalog')->__("Use In Layered Navigation<br/>(Can be used only with catalog input type 'Dropdown')"),
49
+ 'title' => Mage::helper('catalog')->__('Can be used only with catalog input type Dropdown'),
50
+ 'values' => array(
51
+ array('value' => '0', 'label' => Mage::helper('catalog')->__('No')),
52
+ array('value' => '1', 'label' => Mage::helper('catalog')->__('Filterable (with results)')),
53
+ array('value' => '2', 'label' => Mage::helper('catalog')->__('Filterable (no results)')),
54
+ ),
55
+ ));
56
+
57
+ // if ($model->getIsUserDefined() || !$model->getId()) {
58
+ $fieldset->addField('is_visible_on_front', 'select', array(
59
+ 'name' => 'is_visible_on_front',
60
+ 'label' => Mage::helper('catalog')->__('Visible on Catalog Pages on Front-end'),
61
+ 'title' => Mage::helper('catalog')->__('Visible on Catalog Pages on Front-end'),
62
+ 'values' => $yesno,
63
+ ));
64
+ // }
65
+
66
+ $form->setValues($model->getData());
67
+
68
+ $this->setForm($form);
69
+
70
+ return parent::_prepareForm();
71
+ }
72
+
73
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Edit/Tab/Main.php ADDED
@@ -0,0 +1,274 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Hwg_Attributemanager_Block_Adminhtml_Customer_Edit_Tab_Main extends Mage_Adminhtml_Block_Widget_Form
4
+ {
5
+
6
+ protected function _prepareForm()
7
+ {
8
+ $model = Mage::registry('attributemanager_data');
9
+
10
+ $form = new Varien_Data_Form(array(
11
+ 'id' => 'edit_form',
12
+ 'action' => $this->getData('action'),
13
+ 'method' => 'post'
14
+ ));
15
+
16
+ $fieldset = $form->addFieldset('base_fieldset',
17
+ array('legend'=>Mage::helper('catalog')->__('Attribute Properties'))
18
+ );
19
+ if ($model->getId()) {
20
+ $fieldset->addField('attribute_id', 'hidden', array(
21
+ 'name' => 'attribute_id',
22
+ ));
23
+ }
24
+
25
+ $this->_addElementTypes($fieldset);
26
+
27
+ $yesno = array(
28
+ array(
29
+ 'value' => 0,
30
+ 'label' => Mage::helper('catalog')->__('No')
31
+ ),
32
+ array(
33
+ 'value' => 1,
34
+ 'label' => Mage::helper('catalog')->__('Yes')
35
+ ));
36
+
37
+ $fieldset->addField('attribute_code', 'text', array(
38
+ 'name' => 'attribute_code',
39
+ 'label' => Mage::helper('catalog')->__('Attribute Code'),
40
+ 'title' => Mage::helper('catalog')->__('Attribute Code'),
41
+ 'note' => Mage::helper('catalog')->__('For internal use. Must be unique with no spaces'),
42
+ 'class' => 'validate-code',
43
+ 'required' => true,
44
+ ));
45
+
46
+ $scopes = array(
47
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE =>Mage::helper('catalog')->__('Store View'),
48
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE =>Mage::helper('catalog')->__('Website'),
49
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL =>Mage::helper('catalog')->__('Global'),
50
+ );
51
+
52
+ if ($model->getAttributeCode() == 'status' || $model->getAttributeCode() == 'tax_class_id') {
53
+ unset($scopes[Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE]);
54
+ }
55
+
56
+ $fieldset->addField('is_global', 'select', array(
57
+ 'name' => 'is_global',
58
+ 'label' => Mage::helper('catalog')->__('Scope'),
59
+ 'title' => Mage::helper('catalog')->__('Scope'),
60
+ 'note' => Mage::helper('catalog')->__('Declare attribute value saving scope'),
61
+ 'values'=> $scopes
62
+ ));
63
+
64
+ $inputTypes = array(
65
+ array(
66
+ 'value' => 'text',
67
+ 'label' => Mage::helper('catalog')->__('Text Field')
68
+ ),
69
+ array(
70
+ 'value' => 'textarea',
71
+ 'label' => Mage::helper('catalog')->__('Text Area')
72
+ ),
73
+ array(
74
+ 'value' => 'date',
75
+ 'label' => Mage::helper('catalog')->__('Date')
76
+ ),
77
+ array(
78
+ 'value' => 'boolean',
79
+ 'label' => Mage::helper('catalog')->__('Yes/No')
80
+ ),
81
+ array(
82
+ 'value' => 'multiselect',
83
+ 'label' => Mage::helper('catalog')->__('Multiple Select')
84
+ ),
85
+ array(
86
+ 'value' => 'select',
87
+ 'label' => Mage::helper('catalog')->__('Dropdown')
88
+ ),
89
+ );
90
+ if($this->getRequest ()->getParam ( 'type' )==="catalog_category"){
91
+ $inputTypes[]= array(
92
+ 'value' => 'image',
93
+ 'label' => Mage::helper('catalog')->__('Image')
94
+
95
+ );
96
+ }
97
+
98
+ $response = new Varien_Object();
99
+ $response->setTypes(array());
100
+ //Mage::dispatchEvent('adminhtml_product_attribute_types', array('response'=>$response));
101
+
102
+ $_disabledTypes = array();
103
+ $_hiddenFields = array();
104
+ foreach ($response->getTypes() as $type) {
105
+ $inputTypes[] = $type;
106
+ if (isset($type['hide_fields'])) {
107
+ $_hiddenFields[$type['value']] = $type['hide_fields'];
108
+ }
109
+ if (isset($type['disabled_types'])) {
110
+ $_disabledTypes[$type['value']] = $type['disabled_types'];
111
+ }
112
+ }
113
+ Mage::register('attribute_type_hidden_fields', $_hiddenFields);
114
+ Mage::register('attribute_type_disabled_types', $_disabledTypes);
115
+
116
+
117
+ $fieldset->addField('frontend_input', 'select', array(
118
+ 'name' => 'frontend_input',
119
+ 'label' => Mage::helper('catalog')->__('Input Type for Store Owner'),
120
+ 'title' => Mage::helper('catalog')->__('Input Type for Store Owner'),
121
+ 'value' => 'text',
122
+ 'values'=> $inputTypes
123
+ ));
124
+
125
+ $fieldset->addField('entity_type_id', 'hidden', array(
126
+ 'name' => 'entity_type_id',
127
+ 'value' => Mage::getModel('eav/entity')->setType($this->getRequest ()->getParam ( 'type' ))->getTypeId()
128
+ ));
129
+
130
+ $fieldset->addField('is_user_defined', 'hidden', array(
131
+ 'name' => 'is_user_defined',
132
+ 'value' => 1
133
+ ));
134
+
135
+ $fieldset->addField('attribute_set_id', 'hidden', array(
136
+ 'name' => 'attribute_set_id',
137
+ 'value' => Mage::getModel('eav/entity')->setType($this->getRequest ()->getParam ( 'type' ))->getTypeId()
138
+ ));
139
+
140
+ $fieldset->addField('attribute_group_id', 'hidden', array(
141
+ 'name' => 'attribute_group_id',
142
+ 'value' => Mage::getModel('eav/entity')->setType($this->getRequest ()->getParam ( 'type' ))->getTypeId()
143
+ ));
144
+
145
+
146
+ /*******************************************************/
147
+ $fieldset->addField('is_unique', 'select', array(
148
+ 'name' => 'is_unique',
149
+ 'label' => Mage::helper('catalog')->__('Unique Value'),
150
+ 'title' => Mage::helper('catalog')->__('Unique Value (not shared with other products)'),
151
+ 'note' => Mage::helper('catalog')->__('Not shared with other products'),
152
+ 'values' => $yesno,
153
+ ));
154
+
155
+ $fieldset->addField('is_required', 'select', array(
156
+ 'name' => 'is_required',
157
+ 'label' => Mage::helper('catalog')->__('Values Required'),
158
+ 'title' => Mage::helper('catalog')->__('Values Required'),
159
+ 'values' => $yesno,
160
+ ));
161
+
162
+ $fieldset->addField('is_visible', 'select', array(
163
+ 'name' => 'is_visible',
164
+ 'label' => Mage::helper('catalog')->__('Is Visible'),
165
+ 'title' => Mage::helper('catalog')->__('Is Visible'),
166
+ 'values' => $yesno,
167
+ ));
168
+
169
+ $fieldset->addField('frontend_class', 'select', array(
170
+ 'name' => 'frontend_class',
171
+ 'label' => Mage::helper('catalog')->__('Input Validation for Store Owner'),
172
+ 'title' => Mage::helper('catalog')->__('Input Validation for Store Owner'),
173
+ 'values'=> array(
174
+ array(
175
+ 'value' => '',
176
+ 'label' => Mage::helper('catalog')->__('None')
177
+ ),
178
+ array(
179
+ 'value' => 'validate-number',
180
+ 'label' => Mage::helper('catalog')->__('Decimal Number')
181
+ ),
182
+ array(
183
+ 'value' => 'validate-digits',
184
+ 'label' => Mage::helper('catalog')->__('Integer Number')
185
+ ),
186
+ array(
187
+ 'value' => 'validate-email',
188
+ 'label' => Mage::helper('catalog')->__('Email')
189
+ ),
190
+ array(
191
+ 'value' => 'validate-url',
192
+ 'label' => Mage::helper('catalog')->__('Url')
193
+ ),
194
+ array(
195
+ 'value' => 'validate-alpha',
196
+ 'label' => Mage::helper('catalog')->__('Letters')
197
+ ),
198
+ array(
199
+ 'value' => 'validate-alphanum',
200
+ 'label' => Mage::helper('catalog')->__('Letters(a-zA-Z) or Numbers(0-9)')
201
+ ),
202
+ )
203
+ ));
204
+
205
+ $fieldset = $form->addFieldset('front_fieldset',
206
+ array('legend'=>Mage::helper('catalog')->__('Frontend Properties')));
207
+
208
+ if($model->getId())
209
+ {
210
+ $write = Mage::getSingleton('core/resource')->getConnection('core_write');
211
+ $readresult=$write->query("SELECT * from customer_form_attribute WHERE attribute_id=".$model->getId());
212
+ while ($row = $readresult->fetch() ) {
213
+ $customerForm[$row['form_code']] = 'checked';
214
+ }
215
+ }
216
+ $fieldset->addField('adminhtml_customer', 'checkbox', array(
217
+ 'name' => 'customer_form[]',
218
+ 'label' => Mage::helper('catalog')->__('Adminhtml Customer'),
219
+ 'value' => 'adminhtml_customer',
220
+ 'checked' => isset($customerForm['adminhtml_customer'])?$customerForm['adminhtml_customer']:'',
221
+ ));
222
+ $fieldset->addField('customer_account_create', 'checkbox', array(
223
+ 'name' => 'customer_form[]',
224
+ 'label' => Mage::helper('catalog')->__('Customer Account Create'),
225
+ 'value' => 'customer_account_create',
226
+ 'checked' => isset($customerForm['customer_account_create'])?$customerForm['customer_account_create']:'',
227
+ ));
228
+ $fieldset->addField('customer_address_edit', 'checkbox', array(
229
+ 'name' => 'customer_form[]',
230
+ 'label' => Mage::helper('catalog')->__('Customer Address Edit'),
231
+ 'value' => 'customer_address_edit',
232
+ 'checked' => isset($customerForm['customer_address_edit'])?$customerForm['customer_address_edit']:'',
233
+ ));
234
+ $fieldset->addField('checkout_register', 'checkbox', array(
235
+ 'name' => 'customer_form[]',
236
+ 'label' => Mage::helper('catalog')->__('Checkout Register'),
237
+ 'value' => 'checkout_register',
238
+ 'checked' => isset($customerForm['checkout_register'])?$customerForm['checkout_register']:'',
239
+ ));
240
+ $fieldset->addField('sort_order', 'text', array(
241
+ 'name' => 'sort_order',
242
+ 'label' => Mage::helper('catalog')->__('Sort Order'),
243
+ 'title' => Mage::helper('catalog')->__('Sort Order'),
244
+ 'class' => 'validate-digits',
245
+ 'value' => $model->getAttributeSetInfo()
246
+ ));
247
+
248
+
249
+ if ($model->getId()) {
250
+ $form->getElement('attribute_code')->setDisabled(1);
251
+ $form->getElement('frontend_input')->setDisabled(1);
252
+
253
+ if (isset($disableAttributeFields[$model->getAttributeCode()])) {
254
+ foreach ($disableAttributeFields[$model->getAttributeCode()] as $field) {
255
+ $form->getElement($field)->setDisabled(1);
256
+ }
257
+ }
258
+ }
259
+
260
+ $form->addValues($model->getData());
261
+
262
+ $this->setForm($form);
263
+
264
+ return parent::_prepareForm();
265
+ }
266
+
267
+ protected function _getAdditionalElementTypes()
268
+ {
269
+ return array(
270
+ 'apply' => Mage::getConfig()->getBlockClassName('adminhtml/catalog_product_helper_form_apply')
271
+ );
272
+ }
273
+
274
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Edit/Tab/Options.php ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Customer_Edit_Tab_Options extends Mage_Adminhtml_Block_Widget
3
+ {
4
+
5
+ public function __construct()
6
+ {
7
+ parent::__construct();
8
+ $this->setTemplate('attributemanager/options.phtml');
9
+ }
10
+
11
+ protected function _prepareLayout()
12
+ {
13
+ $this->setChild('delete_button',
14
+ $this->getLayout()->createBlock('adminhtml/widget_button')
15
+ ->setData(array(
16
+ 'label' => Mage::helper('catalog')->__('Delete'),
17
+ 'class' => 'delete delete-option'
18
+ )));
19
+
20
+ $this->setChild('add_button',
21
+ $this->getLayout()->createBlock('adminhtml/widget_button')
22
+ ->setData(array(
23
+ 'label' => Mage::helper('catalog')->__('Add Option'),
24
+ 'class' => 'add',
25
+ 'id' => 'add_new_option_button'
26
+ )));
27
+ return parent::_prepareLayout();
28
+ }
29
+
30
+ public function getDeleteButtonHtml()
31
+ {
32
+ return $this->getChildHtml('delete_button');
33
+ }
34
+
35
+ public function getAddNewButtonHtml()
36
+ {
37
+ return $this->getChildHtml('add_button');
38
+ }
39
+
40
+ public function getStores()
41
+ {
42
+ $stores = $this->getData('stores');
43
+ if (is_null($stores)) {
44
+ $stores = Mage::getModel('core/store')
45
+ ->getResourceCollection()
46
+ ->setLoadDefault(true)
47
+ ->load();
48
+ $this->setData('stores', $stores);
49
+ }
50
+ return $stores;
51
+ }
52
+
53
+ public function getOptionValues()
54
+ {
55
+ $attributeType = $this->getAttributeObject()->getFrontendInput();
56
+ $defaultValues = $this->getAttributeObject()->getDefaultValue();
57
+ if ($attributeType == 'select' || $attributeType == 'multiselect') {
58
+ $defaultValues = explode(',', $defaultValues);
59
+ } else {
60
+ $defaultValues = array();
61
+ }
62
+
63
+ switch ($attributeType) {
64
+ case 'select':
65
+ $inputType = 'radio';
66
+ break;
67
+ case 'multiselect':
68
+ $inputType = 'checkbox';
69
+ break;
70
+ default:
71
+ $inputType = '';
72
+ break;
73
+ }
74
+
75
+ $values = $this->getData('option_values');
76
+ if (is_null($values)) {
77
+ $values = array();
78
+ $optionCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
79
+ ->setAttributeFilter($this->getAttributeObject()->getId())
80
+ ->setPositionOrder('desc', true)
81
+ ->load();
82
+
83
+ foreach ($optionCollection as $option) {
84
+ $value = array();
85
+ if (in_array($option->getId(), $defaultValues)) {
86
+ $value['checked'] = 'checked="checked"';
87
+ } else {
88
+ $value['checked'] = '';
89
+ }
90
+
91
+ $value['intype'] = $inputType;
92
+ $value['id'] = $option->getId();
93
+ $value['sort_order'] = $option->getSortOrder();
94
+ foreach ($this->getStores() as $store) {
95
+ $storeValues = $this->getStoreOptionValues($store->getId());
96
+ if (isset($storeValues[$option->getId()])) {
97
+ $value['store'.$store->getId()] = htmlspecialchars($storeValues[$option->getId()]);
98
+ }
99
+ else {
100
+ $value['store'.$store->getId()] = '';
101
+ }
102
+ }
103
+ $values[] = new Varien_Object($value);
104
+ }
105
+ $this->setData('option_values', $values);
106
+ }
107
+
108
+ return $values;
109
+ }
110
+
111
+ public function getLabelValues()
112
+ {
113
+ $values = array();
114
+ $values[0] = $this->getAttributeObject()->getFrontend()->getLabel();
115
+ // it can be array and cause bug
116
+ $frontendLabel = $this->getAttributeObject()->getFrontend()->getLabel();
117
+ if (is_array($frontendLabel)) {
118
+ $frontendLabel = array_shift($frontendLabel);
119
+ }
120
+ $translations = Mage::getModel('core/translate_string')
121
+ ->load(Mage_Catalog_Model_Entity_Attribute::MODULE_NAME.Mage_Core_Model_Translate::SCOPE_SEPARATOR.$frontendLabel)
122
+ ->getStoreTranslations();
123
+ foreach ($this->getStores() as $store) {
124
+ if ($store->getId() != 0) {
125
+ $values[$store->getId()] = isset($translations[$store->getId()]) ? $translations[$store->getId()] : '';
126
+ }
127
+ }
128
+ return $values;
129
+ }
130
+
131
+ public function getStoreOptionValues($storeId)
132
+ {
133
+ $values = $this->getData('store_option_values_'.$storeId);
134
+ if (is_null($values)) {
135
+ $values = array();
136
+ $valuesCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
137
+ ->setAttributeFilter($this->getAttributeObject()->getId())
138
+ ->setStoreFilter($storeId, false)
139
+ ->load();
140
+ foreach ($valuesCollection as $item) {
141
+ $values[$item->getId()] = $item->getValue();
142
+ }
143
+ $this->setData('store_option_values_'.$storeId, $values);
144
+ }
145
+ return $values;
146
+ }
147
+
148
+ public function getAttributeObject()
149
+ {
150
+ return Mage::registry('attributemanager_data');
151
+ }
152
+
153
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Edit/Tab/System.php ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Customer_Edit_Tab_System extends Mage_Adminhtml_Block_Widget_Form
3
+ {
4
+
5
+ protected function _prepareForm()
6
+ {
7
+ $model = Mage::registry('entity_attribute');
8
+
9
+ $form = new Varien_Data_Form();
10
+ $fieldset = $form->addFieldset('base_fieldset', array('legend'=>Mage::helper('catalog')->__('System Properties')));
11
+
12
+ if ($model->getAttributeId()) {
13
+ $fieldset->addField('attribute_id', 'hidden', array(
14
+ 'name' => 'attribute_id',
15
+ ));
16
+ }
17
+
18
+ $yesno = array(
19
+ array(
20
+ 'value' => 0,
21
+ 'label' => Mage::helper('catalog')->__('No')
22
+ ),
23
+ array(
24
+ 'value' => 1,
25
+ 'label' => Mage::helper('catalog')->__('Yes')
26
+ ));
27
+
28
+ /*$fieldset->addField('attribute_model', 'text', array(
29
+ 'name' => 'attribute_model',
30
+ 'label' => Mage::helper('catalog')->__('Attribute Model'),
31
+ 'title' => Mage::helper('catalog')->__('Attribute Model'),
32
+ ));
33
+
34
+ $fieldset->addField('backend_model', 'text', array(
35
+ 'name' => 'backend_model',
36
+ 'label' => Mage::helper('catalog')->__('Backend Model'),
37
+ 'title' => Mage::helper('catalog')->__('Backend Model'),
38
+ ));*/
39
+
40
+ $fieldset->addField('backend_type', 'select', array(
41
+ 'name' => 'backend_type',
42
+ 'label' => Mage::helper('catalog')->__('Data Type for Saving in Database'),
43
+ 'title' => Mage::helper('catalog')->__('Data Type for Saving in Database'),
44
+ 'options' => array(
45
+ 'text' => Mage::helper('catalog')->__('Text'),
46
+ 'varchar' => Mage::helper('catalog')->__('Varchar'),
47
+ 'static' => Mage::helper('catalog')->__('Static'),
48
+ 'datetime' => Mage::helper('catalog')->__('Datetime'),
49
+ 'decimal' => Mage::helper('catalog')->__('Decimal'),
50
+ 'int' => Mage::helper('catalog')->__('Integer'),
51
+ ),
52
+ ));
53
+
54
+ /*$fieldset->addField('backend_table', 'text', array(
55
+ 'name' => 'backend_table',
56
+ 'label' => Mage::helper('catalog')->__('Backend Table'),
57
+ 'title' => Mage::helper('catalog')->__('Backend Table Title'),
58
+ ));
59
+
60
+ $fieldset->addField('frontend_model', 'text', array(
61
+ 'name' => 'frontend_model',
62
+ 'label' => Mage::helper('catalog')->__('Frontend Model'),
63
+ 'title' => Mage::helper('catalog')->__('Frontend Model'),
64
+ ));*/
65
+
66
+ /*$fieldset->addField('is_visible', 'select', array(
67
+ 'name' => 'is_visible',
68
+ 'label' => Mage::helper('catalog')->__('Visible'),
69
+ 'title' => Mage::helper('catalog')->__('Visible'),
70
+ 'values' => $yesno,
71
+ ));*/
72
+
73
+ /*$fieldset->addField('source_model', 'text', array(
74
+ 'name' => 'source_model',
75
+ 'label' => Mage::helper('catalog')->__('Source Model'),
76
+ 'title' => Mage::helper('catalog')->__('Source Model'),
77
+ ));*/
78
+
79
+ $fieldset->addField('is_global', 'select', array(
80
+ 'name' => 'is_global',
81
+ 'label' => Mage::helper('catalog')->__('Globally Editable'),
82
+ 'title' => Mage::helper('catalog')->__('Globally Editable'),
83
+ 'values'=> $yesno,
84
+ ));
85
+
86
+
87
+
88
+ $form->setValues($model->getData());
89
+
90
+ if ($model->getAttributeId()) {
91
+ $form->getElement('backend_type')->setDisabled(1);
92
+ if ($model->getIsGlobal()) {
93
+ #$form->getElement('is_global')->setDisabled(1);
94
+ }
95
+ } else {
96
+ }
97
+
98
+ $this->setForm($form);
99
+
100
+ return parent::_prepareForm();
101
+ }
102
+
103
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Edit/Tabs.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Hwg_Attributemanager_Block_Adminhtml_Customer_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs
4
+ {
5
+
6
+ public function __construct()
7
+ {
8
+ parent::__construct();
9
+ $this->setId('attributemanager_tabs');
10
+ $this->setDestElementId('edit_form');
11
+ $this->setTitle(Mage::helper('catalog')->__('Attribute Information'));
12
+ }
13
+
14
+ protected function _beforeToHtml()
15
+ {
16
+ $model = Mage::registry('attributemanager_data');
17
+
18
+ $this->addTab('main', array(
19
+ 'label' => Mage::helper('catalog')->__('Properties'),
20
+ 'title' => Mage::helper('catalog')->__('Properties'),
21
+ 'content' => $this->getLayout()->createBlock('attributemanager/adminhtml_customer_edit_tab_main')->toHtml(),
22
+ 'active' => true
23
+ ));
24
+
25
+
26
+ $this->addTab('labels', array(
27
+ 'label' => Mage::helper('catalog')->__('Manage Label / Options'),
28
+ 'title' => Mage::helper('catalog')->__('Manage Label / Options'),
29
+ 'content' => $this->getLayout()->createBlock('attributemanager/adminhtml_customer_edit_tab_options')->toHtml(),
30
+ ));
31
+
32
+ /*if ('select' == $model->getFrontendInput()) {
33
+ $this->addTab('options_section', array(
34
+ 'label' => Mage::helper('catalog')->__('Options Control'),
35
+ 'title' => Mage::helper('catalog')->__('Options Control'),
36
+ 'content' => $this->getLayout()->createBlock('attributemanager/edit_tab_options')->toHtml(),
37
+ ));
38
+ }*/
39
+
40
+ return parent::_beforeToHtml();
41
+ }
42
+
43
+ }
app/code/local/Hwg/Attributemanager/Block/Adminhtml/Customer/Grid.php ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Block_Adminhtml_Customer_Grid extends Mage_Adminhtml_Block_Widget_Grid
3
+ {
4
+ public function __construct()
5
+ {
6
+ parent::__construct();
7
+ $this->setId('attributemanagergrid');
8
+ $this->setDefaultSort('attribute_code');
9
+ $this->setDefaultDir('ASC');
10
+ $this->setSaveParametersInSession(true);
11
+ }
12
+
13
+ protected function _prepareCollection()
14
+ {
15
+ //$sUrl=$this->getUrl('*/*/*', array('_current'=>true));
16
+
17
+ $type='customer';
18
+ $block='customer';
19
+ $this->type =$type;
20
+ $this->block =$block;
21
+ // echo($this->type = $type);
22
+ // exit;
23
+ $collection = Mage::getResourceModel('eav/entity_attribute_collection')
24
+ ->setEntityTypeFilter( Mage::getModel('eav/entity')->setType($type)->getTypeId() )
25
+ ->addFieldToFilter("is_user_defined", 1);
26
+
27
+ $this->setCollection($collection);
28
+ return parent::_prepareCollection();
29
+
30
+ }
31
+
32
+ protected function _prepareColumns()
33
+ {
34
+ $this->addColumn('attribute_code', array(
35
+ 'header'=>Mage::helper('catalog')->__('Attribute Code'),
36
+ 'sortable'=>true,
37
+ 'index'=>'attribute_code'
38
+ ));
39
+
40
+ $this->addColumn('frontend_label', array(
41
+ 'header'=>Mage::helper('catalog')->__('Attribute Label'),
42
+ 'sortable'=>true,
43
+ 'index'=>'frontend_label'
44
+ ));
45
+
46
+ $this->addColumn('is_visible', array(
47
+ 'header'=>Mage::helper('catalog')->__('Visible'),
48
+ 'sortable'=>true,
49
+ 'index'=>'is_visible_on_front',
50
+ 'type' => 'options',
51
+ 'options' => array(
52
+ '1' => Mage::helper('catalog')->__('Yes'),
53
+ '0' => Mage::helper('catalog')->__('No'),
54
+ ),
55
+ 'align' => 'center',
56
+ ));
57
+
58
+ $this->addColumn('is_global', array(
59
+ 'header'=>Mage::helper('catalog')->__('Scope'),
60
+ 'sortable'=>true,
61
+ 'index'=>'is_global',
62
+ 'type' => 'options',
63
+ 'options' => array(
64
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE =>Mage::helper('catalog')->__('Store View'),
65
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE =>Mage::helper('catalog')->__('Website'),
66
+ Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL =>Mage::helper('catalog')->__('Global'),
67
+ ),
68
+ 'align' => 'center',
69
+ ));
70
+
71
+ $this->addColumn('is_required', array(
72
+ 'header'=>Mage::helper('catalog')->__('Required'),
73
+ 'sortable'=>true,
74
+ 'index'=>'is_required',
75
+ 'type' => 'options',
76
+ 'options' => array(
77
+ '1' => Mage::helper('catalog')->__('Yes'),
78
+ '0' => Mage::helper('catalog')->__('No'),
79
+ ),
80
+ 'align' => 'center',
81
+ ));
82
+
83
+ $this->addColumn('is_user_defined', array(
84
+ 'header'=>Mage::helper('catalog')->__('System'),
85
+ 'sortable'=>true,
86
+ 'index'=>'is_user_defined',
87
+ 'type' => 'options',
88
+ 'align' => 'center',
89
+ 'options' => array(
90
+ '0' => Mage::helper('catalog')->__('Yes'), // intended reverted use
91
+ '1' => Mage::helper('catalog')->__('No'), // intended reverted use
92
+ ),
93
+ ));
94
+
95
+ $this->addExportType('*/*/exportCsv/type/'.$this->_block, Mage::helper('attributemanager')->__('CSV'));
96
+ $this->addExportType('*/*/exportXml/type/'.$this->_block, Mage::helper('attributemanager')->__('XML'));
97
+
98
+ return parent::_prepareColumns();
99
+ }
100
+ public function getRowUrl($row)
101
+ {
102
+ return $this->getUrl('*/*/edit', array('type' => $this->type,'attribute_id' => $row->getAttributeId()));
103
+ }
104
+
105
+ }
106
+
107
+ ?>
app/code/local/Hwg/Attributemanager/Helper/Data.php ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Hwg_Attributemanager_Helper_Data extends Mage_Core_Helper_Abstract
4
+ {
5
+ /**
6
+ * Selected products for massupdate
7
+ *
8
+ * @var Mage_Catalog_Model_Entity_Product_Collection
9
+ */
10
+ protected $_categories;
11
+
12
+ /**
13
+ * Array of categories that not available in selected store
14
+ *
15
+ * @var array
16
+ */
17
+ protected $_categoriesNotInStore;
18
+
19
+ /**
20
+ * Same attribtes for selected categories
21
+ *
22
+ * @var Mage_Eav_Model_Mysql4_Entity_Attribute_Collection
23
+ */
24
+ protected $_attributes;
25
+
26
+
27
+ /**
28
+ * Excluded from batch update attribute codes
29
+ *
30
+ * @var array
31
+ */
32
+ protected $_excludedAttributes = array('url_key');
33
+
34
+ /**
35
+ * Retrive product collection
36
+ *
37
+ * @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection
38
+ */
39
+ public function getCategories()
40
+ {
41
+ if (is_null($this->_categories)) {
42
+ $categoriesIds = $this->getCategoryIds();
43
+
44
+ if(!is_array($categoriesIds)) {
45
+ $categoriesIds = array(0);
46
+ }
47
+
48
+ $this->_categories = Mage::getResourceModel('catalog/category_collection')
49
+ ->setStoreId($this->getSelectedStoreId())
50
+ ->addIdFilter($categoriesIds);
51
+
52
+ /*$this->load();
53
+ $this->addStoreNamesToResult();*/
54
+ }
55
+
56
+ return $this->_categories;
57
+ }
58
+
59
+ /**
60
+ * Retrive selected categories ids from post or session
61
+ *
62
+ * @return array|null
63
+ */
64
+ public function getCategoryIds()
65
+ {
66
+ $session = Mage::getSingleton('adminhtml/session');
67
+
68
+ if ($this->_getRequest()->isPost() && $this->_getRequest()->getActionName()=='edit') {
69
+ $session->setCategoryIds($this->_getRequest()->getParam('category', null));
70
+ }
71
+
72
+ return $session->getCategoryIds();
73
+ }
74
+
75
+ /**
76
+ * Retrive selected store id
77
+ *
78
+ * @return integer
79
+ */
80
+ public function getSelectedStoreId()
81
+ {
82
+ return (int) $this->_getRequest()->getParam('store', 0);
83
+ }
84
+
85
+ /**
86
+ * Retrive selected categories' attribute sets
87
+ *
88
+ * @return array
89
+ */
90
+ public function getCategoriesSetIds()
91
+ {
92
+ return $this->getCategories()->getSetIds();
93
+ }
94
+
95
+ /**
96
+ * Retrive same attributes for selected categories without unique
97
+ *
98
+ * @return Mage_Eav_Model_Mysql4_Entity_Attribute_Collection
99
+ */
100
+ public function getAttributes()
101
+ {
102
+ if (is_null($this->_attributes)) {
103
+ $this->_attributes = $this->getCategories()->getEntity()->getEntityType()->getAttributeCollection()
104
+ ->addIsNotUniqueFilter()
105
+ ->setInAllAttributeSetsFilter($this->getCategoriesSetIds());
106
+
107
+ foreach ($this->_excludedAttributes as $attributeCode) {
108
+ $this->_attributes->addFieldToFilter('attribute_code', array('neq'=>$attributeCode));
109
+ }
110
+
111
+ $this->_attributes->load();
112
+ foreach($this->_attributes as $attribute) {
113
+ $attribute->setEntity($this->getCategories()->getEntity());
114
+ }
115
+ }
116
+
117
+ return $this->_attributes;
118
+ }
119
+
120
+ /**
121
+ * Retrive categories ids that not available for selected store
122
+ *
123
+ * @return array
124
+ */
125
+ public function getCategoriesNotInStoreIds()
126
+ {
127
+ if (is_null($this->_categoriesNotInStore)) {
128
+ $this->_categoriesNotInStoreIds = array();
129
+ /*foreach ($this->getCategories() as $category) {
130
+ $stores = $category->getStores();
131
+ if (!isset($stores[$this->getSelectedStoreId()]) && $this->getSelectedStoreId() != 0) {
132
+ $this->_categoriesNotInStoreIds[] = $category->getId();
133
+ }
134
+ }*/
135
+ }
136
+
137
+ return $this->_categoriesNotInStoreIds;
138
+ }
139
+ }
140
+
141
+ ?>
app/code/local/Hwg/Attributemanager/Model/Attributemanager.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Hwg_Attributemanager_Model_attributemanager extends Mage_Eav_Model_Entity_Attribute
4
+ {
5
+ public function _construct()
6
+ {
7
+ parent::_construct();
8
+ }
9
+
10
+ protected function _beforeSave()
11
+ {
12
+ if ( $this->getFrontendInput()=="image"){
13
+ $this->setBackendModel('catalog/category_attribute_backend_image');
14
+ $this->setBackendType('varchar');
15
+ }
16
+
17
+ if ( $this->getFrontendInput()=="date"){
18
+ $this->setBackendModel('eav/entity_attribute_backend_datetime');
19
+ $this->setBackendType('datetime');
20
+ }
21
+
22
+ if ( $this->getFrontendInput()=="textarea" ){
23
+
24
+ $this->setBackendType('text');
25
+ }
26
+
27
+ if ( $this->getFrontendInput()=="text" ){
28
+
29
+ $this->setBackendType('varchar');
30
+ }
31
+
32
+ if ( ($this->getFrontendInput()=="multiselect" || $this->getFrontendInput()=="select") ){
33
+ $this->setData('source_model', 'eav/entity_attribute_source_table');
34
+ $this->setBackendType('varchar');
35
+ }
36
+
37
+
38
+
39
+ if ($this->getFrontendInput()=="boolean"){
40
+ $this->setFrontendInput("select");
41
+ $this->setBackendType('int');
42
+ $this->setData('source_model', 'eav/entity_attribute_source_boolean');
43
+
44
+
45
+ }
46
+
47
+ return parent::_beforeSave();
48
+ }
49
+ }
50
+ ?>
app/code/local/Hwg/Attributemanager/controllers/Adminhtml/AddressController.php ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Adminhtml_AddressController extends Mage_Adminhtml_Controller_Action
3
+ {
4
+ protected $_customer_addressTypeId;
5
+ protected $_type;
6
+ protected $_block;
7
+
8
+ public function preDispatch()
9
+ {
10
+ parent::preDispatch();
11
+ $this->_customer_addressTypeId = Mage::getModel('eav/entity')->setType('customer_address')->getTypeId();
12
+
13
+ $this->_block = 'address';
14
+ $this->_type = 'customer_address';
15
+
16
+ }
17
+
18
+ protected function _initAction() {
19
+ $this->loadLayout()
20
+ ->_setActiveMenu('attributemanager/attributemanager')
21
+ ->_addBreadcrumb(Mage::helper('adminhtml')->__('Attribute Manager'), Mage::helper('adminhtml')->__('Attribute Manager'));
22
+ return $this;
23
+ }
24
+ public function addressAction()
25
+ {
26
+ $this->_initAction()->renderLayout();
27
+ }
28
+
29
+ public function editAction()
30
+ {
31
+ $id = $this->getRequest()->getParam('attribute_id');
32
+ $model = Mage::getModel('eav/entity_attribute')->load($id);
33
+
34
+ if(0!==$id){
35
+ $db = Mage::getSingleton('core/resource')->getConnection('core_write');
36
+ $model->setData("sort_order",$db->fetchOne("select sort_order from eav_entity_attribute where attribute_id=$id"));
37
+ }
38
+
39
+
40
+ if ($model->getId() || $id == 0) {
41
+ $data = Mage::getSingleton('adminhtml/session')->getFormData(true);
42
+ if (!empty($data)) {
43
+ $model->setData($data);
44
+ }
45
+
46
+ Mage::register('attributemanager_data', $model);
47
+
48
+ $this->loadLayout();
49
+ $this->_setActiveMenu('attributemanager/attributemanager');
50
+
51
+ $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager'));
52
+ $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News'));
53
+
54
+ $this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
55
+
56
+ $this
57
+ ->_addContent($this->getLayout()->createBlock('attributemanager/adminhtml_'.$this->_block.'_edit'))
58
+ ->_addLeft($this->getLayout()->createBlock('attributemanager/adminhtml_'.$this->_block.'_edit_tabs'))
59
+ ;
60
+
61
+ $this->renderLayout();
62
+ } else {
63
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('attributemanager')->__('Item does not exist'));
64
+ $this->_redirect('*/*/');
65
+ }
66
+ }
67
+
68
+ public function newAction() {
69
+ $this->_forward('edit');
70
+ }
71
+ public function saveAction() {
72
+ if ($data = $this->getRequest()->getPost()) {
73
+
74
+ $model = Mage::getModel('attributemanager/attributemanager');
75
+ $model->setData($data);
76
+ if( $this->getRequest()->getParam('attribute_id') > 0 ) {
77
+
78
+ $model->setId($this->getRequest()->getParam('attribute_id'));
79
+ }
80
+
81
+ try {
82
+
83
+ if ($model->getCreatedTime == NULL || $model->getUpdateTime() == NULL) {
84
+ $model->setCreatedTime(now())
85
+ ->setUpdateTime(now());
86
+ } else {
87
+ $model->setUpdateTime(now());
88
+ }
89
+
90
+ $model->save();
91
+ $id=$model->getId();
92
+
93
+ if($this->_block == 'customer' || $this->_block == 'address')
94
+ {
95
+ $attribute = Mage::getModel('eav/entity_attribute')->load($id);
96
+
97
+ Mage::getSingleton('eav/config')
98
+ ->getAttribute($this->_type, $attribute->getAttributeCode())
99
+ ->setData('used_in_forms', $data['customer_form'])
100
+ ->save();
101
+ }
102
+
103
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('attributemanager')->__('Item was successfully saved'));
104
+ Mage::getSingleton('adminhtml/session')->setFormData(false);
105
+
106
+ if ($this->getRequest()->getParam('back')) {
107
+ $this->_redirect('*/*/edit', array('type'=>$this->getRequest()->getParam('type'), 'attribute_id' => $id));
108
+ return;
109
+ }
110
+
111
+ $this->_redirect('*/*/'.$this->_block);
112
+ return;
113
+ } catch (Exception $e) {
114
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
115
+ Mage::getSingleton('adminhtml/session')->setFormData($data);
116
+ $this->_redirect('*/*/edit', array('type'=>$this->getRequest()->getParam('type'),'attribute_id' => $this->getRequest()->getParam('attribute_id')));
117
+ return;
118
+ }
119
+ }
120
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('attributemanager')->__('Unable to find item to save'));
121
+ $this->_redirect('*/*/'.$this->_block);
122
+ }
123
+
124
+ public function deleteAction() {
125
+ if( $this->getRequest()->getParam('attribute_id') > 0 ) {
126
+ try {
127
+ $model = Mage::getModel('eav/entity_attribute');
128
+
129
+ $model->setId($this->getRequest()->getParam('attribute_id'))
130
+ ->delete();
131
+
132
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item was successfully deleted'));
133
+ $this->_redirect('*/*/'.$this->_block);
134
+
135
+ } catch (Exception $e) {
136
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
137
+ $this->_redirect('*/*/edit', array('type'=>$this->getRequest()->getParam('type'),'attribute_id' => $this->getRequest()->getParam('attribute_id')));
138
+ }
139
+ }
140
+ $this->_redirect('*/*/'.$this->_block.'/filter//');
141
+ }
142
+
143
+ public function massDeleteAction() {
144
+ $categoriesattributesIds = $this->getRequest()->getParam('attributemanager');
145
+ if(!is_array($categoriesattributesIds)) {
146
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
147
+ } else {
148
+ try {
149
+ foreach ($categoriesattributesIds as $categoriesattributesId) {
150
+ $categoriesattributes = Mage::getModel('eav/entity_attribute')->load($categoriesattributesId);
151
+ $categoriesattributes->delete();
152
+ }
153
+ Mage::getSingleton('adminhtml/session')->addSuccess(
154
+ Mage::helper('adminhtml')->__(
155
+ 'Total of %d record(s) were successfully deleted', count($categoriesattributesIds)
156
+ )
157
+ );
158
+ } catch (Exception $e) {
159
+
160
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
161
+ }
162
+ }
163
+ $this->_redirect('*/*/'.$this->_type);
164
+ }
165
+
166
+ public function exportCsvAction()
167
+ {
168
+ $fileName = $this->_type.'attributes.csv';
169
+ $content = $this->getLayout()->createBlock('attributemanager/adminhtml_'.$this->_block.'_grid')
170
+ ->getCsv();
171
+
172
+ $this->_sendUploadResponse($fileName, $content);
173
+ }
174
+
175
+ public function exportXmlAction()
176
+ {
177
+ $fileName = $this->_type.'attributes.xml';
178
+ $content = $this->getLayout()->createBlock('attributemanager/adminhtml_'.$this->_block.'_grid')
179
+ ->getXml();
180
+
181
+ $this->_sendUploadResponse($fileName, $content);
182
+ }
183
+
184
+ protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream')
185
+ {
186
+ $response = $this->getResponse();
187
+ $response->setHeader('HTTP/1.1 200 OK','');
188
+ $response->setHeader('Pragma', 'public', true);
189
+ $response->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true);
190
+ $response->setHeader('Content-Disposition', 'attachment; filename='.$fileName);
191
+ $response->setHeader('Last-Modified', date('r'));
192
+ $response->setHeader('Accept-Ranges', 'bytes');
193
+ $response->setHeader('Content-Length', strlen($content));
194
+ $response->setHeader('Content-type', $contentType);
195
+ $response->setBody($content);
196
+ $response->sendResponse();
197
+ die;
198
+ }
199
+ }
200
+
201
+ ?>
app/code/local/Hwg/Attributemanager/controllers/Adminhtml/CategoryController.php ADDED
@@ -0,0 +1,200 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Adminhtml_CategoryController extends Mage_Adminhtml_Controller_Action
3
+ {
4
+ protected $_categoryTypeId;
5
+ protected $_type;
6
+ protected $_block;
7
+
8
+ public function preDispatch()
9
+ {
10
+ parent::preDispatch();
11
+ $this->_categoryTypeId = Mage::getModel('eav/entity')->setType('catalog_category')->getTypeId();
12
+
13
+ $this->_block = 'category';
14
+ $this->_type = 'catalog_category';
15
+
16
+ }
17
+
18
+ protected function _initAction() {
19
+ $this->loadLayout()
20
+ ->_setActiveMenu('attributemanager/attributemanager')
21
+ ->_addBreadcrumb(Mage::helper('adminhtml')->__('Attribute Manager'), Mage::helper('adminhtml')->__('Attribute Manager'));
22
+ return $this;
23
+ }
24
+
25
+ public function categoryAction() {
26
+ $this->_initAction()->renderLayout();
27
+ }
28
+ public function editAction()
29
+ {
30
+ $id = $this->getRequest()->getParam('attribute_id');
31
+ $model = Mage::getModel('eav/entity_attribute')->load($id);
32
+
33
+ if(0!==$id){
34
+ $db = Mage::getSingleton('core/resource')->getConnection('core_write');
35
+ $model->setData("sort_order",$db->fetchOne("select sort_order from eav_entity_attribute where attribute_id=$id"));
36
+ }
37
+
38
+
39
+ if ($model->getId() || $id == 0) {
40
+ $data = Mage::getSingleton('adminhtml/session')->getFormData(true);
41
+ if (!empty($data)) {
42
+ $model->setData($data);
43
+ }
44
+
45
+ Mage::register('attributemanager_data', $model);
46
+
47
+ $this->loadLayout();
48
+ $this->_setActiveMenu('attributemanager/attributemanager');
49
+
50
+ $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager'));
51
+ $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News'));
52
+
53
+ $this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
54
+
55
+ $this
56
+ ->_addContent($this->getLayout()->createBlock('attributemanager/adminhtml_'.$this->_block.'_edit'))
57
+ ->_addLeft($this->getLayout()->createBlock('attributemanager/adminhtml_'.$this->_block.'_edit_tabs'))
58
+ ;
59
+
60
+ $this->renderLayout();
61
+ } else {
62
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('attributemanager')->__('Item does not exist'));
63
+ $this->_redirect('*/*/');
64
+ }
65
+ }
66
+
67
+ public function newAction() {
68
+ $this->_forward('edit');
69
+ }
70
+ public function saveAction() {
71
+ if ($data = $this->getRequest()->getPost()) {
72
+
73
+ $model = Mage::getModel('attributemanager/attributemanager');
74
+ $model->setData($data);
75
+ if( $this->getRequest()->getParam('attribute_id') > 0 ) {
76
+
77
+ $model->setId($this->getRequest()->getParam('attribute_id'));
78
+ }
79
+
80
+ try {
81
+
82
+ if ($model->getCreatedTime == NULL || $model->getUpdateTime() == NULL) {
83
+ $model->setCreatedTime(now())
84
+ ->setUpdateTime(now());
85
+ } else {
86
+ $model->setUpdateTime(now());
87
+ }
88
+
89
+ $model->save();
90
+ $id=$model->getId();
91
+
92
+ if($this->_block == 'customer' || $this->_block == 'address')
93
+ {
94
+ $attribute = Mage::getModel('eav/entity_attribute')->load($id);
95
+
96
+ Mage::getSingleton('eav/config')
97
+ ->getAttribute($this->_type, $attribute->getAttributeCode())
98
+ ->setData('used_in_forms', $data['customer_form'])
99
+ ->save();
100
+ }
101
+
102
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('attributemanager')->__('Item was successfully saved'));
103
+ Mage::getSingleton('adminhtml/session')->setFormData(false);
104
+
105
+ if ($this->getRequest()->getParam('back')) {
106
+ $this->_redirect('*/*/edit', array('type'=>$this->getRequest()->getParam('type'), 'attribute_id' => $id));
107
+ return;
108
+ }
109
+
110
+ $this->_redirect('*/*/'.$this->_block);
111
+ return;
112
+ } catch (Exception $e) {
113
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
114
+ Mage::getSingleton('adminhtml/session')->setFormData($data);
115
+ $this->_redirect('*/*/edit', array('type'=>$this->getRequest()->getParam('type'),'attribute_id' => $this->getRequest()->getParam('attribute_id')));
116
+ return;
117
+ }
118
+ }
119
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('attributemanager')->__('Unable to find item to save'));
120
+ $this->_redirect('*/*/'.$this->_block);
121
+ }
122
+
123
+ public function deleteAction() {
124
+ if( $this->getRequest()->getParam('attribute_id') > 0 ) {
125
+ try {
126
+ $model = Mage::getModel('eav/entity_attribute');
127
+
128
+ $model->setId($this->getRequest()->getParam('attribute_id'))
129
+ ->delete();
130
+
131
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item was successfully deleted'));
132
+ $this->_redirect('*/*/'.$this->_block);
133
+
134
+ } catch (Exception $e) {
135
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
136
+ $this->_redirect('*/*/edit', array('type'=>$this->getRequest()->getParam('type'),'attribute_id' => $this->getRequest()->getParam('attribute_id')));
137
+ }
138
+ }
139
+ $this->_redirect('*/*/'.$this->_block.'/filter//');
140
+ }
141
+
142
+ public function massDeleteAction() {
143
+ $categoriesattributesIds = $this->getRequest()->getParam('attributemanager');
144
+ if(!is_array($categoriesattributesIds)) {
145
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
146
+ } else {
147
+ try {
148
+ foreach ($categoriesattributesIds as $categoriesattributesId) {
149
+ $categoriesattributes = Mage::getModel('eav/entity_attribute')->load($categoriesattributesId);
150
+ $categoriesattributes->delete();
151
+ }
152
+ Mage::getSingleton('adminhtml/session')->addSuccess(
153
+ Mage::helper('adminhtml')->__(
154
+ 'Total of %d record(s) were successfully deleted', count($categoriesattributesIds)
155
+ )
156
+ );
157
+ } catch (Exception $e) {
158
+
159
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
160
+ }
161
+ }
162
+ $this->_redirect('*/*/'.$this->_type);
163
+ }
164
+
165
+ public function exportCsvAction()
166
+ {
167
+ $fileName = $this->_type.'attributes.csv';
168
+ $content = $this->getLayout()->createBlock('attributemanager/adminhtml_'.$this->_block.'_grid')
169
+ ->getCsv();
170
+
171
+ $this->_sendUploadResponse($fileName, $content);
172
+ }
173
+
174
+ public function exportXmlAction()
175
+ {
176
+ $fileName = $this->_type.'attributes.xml';
177
+ $content = $this->getLayout()->createBlock('attributemanager/adminhtml_'.$this->_block.'_grid')
178
+ ->getXml();
179
+
180
+ $this->_sendUploadResponse($fileName, $content);
181
+ }
182
+
183
+ protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream')
184
+ {
185
+ $response = $this->getResponse();
186
+ $response->setHeader('HTTP/1.1 200 OK','');
187
+ $response->setHeader('Pragma', 'public', true);
188
+ $response->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true);
189
+ $response->setHeader('Content-Disposition', 'attachment; filename='.$fileName);
190
+ $response->setHeader('Last-Modified', date('r'));
191
+ $response->setHeader('Accept-Ranges', 'bytes');
192
+ $response->setHeader('Content-Length', strlen($content));
193
+ $response->setHeader('Content-type', $contentType);
194
+ $response->setBody($content);
195
+ $response->sendResponse();
196
+ die;
197
+ }
198
+ }
199
+
200
+ ?>
app/code/local/Hwg/Attributemanager/controllers/Adminhtml/CustomerController.php ADDED
@@ -0,0 +1,197 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Adminhtml_CustomerController extends Mage_Adminhtml_Controller_Action
3
+ {
4
+ protected $_customerTypeId;
5
+ protected $_type;
6
+ protected $_block;
7
+
8
+ public function preDispatch()
9
+ {
10
+ parent::preDispatch();
11
+ $this->_customerTypeId = Mage::getModel('eav/entity')->setType('customer')->getTypeId();
12
+
13
+ $this->_block = 'customer';
14
+ $this->_type = 'customer';
15
+
16
+ }
17
+
18
+ protected function _initAction() {
19
+ $this->loadLayout()
20
+ ->_setActiveMenu('attributemanager/attributemanager')
21
+ ->_addBreadcrumb(Mage::helper('adminhtml')->__('Attribute Manager'), Mage::helper('adminhtml')->__('Attribute Manager'));
22
+ return $this;
23
+ }
24
+ public function customerAction()
25
+ {
26
+ $this->_initAction()->renderLayout();
27
+ }
28
+ public function editAction()
29
+ {
30
+ $id = $this->getRequest()->getParam('attribute_id');
31
+ $model = Mage::getModel('eav/entity_attribute')->load($id);
32
+
33
+ if(0!==$id){
34
+ $db = Mage::getSingleton('core/resource')->getConnection('core_write');
35
+ $model->setData("sort_order",$db->fetchOne("select sort_order from eav_entity_attribute where attribute_id=$id"));
36
+ }
37
+ if ($model->getId() || $id == 0) {
38
+ $data = Mage::getSingleton('adminhtml/session')->getFormData(true);
39
+ if (!empty($data)) {
40
+ $model->setData($data);
41
+ }
42
+
43
+ Mage::register('attributemanager_data', $model);
44
+
45
+ $this->loadLayout();
46
+ $this->_setActiveMenu('attributemanager/attributemanager');
47
+
48
+ $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager'));
49
+ $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News'));
50
+
51
+ $this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
52
+
53
+ $this
54
+ ->_addContent($this->getLayout()->createBlock('attributemanager/adminhtml_'.$this->_block.'_edit'))
55
+ ->_addLeft($this->getLayout()->createBlock('attributemanager/adminhtml_'.$this->_block.'_edit_tabs'))
56
+ ;
57
+
58
+ $this->renderLayout();
59
+ } else {
60
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('attributemanager')->__('Item does not exist'));
61
+ $this->_redirect('*/*/');
62
+ }
63
+ }
64
+
65
+ public function newAction() {
66
+ $this->_forward('edit');
67
+ }
68
+ public function saveAction() {
69
+ if ($data = $this->getRequest()->getPost()) {
70
+
71
+ $model = Mage::getModel('attributemanager/attributemanager');
72
+ $model->setData($data);
73
+ if( $this->getRequest()->getParam('attribute_id') > 0 ) {
74
+
75
+ $model->setId($this->getRequest()->getParam('attribute_id'));
76
+ }
77
+
78
+ try {
79
+
80
+ if ($model->getCreatedTime == NULL || $model->getUpdateTime() == NULL) {
81
+ $model->setCreatedTime(now())
82
+ ->setUpdateTime(now());
83
+ } else {
84
+ $model->setUpdateTime(now());
85
+ }
86
+
87
+ $model->save();
88
+ $id=$model->getId();
89
+
90
+ if($this->_block == 'customer' || $this->_block == 'address')
91
+ {
92
+ $attribute = Mage::getModel('eav/entity_attribute')->load($id);
93
+
94
+ Mage::getSingleton('eav/config')
95
+ ->getAttribute($this->_type, $attribute->getAttributeCode())
96
+ ->setData('used_in_forms', $data['customer_form'])
97
+ ->save();
98
+ }
99
+
100
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('attributemanager')->__('Item was successfully saved'));
101
+ Mage::getSingleton('adminhtml/session')->setFormData(false);
102
+
103
+ if ($this->getRequest()->getParam('back')) {
104
+ $this->_redirect('*/*/edit', array('type'=>$this->getRequest()->getParam('type'), 'attribute_id' => $id));
105
+ return;
106
+ }
107
+
108
+ $this->_redirect('*/*/'.$this->_block);
109
+ return;
110
+ } catch (Exception $e) {
111
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
112
+ Mage::getSingleton('adminhtml/session')->setFormData($data);
113
+ $this->_redirect('*/*/edit', array('type'=>$this->getRequest()->getParam('type'),'attribute_id' => $this->getRequest()->getParam('attribute_id')));
114
+ return;
115
+ }
116
+ }
117
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('attributemanager')->__('Unable to find item to save'));
118
+ $this->_redirect('*/*/'.$this->_block);
119
+ }
120
+
121
+ public function deleteAction() {
122
+ if( $this->getRequest()->getParam('attribute_id') > 0 ) {
123
+ try {
124
+ $model = Mage::getModel('eav/entity_attribute');
125
+
126
+ $model->setId($this->getRequest()->getParam('attribute_id'))
127
+ ->delete();
128
+
129
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item was successfully deleted'));
130
+ $this->_redirect('*/*/'.$this->_block);
131
+
132
+ } catch (Exception $e) {
133
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
134
+ $this->_redirect('*/*/edit', array('type'=>$this->getRequest()->getParam('type'),'attribute_id' => $this->getRequest()->getParam('attribute_id')));
135
+ }
136
+ }
137
+ $this->_redirect('*/*/'.$this->_block);
138
+ }
139
+
140
+ public function massDeleteAction() {
141
+ $categoriesattributesIds = $this->getRequest()->getParam('attributemanager');
142
+ if(!is_array($categoriesattributesIds)) {
143
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
144
+ } else {
145
+ try {
146
+ foreach ($categoriesattributesIds as $categoriesattributesId) {
147
+ $categoriesattributes = Mage::getModel('eav/entity_attribute')->load($categoriesattributesId);
148
+ $categoriesattributes->delete();
149
+ }
150
+ Mage::getSingleton('adminhtml/session')->addSuccess(
151
+ Mage::helper('adminhtml')->__(
152
+ 'Total of %d record(s) were successfully deleted', count($categoriesattributesIds)
153
+ )
154
+ );
155
+ } catch (Exception $e) {
156
+
157
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
158
+ }
159
+ }
160
+ $this->_redirect('*/*/'.$this->_type.'/filter//');
161
+ }
162
+
163
+ public function exportCsvAction()
164
+ {
165
+ $fileName = $this->_type.'attributes.csv';
166
+ $content = $this->getLayout()->createBlock('attributemanager/adminhtml_'.$this->_block.'_grid')
167
+ ->getCsv();
168
+
169
+ $this->_sendUploadResponse($fileName, $content);
170
+ }
171
+ public function exportXmlAction()
172
+ {
173
+ $fileName = $this->_type.'attributes.xml';
174
+ $content = $this->getLayout()->createBlock('attributemanager/adminhtml_'.$this->_block.'_grid')
175
+ ->getXml();
176
+
177
+ $this->_sendUploadResponse($fileName, $content);
178
+ }
179
+
180
+ protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream')
181
+ {
182
+ $response = $this->getResponse();
183
+ $response->setHeader('HTTP/1.1 200 OK','');
184
+ $response->setHeader('Pragma', 'public', true);
185
+ $response->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true);
186
+ $response->setHeader('Content-Disposition', 'attachment; filename='.$fileName);
187
+ $response->setHeader('Last-Modified', date('r'));
188
+ $response->setHeader('Accept-Ranges', 'bytes');
189
+ $response->setHeader('Content-Length', strlen($content));
190
+ $response->setHeader('Content-type', $contentType);
191
+ $response->setBody($content);
192
+ $response->sendResponse();
193
+ die;
194
+ }
195
+ }
196
+
197
+ ?>
app/code/local/Hwg/Attributemanager/controllers/Adminhtml/IndexController.php ADDED
@@ -0,0 +1,264 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Hwg_Attributemanager_Adminhtml_IndexController extends Mage_Adminhtml_Controller_Action
3
+ {
4
+ protected $_customerTypeId;
5
+ protected $_categoryTypeId;
6
+ protected $_customer_addressTypeId;
7
+ protected $_type;
8
+ protected $_block;
9
+
10
+ public function preDispatch()
11
+ {
12
+ parent::preDispatch();
13
+ $this->_customerTypeId = Mage::getModel('eav/entity')->setType('customer')->getTypeId();
14
+ $this->_categoryTypeId = Mage::getModel('eav/entity')->setType('catalog_category')->getTypeId();
15
+ $this->_customer_addressTypeId = Mage::getModel('eav/entity')->setType('customer_address')->getTypeId();
16
+
17
+ if ($this->getRequest ()->getParam ( 'type' ))
18
+ {
19
+ switch ($this->getRequest ()->getParam ( 'type' ))
20
+ {
21
+ case "catalog_category" :
22
+ $this->_block = 'category';
23
+ $this->_type = 'catalog_category';
24
+ break;
25
+
26
+ case "customer" :
27
+ $this->_block = 'customer';
28
+ $this->_type = 'customer';
29
+ break;
30
+
31
+ case "customer_address" :
32
+ $this->_block = 'address';
33
+ $this->_type = 'customer_address';
34
+ break;
35
+ }
36
+ }
37
+ }
38
+
39
+ protected function _initAction() {
40
+ $this->loadLayout()
41
+ ->_setActiveMenu('attributemanager/attributemanager')
42
+ ->_addBreadcrumb(Mage::helper('adminhtml')->__('Attribute Manager'), Mage::helper('adminhtml')->__('Attribute Manager'));
43
+ return $this;
44
+ }
45
+
46
+ public function categoryAction() {
47
+ $this->_initAction()->renderLayout();
48
+ }
49
+
50
+ public function customerAction()
51
+ {
52
+ $this->_initAction()->renderLayout();
53
+ }
54
+
55
+ public function addressAction()
56
+ {
57
+ $this->_initAction()->renderLayout();
58
+ }
59
+
60
+ public function editAction()
61
+ {
62
+ $id = $this->getRequest()->getParam('attribute_id');
63
+ $model = Mage::getModel('eav/entity_attribute')->load($id);
64
+
65
+ if(0!==$id){
66
+ $db = Mage::getSingleton('core/resource')->getConnection('core_write');
67
+ $model->setData("sort_order",$db->fetchOne("select sort_order from eav_entity_attribute where attribute_id=$id"));
68
+ }
69
+
70
+
71
+ if ($model->getId() || $id == 0) {
72
+ $data = Mage::getSingleton('adminhtml/session')->getFormData(true);
73
+ if (!empty($data)) {
74
+ $model->setData($data);
75
+ }
76
+
77
+ Mage::register('attributemanager_data', $model);
78
+
79
+ $this->loadLayout();
80
+ $this->_setActiveMenu('attributemanager/attributemanager');
81
+
82
+ $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager'));
83
+ $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News'));
84
+
85
+ $this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
86
+
87
+ $this
88
+ ->_addContent($this->getLayout()->createBlock('attributemanager/adminhtml_'.$this->_block.'_edit'))
89
+ ->_addLeft($this->getLayout()->createBlock('attributemanager/adminhtml_'.$this->_block.'_edit_tabs'))
90
+ ;
91
+
92
+ $this->renderLayout();
93
+ } else {
94
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('attributemanager')->__('Item does not exist'));
95
+ $this->_redirect('*/*/');
96
+ }
97
+ }
98
+
99
+ public function newAction() {
100
+ $this->_forward('edit');
101
+ }
102
+
103
+ public function validateAction()
104
+ {
105
+ $response = new Varien_Object();
106
+ $response->setError(false);
107
+
108
+ $attributeCode = $this->getRequest()->getParam('type');
109
+ $attributeId = $this->getRequest()->getParam('attribute_id');
110
+ switch ($attributeCode){
111
+ case "catalog_category":
112
+ $this->_entityTypeId=$this->_categoryTypeId;
113
+ break;
114
+
115
+ case "customer":
116
+ $this->_entityTypeId=$this->_customerTypeId;
117
+ break;
118
+
119
+ case "customer_address":
120
+ $this->_entityTypeId=$this->_customer_addressTypeId;
121
+ break;
122
+ }
123
+ $attribute = Mage::getModel('eav/entity_attribute')
124
+ ->loadByCode($this->_entityTypeId, $attributeCode);
125
+
126
+ if ($attribute->getId() && !$attributeId) {
127
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('catalog')->__('Attribute with the same code already exists'));
128
+ $this->_initLayoutMessages('adminhtml/session');
129
+ $response->setError(true);
130
+ $response->setMessage($this->getLayout()->getMessagesBlock()->getGroupedHtml());
131
+ }
132
+
133
+ $this->getResponse()->setBody($response->toJson());
134
+ }
135
+
136
+ public function saveAction() {
137
+ if ($data = $this->getRequest()->getPost()) {
138
+
139
+ $model = Mage::getModel('attributemanager/attributemanager');
140
+ $model->setData($data);
141
+ if( $this->getRequest()->getParam('attribute_id') > 0 ) {
142
+
143
+ $model->setId($this->getRequest()->getParam('attribute_id'));
144
+ }
145
+
146
+ try {
147
+
148
+ if ($model->getCreatedTime == NULL || $model->getUpdateTime() == NULL) {
149
+ $model->setCreatedTime(now())
150
+ ->setUpdateTime(now());
151
+ } else {
152
+ $model->setUpdateTime(now());
153
+ }
154
+
155
+ $model->save();
156
+ $id=$model->getId();
157
+
158
+ if($this->_block == 'customer' || $this->_block == 'address')
159
+ {
160
+ $attribute = Mage::getModel('eav/entity_attribute')->load($id);
161
+
162
+ Mage::getSingleton('eav/config')
163
+ ->getAttribute($this->_type, $attribute->getAttributeCode())
164
+ ->setData('used_in_forms', $data['customer_form'])
165
+ ->save();
166
+ }
167
+
168
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('attributemanager')->__('Item was successfully saved'));
169
+ Mage::getSingleton('adminhtml/session')->setFormData(false);
170
+
171
+ if ($this->getRequest()->getParam('back')) {
172
+ $this->_redirect('*/*/edit', array('type'=>$this->getRequest()->getParam('type'), 'attribute_id' => $id));
173
+ return;
174
+ }
175
+
176
+ $this->_redirect('*/*/'.$this->_block);
177
+ return;
178
+ } catch (Exception $e) {
179
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
180
+ Mage::getSingleton('adminhtml/session')->setFormData($data);
181
+ $this->_redirect('*/*/edit', array('type'=>$this->getRequest()->getParam('type'),'attribute_id' => $this->getRequest()->getParam('attribute_id')));
182
+ return;
183
+ }
184
+ }
185
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('attributemanager')->__('Unable to find item to save'));
186
+ $this->_redirect('*/*/'.$this->_block);
187
+ }
188
+
189
+ public function deleteAction() {
190
+ if( $this->getRequest()->getParam('attribute_id') > 0 ) {
191
+ try {
192
+ $model = Mage::getModel('eav/entity_attribute');
193
+
194
+ $model->setId($this->getRequest()->getParam('attribute_id'))
195
+ ->delete();
196
+
197
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item was successfully deleted'));
198
+ $this->_redirect('*/*/'.$this->_type.'/filter//');
199
+ } catch (Exception $e) {
200
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
201
+ $this->_redirect('*/*/edit', array('type'=>$this->getRequest()->getParam('type'),'attribute_id' => $this->getRequest()->getParam('attribute_id')));
202
+ }
203
+ }
204
+ $this->_redirect('*/*/'.$this->_type.'/filter//');
205
+ }
206
+
207
+ public function massDeleteAction() {
208
+ $categoriesattributesIds = $this->getRequest()->getParam('attributemanager');
209
+ if(!is_array($categoriesattributesIds)) {
210
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
211
+ } else {
212
+ try {
213
+ foreach ($categoriesattributesIds as $categoriesattributesId) {
214
+ $categoriesattributes = Mage::getModel('eav/entity_attribute')->load($categoriesattributesId);
215
+ $categoriesattributes->delete();
216
+ }
217
+ Mage::getSingleton('adminhtml/session')->addSuccess(
218
+ Mage::helper('adminhtml')->__(
219
+ 'Total of %d record(s) were successfully deleted', count($categoriesattributesIds)
220
+ )
221
+ );
222
+ } catch (Exception $e) {
223
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
224
+ }
225
+ }
226
+ $this->_redirect('*/*/'.$this->_type.'/filter//');
227
+ }
228
+
229
+ public function exportCsvAction()
230
+ {
231
+ $fileName = $this->_type.'attributes.csv';
232
+ $content = $this->getLayout()->createBlock('attributemanager/grid')
233
+ ->getCsv();
234
+
235
+ $this->_sendUploadResponse($fileName, $content);
236
+ }
237
+
238
+ public function exportXmlAction()
239
+ {
240
+ $fileName = $this->_type.'attributes.xml';
241
+ $content = $this->getLayout()->createBlock('attributemanager/grid')
242
+ ->getXml();
243
+
244
+ $this->_sendUploadResponse($fileName, $content);
245
+ }
246
+
247
+ protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream')
248
+ {
249
+ $response = $this->getResponse();
250
+ $response->setHeader('HTTP/1.1 200 OK','');
251
+ $response->setHeader('Pragma', 'public', true);
252
+ $response->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true);
253
+ $response->setHeader('Content-Disposition', 'attachment; filename='.$fileName);
254
+ $response->setHeader('Last-Modified', date('r'));
255
+ $response->setHeader('Accept-Ranges', 'bytes');
256
+ $response->setHeader('Content-Length', strlen($content));
257
+ $response->setHeader('Content-type', $contentType);
258
+ $response->setBody($content);
259
+ $response->sendResponse();
260
+ die;
261
+ }
262
+ }
263
+
264
+ ?>
app/code/local/Hwg/Attributemanager/etc/config.xml ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Hwg_Attributemanager>
5
+ <version>0.1.0</version>
6
+ </Hwg_Attributemanager>
7
+ </modules>
8
+ <admin>
9
+ <routers>
10
+ <attributemanager>
11
+ <use>admin</use>
12
+ <args>
13
+ <module>Hwg_Attributemanager</module>
14
+ <frontName>attributemanager</frontName>
15
+ </args>
16
+ </attributemanager>
17
+ </routers>
18
+ </admin>
19
+ <default>
20
+ <config_vars></config_vars>
21
+ </default>
22
+ <adminhtml>
23
+ <menu>
24
+ <attributemanager module="attributemanager">
25
+ <title>Attribute Manager</title>
26
+ <sort_order>70</sort_order>
27
+ <children>
28
+ <category_manager module="attributemanager">
29
+ <title>Category Attribute</title>
30
+ <sort_order>10</sort_order>
31
+ <action>attributemanager/adminhtml_category/category</action>
32
+ </category_manager>
33
+ <customer_manager module="attributemanager">
34
+ <title>Customer Attribute</title>
35
+ <sort_order>20</sort_order>
36
+ <action>attributemanager/adminhtml_customer/customer</action>
37
+ </customer_manager>
38
+ <customer_address_manager module="attributemanager">
39
+ <title>Customer Address Attribute</title>
40
+ <sort_order>30</sort_order>
41
+ <action>attributemanager/adminhtml_address/address</action>
42
+ </customer_address_manager>
43
+ </children>
44
+ </attributemanager>
45
+ </menu>
46
+ <acl>
47
+ <resources>
48
+ <all>
49
+ <title>Allow Everything</title>
50
+ </all>
51
+ <admin>
52
+ <children>
53
+ <Hwg_Attributemanager>
54
+ <title>Attributemanager Module</title>
55
+ <sort_order>10</sort_order>
56
+ </Hwg_Attributemanager>
57
+ </children>
58
+ </admin>
59
+ </resources>
60
+ </acl>
61
+ <layout>
62
+ <updates>
63
+ <attributemanager>
64
+ <file>attributemanager.xml</file>
65
+ </attributemanager>
66
+ </updates>
67
+ </layout>
68
+ </adminhtml>
69
+
70
+ <global>
71
+ <models>
72
+ <attributemanager>
73
+ <class>Hwg_Attributemanager_Model</class>
74
+ </attributemanager>
75
+ </models>
76
+ <blocks>
77
+ <attributemanager>
78
+ <class>Hwg_Attributemanager_Block</class>
79
+ </attributemanager>
80
+ </blocks>
81
+ <helpers>
82
+ <attributemanager>
83
+ <class>Hwg_Attributemanager_Helper</class>
84
+ </attributemanager>
85
+ </helpers>
86
+ </global>
87
+ </config>
app/design/adminhtml/default/default/layout/attributemanager.xml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" ?>
2
+ <layout version="0.1.0">
3
+ <attributemanager_adminhtml_category_category>
4
+ <reference name="content">
5
+ <block type="attributemanager/adminhtml_category" name="attributemanager_category" />
6
+ </reference>
7
+ </attributemanager_adminhtml_category_category>
8
+
9
+ <attributemanager_adminhtml_customer_customer>
10
+ <reference name="content">
11
+ <block type="attributemanager/adminhtml_customer" name="attributemanager_customer" />
12
+ </reference>
13
+ </attributemanager_adminhtml_customer_customer>
14
+
15
+ <attributemanager_adminhtml_address_address>
16
+ <reference name="content">
17
+ <block type="attributemanager/adminhtml_address" name="attributemanager_address" />
18
+ </reference>
19
+ </attributemanager_adminhtml_address_address>
20
+ </layout>
app/etc/modules/Hwg_Attributemanager.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Hwg_Attributemanager>
5
+ <active>true</active>
6
+ <codePool>local</codePool>
7
+ </Hwg_Attributemanager>
8
+ </modules>
9
+ </config>
package.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Hwg_Attributemanager</name>
4
+ <version>0.1.0</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://opensource.org/licenses/osl-3.0.php">GPL</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>Create custom attribute for customer, category, customer address</summary>
10
+ <description>Using this extension you can create custom attributes for customer, category, customer address.</description>
11
+ <notes>First version</notes>
12
+ <authors><author><name>Sanjay Modasia</name><user>sanjaymodasia</user><email>sanjaymodasia@gmail.com</email></author></authors>
13
+ <date>2012-05-18</date>
14
+ <time>06:22:58</time>
15
+ <contents><target name="magelocal"><dir name="Hwg"><dir name="Attributemanager"><dir name="Block"><dir name="Adminhtml"><dir name="Address"><dir name="Edit"><file name="Form.php" hash="b6cd8384a5380850d810adfebdd9f714"/><dir name="Tab"><file name="Main.php" hash="98fb53f1ac8315077891829ea76c6732"/><file name="Options.php" hash="9b802dbcf80251e45a5f77ece9895033"/></dir><file name="Tabs.php" hash="b010124cc527cc0bda16b062e0ec12d9"/></dir><file name="Edit.php" hash="2940e471a524dd278e2f909b79721c75"/><file name="Grid.php" hash="3d6b4941dcfe3acdf8612ec18797d1a9"/></dir><file name="Address.php" hash="0ee9142d47a055ce80b9abba1edd2a10"/><dir name="Category"><dir name="Edit"><file name="Form.php" hash="117173cba42eb72725c2bac6717eaae4"/><dir name="Tab"><file name="Front.php" hash="1adeab8c8bbf9c45f8d81d5453a9fa63"/><file name="Main.php" hash="7065c6806abba244b42c8533b5328f45"/><file name="Options.php" hash="f54573f629266fb215ca2a2ff79690b1"/><file name="System.php" hash="a0297869e9aa6df54611e61946764606"/></dir><file name="Tabs.php" hash="175dc93f524d62fac852a3c88d5cd3fa"/></dir><file name="Edit.php" hash="fb74624c5cfaf545f5789dce62b5e36e"/><file name="Grid.php" hash="5e5fea8d4ed79f3712708198c53d41dc"/></dir><file name="Category.php" hash="103e8d55704b9237af218c18eec51359"/><dir name="Customer"><dir name="Edit"><file name="Form.php" hash="518c24ba092cb60841db93b6a9b33658"/><dir name="Tab"><file name="Front.php" hash="29754c79c4b9fdf247fc4be78bb762f8"/><file name="Main.php" hash="20fac1539bce94c150d606f36700a474"/><file name="Options.php" hash="cc77c662c69e297eb53f6bc9abb446b9"/><file name="System.php" hash="133a65f79ced3e244347a4c0d6495854"/></dir><file name="Tabs.php" hash="2b4a7cea518b27bc46135dbc3bfce96d"/></dir><file name="Edit.php" hash="8dfc17823c78e8e576dea75ddf98e124"/><file name="Grid.php" hash="d86c4c106a8660b2481a2a9e613a8154"/></dir><file name="Customer.php" hash="fdbe66aa1b6cbbaaa92239bf5cfb92b7"/></dir></dir><dir name="Helper"><file name="Data.php" hash="b3ac459c1fcaa696433aeafede13747e"/></dir><dir name="Model"><file name="Attributemanager.php" hash="e54514153c723943ceb0835bdf18000d"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="AddressController.php" hash="ba611cc4d765379ecfcda2e171b659e6"/><file name="CategoryController.php" hash="5f7e8f5f9513365f9e34728f9789f63a"/><file name="CustomerController.php" hash="b57ebc46709ecd78b255c3957d5b9e6a"/><file name="IndexController.php" hash="272f19208e8da306b445c5e83037e9d8"/></dir></dir><dir name="etc"><file name="config.xml" hash="fc071f2cfae029187dce63f728192b6a"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="attributemanager.xml" hash="616f27b876b35df290befde732c98638"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Hwg_Attributemanager.xml" hash="c88f9e812a4f29ebf61e76602792c539"/></dir></target></contents>
16
+ <compatible/>
17
+ <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
18
+ </package>