Custom_Attributemanager - Version 1.0.6

Version Notes

Manage customer attributes and collect more information from customers.


Create fields for
- Registration form
- Account edit form
- Admin -> customer account information form

Download this release

Release Info

Developer Magento Core Team
Extension Custom_Attributemanager
Version 1.0.6
Comparing to
See all releases


Code changes from version 0.0.6 to 1.0.6

app/code/community/Custom/Attributemanager/Block/Adminhtml/Customer/Edit/Tab/Account.php DELETED
@@ -1,207 +0,0 @@
1
- <?php
2
- class Custom_Attributemanager_Block_Adminhtml_Customer_Edit_Tab_Account extends Mage_Adminhtml_Block_Customer_Edit_Tab_Account
3
- {
4
- public function initForm()
5
- {
6
- $form = new Varien_Data_Form();
7
- $form->setHtmlIdPrefix('_account');
8
- $form->setFieldNameSuffix('account');
9
-
10
- $customer = Mage::registry('current_customer');
11
-
12
- /* @var $customerForm Mage_Customer_Model_Form */
13
- $customerForm = Mage::getModel('customer/form');
14
- $customerForm->setEntity($customer)
15
- ->setFormCode('adminhtml_customer')
16
- ->initDefaultValues();
17
-
18
- $fieldset = $form->addFieldset('base_fieldset',
19
- array('legend'=>Mage::helper('customer')->__('Account Information'))
20
- );
21
-
22
- $attributes = $customerForm->getAttributes();
23
-
24
- foreach ($attributes as $attribute) {
25
- $attribute->unsIsVisible();
26
- }
27
- $this->_setFieldset($attributes, $fieldset);
28
-
29
- if ($customer->getId()) {
30
- $form->getElement('website_id')->setDisabled('disabled');
31
- $form->getElement('created_in')->setDisabled('disabled');
32
- } else {
33
- $fieldset->removeField('created_in');
34
- }
35
-
36
- if (Mage::app()->isSingleStoreMode()) {
37
- $fieldset->removeField('website_id');
38
- $fieldset->addField('website_id', 'hidden', array(
39
- 'name' => 'website_id'
40
- ));
41
- $customer->setWebsiteId(Mage::app()->getStore(true)->getWebsiteId());
42
- }
43
-
44
- $customer_group_id = $customer->getGroupId();
45
-
46
- $fieldsetcompany = $form->addFieldset('more_fieldset',
47
- array('legend'=>Mage::helper('customer')->__('More Information'))
48
- );
49
-
50
- $js_arr = array();
51
- foreach ($attributes as $attribute) {
52
-
53
- if($attribute->getIsUserDefined()) {
54
- // remove field from base fieldset
55
- $fieldset->removeField($attribute->getAttributeCode());
56
-
57
- // insert field in our custom fieldset
58
- if($attribute->getFrontendInput() == 'boolean' || $attribute->getFrontendInput() == 'select' || $attribute->getFrontendInput() == 'checkbox') {
59
-
60
- $element = $fieldsetcompany->addField($attribute->getAttributeCode(), $attribute->getFrontendInput(), array(
61
- 'label' => $attribute->getFrontend()->getLabel(),
62
- 'required' => $attribute->getIsRequired(),
63
- 'name' => $attribute->getAttributeCode(),
64
- 'values' => $attribute->getFrontend()->getAttribute()->getSource()->getAllOptions()
65
- ));
66
-
67
- } else {
68
-
69
- $element = $fieldsetcompany->addField($attribute->getAttributeCode(), $attribute->getFrontendInput(), array(
70
- 'label' => $attribute->getFrontend()->getLabel(),
71
- 'required' => $attribute->getIsRequired(),
72
- 'name' => $attribute->getAttributeCode()
73
- ))
74
- ->setEntityAttribute($attribute);
75
-
76
- }
77
-
78
- if ($attribute->getFrontendInput() == 'date') {
79
- $element->setImage($this->getSkinUrl('images/grid-cal.gif'));
80
- $element->setFormat(Mage::app()->getLocale()->getDateFormatWithLongYear());
81
- }
82
- if($attribute->getIsRequired())
83
- $js_arr[] = $attribute->getAttributeCode();
84
-
85
- }
86
- }
87
-
88
- $prefix = $form->getHtmlIdPrefix();
89
- $total_elements = count($js_arr);
90
- $add_class_js_script = '';
91
- $remove_class_js_script = '';
92
- for($j=0; $j<$total_elements; $j++) {
93
- $add_class_js_script .= " $('{$prefix}". $js_arr[$j] ."').addClassName('required-entry') ;";
94
- $remove_class_js_script .= " $('{$prefix}". $js_arr[$j] ."').removeClassName('required-entry') ;";
95
- }
96
-
97
- $customer_group = $form->getElement('group_id');
98
-
99
- if ($customer->getId()) {
100
- if (!$customer->isReadonly()) {
101
- // add password management fieldset
102
- $newFieldset = $form->addFieldset(
103
- 'password_fieldset',
104
- array('legend'=>Mage::helper('customer')->__('Password Management'))
105
- );
106
- // New customer password
107
- $field = $newFieldset->addField('new_password', 'text',
108
- array(
109
- 'label' => Mage::helper('customer')->__('New Password'),
110
- 'name' => 'new_password',
111
- 'class' => 'validate-new-password'
112
- )
113
- );
114
- $field->setRenderer($this->getLayout()->createBlock('adminhtml/customer_edit_renderer_newpass'));
115
-
116
- // prepare customer confirmation control (only for existing customers)
117
- $confirmationKey = $customer->getConfirmation();
118
- if ($confirmationKey || $customer->isConfirmationRequired()) {
119
- $confirmationAttribute = $customer->getAttribute('confirmation');
120
- if (!$confirmationKey) {
121
- $confirmationKey = $customer->getRandomConfirmationKey();
122
- }
123
- $element = $fieldset->addField('confirmation', 'select', array(
124
- 'name' => 'confirmation',
125
- 'label' => Mage::helper('customer')->__($confirmationAttribute->getFrontendLabel()),
126
- ))->setEntityAttribute($confirmationAttribute)
127
- ->setValues(array('' => 'Confirmed', $confirmationKey => 'Not confirmed'));
128
-
129
- // prepare send welcome email checkbox, if customer is not confirmed
130
- // no need to add it, if website id is empty
131
- if ($customer->getConfirmation() && $customer->getWebsiteId()) {
132
- $fieldset->addField('sendemail', 'checkbox', array(
133
- 'name' => 'sendemail',
134
- 'label' => Mage::helper('customer')->__('Send Welcome Email after Confirmation')
135
- ));
136
- $customer->setData('sendemail', '1');
137
- }
138
- }
139
- }
140
- } else {
141
- $newFieldset = $form->addFieldset(
142
- 'password_fieldset',
143
- array('legend'=>Mage::helper('customer')->__('Password Management'))
144
- );
145
- $field = $newFieldset->addField('password', 'text',
146
- array(
147
- 'label' => Mage::helper('customer')->__('Password'),
148
- 'class' => 'input-text required-entry validate-password',
149
- 'name' => 'password',
150
- 'required' => true
151
- )
152
- );
153
- $field->setRenderer($this->getLayout()->createBlock('adminhtml/customer_edit_renderer_newpass'));
154
-
155
- // prepare send welcome email checkbox
156
- $fieldset->addField('sendemail', 'checkbox', array(
157
- 'label' => Mage::helper('customer')->__('Send Welcome Email'),
158
- 'name' => 'sendemail',
159
- 'id' => 'sendemail',
160
- ));
161
- $customer->setData('sendemail', '1');
162
- if (!Mage::app()->isSingleStoreMode()) {
163
- $fieldset->addField('sendemail_store_id', 'select', array(
164
- 'label' => $this->helper('customer')->__('Send From'),
165
- 'name' => 'sendemail_store_id',
166
- 'values' => Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm()
167
- ));
168
- }
169
- }
170
-
171
- // make sendemail and sendmail_store_id disabled, if website_id has empty value
172
- $isSingleMode = Mage::app()->isSingleStoreMode();
173
- $sendEmailId = $isSingleMode ? 'sendemail' : 'sendemail_store_id';
174
- $sendEmail = $form->getElement($sendEmailId);
175
-
176
- $prefix = $form->getHtmlIdPrefix();
177
- if ($sendEmail) {
178
- $sendEmail->setAfterElementHtml(
179
- '<script type="text/javascript">'
180
- . "
181
- $('{$prefix}website_id').disableSendemail = function() {
182
- $('{$prefix}sendemail').disabled = ('' == this.value || '0' == this.value);".
183
- ($isSingleMode ? "" : "$('{$prefix}sendemail_store_id').disabled = ('' == this.value || '0' == this.value);")
184
- ."}.bind($('{$prefix}website_id'));
185
- Event.observe('{$prefix}website_id', 'change', $('{$prefix}website_id').disableSendemail);
186
- $('{$prefix}website_id').disableSendemail();
187
- "
188
- . '</script>'
189
- );
190
- }
191
-
192
- if ($customer->isReadonly()) {
193
- foreach ($customer->getAttributes() as $attribute) {
194
- $element = $form->getElement($attribute->getAttributeCode());
195
- if ($element) {
196
- $element->setReadonly(true, true);
197
- }
198
- }
199
- }
200
-
201
- $form->setValues($customer->getData());
202
- $this->setForm($form);
203
-
204
- return $this;
205
- }
206
-
207
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Custom/Attributemanager/Block/Edit/Tab/Options.php CHANGED
@@ -116,6 +116,7 @@ class Custom_Attributemanager_Block_Edit_Tab_Options extends Mage_Adminhtml_Bloc
116
  if (is_array($frontendLabel)) {
117
  $frontendLabel = array_shift($frontendLabel);
118
  }
 
119
  $translations = Mage::getModel('core/translate_string')
120
  ->load(Mage_Catalog_Model_Entity_Attribute::MODULE_NAME.Mage_Core_Model_Translate::SCOPE_SEPARATOR.$frontendLabel)
121
  ->getStoreTranslations();
@@ -124,12 +125,14 @@ class Custom_Attributemanager_Block_Edit_Tab_Options extends Mage_Adminhtml_Bloc
124
  $values[$store->getId()] = isset($translations[$store->getId()]) ? $translations[$store->getId()] : '';
125
  }
126
  }
127
- return $values;
 
128
  }
129
 
130
  public function getStoreOptionValues($storeId)
131
  {
132
  $values = $this->getData('store_option_values_'.$storeId);
 
133
  if (is_null($values)) {
134
  $values = array();
135
  $valuesCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
@@ -141,6 +144,7 @@ class Custom_Attributemanager_Block_Edit_Tab_Options extends Mage_Adminhtml_Bloc
141
  }
142
  $this->setData('store_option_values_'.$storeId, $values);
143
  }
 
144
  return $values;
145
  }
146
 
116
  if (is_array($frontendLabel)) {
117
  $frontendLabel = array_shift($frontendLabel);
118
  }
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();
125
  $values[$store->getId()] = isset($translations[$store->getId()]) ? $translations[$store->getId()] : '';
126
  }
127
  }
128
+
129
+ return ($this->getAttributeObject()->getStoreLabels() + $values);
130
  }
131
 
132
  public function getStoreOptionValues($storeId)
133
  {
134
  $values = $this->getData('store_option_values_'.$storeId);
135
+
136
  if (is_null($values)) {
137
  $values = array();
138
  $valuesCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
144
  }
145
  $this->setData('store_option_values_'.$storeId, $values);
146
  }
147
+
148
  return $values;
149
  }
150
 
app/code/community/Custom/Attributemanager/controllers/IndexController.php CHANGED
@@ -168,7 +168,7 @@ class Custom_Attributemanager_IndexController extends Mage_Adminhtml_Controller_
168
  if($data['frontend_input'] == 'boolean') {
169
  $attribute->setData('source_model', 'eav/entity_attribute_source_boolean');
170
  }
171
-
172
  $attribute->save();
173
  }
174
 
168
  if($data['frontend_input'] == 'boolean') {
169
  $attribute->setData('source_model', 'eav/entity_attribute_source_boolean');
170
  }
171
+
172
  $attribute->save();
173
  }
174
 
app/code/community/Custom/Attributemanager/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Custom_Attributemanager>
5
- <version>0.0.6</version>
6
  </Custom_Attributemanager>
7
  </modules>
8
  <admin>
@@ -78,11 +78,6 @@
78
  <attributemanager>
79
  <class>Custom_Attributemanager_Block</class>
80
  </attributemanager>
81
- <adminhtml>
82
- <rewrite>
83
- <customer_edit_tab_account>Custom_Attributemanager_Block_Adminhtml_Customer_Edit_Tab_Account</customer_edit_tab_account>
84
- </rewrite>
85
- </adminhtml>
86
  </blocks>
87
  <helpers>
88
  <attributemanager>
2
  <config>
3
  <modules>
4
  <Custom_Attributemanager>
5
+ <version>1.0.6</version>
6
  </Custom_Attributemanager>
7
  </modules>
8
  <admin>
78
  <attributemanager>
79
  <class>Custom_Attributemanager_Block</class>
80
  </attributemanager>
 
 
 
 
 
81
  </blocks>
82
  <helpers>
83
  <attributemanager>
app/design/adminhtml/default/default/template/attributemanager/options.phtml CHANGED
@@ -28,7 +28,7 @@
28
  <?php endforeach; ?>
29
  </tr>
30
  <tr>
31
- <?php $_labels = $this->getLabelValues() ?>
32
  <?php foreach ($this->getStores() as $_store): ?>
33
  <td>
34
  <input class="input-text<?php if($_store->getId()==0): ?> required-option<?php endif; ?>" type="text" name="frontend_label[<?php echo $_store->getId() ?>]" value="<?php echo $this->htmlEscape($_labels[$_store->getId()]) ?>" />
28
  <?php endforeach; ?>
29
  </tr>
30
  <tr>
31
+ <?php $_labels = $this->getLabelValues(); ?>
32
  <?php foreach ($this->getStores() as $_store): ?>
33
  <td>
34
  <input class="input-text<?php if($_store->getId()==0): ?> required-option<?php endif; ?>" type="text" name="frontend_label[<?php echo $_store->getId() ?>]" value="<?php echo $this->htmlEscape($_labels[$_store->getId()]) ?>" />
app/design/frontend/default/default/layout/attributemanager.xml CHANGED
@@ -12,6 +12,11 @@
12
  <action method="addItem"><type>js</type><name>calendar/calendar.js</name></action>
13
  <action method="addItem"><type>js</type><name>calendar/calendar-setup.js</name></action>
14
  </reference>
 
 
 
 
 
15
  <reference name="before_body_end">
16
  <block type="core/html_calendar" name="html_calendar" as="html_calendar" template="page/js/calendar.phtml"/>
17
  </reference>
@@ -25,6 +30,11 @@
25
  <action method="addItem"><type>js</type><name>calendar/calendar.js</name></action>
26
  <action method="addItem"><type>js</type><name>calendar/calendar-setup.js</name></action>
27
  </reference>
 
 
 
 
 
28
  <reference name="before_body_end">
29
  <block type="core/html_calendar" name="html_calendar" as="html_calendar" template="page/js/calendar.phtml"/>
30
  </reference>
12
  <action method="addItem"><type>js</type><name>calendar/calendar.js</name></action>
13
  <action method="addItem"><type>js</type><name>calendar/calendar-setup.js</name></action>
14
  </reference>
15
+
16
+ <block name="customer_form_register">
17
+ <action method="setTemplate"><template>attributemanager/customer/form/register.phtml</template></action>
18
+ </block>
19
+
20
  <reference name="before_body_end">
21
  <block type="core/html_calendar" name="html_calendar" as="html_calendar" template="page/js/calendar.phtml"/>
22
  </reference>
30
  <action method="addItem"><type>js</type><name>calendar/calendar.js</name></action>
31
  <action method="addItem"><type>js</type><name>calendar/calendar-setup.js</name></action>
32
  </reference>
33
+
34
+ <block name="customer_edit">
35
+ <action method="setTemplate"><template>attributemanager/customer/form/edit.phtml</template></action>
36
+ </block>
37
+
38
  <reference name="before_body_end">
39
  <block type="core/html_calendar" name="html_calendar" as="html_calendar" template="page/js/calendar.phtml"/>
40
  </reference>
app/design/frontend/default/default/template/{customer → attributemanager/customer}/form/edit.phtml RENAMED
@@ -71,6 +71,8 @@
71
  ->setEntityTypeFilter( Mage::getModel('eav/entity')->setType($type)->getTypeId() )
72
  ->addVisibleFilter()
73
  ->addFilter('is_user_defined', 1)->setOrder('sort_order', 'ASC');
 
 
74
 
75
  foreach($collection as $attribute) {
76
  $attr = $attribute->toArray();
@@ -78,14 +80,15 @@
78
  if($attr['is_required'])
79
  $var_attrs[] = $attr['attribute_code'];
80
 
 
 
 
81
  echo '<li>';
82
  $func = 'get'. str_replace(' ', '', ucwords(str_replace('_', ' ', $attr['attribute_code'])) );
83
 
84
- //call_user_func(array(get_class($this->getFormData()), $func));
85
-
86
  switch($attr['frontend_input']) {
87
  case 'text':
88
- echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $attr['frontend_label'] ) . '</label>';
89
  echo '
90
  <div class="input-box">
91
  <input type="text" name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" value="'. $this->htmlEscape($this->getCustomer()->$func()) .'" />
@@ -93,11 +96,10 @@
93
  break;
94
 
95
  case 'select':
96
- echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $attr['frontend_label'] ) . '</label>';
97
  echo '
98
  <div class="input-box">';
99
  echo '<select name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" >';
100
- foreach ($attribute->getSource()->getAllOptions(true, true) as $instance) {
101
  echo '<option value="'.$instance['value'].'" '. ($this->htmlEscape($this->getCustomer()->$func()) == $instance['value'] ? 'selected' : '') .'>' . $instance['label'] . '</option>';
102
  }
103
  echo '</select>';
@@ -107,7 +109,6 @@
107
  break;
108
 
109
  case 'textarea':
110
- echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $attr['frontend_label'] ) . '</label>';
111
  echo '
112
  <div class="input-box">
113
  <textarea name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" >'. $this->htmlEscape($this->getCustomer()->$func()) .'</textarea>
@@ -115,12 +116,15 @@
115
  break;
116
 
117
  case 'multiselect':
118
- echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $attr['frontend_label'] ) . '</label>';
119
  echo '
120
  <div class="input-box">';
121
- echo '<select name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" multiple="multiple" >';
122
- foreach ($attribute->getSource()->getAllOptions(true, true) as $instance) {
123
- echo '<option value="'.$instance['value'].'" '. ($this->htmlEscape($this->getCustomer()->$func()) == $instance['value'] ? 'selected' : '') .'>' . $instance['label'] . '</option>';
 
 
 
 
124
  }
125
  echo '</select>';
126
  break;
@@ -129,7 +133,6 @@
129
  $date_element = new Varien_Data_Form_Element_Date();
130
  $date_element->setValue($this->htmlEscape($this->getCustomer()->$func()));
131
 
132
- echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $attr['frontend_label'] ) . '</label>';
133
  echo '
134
  <div class="input-box">
135
  <input type="text" name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" value="'. $date_element->getValue(Mage::app()->getLocale()->getDateFormatWithLongYear()) .'" class="input-text" style="width:110px !important;" />
71
  ->setEntityTypeFilter( Mage::getModel('eav/entity')->setType($type)->getTypeId() )
72
  ->addVisibleFilter()
73
  ->addFilter('is_user_defined', 1)->setOrder('sort_order', 'ASC');
74
+
75
+ $store_id = Mage::app()->getStore()->getId();
76
 
77
  foreach($collection as $attribute) {
78
  $attr = $attribute->toArray();
80
  if($attr['is_required'])
81
  $var_attrs[] = $attr['attribute_code'];
82
 
83
+ $store_labels = $attribute->getStoreLabels();
84
+ $label = $store_labels[$store_id] ? $store_labels[$store_id] : $attr['frontend_label'];
85
+
86
  echo '<li>';
87
  $func = 'get'. str_replace(' ', '', ucwords(str_replace('_', ' ', $attr['attribute_code'])) );
88
 
89
+ echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $label ) . '</label>';
 
90
  switch($attr['frontend_input']) {
91
  case 'text':
 
92
  echo '
93
  <div class="input-box">
94
  <input type="text" name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" value="'. $this->htmlEscape($this->getCustomer()->$func()) .'" />
96
  break;
97
 
98
  case 'select':
 
99
  echo '
100
  <div class="input-box">';
101
  echo '<select name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" >';
102
+ foreach ($attribute->getSource()->getAllOptions((!$attr['is_required']), false) as $instance) {
103
  echo '<option value="'.$instance['value'].'" '. ($this->htmlEscape($this->getCustomer()->$func()) == $instance['value'] ? 'selected' : '') .'>' . $instance['label'] . '</option>';
104
  }
105
  echo '</select>';
109
  break;
110
 
111
  case 'textarea':
 
112
  echo '
113
  <div class="input-box">
114
  <textarea name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" >'. $this->htmlEscape($this->getCustomer()->$func()) .'</textarea>
116
  break;
117
 
118
  case 'multiselect':
 
119
  echo '
120
  <div class="input-box">';
121
+
122
+ $multi_values = explode(',', $this->htmlEscape($this->getCustomer()->$func()));
123
+
124
+ echo '<select name="'. $attr['attribute_code'] .'[]" id="'. $attr['attribute_code'] .'" multiple="multiple" >';
125
+
126
+ foreach ($attribute->getSource()->getAllOptions((!$attr['is_required']), false) as $instance) {
127
+ echo '<option value="'.$instance['value'].'" '. (in_array($instance['value'], $multi_values) ? 'selected="selected"' : '') .'>' . $instance['label'] . '</option>';
128
  }
129
  echo '</select>';
130
  break;
133
  $date_element = new Varien_Data_Form_Element_Date();
134
  $date_element->setValue($this->htmlEscape($this->getCustomer()->$func()));
135
 
 
136
  echo '
137
  <div class="input-box">
138
  <input type="text" name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" value="'. $date_element->getValue(Mage::app()->getLocale()->getDateFormatWithLongYear()) .'" class="input-text" style="width:110px !important;" />
app/design/frontend/default/default/template/{customer → attributemanager/customer}/form/register.phtml RENAMED
@@ -72,18 +72,23 @@
72
  ->addVisibleFilter()
73
  ->addFilter('is_user_defined', 1)->setOrder('sort_order', 'ASC');
74
 
 
 
75
  foreach($collection as $attribute) {
76
  $attr = $attribute->toArray();
77
 
78
  if($attr['is_required'])
79
  $var_attrs[] = $attr['attribute_code'];
80
 
 
 
 
81
  echo '<li>';
82
  $func = 'get'. str_replace(' ', '', ucwords(str_replace('_', ' ', $attr['attribute_code'])) );
83
 
84
  //call_user_func(array(get_class($this->getFormData()), $func));
85
 
86
- echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $attr['frontend_label'] ) . '</label>';
87
  switch($attr['frontend_input']) {
88
  case 'text':
89
  echo '
@@ -96,7 +101,7 @@
96
  echo '
97
  <div class="input-box">';
98
  echo '<select name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" >';
99
- foreach ($attribute->getSource()->getAllOptions(true, true) as $instance) {
100
  echo '<option value="'.$instance['value'].'" '. ($this->htmlEscape($this->getFormData()->$func()) == $instance['value'] ? 'selected' : '') .'>' . $instance['label'] . '</option>';
101
  }
102
  echo '</select>';
@@ -115,9 +120,12 @@
115
  case 'multiselect':
116
  echo '
117
  <div class="input-box">';
118
- echo '<select name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" multiple="multiple" >';
119
- foreach ($attribute->getSource()->getAllOptions(true, true) as $instance) {
120
- echo '<option value="'.$instance['value'].'" '. ($this->htmlEscape($this->getFormData()->$func()) == $instance['value'] ? 'selected' : '') .'>' . $instance['label'] . '</option>';
 
 
 
121
  }
122
  echo '</select>';
123
  break;
72
  ->addVisibleFilter()
73
  ->addFilter('is_user_defined', 1)->setOrder('sort_order', 'ASC');
74
 
75
+ $store_id = Mage::app()->getStore()->getId();
76
+
77
  foreach($collection as $attribute) {
78
  $attr = $attribute->toArray();
79
 
80
  if($attr['is_required'])
81
  $var_attrs[] = $attr['attribute_code'];
82
 
83
+ $store_labels = $attribute->getStoreLabels();
84
+ $label = $store_labels[$store_id] ? $store_labels[$store_id] : $attr['frontend_label'];
85
+
86
  echo '<li>';
87
  $func = 'get'. str_replace(' ', '', ucwords(str_replace('_', ' ', $attr['attribute_code'])) );
88
 
89
  //call_user_func(array(get_class($this->getFormData()), $func));
90
 
91
+ echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $label ) . '</label>';
92
  switch($attr['frontend_input']) {
93
  case 'text':
94
  echo '
101
  echo '
102
  <div class="input-box">';
103
  echo '<select name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" >';
104
+ foreach ($attribute->getSource()->getAllOptions((!$attr['is_required']), false) as $instance) {
105
  echo '<option value="'.$instance['value'].'" '. ($this->htmlEscape($this->getFormData()->$func()) == $instance['value'] ? 'selected' : '') .'>' . $instance['label'] . '</option>';
106
  }
107
  echo '</select>';
120
  case 'multiselect':
121
  echo '
122
  <div class="input-box">';
123
+ echo '<select name="'. $attr['attribute_code'] .'[]" id="'. $attr['attribute_code'] .'" multiple="multiple" >';
124
+
125
+ $multi_values = explode(',', $this->htmlEscape($this->getFormData()->$func()));
126
+
127
+ foreach ($attribute->getSource()->getAllOptions((!$attr['is_required']), false) as $instance) {
128
+ echo '<option value="'.$instance['value'].'" '. (in_array($instance['value'], $multi_values) ? 'selected' : '') .'>' . $instance['label'] . '</option>';
129
  }
130
  echo '</select>';
131
  break;
app/design/frontend/default/default/template/{persistent → attributemanager/persistent}/customer/form/edit.phtml RENAMED
@@ -72,24 +72,28 @@
72
  ->addVisibleFilter()
73
  ->addFilter('is_user_defined', 1)->setOrder('sort_order', 'ASC');
74
 
 
 
75
  foreach($collection as $attribute) {
76
  //echo get_class($attribute) . '<br />';
77
  //echo '<pre>';
78
  //print_r( get_class_methods( get_class( $attribute ) ) );
79
  $attr = $attribute->toArray();
80
 
81
-
82
  if($attr['is_required'])
83
  $var_attrs[] = $attr['attribute_code'];
84
 
 
 
 
85
  echo '<li>';
86
  $func = 'get'. str_replace(' ', '', ucwords(str_replace('_', ' ', $attr['attribute_code'])) );
87
 
88
  //call_user_func(array(get_class($this->getFormData()), $func));
89
 
 
90
  switch($attr['frontend_input']) {
91
  case 'text':
92
- echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $attr['frontend_label'] ) . '</label>';
93
  echo '
94
  <div class="input-box">
95
  <input type="text" name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" value="'. $this->htmlEscape($this->getCustomer()->$func()) .'" />
@@ -97,11 +101,10 @@
97
  break;
98
 
99
  case 'select':
100
- echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $attr['frontend_label'] ) . '</label>';
101
  echo '
102
  <div class="input-box">';
103
  echo '<select name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" >';
104
- foreach ($attribute->getSource()->getAllOptions(true, true) as $instance) {
105
  echo '<option value="'.$instance['value'].'" '. ($this->htmlEscape($this->getCustomer()->$func()) == $instance['value'] ? 'selected' : '') .'>' . $instance['label'] . '</option>';
106
  }
107
  echo '</select>';
@@ -111,7 +114,6 @@
111
  break;
112
 
113
  case 'textarea':
114
- echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $attr['frontend_label'] ) . '</label>';
115
  echo '
116
  <div class="input-box">
117
  <textarea name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" >'. $this->htmlEscape($this->getCustomer()->$func()) .'</textarea>
@@ -119,12 +121,13 @@
119
  break;
120
 
121
  case 'multiselect':
122
- echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $attr['frontend_label'] ) . '</label>';
123
  echo '
124
  <div class="input-box">';
125
- echo '<select name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" multiple="multiple" >';
126
- foreach ($attribute->getSource()->getAllOptions(true, true) as $instance) {
127
- echo '<option value="'.$instance['value'].'" '. ($this->htmlEscape($this->getCustomer()->$func()) == $instance['value'] ? 'selected' : '') .'>' . $instance['label'] . '</option>';
 
 
128
  }
129
  echo '</select>';
130
  break;
@@ -133,7 +136,6 @@
133
  $date_element = new Varien_Data_Form_Element_Date();
134
  $date_element->setValue($this->htmlEscape($this->getCustomer()->$func()));
135
 
136
- echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $attr['frontend_label'] ) . '</label>';
137
  echo '
138
  <div class="input-box">
139
  <input type="text" name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" value="'. $date_element->getValue(Mage::app()->getLocale()->getDateFormatWithLongYear()) .'" class="input-text" style="width:110px !important;" />
@@ -151,7 +153,7 @@
151
  </div>';
152
  break;
153
  }
154
-
155
  echo '
156
  </li>';
157
  }
72
  ->addVisibleFilter()
73
  ->addFilter('is_user_defined', 1)->setOrder('sort_order', 'ASC');
74
 
75
+ $store_id = Mage::app()->getStore()->getId();
76
+
77
  foreach($collection as $attribute) {
78
  //echo get_class($attribute) . '<br />';
79
  //echo '<pre>';
80
  //print_r( get_class_methods( get_class( $attribute ) ) );
81
  $attr = $attribute->toArray();
82
 
 
83
  if($attr['is_required'])
84
  $var_attrs[] = $attr['attribute_code'];
85
 
86
+ $store_labels = $attribute->getStoreLabels();
87
+ $label = $store_labels[$store_id] ? $store_labels[$store_id] : $attr['frontend_label'];
88
+
89
  echo '<li>';
90
  $func = 'get'. str_replace(' ', '', ucwords(str_replace('_', ' ', $attr['attribute_code'])) );
91
 
92
  //call_user_func(array(get_class($this->getFormData()), $func));
93
 
94
+ echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $label ) . '</label>';
95
  switch($attr['frontend_input']) {
96
  case 'text':
 
97
  echo '
98
  <div class="input-box">
99
  <input type="text" name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" value="'. $this->htmlEscape($this->getCustomer()->$func()) .'" />
101
  break;
102
 
103
  case 'select':
 
104
  echo '
105
  <div class="input-box">';
106
  echo '<select name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" >';
107
+ foreach ($attribute->getSource()->getAllOptions((!$attr['is_required']), false) as $instance) {
108
  echo '<option value="'.$instance['value'].'" '. ($this->htmlEscape($this->getCustomer()->$func()) == $instance['value'] ? 'selected' : '') .'>' . $instance['label'] . '</option>';
109
  }
110
  echo '</select>';
114
  break;
115
 
116
  case 'textarea':
 
117
  echo '
118
  <div class="input-box">
119
  <textarea name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" >'. $this->htmlEscape($this->getCustomer()->$func()) .'</textarea>
121
  break;
122
 
123
  case 'multiselect':
 
124
  echo '
125
  <div class="input-box">';
126
+ echo '<select name="'. $attr['attribute_code'] .'[]" id="'. $attr['attribute_code'] .'" multiple="multiple" >';
127
+
128
+ $multi_values = explode(',', $this->htmlEscape($this->getCustomer()->$func()));
129
+ foreach ($attribute->getSource()->getAllOptions((!$attr['is_required']), false) as $instance) {
130
+ echo '<option value="'.$instance['value'].'" '. (in_array($instance['value'], $multi_values) ? 'selected="selected"' : '') .'>' . $instance['label'] . '</option>';
131
  }
132
  echo '</select>';
133
  break;
136
  $date_element = new Varien_Data_Form_Element_Date();
137
  $date_element->setValue($this->htmlEscape($this->getCustomer()->$func()));
138
 
 
139
  echo '
140
  <div class="input-box">
141
  <input type="text" name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" value="'. $date_element->getValue(Mage::app()->getLocale()->getDateFormatWithLongYear()) .'" class="input-text" style="width:110px !important;" />
153
  </div>';
154
  break;
155
  }
156
+
157
  echo '
158
  </li>';
159
  }
app/design/frontend/default/default/template/{persistent → attributemanager/persistent}/customer/form/register.phtml RENAMED
@@ -72,17 +72,22 @@
72
  ->addVisibleFilter()
73
  ->addFilter('is_user_defined', 1)->setOrder('sort_order', 'ASC');
74
 
75
- foreach($collection as $attribute) {
 
 
76
  $attr = $attribute->toArray();
77
 
78
  if($attr['is_required'])
79
  $var_attrs[] = $attr['attribute_code'];
80
 
 
 
 
81
  echo '<li>';
82
  $func = 'get'. str_replace(' ', '', ucwords(str_replace('_', ' ', $attr['attribute_code'])) );
83
 
84
  //call_user_func(array(get_class($this->getFormData()), $func));
85
- echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $attr['frontend_label'] ) . '</label>';
86
  switch($attr['frontend_input']) {
87
  case 'text':
88
  echo '
@@ -95,7 +100,7 @@
95
  echo '
96
  <div class="input-box">';
97
  echo '<select name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" >';
98
- foreach ($attribute->getSource()->getAllOptions(true, true) as $instance) {
99
  echo '<option value="'.$instance['value'].'" '. ($this->htmlEscape($this->getFormData()->$func()) == $instance['value'] ? 'selected' : '') .'>' . $instance['label'] . '</option>';
100
  }
101
  echo '</select>';
@@ -114,9 +119,12 @@
114
  case 'multiselect':
115
  echo '
116
  <div class="input-box">';
117
- echo '<select name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" multiple="multiple" >';
118
- foreach ($attribute->getSource()->getAllOptions(true, true) as $instance) {
119
- echo '<option value="'.$instance['value'].'" '. ($this->htmlEscape($this->getFormData()->$func()) == $instance['value'] ? 'selected' : '') .'>' . $instance['label'] . '</option>';
 
 
 
120
  }
121
  echo '</select>';
122
  break;
72
  ->addVisibleFilter()
73
  ->addFilter('is_user_defined', 1)->setOrder('sort_order', 'ASC');
74
 
75
+ $store_id = Mage::app()->getStore()->getId();
76
+
77
+ foreach($collection as $attribute) {
78
  $attr = $attribute->toArray();
79
 
80
  if($attr['is_required'])
81
  $var_attrs[] = $attr['attribute_code'];
82
 
83
+ $store_labels = $attribute->getStoreLabels();
84
+ $label = $store_labels[$store_id] ? $store_labels[$store_id] : $attr['frontend_label'];
85
+
86
  echo '<li>';
87
  $func = 'get'. str_replace(' ', '', ucwords(str_replace('_', ' ', $attr['attribute_code'])) );
88
 
89
  //call_user_func(array(get_class($this->getFormData()), $func));
90
+ echo '<label for="'. $attr['attribute_code'] .'" '. ($attr['is_required']?'class="required"><em>*</em>':'>') . $this->__( $label ) . '</label>';
91
  switch($attr['frontend_input']) {
92
  case 'text':
93
  echo '
100
  echo '
101
  <div class="input-box">';
102
  echo '<select name="'. $attr['attribute_code'] .'" id="'. $attr['attribute_code'] .'" >';
103
+ foreach ($attribute->getSource()->getAllOptions((!$attr['is_required']), false) as $instance) {
104
  echo '<option value="'.$instance['value'].'" '. ($this->htmlEscape($this->getFormData()->$func()) == $instance['value'] ? 'selected' : '') .'>' . $instance['label'] . '</option>';
105
  }
106
  echo '</select>';
119
  case 'multiselect':
120
  echo '
121
  <div class="input-box">';
122
+ echo '<select name="'. $attr['attribute_code'] .'[]" id="'. $attr['attribute_code'] .'" multiple="multiple" >';
123
+
124
+ $multi_values = explode(',', $this->htmlEscape($this->getFormData()->$func()));
125
+
126
+ foreach ($attribute->getSource()->getAllOptions((!$attr['is_required']), false) as $instance) {
127
+ echo '<option value="'.$instance['value'].'" '. (in_array($instance['value'], $multi_values) ? 'selected' : '') .'>' . $instance['label'] . '</option>';
128
  }
129
  echo '</select>';
130
  break;
package.xml CHANGED
@@ -1,22 +1,27 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Custom_Attributemanager</name>
4
- <version>0.0.6</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL</license>
7
  <channel>community</channel>
8
  <extends/>
9
- <summary>Get more information from customers</summary>
10
- <description>Create and manage attributes of customers.&#xD;
11
- &lt;br&gt;&#xD;
12
- An admin interface to create/manage customer attributes. &#xD;
13
- &lt;br&gt;&#xD;
14
  Frontend register and account edit pages will automatically reflect attributes.</description>
15
- <notes>Manage customer attributes and collect more information from customers.</notes>
 
 
 
 
 
16
  <authors><author><name>Ankit</name><user>auto-converted</user><email>ankitce9@gmail.com</email></author></authors>
17
- <date>2013-01-08</date>
18
- <time>06:46:46</time>
19
- <contents><target name="magecommunity"><dir name="Custom"><dir name="Attributemanager"><dir name="Block"><dir name="Adminhtml"><dir name="Customer"><dir name="Edit"><dir name="Tab"><file name="Account.php" hash="481405ec1c0f00add5469a2b85feb608"/></dir></dir></dir></dir><dir name="Edit"><dir name="Tab"><file name="Front.php" hash="2c99f0056100d663694e918655ba1a6e"/><file name="Main.php" hash="e54f6c7e1e963108b3879add105615af"/><file name="Options.php" hash="d5359d9a57d28359412d0ee60d6f62cd"/><file name="System.php" hash="7886c85dbfe78489d288781c06ed15ab"/></dir><file name="Form.php" hash="2d46039a5e9cdcd35541c836e24c81a8"/><file name="Tabs.php" hash="9dd66b4e1f960fa408e3699ef26cb0d0"/></dir><file name="Attributemanager.php" hash="f6aca64ddea7819205ffee10a36b3838"/><file name="Edit.php" hash="062fde1fa1675fe8e82a38ff63066bf9"/><file name="Grid.php" hash="40707645de55c57292a3906ccd9b41b4"/></dir><dir name="Helper"><file name="Data.php" hash="7c6b17fec5f73bbdba0c7ff74d552275"/></dir><dir name="Model"><file name="Attributemanager.php" hash="4427e20ae7614042d3ae9186a6f9f22f"/></dir><dir name="controllers"><file name="IndexController.php" hash="ba4deaa10fb5cfb4cfc82211e0a8abe8"/></dir><dir name="etc"><file name="config.xml" hash="816baaf1a233de4f1c1a19dac56148aa"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="attributemanager.xml" hash="9def95e84fc5df62f16f45d112ba7029"/></dir><dir name="template"><dir name="attributemanager"><dir name="new"><file name="created.phtml" hash="6221466a0afd2af66521244391f000d1"/></dir><file name="grid.phtml" hash="64f9821b3a83a80f0c4df62b1dcdac2d"/><file name="index.phtml" hash="f132317f55eb66a3a8f2062b1b570a1b"/><file name="js.phtml" hash="ceaf55fd2d77b197df0e4205e0cd7b14"/><file name="options.phtml" hash="cfa077b54985e1f4687d2d42f0cd266a"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="template"><dir name="customer"><dir name="form"><file name="edit.phtml" hash="d4bc760ffa6ae3fe1e64f7f806494e9d"/><file name="register.phtml" hash="ffcc0bbd436d4177e104411fd2844546"/></dir></dir><dir name="persistent"><dir name="customer"><dir name="form"><file name="edit.phtml" hash="cf53898ce3ae9e89da4351e9e9bde0bc"/><file name="register.phtml" hash="312767c65bb15501489f39d5ceaa0771"/></dir></dir></dir></dir><dir name="layout"><file name="attributemanager.xml" hash="51133e003149b1c594875ce9647676ab"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Custom_Attributemanager.xml" hash="138221f47562aaeca52becccadbc99d9"/></dir></target></contents>
20
  <compatible/>
21
  <dependencies/>
22
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Custom_Attributemanager</name>
4
+ <version>1.0.6</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL</license>
7
  <channel>community</channel>
8
  <extends/>
9
+ <summary>Get more information from customers.</summary>
10
+ <description>Create and manage attributes of customers.&#xD;&#xD;
11
+ &lt;br&gt;&#xD;&#xD;
12
+ An admin interface to create/manage customer attributes. &#xD;&#xD;
13
+ &lt;br&gt;&#xD;&#xD;
14
  Frontend register and account edit pages will automatically reflect attributes.</description>
15
+ <notes>Manage customer attributes and collect more information from customers.&#xD;
16
+ &lt;br&gt;&#xD;
17
+ Create fields for&#xD;
18
+ - Registration form&#xD;
19
+ - Account edit form&#xD;
20
+ - Admin -&gt; customer account information form</notes>
21
  <authors><author><name>Ankit</name><user>auto-converted</user><email>ankitce9@gmail.com</email></author></authors>
22
+ <date>2013-06-28</date>
23
+ <time>11:32:20</time>
24
+ <contents><target name="magecommunity"><dir name="Custom"><dir name="Attributemanager"><dir name="Block"><dir name="Edit"><dir name="Tab"><file name="Front.php" hash="2c99f0056100d663694e918655ba1a6e"/><file name="Main.php" hash="e54f6c7e1e963108b3879add105615af"/><file name="Options.php" hash="0cf9bb8dd3fc7a5a7ef61af260d206f1"/><file name="System.php" hash="7886c85dbfe78489d288781c06ed15ab"/></dir><file name="Form.php" hash="2d46039a5e9cdcd35541c836e24c81a8"/><file name="Tabs.php" hash="9dd66b4e1f960fa408e3699ef26cb0d0"/></dir><file name="Attributemanager.php" hash="f6aca64ddea7819205ffee10a36b3838"/><file name="Edit.php" hash="062fde1fa1675fe8e82a38ff63066bf9"/><file name="Grid.php" hash="40707645de55c57292a3906ccd9b41b4"/></dir><dir name="Helper"><file name="Data.php" hash="7c6b17fec5f73bbdba0c7ff74d552275"/></dir><dir name="Model"><file name="Attributemanager.php" hash="4427e20ae7614042d3ae9186a6f9f22f"/></dir><dir name="controllers"><file name="IndexController.php" hash="fea2517def42ad42604cd45c9a03a3bf"/></dir><dir name="etc"><file name="config.xml" hash="e9e0cc9ec8d6d3f8e3bb87e00341484d"/></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="default"><dir name="default"><dir name="template"><dir name="attributemanager"><dir name="customer"><dir name="form"><file name="edit.phtml" hash="edf5ade055e29e2a7132e2cd8e70fd92"/><file name="register.phtml" hash="3f6773f6e6c4b9a5cdbcdf7fefcaccda"/></dir></dir><dir name="persistent"><dir name="customer"><dir name="form"><file name="edit.phtml" hash="019fceb526338efea9280f191db6de14"/><file name="register.phtml" hash="190b79a8e917a03c3a2505f46855c582"/></dir></dir></dir></dir></dir><dir name="layout"><file name="attributemanager.xml" hash="849a3fa1c10129370600da32ddd8e7e3"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="attributemanager"><dir name="new"><file name="created.phtml" hash="6221466a0afd2af66521244391f000d1"/></dir><file name="grid.phtml" hash="64f9821b3a83a80f0c4df62b1dcdac2d"/><file name="index.phtml" hash="f132317f55eb66a3a8f2062b1b570a1b"/><file name="js.phtml" hash="ceaf55fd2d77b197df0e4205e0cd7b14"/><file name="options.phtml" hash="9b11cf8e72e7675c8edf8c6028c19467"/></dir></dir><dir name="layout"><file name="attributemanager.xml" hash="9def95e84fc5df62f16f45d112ba7029"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Custom_Attributemanager.xml" hash="138221f47562aaeca52becccadbc99d9"/></dir></target></contents>
25
  <compatible/>
26
  <dependencies/>
27
  </package>