Ultimate_ModuleCreator - Version 1.9.4.1

Version Notes

Feature
- Support for URL rewrites for entity list pages

Bug Fix:
- EAV tree entities admin tree not refreshing on save

Improvement
- Cleaned a bit the code

Download this release

Release Info

Developer Marius
Extension Ultimate_ModuleCreator
Version 1.9.4.1
Comparing to
See all releases


Code changes from version 1.9.4.0 to 1.9.4.1

Files changed (63) hide show
  1. app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit.php +61 -53
  2. app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Form.php +5 -1
  3. app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tab/Entities.php +1 -0
  4. app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tab/Entities/Entity.php +10 -1
  5. app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tab/Entities/Entity/Attribute.php +12 -1
  6. app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tab/Help.php +46 -30
  7. app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tab/Help/Fieldset.php +5 -0
  8. app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tab/Relation.php +3 -0
  9. app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tab/Settings.php +4 -2
  10. app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tabs.php +3 -0
  11. app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Grid.php +5 -2
  12. app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Grid/Column/Renderer/Download.php +5 -1
  13. app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/System/Config/Form/Fieldset/Abstract.php +5 -3
  14. app/code/community/Ultimate/ModuleCreator/Exception.php +2 -1
  15. app/code/community/Ultimate/ModuleCreator/Helper/Data.php +8 -5
  16. app/code/community/Ultimate/ModuleCreator/Model/Abstract.php +5 -5
  17. app/code/community/Ultimate/ModuleCreator/Model/Attribute.php +49 -3
  18. app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Abstract.php +7 -2
  19. app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Country.php +0 -4
  20. app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Dropdown.php +6 -8
  21. app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Dropdown/Abstract.php +6 -0
  22. app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Dropdown/Custom.php +1 -1
  23. app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Dropdown/Product.php +7 -7
  24. app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/File.php +0 -2
  25. app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Image.php +0 -2
  26. app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Timestamp.php +0 -1
  27. app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Yesno.php +0 -3
  28. app/code/community/Ultimate/ModuleCreator/Model/Config.php +1 -1
  29. app/code/community/Ultimate/ModuleCreator/Model/Entity.php +87 -64
  30. app/code/community/Ultimate/ModuleCreator/Model/Entity/Type/Eav.php +2 -8
  31. app/code/community/Ultimate/ModuleCreator/Model/Module.php +94 -36
  32. app/code/community/Ultimate/ModuleCreator/Model/Module/Collection.php +2 -1
  33. app/code/community/Ultimate/ModuleCreator/Model/Relation.php +1 -1
  34. app/code/community/Ultimate/ModuleCreator/Model/Source/Attribute/Type.php +4 -2
  35. app/code/community/Ultimate/ModuleCreator/Model/Source/Attribute/Value/Source.php +3 -1
  36. app/code/community/Ultimate/ModuleCreator/Model/Source/Codepool.php +1 -1
  37. app/code/community/Ultimate/ModuleCreator/Model/Source/Entity/Layout.php +3 -1
  38. app/code/community/Ultimate/ModuleCreator/Model/Source/Entity/Type.php +3 -1
  39. app/code/community/Ultimate/ModuleCreator/Model/Source/Install.php +1 -1
  40. app/code/community/Ultimate/ModuleCreator/Model/Writer.php +2 -1
  41. app/code/community/Ultimate/ModuleCreator/controllers/Adminhtml/ModulecreatorController.php +11 -3
  42. app/code/community/Ultimate/ModuleCreator/etc/config.xml +1 -1
  43. app/code/community/Ultimate/ModuleCreator/etc/source/app/code/Block/Adminhtml/Entity/Edit/Tab/Attributes/021_default_values +9 -0
  44. app/code/community/Ultimate/ModuleCreator/etc/source/app/code/Block/Adminhtml/Entity/Edit/Tab/Attributes/022_default_values_tree +2 -0
  45. app/code/community/Ultimate/ModuleCreator/etc/source/app/code/Block/Adminhtml/Entity/Edit/Tab/Attributes/023_layout +0 -9
  46. app/code/community/Ultimate/ModuleCreator/etc/source/app/code/Controller/Router/020_entity +2 -0
  47. app/code/community/Ultimate/ModuleCreator/etc/source/app/code/Controller/Router/030_footer +12 -0
  48. app/code/community/Ultimate/ModuleCreator/etc/source/app/code/Helper/Entity/020_create_list +3 -0
  49. app/code/community/Ultimate/ModuleCreator/etc/source/app/locale/130_url_rewrite +2 -0
  50. app/code/community/Ultimate/ModuleCreator/etc/umc.xml +31 -0
  51. app/code/community/Ultimate/ModuleCreator/etc/umc_source.xml +11 -0
  52. app/design/adminhtml/default/default/layout/ultimate_modulecreator.xml +2 -2
  53. app/design/adminhtml/default/default/template/ultimate_modulecreator/edit.phtml +1 -1
  54. app/design/adminhtml/default/default/template/ultimate_modulecreator/edit/tab/entities.phtml +1 -1
  55. app/design/adminhtml/default/default/template/ultimate_modulecreator/edit/tab/entities/entity.phtml +2 -1
  56. app/design/adminhtml/default/default/template/ultimate_modulecreator/edit/tab/entities/entity/attribute.phtml +1 -0
  57. app/design/adminhtml/default/default/template/ultimate_modulecreator/edit/tab/help.phtml +1 -1
  58. app/design/adminhtml/default/default/template/ultimate_modulecreator/edit/tab/help/fieldset.phtml +1 -1
  59. app/design/adminhtml/default/default/template/ultimate_modulecreator/edit/tab/relation.phtml +1 -1
  60. app/design/adminhtml/default/default/template/ultimate_modulecreator/tooltip.phtml +2 -2
  61. app/locale/en_US/Ultimate_ModuleCreator.csv +8 -0
  62. js/ultimate_modulecreator.js +1 -1
  63. package.xml +11 -8
app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit.php CHANGED
@@ -66,63 +66,69 @@ class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit
66
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
67
  */
68
  protected function _prepareLayout() {
69
- $this->setChild('back_button',
70
- $this->getLayout()
71
- ->createBlock('adminhtml/widget_button')
72
- ->setData(array(
73
- 'label' => Mage::helper('modulecreator')->__('Back'),
74
- 'onclick' => 'setLocation(\''.$this->getUrl('*/*/').'\')',
75
- 'class' => 'back'
76
- ))
77
- );
78
- $this->setChild('reset_button',
79
- $this->getLayout()
80
- ->createBlock('adminhtml/widget_button')
81
- ->setData(array(
82
- 'label' => Mage::helper('modulecreator')->__('Reset'),
83
- 'onclick' => 'setLocation(\''.$this->getUrl('*/*/*', array('_current'=>true)).'\')'
84
- ))
85
- );
86
- $this->setChild('save_button',
87
- $this->getLayout()
88
- ->createBlock('adminhtml/widget_button')
89
- ->setData(array(
90
- 'label' => Mage::helper('modulecreator')->__('Save'),
91
- 'onclick' => 'moduleForm.submit()',
92
- 'class' => 'save'
93
- ))
94
- );
95
- $this->setChild('save_and_edit_button',
96
- $this->getLayout()
97
- ->createBlock('adminhtml/widget_button')
98
- ->setData(array(
99
- 'label' => Mage::helper('modulecreator')->__('Save and Continue Edit'),
100
- 'onclick' => 'saveAndContinueEdit(\''.$this->getSaveAndContinueUrl().'\')',
101
- 'class' => 'save'
102
- ))
103
- );
104
- $this->setChild('add-entity',
105
- $this->getLayout()
106
- ->createBlock('adminhtml/widget_button')
107
- ->setData(array(
108
- 'label' => Mage::helper('modulecreator')->__('Add entity'),
109
- 'class' => 'add add-entity'
110
- ))
111
- );
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  $block = Mage::app()->getLayout()
114
- ->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_entities_entity')
115
- ->setTemplate('ultimate_modulecreator/edit/tab/entities/entity.phtml')
116
- ->setDefaultEntity()
117
- ->setIncrement('{{entity_id}}');
118
  $this->setChild('entity-template', $block);
119
 
 
120
  $block = Mage::app()->getLayout()
121
- ->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_entities_entity_attribute')
122
- ->setTemplate('ultimate_modulecreator/edit/tab/entities/entity/attribute.phtml')
123
- ->setDefaultAttributeInstance()
124
- ->setIncrement('{{attribute_id}}')
125
- ->setEntityId('{{entity_id}}');
126
  $this->setChild('attribute-template', $block);
127
 
128
  $this->setChild('menu-selector', Mage::app()->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_menu'));
@@ -231,7 +237,9 @@ class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit
231
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
232
  */
233
  public function getRelationSelectTemplate() {
234
- $types = Mage::helper('modulecreator')->getRelationTypes();
 
 
235
  $template = '<select class="relation-select" name="relation[#{e1}][#{e2}]" id="relation_#{e1}_#{e2}">';
236
  foreach ($types as $type=>$values){
237
  $template .= '<option value="'.$type.'">'.(string)$values->label.'</option>';
66
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
67
  */
68
  protected function _prepareLayout() {
69
+ /** @var Mage_Adminhtml_Block_Widget_Button $backButton */
70
+ $backButton = $this->getLayout()
71
+ ->createBlock('adminhtml/widget_button')
72
+ ->setData(array(
73
+ 'label' => Mage::helper('modulecreator')->__('Back'),
74
+ 'onclick' => 'setLocation(\''.$this->getUrl('*/*/').'\')',
75
+ 'class' => 'back'
76
+ ));
77
+ $this->setChild('back_button', $backButton);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
 
79
+ /** @var Mage_Adminhtml_Block_Widget_Button $resetButton */
80
+ $resetButton = $this->getLayout()
81
+ ->createBlock('adminhtml/widget_button')
82
+ ->setData(array(
83
+ 'label' => Mage::helper('modulecreator')->__('Reset'),
84
+ 'onclick' => 'setLocation(\''.$this->getUrl('*/*/*', array('_current'=>true)).'\')'
85
+ ));
86
+ $this->setChild('reset_button', $resetButton);
87
+
88
+ /** @var Mage_Adminhtml_Block_Widget_Button $saveButton */
89
+ $saveButton = $this->getLayout()
90
+ ->createBlock('adminhtml/widget_button')
91
+ ->setData(array(
92
+ 'label' => Mage::helper('modulecreator')->__('Save'),
93
+ 'onclick' => 'moduleForm.submit()',
94
+ 'class' => 'save'
95
+ ));
96
+ $this->setChild('save_button', $saveButton);
97
+
98
+ /** @var Mage_Adminhtml_Block_Widget_Button $saveEditButton */
99
+ $saveEditButton = $this->getLayout()
100
+ ->createBlock('adminhtml/widget_button')
101
+ ->setData(array(
102
+ 'label' => Mage::helper('modulecreator')->__('Save and Continue Edit'),
103
+ 'onclick' => 'saveAndContinueEdit(\''.$this->getSaveAndContinueUrl().'\')',
104
+ 'class' => 'save'
105
+ ));
106
+ $this->setChild('save_and_edit_button', $saveEditButton);
107
+
108
+ /** @var Mage_Adminhtml_Block_Widget_Button $addEntityButton */
109
+ $addEntityButton = $this->getLayout()
110
+ ->createBlock('adminhtml/widget_button')
111
+ ->setData(array(
112
+ 'label' => Mage::helper('modulecreator')->__('Add entity'),
113
+ 'class' => 'add add-entity'
114
+ ));
115
+ $this->setChild('add-entity', $addEntityButton);
116
+
117
+ /** @var Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Entity $block */
118
  $block = Mage::app()->getLayout()
119
+ ->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_entities_entity');
120
+ $block->setTemplate('ultimate_modulecreator/edit/tab/entities/entity.phtml');
121
+ $block->setDefaultEntity();
122
+ $block->setIncrement('{{entity_id}}');
123
  $this->setChild('entity-template', $block);
124
 
125
+ /** @var Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Entity_Attribute $block */
126
  $block = Mage::app()->getLayout()
127
+ ->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_entities_entity_attribute');
128
+ $block->setTemplate('ultimate_modulecreator/edit/tab/entities/entity/attribute.phtml');
129
+ $block->setDefaultAttributeInstance();
130
+ $block->setIncrement('{{attribute_id}}');
131
+ $block->setEntityId('{{entity_id}}');
132
  $this->setChild('attribute-template', $block);
133
 
134
  $this->setChild('menu-selector', Mage::app()->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_menu'));
237
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
238
  */
239
  public function getRelationSelectTemplate() {
240
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
241
+ $helper = Mage::helper('modulecreator');
242
+ $types = $helper->getRelationTypes();
243
  $template = '<select class="relation-select" name="relation[#{e1}][#{e2}]" id="relation_#{e1}_#{e2}">';
244
  foreach ($types as $type=>$values){
245
  $template .= '<option value="'.$type.'">'.(string)$values->label.'</option>';
app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Form.php CHANGED
@@ -30,7 +30,11 @@ class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Form
30
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
31
  */
32
  protected function _prepareForm() {
33
- $form = new Varien_Data_Form(array('id' => 'edit_form', 'action' => $this->getUrl('*/modulecreator/save', array('id' => $this->getRequest()->getParam('id'))), 'method' => 'post'));
 
 
 
 
34
  $form->setUseContainer(true);
35
  $this->setForm($form);
36
  return parent::_prepareForm();
30
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
31
  */
32
  protected function _prepareForm() {
33
+ $form = new Varien_Data_Form(array(
34
+ 'id' => 'edit_form',
35
+ 'action' => $this->getUrl('*/modulecreator/save', array('id' => $this->getRequest()->getParam('id'))),
36
+ 'method' => 'post'
37
+ ));
38
  $form->setUseContainer(true);
39
  $this->setForm($form);
40
  return parent::_prepareForm();
app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tab/Entities.php CHANGED
@@ -80,6 +80,7 @@ class Ultimate_ModuleCreator_Block_Adminhtml_ModuleCreator_Edit_Tab_Entities
80
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
81
  */
82
  public function getEntities() {
 
83
  $module = Mage::registry('current_module');
84
  if ($module) {
85
  return $module->getEntities();
80
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
81
  */
82
  public function getEntities() {
83
+ /** @var null|Ultimate_ModuleCreator_Model_Module $module */
84
  $module = Mage::registry('current_module');
85
  if ($module) {
86
  return $module->getEntities();
app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tab/Entities/Entity.php CHANGED
@@ -22,6 +22,12 @@
22
  * @package Ultimate_ModuleCreator
23
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
24
  */
 
 
 
 
 
 
25
  class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Entity
26
  extends Mage_Adminhtml_Block_Widget_Form {
27
  /**
@@ -31,7 +37,9 @@ class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Ent
31
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
32
  */
33
  protected function _prepareForm() {
34
- $form = Mage::helper('modulecreator')->getXmlForm('entity');
 
 
35
  $form->setHtmlIdPrefix('entity_'.$this->getIncrement().'_');
36
  $form->addFieldNameSuffix('entity['.$this->getIncrement().']');
37
  $this->setForm($form);
@@ -46,6 +54,7 @@ class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Ent
46
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
47
  */
48
  public function setDefaultEntity() {
 
49
  $entity = Mage::getModel('modulecreator/entity');
50
  $settings = Mage::getStoreConfig(Ultimate_ModuleCreator_Helper_Data::XML_ENTITY_CONFIG_PATH);
51
  $entity->addData($settings);
22
  * @package Ultimate_ModuleCreator
23
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
24
  */
25
+ /**
26
+ * @method Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Entity setEntity()
27
+ * @method Varien_Object getEntity()
28
+ * @method Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Entity setIncrement()
29
+ * @method int getIncrement()
30
+ */
31
  class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Entity
32
  extends Mage_Adminhtml_Block_Widget_Form {
33
  /**
37
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
38
  */
39
  protected function _prepareForm() {
40
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
41
+ $helper = Mage::helper('modulecreator');
42
+ $form = $helper->getXmlForm('entity');
43
  $form->setHtmlIdPrefix('entity_'.$this->getIncrement().'_');
44
  $form->addFieldNameSuffix('entity['.$this->getIncrement().']');
45
  $this->setForm($form);
54
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
55
  */
56
  public function setDefaultEntity() {
57
+ /** @var Ultimate_ModuleCreator_Model_Entity $entity */
58
  $entity = Mage::getModel('modulecreator/entity');
59
  $settings = Mage::getStoreConfig(Ultimate_ModuleCreator_Helper_Data::XML_ENTITY_CONFIG_PATH);
60
  $entity->addData($settings);
app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tab/Entities/Entity/Attribute.php CHANGED
@@ -22,6 +22,14 @@
22
  * @package Ultimate_ModuleCreator
23
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
24
  */
 
 
 
 
 
 
 
 
25
  class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Entity_Attribute
26
  extends Mage_Adminhtml_Block_Widget_Form {
27
  /**
@@ -31,7 +39,9 @@ class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Ent
31
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
32
  */
33
  protected function _prepareForm() {
34
- $form = Mage::helper('modulecreator')->getXmlForm('attribute', false);
 
 
35
  $form->setHtmlIdPrefix('attribute_'.$this->getEntityId().'_'.$this->getIncrement().'_');
36
  $form->addFieldNameSuffix('entity['.$this->getEntityId().'][attributes]['.$this->getIncrement().']');
37
  $this->setForm($form);
@@ -46,6 +56,7 @@ class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Ent
46
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
47
  */
48
  public function setDefaultAttributeInstance() {
 
49
  $attribute = Mage::getModel('modulecreator/attribute');
50
  $settings = Mage::getStoreConfig(Ultimate_ModuleCreator_Helper_Data::XML_ATTRIBUTE_CONFIG_PATH);
51
  $attribute->addData($settings);
22
  * @package Ultimate_ModuleCreator
23
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
24
  */
25
+ /**
26
+ * @method Varien_Object getAttributeInstance()
27
+ * @method Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Entity_Attribute setAttributeInstance()
28
+ * @method string getEntityId()
29
+ * @method Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Entity_Attribute setIncrement()
30
+ * @method int getIncrement()
31
+ * @method Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Entity_Attribute setEntityId()
32
+ */
33
  class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Entities_Entity_Attribute
34
  extends Mage_Adminhtml_Block_Widget_Form {
35
  /**
39
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
40
  */
41
  protected function _prepareForm() {
42
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
43
+ $helper = Mage::helper('modulecreator');
44
+ $form = $helper->getXmlForm('attribute', false);
45
  $form->setHtmlIdPrefix('attribute_'.$this->getEntityId().'_'.$this->getIncrement().'_');
46
  $form->addFieldNameSuffix('entity['.$this->getEntityId().'][attributes]['.$this->getIncrement().']');
47
  $this->setForm($form);
56
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
57
  */
58
  public function setDefaultAttributeInstance() {
59
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attribute */
60
  $attribute = Mage::getModel('modulecreator/attribute');
61
  $settings = Mage::getStoreConfig(Ultimate_ModuleCreator_Helper_Data::XML_ATTRIBUTE_CONFIG_PATH);
62
  $attribute->addData($settings);
app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tab/Help.php CHANGED
@@ -91,6 +91,9 @@ class Ultimate_ModuleCreator_Block_Adminhtml_ModuleCreator_Edit_Tab_Help
91
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
92
  */
93
  protected function _prepareLayout() {
 
 
 
94
  $columns = array(
95
  'label' => array(
96
  'header'=>Mage::helper('modulecreator')->__('Field'),
@@ -115,28 +118,33 @@ class Ultimate_ModuleCreator_Block_Adminhtml_ModuleCreator_Edit_Tab_Help
115
  'key' =>'tooltip'
116
  ),
117
  );
118
- $settingsTabHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset')
119
- ->setFieldsets(Mage::helper('modulecreator')->getFieldsetXmlData('settings'))
 
120
  ->setColumns($columns)
121
  ->setDescription(Mage::helper('modulecreator')->__('General settings tab.'));
122
 
123
- $entityTabHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset')
124
- ->setFieldsets(Mage::helper('modulecreator')->getFieldsetXmlData('entity'))
 
125
  ->setColumns($columns)
126
  ->setDescription(Mage::helper('modulecreator')->__('Entity management.'));
127
 
128
- $attributeTabHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset')
129
- ->setFieldsets(Mage::helper('modulecreator')->getFieldsetXmlData('attribute'))
 
130
  ->setColumns($columns)
131
  ->setDescription(Mage::helper('modulecreator')->__('Field/Attribute management.'));
132
 
133
  $fieldTypes = array(
134
  'field_types'=> array(
135
- 'label'=>Mage::helper('modulecreator')->__('Supported field / attribute types'),
136
- 'fields' => Mage::helper('modulecreator')->getAttributeTypes())
137
  );
138
- $fieldTypesHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset')
139
- ->setFieldsets($fieldTypes)
 
 
140
  ->setColumns(array(
141
  'label' => array(
142
  'header'=>Mage::helper('modulecreator')->__('Field'),
@@ -149,14 +157,15 @@ class Ultimate_ModuleCreator_Block_Adminhtml_ModuleCreator_Edit_Tab_Help
149
  ),
150
  ))
151
  ->setDescription(Mage::helper('modulecreator')->__('Supported field / attribute types'));
152
-
153
  $relationTypes = array(
154
  'field_types'=> array(
155
- 'label'=>Mage::helper('modulecreator')->__('Relation types'),
156
- 'fields' => Mage::helper('modulecreator')->getRelationTypes()
157
  ));
158
- $relationsTypesHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset')
159
- ->setFieldsets($relationTypes)
 
 
160
  ->setColumns(array(
161
  'label' => array(
162
  'header'=>Mage::helper('modulecreator')->__('Relation'),
@@ -178,23 +187,24 @@ class Ultimate_ModuleCreator_Block_Adminhtml_ModuleCreator_Edit_Tab_Help
178
  $objM->restricted = implode(', ',array_keys($routers));
179
  $objM->label = Mage::helper('modulecreator')->__('Disallowed module names');
180
 
181
- $entityRestrictedNames = implode(', ',array_keys((array)Mage::helper('modulecreator')->getConfig()->getNode('restricted/entity')));
182
  $objE = new stdClass();
183
  $objE->restricted = $entityRestrictedNames;
184
  $objE->label = Mage::helper('modulecreator')->__('Disallowed entity names');
185
 
186
- $attributeRestrictedNames = implode(', ',array_keys((array)Mage::helper('modulecreator')->getConfig()->getNode('restricted/attribute')));
187
  $objA = new stdClass();
188
  $objA->restricted = $attributeRestrictedNames;
189
  $objA->label = Mage::helper('modulecreator')->__('Disallowed field/attribute names');
190
  $restrictions = array(
191
  'field_types'=> array(
192
- 'label'=>Mage::helper('modulecreator')->__('Naming restrictions'),
193
  'fields' => array($objN, $objM, $objE, $objA))
194
  );
195
 
196
- $restrictionsHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset')
197
- ->setFieldsets($restrictions)
 
198
  ->setColumns(array(
199
  'label' => array(
200
  'header'=>Mage::helper('modulecreator')->__('Entity'),
@@ -206,21 +216,24 @@ class Ultimate_ModuleCreator_Block_Adminhtml_ModuleCreator_Edit_Tab_Help
206
  ),
207
  ))
208
  ->setDescription(Mage::helper('modulecreator')->__('Naming restrictions'));
 
209
  $currentModule = Mage::registry('current_module');
210
  if (!$currentModule){
 
211
  $currentModule = Mage::getModel('modulecreator/module');
212
  }
213
  $files = $currentModule->getConfig()->getNode('files');
214
  $allowedFiles = array();
215
- foreach ((array)$files as $key=>$file){
216
  if ($file->scope == 'disabled'){
217
  continue;
218
  }
219
  $allowedFiles[] = $file;
220
  }
221
 
222
- $filesHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset')
223
- ->setFieldsets(array(
 
224
  'files'=> array(
225
  'label'=>Mage::helper('modulecreator')->__('Generated files'),
226
  'fields' => $allowedFiles)
@@ -253,9 +266,11 @@ class Ultimate_ModuleCreator_Block_Adminhtml_ModuleCreator_Edit_Tab_Help
253
  $this->setChild('restrictions_help', $restrictionsHelp);
254
  $this->setChild('files_help', $filesHelp);
255
 
256
- $releaseNotes = (array)Mage::helper('modulecreator')->getReleaseNotes();
257
- $releaseNotesHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset')
258
- ->setFieldsets($releaseNotes)
 
 
259
  ->setColumns(array(
260
  'type' => array(
261
  'header'=>Mage::helper('modulecreator')->__('Type'),
@@ -274,11 +289,12 @@ class Ultimate_ModuleCreator_Block_Adminhtml_ModuleCreator_Edit_Tab_Help
274
  ;
275
  $this->setChild('release_notes', $releaseNotesHelp);
276
 
277
- $thanks = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset')
278
- ->setFieldsets(array(
 
279
  'files'=> array(
280
- 'label'=>Mage::helper('modulecreator')->__('Thanks'),
281
- 'fields' => (array)Mage::helper('modulecreator')->getThanks())
282
  ))
283
  ->setColumns(array(
284
  'type' => array(
91
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
92
  */
93
  protected function _prepareLayout() {
94
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
95
+ $helper = Mage::helper('modulecreator');
96
+
97
  $columns = array(
98
  'label' => array(
99
  'header'=>Mage::helper('modulecreator')->__('Field'),
118
  'key' =>'tooltip'
119
  ),
120
  );
121
+ /** @var Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Help_Fieldset $settingsTabHelp */
122
+ $settingsTabHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset');
123
+ $settingsTabHelp->setFieldsets($helper->getFieldsetXmlData('settings'))
124
  ->setColumns($columns)
125
  ->setDescription(Mage::helper('modulecreator')->__('General settings tab.'));
126
 
127
+ /** @var Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Help_Fieldset $entityTabHelp */
128
+ $entityTabHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset');
129
+ $entityTabHelp->setFieldsets($helper->getFieldsetXmlData('entity'))
130
  ->setColumns($columns)
131
  ->setDescription(Mage::helper('modulecreator')->__('Entity management.'));
132
 
133
+ /** @var Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Help_Fieldset $attributeTabHelp */
134
+ $attributeTabHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset');
135
+ $attributeTabHelp->setFieldsets($helper->getFieldsetXmlData('attribute'))
136
  ->setColumns($columns)
137
  ->setDescription(Mage::helper('modulecreator')->__('Field/Attribute management.'));
138
 
139
  $fieldTypes = array(
140
  'field_types'=> array(
141
+ 'label' => Mage::helper('modulecreator')->__('Supported field / attribute types'),
142
+ 'fields' => $helper->getAttributeTypes())
143
  );
144
+
145
+ /** @var Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Help_Fieldset $fieldTypesHelp */
146
+ $fieldTypesHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset');
147
+ $fieldTypesHelp->setFieldsets($fieldTypes)
148
  ->setColumns(array(
149
  'label' => array(
150
  'header'=>Mage::helper('modulecreator')->__('Field'),
157
  ),
158
  ))
159
  ->setDescription(Mage::helper('modulecreator')->__('Supported field / attribute types'));
 
160
  $relationTypes = array(
161
  'field_types'=> array(
162
+ 'label'=> Mage::helper('modulecreator')->__('Relation types'),
163
+ 'fields' => $helper->getRelationTypes()
164
  ));
165
+
166
+ /** @var Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Help_Fieldset $relationsTypesHelp */
167
+ $relationsTypesHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset');
168
+ $relationsTypesHelp->setFieldsets($relationTypes)
169
  ->setColumns(array(
170
  'label' => array(
171
  'header'=>Mage::helper('modulecreator')->__('Relation'),
187
  $objM->restricted = implode(', ',array_keys($routers));
188
  $objM->label = Mage::helper('modulecreator')->__('Disallowed module names');
189
 
190
+ $entityRestrictedNames = implode(', ',array_keys((array)$helper->getConfig()->getNode('restricted/entity')));
191
  $objE = new stdClass();
192
  $objE->restricted = $entityRestrictedNames;
193
  $objE->label = Mage::helper('modulecreator')->__('Disallowed entity names');
194
 
195
+ $attributeRestrictedNames = implode(', ',array_keys((array)$helper->getConfig()->getNode('restricted/attribute')));
196
  $objA = new stdClass();
197
  $objA->restricted = $attributeRestrictedNames;
198
  $objA->label = Mage::helper('modulecreator')->__('Disallowed field/attribute names');
199
  $restrictions = array(
200
  'field_types'=> array(
201
+ 'label' => Mage::helper('modulecreator')->__('Naming restrictions'),
202
  'fields' => array($objN, $objM, $objE, $objA))
203
  );
204
 
205
+ /** @var Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Help_Fieldset $restrictionsHelp */
206
+ $restrictionsHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset');
207
+ $restrictionsHelp->setFieldsets($restrictions)
208
  ->setColumns(array(
209
  'label' => array(
210
  'header'=>Mage::helper('modulecreator')->__('Entity'),
216
  ),
217
  ))
218
  ->setDescription(Mage::helper('modulecreator')->__('Naming restrictions'));
219
+ /** @var null|Ultimate_ModuleCreator_Model_Module $currentModule */
220
  $currentModule = Mage::registry('current_module');
221
  if (!$currentModule){
222
+ /** @var Ultimate_ModuleCreator_Model_Module $currentModule */
223
  $currentModule = Mage::getModel('modulecreator/module');
224
  }
225
  $files = $currentModule->getConfig()->getNode('files');
226
  $allowedFiles = array();
227
+ foreach ((array)$files as $file){
228
  if ($file->scope == 'disabled'){
229
  continue;
230
  }
231
  $allowedFiles[] = $file;
232
  }
233
 
234
+ /** @var Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Help_Fieldset $filesHelp */
235
+ $filesHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset');
236
+ $filesHelp->setFieldsets(array(
237
  'files'=> array(
238
  'label'=>Mage::helper('modulecreator')->__('Generated files'),
239
  'fields' => $allowedFiles)
266
  $this->setChild('restrictions_help', $restrictionsHelp);
267
  $this->setChild('files_help', $filesHelp);
268
 
269
+ $releaseNotes = (array)$helper->getReleaseNotes();
270
+
271
+ /** @var Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Help_Fieldset $releaseNotesHelp */
272
+ $releaseNotesHelp = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset');
273
+ $releaseNotesHelp->setFieldsets($releaseNotes)
274
  ->setColumns(array(
275
  'type' => array(
276
  'header'=>Mage::helper('modulecreator')->__('Type'),
289
  ;
290
  $this->setChild('release_notes', $releaseNotesHelp);
291
 
292
+ /** @var Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Help_Fieldset $thanks */
293
+ $thanks = $this->getLayout()->createBlock('modulecreator/adminhtml_modulecreator_edit_tab_help_fieldset');
294
+ $thanks->setFieldsets(array(
295
  'files'=> array(
296
+ 'label' =>Mage::helper('modulecreator')->__('Thanks'),
297
+ 'fields' => (array)$helper->getThanks())
298
  ))
299
  ->setColumns(array(
300
  'type' => array(
app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tab/Help/Fieldset.php CHANGED
@@ -22,6 +22,11 @@
22
  * @package Ultimate_ModuleCreator
23
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
24
  */
 
 
 
 
 
25
  class Ultimate_ModuleCreator_Block_Adminhtml_ModuleCreator_Edit_Tab_Help_Fieldset
26
  extends Mage_Adminhtml_Block_Template {
27
  /**
22
  * @package Ultimate_ModuleCreator
23
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
24
  */
25
+ /**
26
+ * @method Ultimate_ModuleCreator_Block_Adminhtml_ModuleCreator_Edit_Tab_Help_Fieldset setFieldsets()
27
+ * @method Ultimate_ModuleCreator_Block_Adminhtml_ModuleCreator_Edit_Tab_Help_Fieldset setColumns()
28
+ * @method Ultimate_ModuleCreator_Block_Adminhtml_ModuleCreator_Edit_Tab_Help_Fieldset setDescription()
29
+ */
30
  class Ultimate_ModuleCreator_Block_Adminhtml_ModuleCreator_Edit_Tab_Help_Fieldset
31
  extends Mage_Adminhtml_Block_Template {
32
  /**
app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tab/Relation.php CHANGED
@@ -21,6 +21,9 @@
21
  * @package Ultimate_ModuleCreator
22
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
23
  */
 
 
 
24
  class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Relation
25
  extends Mage_Adminhtml_Block_Widget_Form
26
  implements Mage_Adminhtml_Block_Widget_Tab_Interface {
21
  * @package Ultimate_ModuleCreator
22
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
23
  */
24
+ /**
25
+ * @method array getRelations()
26
+ */
27
  class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Relation
28
  extends Mage_Adminhtml_Block_Widget_Form
29
  implements Mage_Adminhtml_Block_Widget_Tab_Interface {
app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tab/Settings.php CHANGED
@@ -65,11 +65,13 @@ class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Settings
65
  /**
66
  * prepare the form
67
  * @access public
68
- * @return Ultimate_ModuleCreator_Block_Adminhtml_Edit_Tab_Settings
69
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
70
  */
71
  protected function _prepareForm() {
72
- $form = Mage::helper('modulecreator')->getXmlForm('settings');
 
 
73
  $form->setHtmlIdPrefix('settings_');
74
  $module = Mage::registry('current_module');
75
  $values = array();
65
  /**
66
  * prepare the form
67
  * @access public
68
+ * @return Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tab_Settings
69
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
70
  */
71
  protected function _prepareForm() {
72
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
73
+ $helper = Mage::helper('modulecreator');
74
+ $form = $helper->getXmlForm('settings');
75
  $form->setHtmlIdPrefix('settings_');
76
  $module = Mage::registry('current_module');
77
  $values = array();
app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Edit/Tabs.php CHANGED
@@ -22,6 +22,9 @@
22
  * @package Ultimate_ModuleCreator
23
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
24
  */
 
 
 
25
  class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tabs
26
  extends Mage_Adminhtml_Block_Widget_Tabs {
27
  /**
22
  * @package Ultimate_ModuleCreator
23
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
24
  */
25
+ /**
26
+ * @method Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tabs setTitle
27
+ */
28
  class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Edit_Tabs
29
  extends Mage_Adminhtml_Block_Widget_Tabs {
30
  /**
app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Grid.php CHANGED
@@ -20,7 +20,10 @@
20
  * @category Ultimate
21
  * @package Ultimate_ModuleCreator
22
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
23
- */
 
 
 
24
  class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Grid
25
  extends Mage_Adminhtml_Block_Widget_Grid {
26
  /**
@@ -161,7 +164,7 @@ class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Grid
161
  /**
162
  * Row URL getter
163
  * @access public
164
- * @param Ultimate_ModuleCreator_Model_Module
165
  * @return string
166
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
167
  */
20
  * @category Ultimate
21
  * @package Ultimate_ModuleCreator
22
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
23
+ */
24
+ /**
25
+ * @method Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Grid setUseAjax()
26
+ */
27
  class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Grid
28
  extends Mage_Adminhtml_Block_Widget_Grid {
29
  /**
164
  /**
165
  * Row URL getter
166
  * @access public
167
+ * @param Ultimate_ModuleCreator_Model_Module $row
168
  * @return string
169
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
170
  */
app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/Grid/Column/Renderer/Download.php CHANGED
@@ -32,10 +32,14 @@ class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_Grid_Column_Renderer_
32
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
33
  */
34
  public function render(Varien_Object $row) {
 
35
  $what = $this->getColumn()->getWhat();
 
36
  $id = $row->getSafeId();
37
  $packageName = base64_decode(strtr($id, '-_,', '+/='));
38
- $path = Mage::helper('modulecreator')->getLocalModulesDir();
 
 
39
  switch ($what) {
40
  case 'config':
41
  $file = $path.'package'.DS.$packageName . '.xml';
32
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
33
  */
34
  public function render(Varien_Object $row) {
35
+ /** @var string $what */
36
  $what = $this->getColumn()->getWhat();
37
+ /** @var string $id */
38
  $id = $row->getSafeId();
39
  $packageName = base64_decode(strtr($id, '-_,', '+/='));
40
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
41
+ $helper = Mage::helper('modulecreator');
42
+ $path = $helper->getLocalModulesDir();
43
  switch ($what) {
44
  case 'config':
45
  $file = $path.'package'.DS.$packageName . '.xml';
app/code/community/Ultimate/ModuleCreator/Block/Adminhtml/Modulecreator/System/Config/Form/Fieldset/Abstract.php CHANGED
@@ -53,10 +53,12 @@ abstract class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_System_Confi
53
  */
54
  public function render(Varien_Data_Form_Element_Abstract $element) {
55
  $html = $this->_getHeaderHtml($element);
56
- $config = Mage::helper('modulecreator')->getConfig();
 
 
57
  $formName = $this->getFormName();
58
  if (!$config->getNode('forms/'.$formName)) {
59
- return $form;
60
  }
61
  $fieldsets = $config->getNode('forms/'.$formName.'/fieldsets');
62
  $index = 0;
@@ -102,7 +104,7 @@ abstract class Ultimate_ModuleCreator_Block_Adminhtml_Modulecreator_System_Confi
102
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
103
  */
104
  protected function _getFieldHtml($fieldset, $key, $field){
105
- $configData = $this->getConfigData();
106
  $formName = $this->getFormName();
107
  $path = 'modulecreator/'.$formName.'/' . $key;
108
  $data = Mage::getStoreConfig($path, 0);
53
  */
54
  public function render(Varien_Data_Form_Element_Abstract $element) {
55
  $html = $this->_getHeaderHtml($element);
56
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
57
+ $helper = Mage::helper('modulecreator');
58
+ $config = $helper->getConfig();
59
  $formName = $this->getFormName();
60
  if (!$config->getNode('forms/'.$formName)) {
61
+ return '';
62
  }
63
  $fieldsets = $config->getNode('forms/'.$formName.'/fieldsets');
64
  $index = 0;
104
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
105
  */
106
  protected function _getFieldHtml($fieldset, $key, $field){
107
+ //$configData = $this->getConfigData();
108
  $formName = $this->getFormName();
109
  $path = 'modulecreator/'.$formName.'/' . $key;
110
  $data = Mage::getStoreConfig($path, 0);
app/code/community/Ultimate/ModuleCreator/Exception.php CHANGED
@@ -15,6 +15,7 @@
15
  * @license http://opensource.org/licenses/mit-license.php MIT License
16
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
17
  */
18
- class Ultimate_ModuleCreator_Exception extends Mage_Core_Exception {
 
19
 
20
  }
15
  * @license http://opensource.org/licenses/mit-license.php MIT License
16
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
17
  */
18
+ class Ultimate_ModuleCreator_Exception
19
+ extends Mage_Core_Exception {
20
 
21
  }
app/code/community/Ultimate/ModuleCreator/Helper/Data.php CHANGED
@@ -150,11 +150,10 @@ class Ultimate_ModuleCreator_Helper_Data extends Mage_Core_Helper_Abstract {
150
  * get a form
151
  * @access public
152
  * @param $formName
153
- * @param $useFieldset
154
  * @return Varien_Data_Form
155
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
156
  */
157
- public function getXmlForm($formName, $useFieldset = true) {
158
  $xmlForms = $this->getConfig();
159
  $form = new Varien_Data_Form();
160
  if (!$xmlForms->getNode('forms/'.$formName)){
@@ -246,7 +245,7 @@ class Ultimate_ModuleCreator_Helper_Data extends Mage_Core_Helper_Abstract {
246
  foreach ($positions as $fields) {
247
  $sorted = array_merge($sorted, $fields);
248
  }
249
- foreach($sorted as $id=>$field) {
250
  $data[$key]['fields'][] = $field;
251
  }
252
  $index++;
@@ -339,17 +338,20 @@ class Ultimate_ModuleCreator_Helper_Data extends Mage_Core_Helper_Abstract {
339
  /**
340
  * load a module
341
  * $access public
342
- * @param $xml
343
- * @return false|Ultimate_ModuleCreator_Model_Module
344
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
345
  */
346
  public function loadModule($xml) {
 
347
  $module = Mage::getModel('modulecreator/module');
348
  $moduleFields = $module->getXmlAttributes();
 
349
  foreach ($moduleFields as $field) {
350
  $data[$field] = (string)$xml->$field;
351
  }
352
  $module->setData($data);
 
353
  $entity = Mage::getModel('modulecreator/entity');
354
  $entityFields = $entity->getXmlAttributes();
355
  foreach ($xml->entities->entity as $entityNode) {
@@ -378,6 +380,7 @@ class Ultimate_ModuleCreator_Helper_Data extends Mage_Core_Helper_Abstract {
378
  $e1 = $module->getEntity($parts[0]);
379
  $e2 = $module->getEntity($parts[1]);
380
  if ($e1 && $e2) {
 
381
  $relation = Mage::getModel('modulecreator/relation');
382
  $relation->setEntities($e1 , $e2, (string)$type);
383
  $module->addRelation($relation);
150
  * get a form
151
  * @access public
152
  * @param $formName
 
153
  * @return Varien_Data_Form
154
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
155
  */
156
+ public function getXmlForm($formName) {
157
  $xmlForms = $this->getConfig();
158
  $form = new Varien_Data_Form();
159
  if (!$xmlForms->getNode('forms/'.$formName)){
245
  foreach ($positions as $fields) {
246
  $sorted = array_merge($sorted, $fields);
247
  }
248
+ foreach($sorted as $field) {
249
  $data[$key]['fields'][] = $field;
250
  }
251
  $index++;
338
  /**
339
  * load a module
340
  * $access public
341
+ * @param Varien_Simplexml_Element $xml
342
+ * @return bool|Ultimate_ModuleCreator_Model_Module
343
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
344
  */
345
  public function loadModule($xml) {
346
+ /** @var Ultimate_ModuleCreator_Model_Module $module */
347
  $module = Mage::getModel('modulecreator/module');
348
  $moduleFields = $module->getXmlAttributes();
349
+ $data = array();
350
  foreach ($moduleFields as $field) {
351
  $data[$field] = (string)$xml->$field;
352
  }
353
  $module->setData($data);
354
+ /** @var Ultimate_ModuleCreator_Model_Entity $entity */
355
  $entity = Mage::getModel('modulecreator/entity');
356
  $entityFields = $entity->getXmlAttributes();
357
  foreach ($xml->entities->entity as $entityNode) {
380
  $e1 = $module->getEntity($parts[0]);
381
  $e2 = $module->getEntity($parts[1]);
382
  if ($e1 && $e2) {
383
+ /** @var Ultimate_ModuleCreator_Model_Relation $relation */
384
  $relation = Mage::getModel('modulecreator/relation');
385
  $relation->setEntities($e1 , $e2, (string)$type);
386
  $module->addRelation($relation);
app/code/community/Ultimate/ModuleCreator/Model/Abstract.php CHANGED
@@ -61,15 +61,15 @@ class Ultimate_ModuleCreator_Model_Abstract extends Varien_Object{
61
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
62
  */
63
  public function getXmlAttributes(){
64
- $dom = Mage::helper('modulecreator')->getConfig();
65
- $code = $this->_entityCode;
66
  return array_keys((array)$dom->getNode('xml_attributes/'.$code));
67
  }
68
 
69
  /**
70
  * getter for helper member
71
  * @access public
72
- * @return Mage_Core_Helper_Abstract|mixed
73
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
74
  */
75
  public function getHelper(){
@@ -88,7 +88,7 @@ class Ultimate_ModuleCreator_Model_Abstract extends Varien_Object{
88
  */
89
  public function getPadding($length = 1){
90
  if (is_null($this->_padding)){
91
- $this->_padding = Mage::helper('modulecreator')->getPadding();
92
  }
93
  return str_repeat($this->_padding, $length);
94
  }
@@ -101,7 +101,7 @@ class Ultimate_ModuleCreator_Model_Abstract extends Varien_Object{
101
  */
102
  public function getEol(){
103
  if (is_null($this->_eol)){
104
- $this->_eol = Mage::helper('modulecreator')->getEol();
105
  }
106
  return $this->_eol;
107
  }
61
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
62
  */
63
  public function getXmlAttributes(){
64
+ $dom = $this->getHelper()->getConfig();
65
+ $code = $this->_entityCode;
66
  return array_keys((array)$dom->getNode('xml_attributes/'.$code));
67
  }
68
 
69
  /**
70
  * getter for helper member
71
  * @access public
72
+ * @return Ultimate_ModuleCreator_Helper_Data|mixed
73
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
74
  */
75
  public function getHelper(){
88
  */
89
  public function getPadding($length = 1){
90
  if (is_null($this->_padding)){
91
+ $this->_padding = $this->getHelper()->getPadding();
92
  }
93
  return str_repeat($this->_padding, $length);
94
  }
101
  */
102
  public function getEol(){
103
  if (is_null($this->_eol)){
104
+ $this->_eol = $this->getHelper()->getEol();
105
  }
106
  return $this->_eol;
107
  }
app/code/community/Ultimate/ModuleCreator/Model/Attribute.php CHANGED
@@ -15,6 +15,50 @@
15
  * @license http://opensource.org/licenses/mit-license.php MIT License
16
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
17
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  class Ultimate_ModuleCreator_Model_Attribute extends Ultimate_ModuleCreator_Model_Abstract{
19
  /**
20
  * custom option separator
@@ -83,9 +127,11 @@ class Ultimate_ModuleCreator_Model_Attribute extends Ultimate_ModuleCreator_Mode
83
  if (!$this->_typeInstance){
84
  $type = $this->getType();
85
  try{
86
- $types = Mage::helper('modulecreator')->getAttributeTypes(false);
87
  $instanceModel = $types->$type->type_model;
88
- $this->_typeInstance = Mage::getModel($instanceModel);
 
 
89
  $this->_typeInstance->setAttribute($this);
90
  }
91
  catch (Exception $e){
@@ -243,7 +289,7 @@ class Ultimate_ModuleCreator_Model_Attribute extends Ultimate_ModuleCreator_Mode
243
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
244
  */
245
  public function getDdlSqlColumn(){
246
- $helper = Mage::helper('modulecreator');
247
  $ddl = '';
248
  $ddl .= "->addColumn('{$this->getCode()}', Varien_Db_Ddl_Table::".$this->getTypeDdl().", ".$this->getSizeDdl().", array(".$this->getEol();
249
  if ($this->getRequired()){
15
  * @license http://opensource.org/licenses/mit-license.php MIT License
16
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
17
  */
18
+ /**
19
+ * @method Ultimate_ModuleCreator_Model_Attribute setIndex()
20
+ * @method string getForcedDefaultValue()
21
+ * @method string getDefaultValue()
22
+ * @method string getOptionsSourceAttribute()
23
+ * @method string getLabel()
24
+ * @method string getNote()
25
+ * @method int getPosition()
26
+ * @method string getCode()
27
+ * @method bool getIsName()
28
+ * @method Ultimate_ModuleCreator_Model_Attribute setUserDefined
29
+ * @method Ultimate_ModuleCreator_Model_Attribute setEditor
30
+ * @method string getType()
31
+ * @method Ultimate_ModuleCreator_Model_Attribute setCode()
32
+ * @method Ultimate_ModuleCreator_Model_Attribute setType()
33
+ * @method Ultimate_ModuleCreator_Model_Attribute setLabel()
34
+ * @method string getOptionsSource()
35
+ * @method Ultimate_ModuleCreator_Model_Attribute setOptionsSource()
36
+ * @method Ultimate_ModuleCreator_Model_Attribute setForcedSource()
37
+ * @method Ultimate_ModuleCreator_Model_Attribute setScope()
38
+ * @method Ultimate_ModuleCreator_Model_Attribute setUseFilterIndex()
39
+ * @method Ultimate_ModuleCreator_Model_Attribute setPosition()
40
+ * @method Ultimate_ModuleCreator_Model_Attribute setForcedSetupType()
41
+ * @method Ultimate_ModuleCreator_Model_Attribute setForcedVisible()
42
+ * @method string getPreElementText()
43
+ * @method bool getUseFilterIndex()
44
+ * @method bool hasForcedSetupType()
45
+ * @method string getForcedSetupType()
46
+ * @method string getForcedSetupBackend()
47
+ * @method string getForcedSource()
48
+ * @method int getScope()
49
+ * @method bool hasForcedVisible()
50
+ * @method string getForcedVisible()
51
+ * @method Ultimate_ModuleCreator_Model_Attribute setDefaultValue()
52
+ * @method Ultimate_ModuleCreator_Model_Attribute setForcedSetupBackend()
53
+ * @method Ultimate_ModuleCreator_Model_Attribute setIgnoreApi()
54
+ * @method Ultimate_ModuleCreator_Model_Attribute setOptions()
55
+ * @method Ultimate_ModuleCreator_Model_Attribute setForcedDefaultValue()
56
+ * @method bool getWidget()
57
+ * @method bool getFrontend()
58
+ * @method bool getIgnoreApi()
59
+ * @method int getIndex()
60
+ *
61
+ */
62
  class Ultimate_ModuleCreator_Model_Attribute extends Ultimate_ModuleCreator_Model_Abstract{
63
  /**
64
  * custom option separator
127
  if (!$this->_typeInstance){
128
  $type = $this->getType();
129
  try{
130
+ $types = $this->getHelper()->getAttributeTypes(false);
131
  $instanceModel = $types->$type->type_model;
132
+ /** @var Ultimate_ModuleCreator_Model_Attribute_Type_Abstract $typeInstance */
133
+ $typeInstance = Mage::getModel($instanceModel);
134
+ $this->_typeInstance = $typeInstance;
135
  $this->_typeInstance->setAttribute($this);
136
  }
137
  catch (Exception $e){
289
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
290
  */
291
  public function getDdlSqlColumn(){
292
+ $helper = $this->getHelper();
293
  $ddl = '';
294
  $ddl .= "->addColumn('{$this->getCode()}', Varien_Db_Ddl_Table::".$this->getTypeDdl().", ".$this->getSizeDdl().", array(".$this->getEol();
295
  if ($this->getRequired()){
app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Abstract.php CHANGED
@@ -22,6 +22,9 @@
22
  * @package Ultimate_ModuleCreator
23
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
24
  */
 
 
 
25
  class Ultimate_ModuleCreator_Model_Attribute_Type_Abstract
26
  extends Ultimate_ModuleCreator_Model_Abstract {
27
  /**
@@ -325,7 +328,7 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Abstract
325
  * getter config for attribute
326
  * @access public
327
  * @param $path
328
- * @return mixed
329
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
330
  */
331
  public function getConfig($path = null) {
@@ -335,7 +338,9 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Abstract
335
  else {
336
  $path = $this->getTypeConfigPath();
337
  }
338
- return Mage::helper('modulecreator')->getConfig()->getNode($path);
 
 
339
  }
340
  /**
341
  * check if attribute can behave as name
22
  * @package Ultimate_ModuleCreator
23
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
24
  */
25
+ /**
26
+ * @method bool getIsMultipleSelect()
27
+ */
28
  class Ultimate_ModuleCreator_Model_Attribute_Type_Abstract
29
  extends Ultimate_ModuleCreator_Model_Abstract {
30
  /**
328
  * getter config for attribute
329
  * @access public
330
  * @param $path
331
+ * @return Varien_Simplexml_Element
332
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
333
  */
334
  public function getConfig($path = null) {
338
  else {
339
  $path = $this->getTypeConfigPath();
340
  }
341
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
342
+ $helper = Mage::helper('modulecreator');
343
+ return $helper->getConfig()->getNode($path);
344
  }
345
  /**
346
  * check if attribute can behave as name
app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Country.php CHANGED
@@ -69,8 +69,6 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Country
69
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
70
  */
71
  public function getRssText() {
72
- $entityName = $this->getEntity()->getNameSingular(true);
73
- $ucEntity = ucfirst($entityName);
74
  $module = $this->getModule()->getLowerModuleName();
75
  $namespace = $this->getNamespace(true);
76
  return $this->getPadding(3).'$description .= \'<div>\'.Mage::helper(\''.$namespace.'_'.$module.'\')->__("'.$this->getAttribute()->getLabel().'").\':\'.(($item->get'.$this->getAttribute()->getMagicMethodCode().'()) ? Mage::getModel(\'directory/country\')->load($item->get'.$this->getAttribute()->getMagicMethodCode().'())->getName():Mage::helper(\''.$namespace.'_'.$module.'\')->__(\'None\')).\'</div>\';'.$this->getEol();
@@ -83,7 +81,6 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Country
83
  */
84
  public function getFrontendHtml() {
85
  $entityName = $this->getEntity()->getNameSingular(true);
86
- $ucEntity = ucfirst($entityName);
87
  $module = $this->getModule()->getLowerModuleName();
88
  $namespace = $this->getNamespace(true);
89
  if ($this->getEntity()->getIsEav()){
@@ -110,7 +107,6 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Country
110
  */
111
  public function getFormOptions(){
112
  $options = parent::getFormOptions();
113
- $module = $this->getModule()->getLowerModuleName();
114
  $options .= $this->getPadding(3)."'values'=> Mage::getResourceModel('directory/country_collection')->toOptionArray(),".$this->getEol();
115
  return $options;
116
  }
69
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
70
  */
71
  public function getRssText() {
 
 
72
  $module = $this->getModule()->getLowerModuleName();
73
  $namespace = $this->getNamespace(true);
74
  return $this->getPadding(3).'$description .= \'<div>\'.Mage::helper(\''.$namespace.'_'.$module.'\')->__("'.$this->getAttribute()->getLabel().'").\':\'.(($item->get'.$this->getAttribute()->getMagicMethodCode().'()) ? Mage::getModel(\'directory/country\')->load($item->get'.$this->getAttribute()->getMagicMethodCode().'())->getName():Mage::helper(\''.$namespace.'_'.$module.'\')->__(\'None\')).\'</div>\';'.$this->getEol();
81
  */
82
  public function getFrontendHtml() {
83
  $entityName = $this->getEntity()->getNameSingular(true);
 
84
  $module = $this->getModule()->getLowerModuleName();
85
  $namespace = $this->getNamespace(true);
86
  if ($this->getEntity()->getIsEav()){
107
  */
108
  public function getFormOptions(){
109
  $options = parent::getFormOptions();
 
110
  $options .= $this->getPadding(3)."'values'=> Mage::getResourceModel('directory/country_collection')->toOptionArray(),".$this->getEol();
111
  return $options;
112
  }
app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Dropdown.php CHANGED
@@ -110,10 +110,8 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Dropdown
110
  */
111
  public function getRssText(){
112
  $entityName = $this->getEntity()->getNameSingular(true);
113
- $ucEntity = ucfirst($entityName);
114
  $module = $this->getModule()->getLowerModuleName();
115
  $namespace = $this->getNamespace(true);
116
- $content = '';
117
  if ($this->getAttribute()->getEntity()->getIsEav()){
118
  return $this->getPadding(3).'$description .= \'<div>\'.Mage::helper(\''.$namespace.'_'.$module.'\')->__("'.$this->getAttribute()->getLabel().'").\': \'.$item->getAttributeText(\''.$this->getAttribute()->getCode().'\').\'</div>\';'.$this->getEol();
119
  }
@@ -143,9 +141,13 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Dropdown
143
  if (!$this->_subTypeInstance){
144
  $type = $this->getAttribute()->getOptionsSource();
145
  try{
146
- $types = Mage::helper('modulecreator')->getDropdownSubtypes(false);
 
 
147
  $instanceModel = (string)$types->$type->type_model;
148
- $this->_subTypeInstance = Mage::getModel($instanceModel);
 
 
149
  $this->_subTypeInstance->setTypeAttribute($this);
150
  }
151
  catch (Exception $e){
@@ -171,7 +173,6 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Dropdown
171
  */
172
  public function getFrontendHtml() {
173
  $entityName = $this->getEntity()->getNameSingular(true);
174
- $ucEntity = ucfirst($entityName);
175
  $module = $this->getModule()->getLowerModuleName();
176
  $namespace = $this->getNamespace(true);
177
  if ($this->getAttribute()->getEntity()->getIsEav()){
@@ -201,12 +202,9 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Dropdown
201
  public function getFormOptions(){
202
  $options = parent::getFormOptions();
203
  $padding = $this->getPadding(3);
204
- $tab = $this->getPadding();
205
- $eol = $this->getEol();
206
  $module = $this->getModule()->getLowerModuleName();
207
  $entity = $this->getEntity()->getNameSingular(true);
208
  $namespace = $this->getNamespace(true);
209
- $flag = $this->getOptionsFlag();
210
  $options .= $padding."'values'=> Mage::getModel('".$namespace.'_'.$module.'/'.$entity."_attribute_source_".$this->getAttribute()->getCodeForFileName(false)."')->getAllOptions(".$this->getOptionsFlag()."),".$this->getEol();
211
  return $options;
212
  }
110
  */
111
  public function getRssText(){
112
  $entityName = $this->getEntity()->getNameSingular(true);
 
113
  $module = $this->getModule()->getLowerModuleName();
114
  $namespace = $this->getNamespace(true);
 
115
  if ($this->getAttribute()->getEntity()->getIsEav()){
116
  return $this->getPadding(3).'$description .= \'<div>\'.Mage::helper(\''.$namespace.'_'.$module.'\')->__("'.$this->getAttribute()->getLabel().'").\': \'.$item->getAttributeText(\''.$this->getAttribute()->getCode().'\').\'</div>\';'.$this->getEol();
117
  }
141
  if (!$this->_subTypeInstance){
142
  $type = $this->getAttribute()->getOptionsSource();
143
  try{
144
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
145
+ $helper = Mage::helper('modulecreator');
146
+ $types = $helper->getDropdownSubtypes(false);
147
  $instanceModel = (string)$types->$type->type_model;
148
+ /** @var Ultimate_ModuleCreator_Model_Attribute_Type_Dropdown_Abstract $subtypeInstance */
149
+ $subtypeInstance = Mage::getModel($instanceModel);
150
+ $this->_subTypeInstance = $subtypeInstance;
151
  $this->_subTypeInstance->setTypeAttribute($this);
152
  }
153
  catch (Exception $e){
173
  */
174
  public function getFrontendHtml() {
175
  $entityName = $this->getEntity()->getNameSingular(true);
 
176
  $module = $this->getModule()->getLowerModuleName();
177
  $namespace = $this->getNamespace(true);
178
  if ($this->getAttribute()->getEntity()->getIsEav()){
202
  public function getFormOptions(){
203
  $options = parent::getFormOptions();
204
  $padding = $this->getPadding(3);
 
 
205
  $module = $this->getModule()->getLowerModuleName();
206
  $entity = $this->getEntity()->getNameSingular(true);
207
  $namespace = $this->getNamespace(true);
 
208
  $options .= $padding."'values'=> Mage::getModel('".$namespace.'_'.$module.'/'.$entity."_attribute_source_".$this->getAttribute()->getCodeForFileName(false)."')->getAllOptions(".$this->getOptionsFlag()."),".$this->getEol();
209
  return $options;
210
  }
app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Dropdown/Abstract.php CHANGED
@@ -22,6 +22,12 @@
22
  * @package Ultimate_ModuleCreator
23
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
24
  */
 
 
 
 
 
 
25
  class Ultimate_ModuleCreator_Model_Attribute_Type_Dropdown_Abstract
26
  extends Ultimate_ModuleCreator_Model_Abstract {
27
  /**
22
  * @package Ultimate_ModuleCreator
23
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
24
  */
25
+ /**
26
+ * @method string getAttributeOptions
27
+ * @method string getSetupType()
28
+ * @method string getTypeDdl()
29
+ * @method string getSizeDdl()
30
+ */
31
  class Ultimate_ModuleCreator_Model_Attribute_Type_Dropdown_Abstract
32
  extends Ultimate_ModuleCreator_Model_Abstract {
33
  /**
app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Dropdown/Custom.php CHANGED
@@ -73,7 +73,7 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Dropdown_Custom
73
  $module = $this->getTypeAttribute()->getAttribute()->getEntity()->getModule()->getLowerModuleName();
74
  $namespace = $this->getTypeAttribute()->getAttribute()->getEntity()->getModule()->getNamespace(true);
75
  if ($this->getTypeAttribute()->getAttribute()->getOptions()) {
76
- $content = $padding.'$options = array('.$eol;
77
  foreach ($this->getTypeAttribute()->getAttribute()->getOptions(true) as $index=>$option) {
78
  $content .= $padding.$tab.'array('.$eol;
79
  $content .= $padding.$tab.$tab."'label' => Mage::helper('".$namespace.'_'.$module."')->__('".Mage::helper('core')->jsQuoteEscape($option)."'),".$eol;
73
  $module = $this->getTypeAttribute()->getAttribute()->getEntity()->getModule()->getLowerModuleName();
74
  $namespace = $this->getTypeAttribute()->getAttribute()->getEntity()->getModule()->getNamespace(true);
75
  if ($this->getTypeAttribute()->getAttribute()->getOptions()) {
76
+ $content .= $padding.'$options = array('.$eol;
77
  foreach ($this->getTypeAttribute()->getAttribute()->getOptions(true) as $index=>$option) {
78
  $content .= $padding.$tab.'array('.$eol;
79
  $content .= $padding.$tab.$tab."'label' => Mage::helper('".$namespace.'_'.$module."')->__('".Mage::helper('core')->jsQuoteEscape($option)."'),".$eol;
app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Dropdown/Product.php CHANGED
@@ -43,9 +43,7 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Dropdown_Product
43
  public function getAttributeOptions(){
44
  $content = '';
45
  $padding = $this->getPadding(2);
46
- $tab = $this->getPadding();
47
  $eol = $this->getEol();
48
- $module = $this->getTypeAttribute()->getAttribute()->getEntity()->getModule()->getLowerModuleName();
49
  $attrCode = $this->getTypeAttribute()->getAttribute()->getOptionsSourceAttribute();
50
  $content .= $padding.'$'."source = Mage::getModel('eav/config')->getAttribute('".$this->getEntityCode()."', '".$attrCode."');".$eol;
51
  $content .= $padding.'return $source->getSource()->getAllOptions($withEmpty, $defaultValues);';
@@ -69,9 +67,9 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Dropdown_Product
69
  */
70
  public function getSetupType(){
71
  $attrCode = $this->getTypeAttribute()->getAttribute()->getOptionsSourceAttribute();
72
- $productAttribute = Mage::getModel('eav/config')->getAttribute($this->getEntityCode(), $attrCode);
73
- Mage::log($attrCode);
74
- Mage::log($productAttribute);
75
  if ($productAttribute->getId()){
76
  $type = $productAttribute->getBackendType();
77
  if ($type == 'static'){
@@ -143,13 +141,15 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Dropdown_Product
143
  /**
144
  * get the source model attribute
145
  * @access public
146
- * @return null|string
147
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
148
  */
149
  protected function _getEntityAttribute(){
150
  if (is_null($this->_entityAttribute)){
151
  $attrCode = $this->getTypeAttribute()->getAttribute()->getOptionsSourceAttribute();
152
- $productAttribute = Mage::getModel('eav/config')->getAttribute($this->getEntityCode(), $attrCode);
 
 
153
  $this->_entityAttribute = $productAttribute;
154
  }
155
  return $this->_entityAttribute;
43
  public function getAttributeOptions(){
44
  $content = '';
45
  $padding = $this->getPadding(2);
 
46
  $eol = $this->getEol();
 
47
  $attrCode = $this->getTypeAttribute()->getAttribute()->getOptionsSourceAttribute();
48
  $content .= $padding.'$'."source = Mage::getModel('eav/config')->getAttribute('".$this->getEntityCode()."', '".$attrCode."');".$eol;
49
  $content .= $padding.'return $source->getSource()->getAllOptions($withEmpty, $defaultValues);';
67
  */
68
  public function getSetupType(){
69
  $attrCode = $this->getTypeAttribute()->getAttribute()->getOptionsSourceAttribute();
70
+ /** @var Mage_Eav_Model_Config $config */
71
+ $config = Mage::getModel('eav/config');
72
+ $productAttribute = $config->getAttribute($this->getEntityCode(), $attrCode);
73
  if ($productAttribute->getId()){
74
  $type = $productAttribute->getBackendType();
75
  if ($type == 'static'){
141
  /**
142
  * get the source model attribute
143
  * @access public
144
+ * @return null|Mage_Eav_Model_Entity_Attribute_Abstract
145
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
146
  */
147
  protected function _getEntityAttribute(){
148
  if (is_null($this->_entityAttribute)){
149
  $attrCode = $this->getTypeAttribute()->getAttribute()->getOptionsSourceAttribute();
150
+ /** @var Mage_Eav_Model_Config $config */
151
+ $config = Mage::getModel('eav/config');
152
+ $productAttribute = $config->getAttribute($this->getEntityCode(), $attrCode);
153
  $this->_entityAttribute = $productAttribute;
154
  }
155
  return $this->_entityAttribute;
app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/File.php CHANGED
@@ -70,7 +70,6 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_File
70
  public function getRssText(){
71
  $content = '';
72
  $entityName = $this->getEntity()->getNameSingular(true);
73
- $ucEntity = ucfirst($entityName);
74
  $eol = $this->getEol();
75
  $module = $this->getModule()->getLowerModuleName();
76
  $namespace = $this->getNamespace(true);
@@ -96,7 +95,6 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_File
96
  $content = '';
97
  $eol = $this->getEol();
98
  $entityName = $this->getAttribute()->getEntity()->getNameSingular(true);
99
- $ucEntity = ucfirst($entityName);
100
  $module = $this->getModule()->getLowerModuleName();
101
  $namespace = $this->getNamespace(true);
102
  $content .= $this->getPadding().'<?php if ($_'.$entityName.'->get'.$this->getAttribute()->getMagicMethodCode().'()) :?>'.$eol;
70
  public function getRssText(){
71
  $content = '';
72
  $entityName = $this->getEntity()->getNameSingular(true);
 
73
  $eol = $this->getEol();
74
  $module = $this->getModule()->getLowerModuleName();
75
  $namespace = $this->getNamespace(true);
95
  $content = '';
96
  $eol = $this->getEol();
97
  $entityName = $this->getAttribute()->getEntity()->getNameSingular(true);
 
98
  $module = $this->getModule()->getLowerModuleName();
99
  $namespace = $this->getNamespace(true);
100
  $content .= $this->getPadding().'<?php if ($_'.$entityName.'->get'.$this->getAttribute()->getMagicMethodCode().'()) :?>'.$eol;
app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Image.php CHANGED
@@ -71,7 +71,6 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Image
71
  $eol = $this->getEol();
72
  $content = '';
73
  $entityName = $this->getEntity()->getNameSingular(true);
74
- $ucEntity = ucfirst($entityName);
75
  $module = $this->getModule()->getLowerModuleName();
76
  $namespace = $this->getNamespace(true);
77
  $content .= $this->getPadding(3).'if ($item->get'.$this->getAttribute()->getMagicMethodCode().'()) {'.$eol;
@@ -92,7 +91,6 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Image
92
  $eol = $this->getEol();
93
  $content = '';
94
  $entityName = $this->getEntity()->getNameSingular(true);
95
- $ucEntity = ucfirst($entityName);
96
  $module = $this->getModule()->getLowerModuleName();
97
  $namespace = $this->getNamespace(true);
98
  $content .= '<?php if ($_'.$entityName.'->get'.$this->getAttribute()->getMagicMethodCode().'()) :?>'.$eol;
71
  $eol = $this->getEol();
72
  $content = '';
73
  $entityName = $this->getEntity()->getNameSingular(true);
 
74
  $module = $this->getModule()->getLowerModuleName();
75
  $namespace = $this->getNamespace(true);
76
  $content .= $this->getPadding(3).'if ($item->get'.$this->getAttribute()->getMagicMethodCode().'()) {'.$eol;
91
  $eol = $this->getEol();
92
  $content = '';
93
  $entityName = $this->getEntity()->getNameSingular(true);
 
94
  $module = $this->getModule()->getLowerModuleName();
95
  $namespace = $this->getNamespace(true);
96
  $content .= '<?php if ($_'.$entityName.'->get'.$this->getAttribute()->getMagicMethodCode().'()) :?>'.$eol;
app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Timestamp.php CHANGED
@@ -78,7 +78,6 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Timestamp
78
  */
79
  public function getFrontendHtml() {
80
  $entityName = $this->getEntity()->getNameSingular(true);
81
- $ucEntity = ucfirst($entityName);
82
  $module = $this->getModule()->getLowerModuleName();
83
  $namespace = $this->getNamespace(true);
84
  return '<?php echo Mage::helper(\''.$namespace.'_'.$module.'\')->__("'.$this->getAttribute()->getLabel().'");?>: <?php echo Mage::helper(\'core\')->formatDate($_'.$entityName.'->get'.$this->getAttribute()->getMagicMethodCode().'(), \'full\');?>'.$this->getEol();
78
  */
79
  public function getFrontendHtml() {
80
  $entityName = $this->getEntity()->getNameSingular(true);
 
81
  $module = $this->getModule()->getLowerModuleName();
82
  $namespace = $this->getNamespace(true);
83
  return '<?php echo Mage::helper(\''.$namespace.'_'.$module.'\')->__("'.$this->getAttribute()->getLabel().'");?>: <?php echo Mage::helper(\'core\')->formatDate($_'.$entityName.'->get'.$this->getAttribute()->getMagicMethodCode().'(), \'full\');?>'.$this->getEol();
app/code/community/Ultimate/ModuleCreator/Model/Attribute/Type/Yesno.php CHANGED
@@ -85,8 +85,6 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Yesno
85
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
86
  */
87
  public function getRssText() {
88
- $entityName = $this->getEntity()->getNameSingular(true);
89
- $ucEntity = ucfirst($entityName);
90
  $module = $this->getModule()->getLowerModuleName();
91
  $namespace = $this->getNamespace(true);
92
  return $this->getPadding(3).'$description .= \'<div>\'.Mage::helper(\''.$namespace.'_'.$module.'\')->__("'.$this->getAttribute()->getLabel().'").\':\'.(($item->get'.$this->getAttribute()->getMagicMethodCode().'() == 1) ? Mage::helper(\''.$namespace.'_'.$module.'\')->__(\'Yes\') : Mage::helper(\''.$namespace.'_'.$module.'\')->__(\'No\')).\'</div>\';'.$this->getEol();
@@ -99,7 +97,6 @@ class Ultimate_ModuleCreator_Model_Attribute_Type_Yesno
99
  */
100
  public function getFrontendHtml() {
101
  $entityName = $this->getEntity()->getNameSingular(true);
102
- $ucEntity = ucfirst($entityName);
103
  $module = $this->getModule()->getLowerModuleName();
104
  $namespace = $this->getNamespace(true);
105
  return '<?php echo Mage::helper(\''.$namespace.'_'.$module.'\')->__("'.$this->getAttribute()->getLabel().'");?>:<?php echo ($_'.$entityName.'->get'.$this->getAttribute()->getMagicMethodCode().'() == 1)?Mage::helper(\''.$module.'\')->__(\'Yes\'):Mage::helper(\''.$module.'\')->__(\'No\') ?>'.$this->getEol();
85
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
86
  */
87
  public function getRssText() {
 
 
88
  $module = $this->getModule()->getLowerModuleName();
89
  $namespace = $this->getNamespace(true);
90
  return $this->getPadding(3).'$description .= \'<div>\'.Mage::helper(\''.$namespace.'_'.$module.'\')->__("'.$this->getAttribute()->getLabel().'").\':\'.(($item->get'.$this->getAttribute()->getMagicMethodCode().'() == 1) ? Mage::helper(\''.$namespace.'_'.$module.'\')->__(\'Yes\') : Mage::helper(\''.$namespace.'_'.$module.'\')->__(\'No\')).\'</div>\';'.$this->getEol();
97
  */
98
  public function getFrontendHtml() {
99
  $entityName = $this->getEntity()->getNameSingular(true);
 
100
  $module = $this->getModule()->getLowerModuleName();
101
  $namespace = $this->getNamespace(true);
102
  return '<?php echo Mage::helper(\''.$namespace.'_'.$module.'\')->__("'.$this->getAttribute()->getLabel().'");?>:<?php echo ($_'.$entityName.'->get'.$this->getAttribute()->getMagicMethodCode().'() == 1)?Mage::helper(\''.$module.'\')->__(\'Yes\'):Mage::helper(\''.$module.'\')->__(\'No\') ?>'.$this->getEol();
app/code/community/Ultimate/ModuleCreator/Model/Config.php CHANGED
@@ -47,7 +47,7 @@ class Ultimate_ModuleCreator_Model_Config extends Varien_Simplexml_Config {
47
  /**
48
  * translate node
49
  * @access protected
50
- * @param $node
51
  * @return Ultimate_ModuleCreator_Model_Config
52
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
53
  */
47
  /**
48
  * translate node
49
  * @access protected
50
+ * @param Varien_Simplexml_Element $node
51
  * @return Ultimate_ModuleCreator_Model_Config
52
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
53
  */
app/code/community/Ultimate/ModuleCreator/Model/Entity.php CHANGED
@@ -22,11 +22,48 @@
22
  * @package Ultimate_ModuleCreator
23
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
24
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  class Ultimate_ModuleCreator_Model_Entity
26
  extends Ultimate_ModuleCreator_Model_Abstract {
27
  /**
28
  * reference to type instance
29
- * @var null
30
  */
31
  protected $_typeInstance = null;
32
  /**
@@ -107,7 +144,9 @@ class Ultimate_ModuleCreator_Model_Entity
107
  $this->_attributes[$attribute->getCode()] = $attribute;
108
  if ($attribute->getIsName()){
109
  if (!$attribute->getIsAllowedAsName()){
110
- $attributeTypes = Mage::helper('modulecreator')->getNameAttributeTypes(true);
 
 
111
  throw new Ultimate_ModuleCreator_Exception(Mage::helper('modulecreator')->__('An attribute that acts as name must have one of the types "%s".', implode(', ', $attributeTypes)));
112
  }
113
  $attribute->setUserDefined(false);
@@ -142,12 +181,13 @@ class Ultimate_ModuleCreator_Model_Entity
142
  return $this;
143
  }
144
  $attributesByPosition = array();
145
- foreach ($this->_attributes as $key=>$attribute){
 
146
  $attributesByPosition[$attribute->getPosition()][] = $attribute;
147
  }
148
  ksort($attributesByPosition);
149
  $attributes = array();
150
- foreach ($attributesByPosition as $position=>$attributeList){
151
  foreach ($attributeList as $attribute){
152
  $attributes[$attribute->getCode()] = $attribute;
153
  }
@@ -187,12 +227,6 @@ class Ultimate_ModuleCreator_Model_Entity
187
  if (!empty($rootName)) {
188
  $xml.= '<'.$rootName.'>'.$this->getEol();
189
  }
190
- $start = '';
191
- $end = '';
192
- if ($addCdata){
193
- $start = '<![CDATA[';
194
- $end = ']]>';
195
- }
196
  $xml .= parent::toXml($this->getXmlAttributes(), '', false, $addCdata);
197
  $xml .= '<attributes>'.$this->getEol();
198
  foreach ($this->getAttributes() as $attribute){
@@ -321,7 +355,7 @@ class Ultimate_ModuleCreator_Model_Entity
321
  /**
322
  * get list template
323
  * @access public
324
- * @return stromg
325
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
326
  */
327
  public function getListTemplate(){
@@ -342,7 +376,7 @@ class Ultimate_ModuleCreator_Model_Entity
342
  /**
343
  * get list template
344
  * @access public
345
- * @return stromg
346
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
347
  */
348
  public function getViewTemplate(){
@@ -454,7 +488,7 @@ class Ultimate_ModuleCreator_Model_Entity
454
  * get the related entities
455
  * @access public
456
  * @param mixed $type
457
- * @return array()
458
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
459
  */
460
  public function getRelatedEntities($type = null){
@@ -513,9 +547,13 @@ class Ultimate_ModuleCreator_Model_Entity
513
  public function getTypeInstance(){
514
  if (is_null($this->_typeInstance)) {
515
  $type = $this->getType();
516
- $types = Mage::helper('modulecreator')->getEntityTypes(false);
 
 
517
  if (isset($types[$type])) {
518
- $this->_typeInstance = Mage::getModel((string)$types[$type]->type_model);
 
 
519
  }
520
  else {
521
  throw new Ultimate_ModuleCreator_Exception(Mage::helper('modulecreator')->__('Entity "%s" type is not valid', $type));
@@ -739,6 +777,9 @@ class Ultimate_ModuleCreator_Model_Entity
739
  if ($this->getUrlRewrite() && $this->getUrlSuffix()){
740
  $text.= $padding3.$padding.'<url_suffix>'.$this->getUrlSuffix().'</url_suffix>'.$eol;
741
  }
 
 
 
742
  if ($this->getAllowComment()){
743
  $text.= $padding3.$padding.'<allow_comment>1</allow_comment>'.$eol;
744
  }
@@ -827,7 +868,6 @@ class Ultimate_ModuleCreator_Model_Entity
827
  $title = ucwords($this->getLabelSingular());
828
  $entity = strtolower($this->getNameSingular());
829
  $action = $module.'_'.$entity;
830
- $sortOrder = $this->getPosition();
831
  $eol = $this->getEol();
832
 
833
  $text = $this->getPadding($padding).'<'.$entity.' translate="title" module="'.$extension.'">'.$eol;
@@ -857,11 +897,8 @@ class Ultimate_ModuleCreator_Model_Entity
857
  */
858
  public function getMenuAcl($padding){
859
  $extension = $this->getModule()->getExtensionName(true);
860
- $module = $this->getModule()->getLowerModuleName();
861
  $title = ucwords($this->getLabelSingular());
862
  $entity = $this->getNameSingular(true);
863
- $action = $module.'_'.$entity;
864
- $sortOrder = $this->getPosition();
865
  $eol = $this->getEol();
866
 
867
  $text = $this->getPadding($padding).'<'.$entity.' translate="title" module="'.$extension.'">'.$eol;
@@ -994,6 +1031,7 @@ class Ultimate_ModuleCreator_Model_Entity
994
  $parents = $this->getRelatedEntities(Ultimate_ModuleCreator_Model_Relation::RELATION_TYPE_CHILD);
995
  $content = '';
996
  foreach ($parents as $parent){
 
997
  $attr = Mage::getModel('modulecreator/attribute');
998
  $attr->setCode($parent->getPlaceholders('{{entity}}').'_id');
999
  $attr->setLabel($parent->getPlaceholders('{{EntityLabel}}'). ' ID');
@@ -1009,10 +1047,11 @@ class Ultimate_ModuleCreator_Model_Entity
1009
  * @param mixed $type
1010
  * @param bool $ignoreSettings
1011
  * @param array $except
1012
- * @return array()
1013
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
1014
  */
1015
  public function getSimulatedAttributes($type = null, $ignoreSettings = false, $except = array()){
 
1016
  $attributes = array();
1017
  $namespace = $this->getNamespace(true);
1018
  if (is_null($type)){
@@ -1027,6 +1066,7 @@ class Ultimate_ModuleCreator_Model_Entity
1027
  }
1028
  switch ($type){
1029
  case 'status':
 
1030
  $attr = Mage::getModel('modulecreator/attribute');
1031
  $attr->setCode('status');
1032
  $attr->setLabel('Enabled');
@@ -1036,6 +1076,7 @@ class Ultimate_ModuleCreator_Model_Entity
1036
  break;
1037
  case 'url_rewrite':
1038
  if ($this->getUrlRewrite() || $ignoreSettings){
 
1039
  $attr = Mage::getModel('modulecreator/attribute');
1040
  $attr->setCode('url_key');
1041
  $attr->setLabel('URL key');
@@ -1048,12 +1089,14 @@ class Ultimate_ModuleCreator_Model_Entity
1048
  break;
1049
  case 'tree' :
1050
  if ($this->getIsTree() || $ignoreSettings){
 
1051
  $attr = Mage::getModel('modulecreator/attribute');
1052
  $attr->setCode('parent_id');
1053
  $attr->setLabel('Parent id');
1054
  $attr->setType('int');
1055
  $attributes[] = $attr;
1056
 
 
1057
  $attr = Mage::getModel('modulecreator/attribute');
1058
  $attr->setCode('path');
1059
  $attr->setLabel('Path');
@@ -1061,6 +1104,7 @@ class Ultimate_ModuleCreator_Model_Entity
1061
  $attr->setIgnoreApi(true);
1062
  $attributes[] = $attr;
1063
 
 
1064
  $attr = Mage::getModel('modulecreator/attribute');
1065
  $attr->setCode('position');
1066
  $attr->setLabel('Position');
@@ -1068,6 +1112,7 @@ class Ultimate_ModuleCreator_Model_Entity
1068
  $attr->setIgnoreApi(true);
1069
  $attributes[] = $attr;
1070
 
 
1071
  $attr = Mage::getModel('modulecreator/attribute');
1072
  $attr->setCode('level');
1073
  $attr->setLabel('Level');
@@ -1075,6 +1120,7 @@ class Ultimate_ModuleCreator_Model_Entity
1075
  $attr->setIgnoreApi(true);
1076
  $attributes[] = $attr;
1077
 
 
1078
  $attr = Mage::getModel('modulecreator/attribute');
1079
  $attr->setCode('children_count');
1080
  $attr->setLabel('Children count');
@@ -1085,6 +1131,7 @@ class Ultimate_ModuleCreator_Model_Entity
1085
  break;
1086
  case 'rss':
1087
  if($this->getRss() || $ignoreSettings){
 
1088
  $attr = Mage::getModel('modulecreator/attribute');
1089
  $attr->setCode('in_rss');
1090
  $attr->setLabel('In RSS');
@@ -1095,12 +1142,14 @@ class Ultimate_ModuleCreator_Model_Entity
1095
  break;
1096
  case 'seo':
1097
  if ($this->getAddSeo() || $ignoreSettings){
 
1098
  $attr = Mage::getModel('modulecreator/attribute');
1099
  $attr->setCode('meta_title');
1100
  $attr->setLabel('Meta title');
1101
  $attr->setType('text');
1102
  $attributes[] = $attr;
1103
 
 
1104
  $attr = Mage::getModel('modulecreator/attribute');
1105
  $attr->setCode('meta_keywords');
1106
  $attr->setLabel('Meta keywords');
@@ -1116,6 +1165,7 @@ class Ultimate_ModuleCreator_Model_Entity
1116
  break;
1117
  case 'comment':
1118
  if ($this->getAllowComment() || $ignoreSettings){
 
1119
  $attr = Mage::getModel('modulecreator/attribute');
1120
  $attr->setCode('allow_comment');
1121
  $attr->setLabel('Allow Comment');
@@ -1180,7 +1230,9 @@ class Ultimate_ModuleCreator_Model_Entity
1180
  }
1181
  $children = $this->getRelatedEntities(Ultimate_ModuleCreator_Model_Relation::RELATION_TYPE_PARENT);
1182
  $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Model_Relation::RELATION_TYPE_SIBLING);
1183
- foreach (array_merge($children, $siblings) as $entity){
 
 
1184
  $content .= $this->getPadding().'<block type="'.$namespace.'_'.$module.'/'.$entityName.'_'.strtolower($entity->getNameSingular()).'_list" name="'.$entityName.'.'.strtolower($entity->getNameSingular()).'_list" as="'.$entityName.'_'.strtolower($this->getNamePlural()).'" template="'.$namespace.'_'.$module.'/'.$entityName.'/'.strtolower($entity->getNameSingular()).'/list.phtml" />'.$eol.$this->getPadding(2);
1185
  }
1186
  if ($this->getAllowComment()) {
@@ -1287,6 +1339,18 @@ class Ultimate_ModuleCreator_Model_Entity
1287
  $position += 10;
1288
  }
1289
  if ($this->getUrlRewrite()){
 
 
 
 
 
 
 
 
 
 
 
 
1290
  $content .= $padding.'<url_prefix translate="label comment">'.$eol;
1291
  $content .= $padding.$tab.'<label>URL prefix</label>'.$eol;
1292
  $content .= $padding.$tab.'<frontend_type>text</frontend_type>'.$eol;
@@ -1430,7 +1494,6 @@ class Ultimate_ModuleCreator_Model_Entity
1430
  if ($this->getIsTree()){
1431
  $module = $this->getModule()->getLowerModuleName();
1432
  $entity = $this->getNameSingular(true);
1433
- $entityLabelUc = ucfirst($this->getLabelSingular());
1434
  $entityLabel = strtolower($this->getLabelSingular());
1435
  $entitiesLabel = strtolower($this->getLabelPlural());
1436
  $content = $prefix.'<level translate="title" module="'.$extension.'">'.$eol;
@@ -1491,7 +1554,6 @@ class Ultimate_ModuleCreator_Model_Entity
1491
  }
1492
  $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Model_Relation::RELATION_TYPE_SIBLING);
1493
  foreach ($siblings as $sibling){
1494
- $siblingName = $sibling->getNameSingular(true);
1495
  $siblingNameUc = ucfirst($sibling->getNameSingular());
1496
  $siblingLabel = strtolower($sibling->getLabelSingular());
1497
  $string .= $this->getApiRelationsSection($siblingNameUc, $siblingLabel);
@@ -1510,13 +1572,9 @@ class Ultimate_ModuleCreator_Model_Entity
1510
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
1511
  */
1512
  public function getApiFaultsSection($relatedCode, $relatedLabel, $code){
1513
- $string = '';
1514
  $padding = $this->getPadding();
1515
  $prefix = str_repeat($padding, 5);
1516
  $eol = $this->getEol();
1517
- $entity = $this->getNameSingular(true);
1518
- $entityLabelUc = ucfirst($this->getLabelSingular());
1519
- $entityLabel = strtolower($this->getLabelSingular());
1520
  $string = '';
1521
  $string .= $prefix.'<'.$relatedCode.'_not_exists>'.$eol;
1522
  $string .= $prefix.$padding.'<code>'.$code.'</code>'.$eol;
@@ -1540,7 +1598,6 @@ class Ultimate_ModuleCreator_Model_Entity
1540
  $code = 105;
1541
  $entity = $this->getNameSingular(true);
1542
  $entityLabelUc = ucfirst($this->getLabelSingular());
1543
- $entityLabel = strtolower($this->getLabelSingular());
1544
  if ($this->getIsTree()){
1545
  $string .= $prefix.'<not_moved>'.$eol;
1546
  $string .= $prefix.$padding.'<code>'.$code.'</code>'.$eol;
@@ -1559,8 +1616,6 @@ class Ultimate_ModuleCreator_Model_Entity
1559
  $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Model_Relation::RELATION_TYPE_SIBLING);
1560
  foreach ($siblings as $sibling){
1561
  $siblingName = $sibling->getNameSingular(true);
1562
- $siblingNameUc = ucfirst($sibling->getNameSingular());
1563
- $siblingLabel = strtolower($sibling->getLabelSingular());
1564
  $siblingLabelUc = ucfirst($sibling->getLabelSingular());
1565
 
1566
  $string .= $this->getApiFaultsSection($entity.'_'.$siblingName, $siblingLabelUc, $code);
@@ -1584,10 +1639,6 @@ class Ultimate_ModuleCreator_Model_Entity
1584
  $eol = $this->getEol();
1585
  $extension = $this->getModule()->getExtensionName(true);
1586
  if ($this->getIsTree()){
1587
- $module = $this->getModule()->getLowerModuleName();
1588
- $entity = $this->getNameSingular(true);
1589
- $entityLabelUc = ucfirst($this->getLabelSingular());
1590
- $entityLabel = strtolower($this->getLabelSingular());
1591
  $content .= $prefix.'<move translate="title" module="'.$extension.'">'.$eol;
1592
  $content .= $prefix.$padding.'<title>Move</title>'.$eol;
1593
  $content .= $prefix.'</move>'.$eol;
@@ -1610,6 +1661,7 @@ class Ultimate_ModuleCreator_Model_Entity
1610
  $eol = $this->getEol();
1611
  $content = '';
1612
  foreach ($parents as $parent){
 
1613
  $attr = Mage::getModel('modulecreator/attribute');
1614
  $attr->setCode($parent->getNameSingular().'_id');
1615
  $attr->setLabel($parent->getLabelSingular());
@@ -1713,8 +1765,6 @@ class Ultimate_ModuleCreator_Model_Entity
1713
  foreach ($siblings as $sibling){
1714
  $siblingName = $sibling->getNameSingular(true);
1715
  $siblingNameUc = ucfirst($sibling->getNameSingular());
1716
- $siblingLabel = strtolower($sibling->getLabelSingular());
1717
-
1718
  $content .= $this->getWsdlRelationTypesSection($siblingNameUc, $siblingName, $wsi);
1719
 
1720
  }
@@ -1746,7 +1796,6 @@ class Ultimate_ModuleCreator_Model_Entity
1746
  $padding = $tab.$tab;
1747
  $eol = $this->getEol();
1748
  $module = $this->getModule()->getLowerModuleName();
1749
- $entity = $this->getNameSingular(true);
1750
  $entityUc = ucfirst($this->getNameSingular());
1751
  $label = strtolower($this->getLabelSingular());
1752
  $tagPrefix = ($wsi) ? 'wsdl:':'';
@@ -1802,8 +1851,7 @@ class Ultimate_ModuleCreator_Model_Entity
1802
  }
1803
  $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Model_Relation::RELATION_TYPE_SIBLING);
1804
  foreach ($siblings as $sibling){
1805
- $siblingName = strtolower($sibling->getNameSingular());
1806
- $siblingNameUc = ucfirst($sibling->getNameSingular());
1807
  $siblingLabel = strtolower($sibling->getLabelSingular());
1808
 
1809
  $content .= $this->getWsdlPortTypeRelationSection($siblingNameUc, $siblingLabel, $wsi);
@@ -1838,7 +1886,6 @@ class Ultimate_ModuleCreator_Model_Entity
1838
  $module = $this->getModule()->getLowerModuleName();
1839
  $entity = $this->getNameSingular(true);
1840
  $entityUc = ucfirst($entity);
1841
- $label = strtolower($this->getLabelSingular());
1842
 
1843
  $content .= $padding.'<operation name="'.$module.$entityUc.$sectionName.'">'.$eol;
1844
  $content .= $padding.$tab.'<soap:operation soapAction="urn:{{var wsdl.handler}}Action" />'.$eol;
@@ -1859,11 +1906,6 @@ class Ultimate_ModuleCreator_Model_Entity
1859
  */
1860
  public function getWsdlRelationBinding(){
1861
  $content = '';
1862
- $module = $this->getModule()->getLowerModuleName();
1863
- $entity = $this->getNameSingular(true);
1864
- $entityUc = ucfirst($this->getNameSingular());
1865
- $label = strtolower($this->getLabelSingular());
1866
-
1867
  if ($this->getIsTree()){
1868
  $content .= $this->getWsdlRelationBindingSection('Move');
1869
  }
@@ -1880,8 +1922,6 @@ class Ultimate_ModuleCreator_Model_Entity
1880
  foreach ($siblings as $sibling){
1881
  $siblingName = $sibling->getNameSingular(true);
1882
  $siblingNameUc = ucfirst($siblingName);
1883
- $siblingLabel = strtolower($sibling->getLabelSingular());
1884
-
1885
  $content .= $this->getWsdlRelationBindingSection('Assign'.$siblingNameUc);
1886
  $content .= $this->getWsdlRelationBindingSection('Unassign'.$siblingNameUc);
1887
  }
@@ -1905,7 +1945,6 @@ class Ultimate_ModuleCreator_Model_Entity
1905
  $module = $this->getModule()->getLowerModuleName();
1906
  $entity = $this->getNameSingular(true);
1907
  $entityUc = ucfirst($entity);
1908
- $label = strtolower($this->getLabelSingular());
1909
 
1910
  $content .= $padding.'<wsdl:operation name="'.$module.$entityUc.$sectionName.'">'.$eol;
1911
  $content .= $padding.$tab.'<soap:operation soapAction="" />'.$eol;
@@ -1927,11 +1966,6 @@ class Ultimate_ModuleCreator_Model_Entity
1927
  */
1928
  public function getWsiRelationBinding(){
1929
  $content = '';
1930
- $module = $this->getModule()->getLowerModuleName();
1931
- $entity = $this->getNameSingular(true);
1932
- $entityUc = ucfirst($entity);
1933
- $label = strtolower($this->getLabelSingular());
1934
-
1935
  if ($this->getIsTree()){
1936
  $content .= $this->getWsiRelationBindingSection('Move');
1937
  }
@@ -1948,7 +1982,6 @@ class Ultimate_ModuleCreator_Model_Entity
1948
  foreach ($siblings as $sibling){
1949
  $siblingName = $sibling->getNameSingular(true);
1950
  $siblingNameUc = ucfirst($siblingName);
1951
- $siblingLabel = strtolower($sibling->getLabelSingular());
1952
 
1953
  $content .= $this->getWsiRelationBindingSection('Assign'.$siblingNameUc);
1954
  $content .= $this->getWsiRelationBindingSection('Unassign'.$siblingNameUc);
@@ -1973,7 +2006,6 @@ class Ultimate_ModuleCreator_Model_Entity
1973
  $module = $this->getModule()->getLowerModuleName();
1974
  $entity = $this->getNameSingular(true);
1975
  $entityUc = ucfirst($entity);
1976
- $label = strtolower($this->getLabelSingular());
1977
  $content .= $padding.'<xsd:element name="'.$module.$entityUc.'Assign'.$sectionName.'RequestParam">'.$eol;
1978
  $content .= $padding.$tab.'<xsd:complexType>'.$eol;
1979
  $content .= $padding.str_repeat($tab, 2).'<xsd:sequence>'.$eol;
@@ -2027,7 +2059,6 @@ class Ultimate_ModuleCreator_Model_Entity
2027
  $module = $this->getModule()->getLowerModuleName();
2028
  $entity = $this->getNameSingular(true);
2029
  $entityUc = ucfirst($entity);
2030
- $label = strtolower($this->getLabelSingular());
2031
 
2032
  if ($this->getIsTree()){
2033
  $content .= $padding.'<xsd:element name="'.$module.$entityUc.'MoveRequestParam">'.$eol;
@@ -2062,8 +2093,6 @@ class Ultimate_ModuleCreator_Model_Entity
2062
  foreach ($siblings as $sibling){
2063
  $siblingName = $sibling->getNameSingular(true);
2064
  $siblingNameUc = ucfirst($siblingName);
2065
- $siblingLabel = strtolower($sibling->getLabelSingular());
2066
-
2067
  $content .= $this->getWsiRelationParamTypesSection($siblingNameUc, $siblingName);
2068
  }
2069
  $content .= $tab.$tab;
@@ -2084,7 +2113,6 @@ class Ultimate_ModuleCreator_Model_Entity
2084
  $module = $this->getModule()->getLowerModuleName();
2085
  $entity = $this->getNameSingular(true);
2086
  $entityUc = ucfirst($entity);
2087
- $label = strtolower($this->getLabelSingular());
2088
 
2089
  $content .= $padding.'<wsdl:message name="'.$module.$entityUc.$sectionName.'Request">'.$eol;
2090
  $content .= $padding.$tab.'<wsdl:part name="parameters" element="typens:'.$module.$entityUc.$sectionName.'RequestParam" />'.$eol;
@@ -2121,7 +2149,6 @@ class Ultimate_ModuleCreator_Model_Entity
2121
  foreach ($siblings as $sibling){
2122
  $siblingName = $sibling->getNameSingular(true);
2123
  $siblingNameUc = ucfirst($siblingName);
2124
- $siblingLabel = strtolower($sibling->getLabelSingular());
2125
 
2126
  $content .= $this->getWsiRelationMessagesSection('Assign'.$siblingNameUc);
2127
  $content .= $this->getWsiRelationMessagesSection('Unassign'.$siblingNameUc);
@@ -2205,7 +2232,6 @@ class Ultimate_ModuleCreator_Model_Entity
2205
  foreach ($siblings as $sibling){
2206
  $siblingName = $sibling->getNameSingular(true);
2207
  $siblingNameUc = ucfirst($siblingName);
2208
- $siblingLabel = strtolower($sibling->getLabelSingular());
2209
 
2210
  $content .= $this->getWsdlMessagesSection($siblingNameUc, $siblingName);
2211
  }
@@ -2683,11 +2709,9 @@ class Ultimate_ModuleCreator_Model_Entity
2683
  $content = '';
2684
  if ($this->getAllowComment()) {
2685
  $padding = $this->getPadding(3);
2686
- $tab = $this->getPadding();
2687
  $module = $this->getModule()->getLowerModuleName();
2688
  $entity = $this->getNameSingular(true);
2689
  $eol = $this->getEol();
2690
- $ns = $this->getNamespace(true);
2691
  $content .= $eol;
2692
  $content .= $padding.'<'.$entity.'_comment>'.$module.'_'.$entity.'_comment</'.$entity.'_comment>';
2693
  }
@@ -2704,7 +2728,6 @@ class Ultimate_ModuleCreator_Model_Entity
2704
  $content = '';
2705
  if ($this->getAllowComment()) {
2706
  $padding = $this->getPadding(4);
2707
- $tab = $this->getPadding();
2708
  $module = $this->getModule()->getLowerModuleName();
2709
  $entity = strtolower($this->getNameSingular());
2710
  $eol = $this->getEol();
22
  * @package Ultimate_ModuleCreator
23
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
24
  */
25
+ /**
26
+ * @method Ultimate_ModuleCreator_Model_Entity setIndex()
27
+ * @method Ultimate_ModuleCreator_Model_Entity setEditor()
28
+ * @method Ultimate_ModuleCreator_Model_Entity setHasImage()
29
+ * @method Ultimate_ModuleCreator_Model_Entity setHasFile()
30
+ * @method Ultimate_ModuleCreator_Model_Entity setHasCountry()
31
+ * @method Ultimate_ModuleCreator_Model_Entity setHasMultipleSelect()
32
+ * @method bool getCreateFrontend()
33
+ * @method bool getLinkProduct()
34
+ * @method bool getLinkCategory()
35
+ * @method bool getIsTree()
36
+ * @method string getType()
37
+ * @method string getLabelSingular()
38
+ * @method string getLabelPlural()
39
+ * @method string getProductAttributeCode()
40
+ * @method string getCategoryAttributeCode()
41
+ * @method int getPosition()
42
+ * @method string getUrlRewriteList()
43
+ * @method bool getAllowComment()
44
+ * @method bool getStore()
45
+ * @method bool getShowCategory()
46
+ * @method int getProductAttributeScope()
47
+ * @method int getCategoryAttributeScope()
48
+ * @method bool getProductAttribute();
49
+ * @method bool getCategoryAttribute()
50
+ * @method string getProductAttributeGroup()
51
+ * @method string getCategoryAttributeGroup()
52
+ * @method int getListMenu()
53
+ * @method bool getRest()
54
+ * @method Ultimate_ModuleCreator_Model_Entity setPosition()
55
+ * @method Ultimate_ModuleCreator_Model_Entity setRss()
56
+ * @method bool getEditor()
57
+ * @method bool getApi()
58
+ * @method bool getHasCountry()
59
+ * @method bool getSearch()
60
+ * @method int getIndex()
61
+ */
62
  class Ultimate_ModuleCreator_Model_Entity
63
  extends Ultimate_ModuleCreator_Model_Abstract {
64
  /**
65
  * reference to type instance
66
+ * @var null|Ultimate_ModuleCreator_Model_Entity_Type_Abstract
67
  */
68
  protected $_typeInstance = null;
69
  /**
144
  $this->_attributes[$attribute->getCode()] = $attribute;
145
  if ($attribute->getIsName()){
146
  if (!$attribute->getIsAllowedAsName()){
147
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
148
+ $helper = Mage::helper('modulecreator');
149
+ $attributeTypes = $helper->getNameAttributeTypes(true);
150
  throw new Ultimate_ModuleCreator_Exception(Mage::helper('modulecreator')->__('An attribute that acts as name must have one of the types "%s".', implode(', ', $attributeTypes)));
151
  }
152
  $attribute->setUserDefined(false);
181
  return $this;
182
  }
183
  $attributesByPosition = array();
184
+ foreach ($this->_attributes as $attribute){
185
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attribute */
186
  $attributesByPosition[$attribute->getPosition()][] = $attribute;
187
  }
188
  ksort($attributesByPosition);
189
  $attributes = array();
190
+ foreach ($attributesByPosition as $attributeList){
191
  foreach ($attributeList as $attribute){
192
  $attributes[$attribute->getCode()] = $attribute;
193
  }
227
  if (!empty($rootName)) {
228
  $xml.= '<'.$rootName.'>'.$this->getEol();
229
  }
 
 
 
 
 
 
230
  $xml .= parent::toXml($this->getXmlAttributes(), '', false, $addCdata);
231
  $xml .= '<attributes>'.$this->getEol();
232
  foreach ($this->getAttributes() as $attribute){
355
  /**
356
  * get list template
357
  * @access public
358
+ * @return string
359
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
360
  */
361
  public function getListTemplate(){
376
  /**
377
  * get list template
378
  * @access public
379
+ * @return string
380
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
381
  */
382
  public function getViewTemplate(){
488
  * get the related entities
489
  * @access public
490
  * @param mixed $type
491
+ * @return Ultimate_ModuleCreator_Model_Entity[]
492
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
493
  */
494
  public function getRelatedEntities($type = null){
547
  public function getTypeInstance(){
548
  if (is_null($this->_typeInstance)) {
549
  $type = $this->getType();
550
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
551
+ $helper = Mage::helper('modulecreator');
552
+ $types = $helper->getEntityTypes(false);
553
  if (isset($types[$type])) {
554
+ /** @var Ultimate_ModuleCreator_Model_Entity_Type_Abstract $typeInstance */
555
+ $typeInstance = Mage::getModel((string)$types[$type]->type_model);
556
+ $this->_typeInstance = $typeInstance;
557
  }
558
  else {
559
  throw new Ultimate_ModuleCreator_Exception(Mage::helper('modulecreator')->__('Entity "%s" type is not valid', $type));
777
  if ($this->getUrlRewrite() && $this->getUrlSuffix()){
778
  $text.= $padding3.$padding.'<url_suffix>'.$this->getUrlSuffix().'</url_suffix>'.$eol;
779
  }
780
+ if ($this->getUrlRewrite() && $this->getUrlRewriteList()) {
781
+ $text.= $padding3.$padding.'<url_rewrite_list>'.$this->getUrlRewriteList().'</url_rewrite_list>'.$eol;
782
+ }
783
  if ($this->getAllowComment()){
784
  $text.= $padding3.$padding.'<allow_comment>1</allow_comment>'.$eol;
785
  }
868
  $title = ucwords($this->getLabelSingular());
869
  $entity = strtolower($this->getNameSingular());
870
  $action = $module.'_'.$entity;
 
871
  $eol = $this->getEol();
872
 
873
  $text = $this->getPadding($padding).'<'.$entity.' translate="title" module="'.$extension.'">'.$eol;
897
  */
898
  public function getMenuAcl($padding){
899
  $extension = $this->getModule()->getExtensionName(true);
 
900
  $title = ucwords($this->getLabelSingular());
901
  $entity = $this->getNameSingular(true);
 
 
902
  $eol = $this->getEol();
903
 
904
  $text = $this->getPadding($padding).'<'.$entity.' translate="title" module="'.$extension.'">'.$eol;
1031
  $parents = $this->getRelatedEntities(Ultimate_ModuleCreator_Model_Relation::RELATION_TYPE_CHILD);
1032
  $content = '';
1033
  foreach ($parents as $parent){
1034
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attr */
1035
  $attr = Mage::getModel('modulecreator/attribute');
1036
  $attr->setCode($parent->getPlaceholders('{{entity}}').'_id');
1037
  $attr->setLabel($parent->getPlaceholders('{{EntityLabel}}'). ' ID');
1047
  * @param mixed $type
1048
  * @param bool $ignoreSettings
1049
  * @param array $except
1050
+ * @return Ultimate_ModuleCreator_Model_Attribute[]
1051
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
1052
  */
1053
  public function getSimulatedAttributes($type = null, $ignoreSettings = false, $except = array()){
1054
+ /** @var Ultimate_ModuleCreator_Model_Attribute[] $attributes */
1055
  $attributes = array();
1056
  $namespace = $this->getNamespace(true);
1057
  if (is_null($type)){
1066
  }
1067
  switch ($type){
1068
  case 'status':
1069
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attr */
1070
  $attr = Mage::getModel('modulecreator/attribute');
1071
  $attr->setCode('status');
1072
  $attr->setLabel('Enabled');
1076
  break;
1077
  case 'url_rewrite':
1078
  if ($this->getUrlRewrite() || $ignoreSettings){
1079
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attr */
1080
  $attr = Mage::getModel('modulecreator/attribute');
1081
  $attr->setCode('url_key');
1082
  $attr->setLabel('URL key');
1089
  break;
1090
  case 'tree' :
1091
  if ($this->getIsTree() || $ignoreSettings){
1092
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attr */
1093
  $attr = Mage::getModel('modulecreator/attribute');
1094
  $attr->setCode('parent_id');
1095
  $attr->setLabel('Parent id');
1096
  $attr->setType('int');
1097
  $attributes[] = $attr;
1098
 
1099
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attr */
1100
  $attr = Mage::getModel('modulecreator/attribute');
1101
  $attr->setCode('path');
1102
  $attr->setLabel('Path');
1104
  $attr->setIgnoreApi(true);
1105
  $attributes[] = $attr;
1106
 
1107
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attr */
1108
  $attr = Mage::getModel('modulecreator/attribute');
1109
  $attr->setCode('position');
1110
  $attr->setLabel('Position');
1112
  $attr->setIgnoreApi(true);
1113
  $attributes[] = $attr;
1114
 
1115
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attr */
1116
  $attr = Mage::getModel('modulecreator/attribute');
1117
  $attr->setCode('level');
1118
  $attr->setLabel('Level');
1120
  $attr->setIgnoreApi(true);
1121
  $attributes[] = $attr;
1122
 
1123
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attr */
1124
  $attr = Mage::getModel('modulecreator/attribute');
1125
  $attr->setCode('children_count');
1126
  $attr->setLabel('Children count');
1131
  break;
1132
  case 'rss':
1133
  if($this->getRss() || $ignoreSettings){
1134
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attr */
1135
  $attr = Mage::getModel('modulecreator/attribute');
1136
  $attr->setCode('in_rss');
1137
  $attr->setLabel('In RSS');
1142
  break;
1143
  case 'seo':
1144
  if ($this->getAddSeo() || $ignoreSettings){
1145
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attr */
1146
  $attr = Mage::getModel('modulecreator/attribute');
1147
  $attr->setCode('meta_title');
1148
  $attr->setLabel('Meta title');
1149
  $attr->setType('text');
1150
  $attributes[] = $attr;
1151
 
1152
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attr */
1153
  $attr = Mage::getModel('modulecreator/attribute');
1154
  $attr->setCode('meta_keywords');
1155
  $attr->setLabel('Meta keywords');
1165
  break;
1166
  case 'comment':
1167
  if ($this->getAllowComment() || $ignoreSettings){
1168
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attr */
1169
  $attr = Mage::getModel('modulecreator/attribute');
1170
  $attr->setCode('allow_comment');
1171
  $attr->setLabel('Allow Comment');
1230
  }
1231
  $children = $this->getRelatedEntities(Ultimate_ModuleCreator_Model_Relation::RELATION_TYPE_PARENT);
1232
  $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Model_Relation::RELATION_TYPE_SIBLING);
1233
+ /** @var Ultimate_ModuleCreator_Model_Entity[] $relatedEntities */
1234
+ $relatedEntities = array_merge($children, $siblings);
1235
+ foreach ($relatedEntities as $entity){
1236
  $content .= $this->getPadding().'<block type="'.$namespace.'_'.$module.'/'.$entityName.'_'.strtolower($entity->getNameSingular()).'_list" name="'.$entityName.'.'.strtolower($entity->getNameSingular()).'_list" as="'.$entityName.'_'.strtolower($this->getNamePlural()).'" template="'.$namespace.'_'.$module.'/'.$entityName.'/'.strtolower($entity->getNameSingular()).'/list.phtml" />'.$eol.$this->getPadding(2);
1237
  }
1238
  if ($this->getAllowComment()) {
1339
  $position += 10;
1340
  }
1341
  if ($this->getUrlRewrite()){
1342
+ $content .= $padding.'<url_rewrite_list translate="label comment">'.$eol;
1343
+ $content .= $padding.$tab.'<label>URL key for list page</label>'.$eol;
1344
+ $content .= $padding.$tab.'<frontend_type>text</frontend_type>'.$eol;
1345
+ $content .= $padding.$tab.'<sort_order>'.$position.'</sort_order>'.$eol;
1346
+ $content .= $padding.$tab.'<show_in_default>1</show_in_default>'.$eol;
1347
+ $content .= $padding.$tab.'<show_in_website>1</show_in_website>'.$eol;
1348
+ $content .= $padding.$tab.'<show_in_store>1</show_in_store>'.$eol;
1349
+ $content .= $padding.$tab.'<comment>Leave empty to use default URL module/controller/action</comment>'.$eol;
1350
+ $content .= $padding.'</url_rewrite_list>'.$eol;
1351
+ $position += 10;
1352
+
1353
+
1354
  $content .= $padding.'<url_prefix translate="label comment">'.$eol;
1355
  $content .= $padding.$tab.'<label>URL prefix</label>'.$eol;
1356
  $content .= $padding.$tab.'<frontend_type>text</frontend_type>'.$eol;
1494
  if ($this->getIsTree()){
1495
  $module = $this->getModule()->getLowerModuleName();
1496
  $entity = $this->getNameSingular(true);
 
1497
  $entityLabel = strtolower($this->getLabelSingular());
1498
  $entitiesLabel = strtolower($this->getLabelPlural());
1499
  $content = $prefix.'<level translate="title" module="'.$extension.'">'.$eol;
1554
  }
1555
  $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Model_Relation::RELATION_TYPE_SIBLING);
1556
  foreach ($siblings as $sibling){
 
1557
  $siblingNameUc = ucfirst($sibling->getNameSingular());
1558
  $siblingLabel = strtolower($sibling->getLabelSingular());
1559
  $string .= $this->getApiRelationsSection($siblingNameUc, $siblingLabel);
1572
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
1573
  */
1574
  public function getApiFaultsSection($relatedCode, $relatedLabel, $code){
 
1575
  $padding = $this->getPadding();
1576
  $prefix = str_repeat($padding, 5);
1577
  $eol = $this->getEol();
 
 
 
1578
  $string = '';
1579
  $string .= $prefix.'<'.$relatedCode.'_not_exists>'.$eol;
1580
  $string .= $prefix.$padding.'<code>'.$code.'</code>'.$eol;
1598
  $code = 105;
1599
  $entity = $this->getNameSingular(true);
1600
  $entityLabelUc = ucfirst($this->getLabelSingular());
 
1601
  if ($this->getIsTree()){
1602
  $string .= $prefix.'<not_moved>'.$eol;
1603
  $string .= $prefix.$padding.'<code>'.$code.'</code>'.$eol;
1616
  $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Model_Relation::RELATION_TYPE_SIBLING);
1617
  foreach ($siblings as $sibling){
1618
  $siblingName = $sibling->getNameSingular(true);
 
 
1619
  $siblingLabelUc = ucfirst($sibling->getLabelSingular());
1620
 
1621
  $string .= $this->getApiFaultsSection($entity.'_'.$siblingName, $siblingLabelUc, $code);
1639
  $eol = $this->getEol();
1640
  $extension = $this->getModule()->getExtensionName(true);
1641
  if ($this->getIsTree()){
 
 
 
 
1642
  $content .= $prefix.'<move translate="title" module="'.$extension.'">'.$eol;
1643
  $content .= $prefix.$padding.'<title>Move</title>'.$eol;
1644
  $content .= $prefix.'</move>'.$eol;
1661
  $eol = $this->getEol();
1662
  $content = '';
1663
  foreach ($parents as $parent){
1664
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attr */
1665
  $attr = Mage::getModel('modulecreator/attribute');
1666
  $attr->setCode($parent->getNameSingular().'_id');
1667
  $attr->setLabel($parent->getLabelSingular());
1765
  foreach ($siblings as $sibling){
1766
  $siblingName = $sibling->getNameSingular(true);
1767
  $siblingNameUc = ucfirst($sibling->getNameSingular());
 
 
1768
  $content .= $this->getWsdlRelationTypesSection($siblingNameUc, $siblingName, $wsi);
1769
 
1770
  }
1796
  $padding = $tab.$tab;
1797
  $eol = $this->getEol();
1798
  $module = $this->getModule()->getLowerModuleName();
 
1799
  $entityUc = ucfirst($this->getNameSingular());
1800
  $label = strtolower($this->getLabelSingular());
1801
  $tagPrefix = ($wsi) ? 'wsdl:':'';
1851
  }
1852
  $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Model_Relation::RELATION_TYPE_SIBLING);
1853
  foreach ($siblings as $sibling){
1854
+ $siblingNameUc = ucfirst($sibling->getNameSingular());
 
1855
  $siblingLabel = strtolower($sibling->getLabelSingular());
1856
 
1857
  $content .= $this->getWsdlPortTypeRelationSection($siblingNameUc, $siblingLabel, $wsi);
1886
  $module = $this->getModule()->getLowerModuleName();
1887
  $entity = $this->getNameSingular(true);
1888
  $entityUc = ucfirst($entity);
 
1889
 
1890
  $content .= $padding.'<operation name="'.$module.$entityUc.$sectionName.'">'.$eol;
1891
  $content .= $padding.$tab.'<soap:operation soapAction="urn:{{var wsdl.handler}}Action" />'.$eol;
1906
  */
1907
  public function getWsdlRelationBinding(){
1908
  $content = '';
 
 
 
 
 
1909
  if ($this->getIsTree()){
1910
  $content .= $this->getWsdlRelationBindingSection('Move');
1911
  }
1922
  foreach ($siblings as $sibling){
1923
  $siblingName = $sibling->getNameSingular(true);
1924
  $siblingNameUc = ucfirst($siblingName);
 
 
1925
  $content .= $this->getWsdlRelationBindingSection('Assign'.$siblingNameUc);
1926
  $content .= $this->getWsdlRelationBindingSection('Unassign'.$siblingNameUc);
1927
  }
1945
  $module = $this->getModule()->getLowerModuleName();
1946
  $entity = $this->getNameSingular(true);
1947
  $entityUc = ucfirst($entity);
 
1948
 
1949
  $content .= $padding.'<wsdl:operation name="'.$module.$entityUc.$sectionName.'">'.$eol;
1950
  $content .= $padding.$tab.'<soap:operation soapAction="" />'.$eol;
1966
  */
1967
  public function getWsiRelationBinding(){
1968
  $content = '';
 
 
 
 
 
1969
  if ($this->getIsTree()){
1970
  $content .= $this->getWsiRelationBindingSection('Move');
1971
  }
1982
  foreach ($siblings as $sibling){
1983
  $siblingName = $sibling->getNameSingular(true);
1984
  $siblingNameUc = ucfirst($siblingName);
 
1985
 
1986
  $content .= $this->getWsiRelationBindingSection('Assign'.$siblingNameUc);
1987
  $content .= $this->getWsiRelationBindingSection('Unassign'.$siblingNameUc);
2006
  $module = $this->getModule()->getLowerModuleName();
2007
  $entity = $this->getNameSingular(true);
2008
  $entityUc = ucfirst($entity);
 
2009
  $content .= $padding.'<xsd:element name="'.$module.$entityUc.'Assign'.$sectionName.'RequestParam">'.$eol;
2010
  $content .= $padding.$tab.'<xsd:complexType>'.$eol;
2011
  $content .= $padding.str_repeat($tab, 2).'<xsd:sequence>'.$eol;
2059
  $module = $this->getModule()->getLowerModuleName();
2060
  $entity = $this->getNameSingular(true);
2061
  $entityUc = ucfirst($entity);
 
2062
 
2063
  if ($this->getIsTree()){
2064
  $content .= $padding.'<xsd:element name="'.$module.$entityUc.'MoveRequestParam">'.$eol;
2093
  foreach ($siblings as $sibling){
2094
  $siblingName = $sibling->getNameSingular(true);
2095
  $siblingNameUc = ucfirst($siblingName);
 
 
2096
  $content .= $this->getWsiRelationParamTypesSection($siblingNameUc, $siblingName);
2097
  }
2098
  $content .= $tab.$tab;
2113
  $module = $this->getModule()->getLowerModuleName();
2114
  $entity = $this->getNameSingular(true);
2115
  $entityUc = ucfirst($entity);
 
2116
 
2117
  $content .= $padding.'<wsdl:message name="'.$module.$entityUc.$sectionName.'Request">'.$eol;
2118
  $content .= $padding.$tab.'<wsdl:part name="parameters" element="typens:'.$module.$entityUc.$sectionName.'RequestParam" />'.$eol;
2149
  foreach ($siblings as $sibling){
2150
  $siblingName = $sibling->getNameSingular(true);
2151
  $siblingNameUc = ucfirst($siblingName);
 
2152
 
2153
  $content .= $this->getWsiRelationMessagesSection('Assign'.$siblingNameUc);
2154
  $content .= $this->getWsiRelationMessagesSection('Unassign'.$siblingNameUc);
2232
  foreach ($siblings as $sibling){
2233
  $siblingName = $sibling->getNameSingular(true);
2234
  $siblingNameUc = ucfirst($siblingName);
 
2235
 
2236
  $content .= $this->getWsdlMessagesSection($siblingNameUc, $siblingName);
2237
  }
2709
  $content = '';
2710
  if ($this->getAllowComment()) {
2711
  $padding = $this->getPadding(3);
 
2712
  $module = $this->getModule()->getLowerModuleName();
2713
  $entity = $this->getNameSingular(true);
2714
  $eol = $this->getEol();
 
2715
  $content .= $eol;
2716
  $content .= $padding.'<'.$entity.'_comment>'.$module.'_'.$entity.'_comment</'.$entity.'_comment>';
2717
  }
2728
  $content = '';
2729
  if ($this->getAllowComment()) {
2730
  $padding = $this->getPadding(4);
 
2731
  $module = $this->getModule()->getLowerModuleName();
2732
  $entity = strtolower($this->getNameSingular());
2733
  $eol = $this->getEol();
app/code/community/Ultimate/ModuleCreator/Model/Entity/Type/Eav.php CHANGED
@@ -159,10 +159,8 @@ class Ultimate_ModuleCreator_Model_Entity_Type_Eav extends Ultimate_ModuleCreato
159
  */
160
  public function getAdditionalMenuAcl($padding) {
161
  $extension = $this->getModule()->getExtensionName(true);
162
- $module = $this->getLowerModuleName();
163
  $entity = $this->getEntity()->getNameSingular(true);
164
  $entityTitle = $this->getEntity()->getLabelSingular();
165
- $action = $module.'_'.$entity;
166
  $eol = $this->getEol();
167
 
168
  $text = $this->getPadding($padding).'<'.$entity.'_attributes translate="title" module="'.$extension.'">'.$eol;
@@ -184,7 +182,7 @@ class Ultimate_ModuleCreator_Model_Entity_Type_Eav extends Ultimate_ModuleCreato
184
  /**
185
  * get parent attributes
186
  * @access protected
187
- * @return array
188
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
189
  */
190
  protected function _getParentAttributes(){
@@ -195,6 +193,7 @@ class Ultimate_ModuleCreator_Model_Entity_Type_Eav extends Ultimate_ModuleCreato
195
  $module = $parent->getModule()->getLowerModuleName();
196
  $namespace = $parent->getModule()->getNamespace(true);
197
  $name = $parent->getNameSingular();
 
198
  $attr = Mage::getModel('modulecreator/attribute');
199
  $attr->setCode($name.'_id');
200
  $attr->setLabel($parent->getLabelSingular());
@@ -298,7 +297,6 @@ class Ultimate_ModuleCreator_Model_Entity_Type_Eav extends Ultimate_ModuleCreato
298
  $content = '';
299
  $eol = $this->getEol();
300
  $entity = $this->getEntity()->getNameSingular(true);
301
- $module = $this->getLowerModuleName();
302
  if ($this->getEntity()->getLinkProduct()) {
303
  $content .= $padding.'protected $'.'_'.$entity.'ProductTable = null;'.$eol;
304
  }
@@ -308,7 +306,6 @@ class Ultimate_ModuleCreator_Model_Entity_Type_Eav extends Ultimate_ModuleCreato
308
  $related = $this->getEntity()->getRelatedEntities(Ultimate_ModuleCreator_Model_Relation::RELATION_TYPE_SIBLING);
309
  foreach ($related as $_entity) {
310
  $_entityUc = ucfirst($_entity->getNameSingular());
311
- $_entityLower = $_entity->getNameSingular(true);
312
  $content .= $padding.'protected $'.'_'.$entity.$_entityUc.'Table = null;'.$eol;
313
  }
314
  return $content;
@@ -606,7 +603,6 @@ class Ultimate_ModuleCreator_Model_Entity_Type_Eav extends Ultimate_ModuleCreato
606
  $content = '';
607
  $padding = $this->getPadding(5);
608
  $tab = $this->getPadding();
609
- $module = $this->getLowerModuleName();
610
  $entity = $this->getEntity()->getNameSingular(true);
611
  $eol = $this->getEol();
612
  $title = $this->getEntity()->getLabelSingular().' Attributes';
@@ -658,7 +654,6 @@ class Ultimate_ModuleCreator_Model_Entity_Type_Eav extends Ultimate_ModuleCreato
658
  public function getApiResourcesAlias() {
659
  $content = '';
660
  $padding = $this->getPadding(3);
661
- $tab = $this->getPadding();
662
  $module = $this->getLowerModuleName();
663
  $entity = $this->getEntity()->getNameSingular(true);
664
  $eol = $this->getEol();
@@ -675,7 +670,6 @@ class Ultimate_ModuleCreator_Model_Entity_Type_Eav extends Ultimate_ModuleCreato
675
  public function getApiResourcesAliasV2() {
676
  $content = '';
677
  $padding = $this->getPadding(4);
678
- $tab = $this->getPadding();
679
  $module = $this->getLowerModuleName();
680
  $entity = $this->getEntity()->getNameSingular(true);
681
  $eol = $this->getEol();
159
  */
160
  public function getAdditionalMenuAcl($padding) {
161
  $extension = $this->getModule()->getExtensionName(true);
 
162
  $entity = $this->getEntity()->getNameSingular(true);
163
  $entityTitle = $this->getEntity()->getLabelSingular();
 
164
  $eol = $this->getEol();
165
 
166
  $text = $this->getPadding($padding).'<'.$entity.'_attributes translate="title" module="'.$extension.'">'.$eol;
182
  /**
183
  * get parent attributes
184
  * @access protected
185
+ * @return Ultimate_ModuleCreator_Model_Attribute[]
186
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
187
  */
188
  protected function _getParentAttributes(){
193
  $module = $parent->getModule()->getLowerModuleName();
194
  $namespace = $parent->getModule()->getNamespace(true);
195
  $name = $parent->getNameSingular();
196
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attr */
197
  $attr = Mage::getModel('modulecreator/attribute');
198
  $attr->setCode($name.'_id');
199
  $attr->setLabel($parent->getLabelSingular());
297
  $content = '';
298
  $eol = $this->getEol();
299
  $entity = $this->getEntity()->getNameSingular(true);
 
300
  if ($this->getEntity()->getLinkProduct()) {
301
  $content .= $padding.'protected $'.'_'.$entity.'ProductTable = null;'.$eol;
302
  }
306
  $related = $this->getEntity()->getRelatedEntities(Ultimate_ModuleCreator_Model_Relation::RELATION_TYPE_SIBLING);
307
  foreach ($related as $_entity) {
308
  $_entityUc = ucfirst($_entity->getNameSingular());
 
309
  $content .= $padding.'protected $'.'_'.$entity.$_entityUc.'Table = null;'.$eol;
310
  }
311
  return $content;
603
  $content = '';
604
  $padding = $this->getPadding(5);
605
  $tab = $this->getPadding();
 
606
  $entity = $this->getEntity()->getNameSingular(true);
607
  $eol = $this->getEol();
608
  $title = $this->getEntity()->getLabelSingular().' Attributes';
654
  public function getApiResourcesAlias() {
655
  $content = '';
656
  $padding = $this->getPadding(3);
 
657
  $module = $this->getLowerModuleName();
658
  $entity = $this->getEntity()->getNameSingular(true);
659
  $eol = $this->getEol();
670
  public function getApiResourcesAliasV2() {
671
  $content = '';
672
  $padding = $this->getPadding(4);
 
673
  $module = $this->getLowerModuleName();
674
  $entity = $this->getEntity()->getNameSingular(true);
675
  $eol = $this->getEol();
app/code/community/Ultimate/ModuleCreator/Model/Module.php CHANGED
@@ -15,7 +15,56 @@
15
  * @license http://opensource.org/licenses/mit-license.php MIT License
16
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
17
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_Abstract{
 
 
19
  /**
20
  * entity code
21
  * @var string
@@ -206,12 +255,6 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
206
  if (!empty($rootName)) {
207
  $xml.= '<'.$rootName.'>'.$eol;
208
  }
209
- $start = '';
210
- $end = '';
211
- if ($addCdata){
212
- $start = '<![CDATA[';
213
- $end = ']]>';
214
- }
215
  $xml .= parent::toXml($this->getXmlAttributes(), '', false, $addCdata);
216
  $xml .= '<entities>'.$eol;
217
  foreach ($this->getEntities() as $entity){
@@ -265,7 +308,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
265
  * get module relations
266
  * @access public
267
  * @param mixed $type
268
- * @return array()
269
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
270
  */
271
  public function getRelations($type = null){
@@ -288,7 +331,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
288
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
289
  */
290
  public function getXmlPath(){
291
- return Mage::helper('modulecreator')->getLocalPackagesPath().$this->getNamespace()."_".$this->getModuleName().'.xml';
292
  }
293
  /**
294
  * save the module as xml
@@ -310,10 +353,9 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
310
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
311
  */
312
  public function validate(){
313
- $errors = array();
314
- $config = Mage::helper('modulecreator')->getConfig();
315
  $settings = $config->getNode('forms/settings/fieldsets');
316
- foreach ($settings->fieldset as $k => $set){
317
  foreach ($set->fields->children() as $key => $values){
318
  $v = $this->getData($key);
319
  if ((string)$values->required == 1 && (!$this->hasData($key) || $v === "")) {
@@ -363,7 +405,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
363
  }
364
  $restrictedAttributes = $this->getRestrictedAttributeCodes();
365
  //validate attributes
366
- foreach ($entity->getAttributes() as $key=>$attribute){
367
  $code = $attribute->getCode();
368
  if (isset($restrictedAttributes[$code])){
369
  //presume "not guilty"
@@ -416,7 +458,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
416
  $this->_errors[$attribute] = '';
417
  }
418
  else{
419
- $this->_errors[$attribute] .= '<br />';
420
  }
421
  $this->_errors[$attribute] .= $message;
422
  }
@@ -436,9 +478,9 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
436
  $io = $this->getIo();
437
  $io->mkdir(dirname($destinationFile));
438
  /**
439
- * Varien_Io_File has changed in 1.8.1 A LOT
440
  */
441
- if (version_compare(Mage::getVersion(), '1.8.1', '<')) {
442
  $io->write($destinationFile, $contents, 0777);
443
  }
444
  else {
@@ -453,6 +495,19 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
453
  }
454
  return $this;
455
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
456
  /**
457
  * get the IO - class
458
  * @access public
@@ -505,7 +560,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
505
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
506
  */
507
  public function getRestrictedEntityNames(){
508
- return $this->getDataSetDefault('restricted_entity_names', array_keys((array)Mage::helper('modulecreator')->getConfig()->getNode('restricted/entity')));
509
  }
510
  /**
511
  * get the restricted attribute codes
@@ -514,7 +569,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
514
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
515
  */
516
  public function getRestrictedAttributeCodes(){
517
- return $this->getDataSetDefault('restricted_attribute_codes', (array)Mage::helper('modulecreator')->getConfig()->getNode('restricted/attribute'));
518
  }
519
  /**
520
  * get the restricted attribute codes because of the method names
@@ -548,7 +603,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
548
  $config = $this->getConfig();
549
  $files = $config->getNode('files');
550
  $messages = array();
551
- foreach ((array)$files as $key=>$file){
552
  if ($file->scope == 'disabled'){
553
  continue;
554
  }
@@ -567,6 +622,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
567
  foreach ($this->_files as $filename=>$file){
568
  $contents[] = $this->getRelativeBasePath().$filename;
569
  }
 
570
  $_writer = Mage::getModel('modulecreator/writer', $contents);
571
  $_writer->setNamePackage(Mage::getBaseDir('var').DS.'modulecreator'.DS.$this->getExtensionName());
572
  $_writer->composePackage()->archivePackage();
@@ -670,7 +726,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
670
  }
671
  $lines[] = "DELETE FROM core_resource WHERE code = '".$namespace.'_'.$module."_setup';";
672
  $lines[] = "DELETE FROM core_config_data WHERE path like '".$namespace.'_'.$module."/%';";
673
- $text = implode(Mage::helper('modulecreator')->getEol(), $lines);
674
  $this->_writeFile($this->getUninstallPath(),$text);
675
  return $this;
676
  }
@@ -699,7 +755,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
699
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
700
  */
701
  public function getLogPath(){
702
- return Mage::helper('modulecreator')->getLocalPackagesPath().$this->getExtensionName().'/files.log';
703
  }
704
  /**
705
  * get path for uninstall sql file
@@ -708,7 +764,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
708
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
709
  */
710
  public function getUninstallPath(){
711
- return Mage::helper('modulecreator')->getLocalPackagesPath().$this->getExtensionName().'/uninstall.sql';
712
  }
713
 
714
  /**
@@ -738,7 +794,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
738
  /**
739
  * get the module config
740
  * @access public
741
- * @return Varien_Simplexml_Element
742
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
743
  */
744
  public function getConfig(){
@@ -790,12 +846,13 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
790
  /**
791
  * validate xml condition
792
  * @access protected
793
- * @param $entity
794
- * @param $conditions
 
795
  * @return bool
796
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
797
  */
798
- protected function _validateDepend($entity, $conditions, $params = null){
799
  if (!$conditions){
800
  return true;
801
  }
@@ -831,11 +888,10 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
831
  }
832
  else{
833
  $code = $this->_sortCodeFiles((array)$config->code);
834
- foreach ($code as $key => $file){
835
  $sourceContent = $this->getFileContents($sourceFolder.(string)$file->name);
836
  $scope = (string)$file->scope;
837
  $depend = $file->depend;
838
- $scope = $file->scope;
839
  if ($scope == 'entity'){
840
  foreach ($this->getEntities() as $entity){
841
  if ($this->_validateDepend($entity, $depend)){
@@ -846,6 +902,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
846
  }
847
  elseif($scope == 'attribute'){
848
  $depend = $file->depend;
 
849
  $dependType = $file->depend_type;
850
  foreach ($this->getEntities() as $entity){
851
  foreach ($entity->getAttributes() as $attribute){
@@ -959,10 +1016,11 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
959
  continue;
960
  }
961
  $code = $this->_sortCodeFiles((array)$config->code);
962
- foreach ($code as $key=>$file){
963
  $sourceContent = $this->getFileContents($sourceFolder.(string)$file->name);
964
  $scope = (string)$file->scope;
965
  $depend = $file->depend;
 
966
  $dependType = $file->depend_type;
967
  if ($scope == 'attribute'){
968
  foreach ($entity->getAttributes() as $attribute){
@@ -1067,7 +1125,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
1067
  $destinationFile = $this->_filterString((string)$config->destination, $filetype, $placeholders, true);
1068
  $content = '';
1069
  $code = $this->_sortCodeFiles((array)$config->code);
1070
- foreach ($code as $key=>$file){
1071
  $depend = $file->depend;
1072
  if (!$this->_validateDepend($relation, $depend, $index)){
1073
  continue;
@@ -1111,7 +1169,7 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
1111
  $destinationFile = $this->_filterString((string)$config->destination, $filetype, $placeholders, true);
1112
  $content = '';
1113
  $code = $this->_sortCodeFiles((array)$config->code);
1114
- foreach ($code as $key=>$file){
1115
  $depend = $file->depend;
1116
  if (!$this->_validateDepend($relation, $depend)){
1117
  continue;
@@ -1146,8 +1204,8 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
1146
  continue;
1147
  }
1148
  $code = $this->_sortCodeFiles((array)$config->code);
1149
- foreach ($code as $key=>$file){
1150
- $depend = $file->depend;
1151
  if (!$this->_validateDepend($attribute, $depend)){
1152
  continue;
1153
  }
@@ -1375,12 +1433,12 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
1375
  */
1376
  protected function _sortCodeFiles($files, $sortField = 'sort_order'){
1377
  $sorted = array();
1378
- foreach ($files as $key=> $values){
1379
  $sorted[(int)$values->$sortField][] = $values;
1380
  }
1381
  ksort($sorted);
1382
  $return = array();
1383
- foreach ($sorted as $sort_order=>$values){
1384
  foreach ($values as $file){
1385
  $return[] = $file;
1386
  }
@@ -1588,7 +1646,6 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
1588
  foreach ($this->getEntities() as $entity) {
1589
  $name = $entity->getNameSingular(true);
1590
  $names = $entity->getNamePlural(true);
1591
- $label = $entity->getLabelPlural();
1592
  if ($entity->getShowOnProduct()) {
1593
  $content .= $padding.'<block type="'.$ns.'_'.$module.'/catalog_category_list_'.$name.'" name="category.info.'.$names.'" as="category_'.$names.'" template="'.$ns.'_'.$module.'/catalog/category/list/'.$name.'.phtml" after="-" />'.$eol;
1594
  }
@@ -1606,7 +1663,9 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
1606
  $padding = $this->getPadding(1);
1607
  $tab = $this->getPadding();
1608
  $eol = $this->getEol();
 
1609
  $top = array();
 
1610
  $footer = array();
1611
  $content = $eol.$padding;
1612
  $namespace = $this->getNamespace(true);
@@ -1809,7 +1868,6 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
1809
  */
1810
  public function getEavOptionsDefaults() {
1811
  $content = '';
1812
- $eol = $this->getEol();
1813
  foreach ($this->getEntities() as $entity) {
1814
  if ($entity->getIsEav()) {
1815
  foreach ($entity->getAttributes() as $attribute) {
15
  * @license http://opensource.org/licenses/mit-license.php MIT License
16
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
17
  */
18
+ /**
19
+ * @method string getFilenameId()
20
+ * @method string getMenuParent()
21
+ * @method Ultimate_ModuleCreator_Model_Module setRss()
22
+ * @method Ultimate_ModuleCreator_Model_Module setHasFile()
23
+ * @method Ultimate_ModuleCreator_Model_Module setHasImage()
24
+ * @method Ultimate_ModuleCreator_Model_Module setAddSeo()
25
+ * @method Ultimate_ModuleCreator_Model_Module setWidget()
26
+ * @method Ultimate_ModuleCreator_Model_Module setCreateFrontend()
27
+ * @method Ultimate_ModuleCreator_Model_Module setCanCreateRouter()
28
+ * @method Ultimate_ModuleCreator_Model_Module setCreateList()
29
+ * @method Ultimate_ModuleCreator_Model_Module setHasTree()
30
+ * @method Ultimate_ModuleCreator_Model_Module setEditor()
31
+ * @method Ultimate_ModuleCreator_Model_Module setHasConfigDefaults()
32
+ * @method Ultimate_ModuleCreator_Model_Module setLinkProduct()
33
+ * @method Ultimate_ModuleCreator_Model_Module setHasObserver()
34
+ * @method Ultimate_ModuleCreator_Model_Module setLinkCategory()
35
+ * @method Ultimate_ModuleCreator_Model_Module setLinkCore()
36
+ * @method Ultimate_ModuleCreator_Model_Module setUrlRewrite()
37
+ * @method Ultimate_ModuleCreator_Model_Module setHasEav()
38
+ * @method Ultimate_ModuleCreator_Model_Module setHasFlat()
39
+ * @method Ultimate_ModuleCreator_Model_Module setApi()
40
+ * @method Ultimate_ModuleCreator_Model_Module setAllowComment()
41
+ * @method Ultimate_ModuleCreator_Model_Module setAllowCommentByStore()
42
+ * @method Ultimate_ModuleCreator_Model_Module setHasCountry()
43
+ * @method Ultimate_ModuleCreator_Model_Module setHasSeo()
44
+ * @method Ultimate_ModuleCreator_Model_Module setShowOnProduct()
45
+ * @method Ultimate_ModuleCreator_Model_Module setShowOnCategory()
46
+ * @method Ultimate_ModuleCreator_Model_Module setShowInCategoryMenu()
47
+ * @method Ultimate_ModuleCreator_Model_Module setSearch()
48
+ * @method Ultimate_ModuleCreator_Model_Module setHasCatalogAttribute()
49
+ * @method Ultimate_ModuleCreator_Model_Module setRest()
50
+ * @method string getModuleName()
51
+ * @method int getInstall()
52
+ * @method Ultimate_ModuleCreator_Model_Module setInstall()
53
+ * @method bool getHasEav()
54
+ * @method int getSortOrder()
55
+ * @method string getMenuText()
56
+ * @method string getCodepool()
57
+ * @method string getVersion()
58
+ * @method bool getCreateFrontend()
59
+ * @method bool getLinkProduct()
60
+ * @method bool getLinkCategory()
61
+ * @method bool getHasCatalogAttribute()
62
+ * @method bool getLinkCore()
63
+ * @method bool getShowInCategoryMenu()
64
+ */
65
  class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_Abstract{
66
+ const EFFIN_VERSION_ENTERPRISE = '1.13.1';
67
+ const EFFIN_VERSION_COMMUNITY = '1.8.1';
68
  /**
69
  * entity code
70
  * @var string
255
  if (!empty($rootName)) {
256
  $xml.= '<'.$rootName.'>'.$eol;
257
  }
 
 
 
 
 
 
258
  $xml .= parent::toXml($this->getXmlAttributes(), '', false, $addCdata);
259
  $xml .= '<entities>'.$eol;
260
  foreach ($this->getEntities() as $entity){
308
  * get module relations
309
  * @access public
310
  * @param mixed $type
311
+ * @return Ultimate_ModuleCreator_Model_Relation[]
312
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
313
  */
314
  public function getRelations($type = null){
331
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
332
  */
333
  public function getXmlPath(){
334
+ return $this->getHelper()->getLocalPackagesPath().$this->getNamespace()."_".$this->getModuleName().'.xml';
335
  }
336
  /**
337
  * save the module as xml
353
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
354
  */
355
  public function validate(){
356
+ $config = $this->getHelper()->getConfig();
 
357
  $settings = $config->getNode('forms/settings/fieldsets');
358
+ foreach ($settings->fieldset as $set){
359
  foreach ($set->fields->children() as $key => $values){
360
  $v = $this->getData($key);
361
  if ((string)$values->required == 1 && (!$this->hasData($key) || $v === "")) {
405
  }
406
  $restrictedAttributes = $this->getRestrictedAttributeCodes();
407
  //validate attributes
408
+ foreach ($entity->getAttributes() as $attribute){
409
  $code = $attribute->getCode();
410
  if (isset($restrictedAttributes[$code])){
411
  //presume "not guilty"
458
  $this->_errors[$attribute] = '';
459
  }
460
  else{
461
+ $this->_errors[$attribute] .= $separator;
462
  }
463
  $this->_errors[$attribute] .= $message;
464
  }
478
  $io = $this->getIo();
479
  $io->mkdir(dirname($destinationFile));
480
  /**
481
+ * Varien_Io_File has changed in CE 1.8.1 / EE 1.13.1 A LOT
482
  */
483
+ if (version_compare(Mage::getVersion(), $this->getEffinVersion(), '<')) {
484
  $io->write($destinationFile, $contents, 0777);
485
  }
486
  else {
495
  }
496
  return $this;
497
  }
498
+
499
+ /**
500
+ * get the version for which the io writer has changed
501
+ * @access public
502
+ * @return string
503
+ * @author Marius Strajeru <ultimate.module.creator@gmail.com>
504
+ */
505
+ public function getEffinVersion() {
506
+ if (Mage::getEdition() == Mage::EDITION_ENTERPRISE) {
507
+ return self::EFFIN_VERSION_ENTERPRISE;
508
+ }
509
+ return self::EFFIN_VERSION_COMMUNITY;
510
+ }
511
  /**
512
  * get the IO - class
513
  * @access public
560
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
561
  */
562
  public function getRestrictedEntityNames(){
563
+ return $this->getDataSetDefault('restricted_entity_names', array_keys((array)$this->getHelper()->getConfig()->getNode('restricted/entity')));
564
  }
565
  /**
566
  * get the restricted attribute codes
569
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
570
  */
571
  public function getRestrictedAttributeCodes(){
572
+ return $this->getDataSetDefault('restricted_attribute_codes', (array)$this->getHelper()->getConfig()->getNode('restricted/attribute'));
573
  }
574
  /**
575
  * get the restricted attribute codes because of the method names
603
  $config = $this->getConfig();
604
  $files = $config->getNode('files');
605
  $messages = array();
606
+ foreach ((array)$files as $file){
607
  if ($file->scope == 'disabled'){
608
  continue;
609
  }
622
  foreach ($this->_files as $filename=>$file){
623
  $contents[] = $this->getRelativeBasePath().$filename;
624
  }
625
+ /** @var Ultimate_ModuleCreator_Model_Writer $_writer */
626
  $_writer = Mage::getModel('modulecreator/writer', $contents);
627
  $_writer->setNamePackage(Mage::getBaseDir('var').DS.'modulecreator'.DS.$this->getExtensionName());
628
  $_writer->composePackage()->archivePackage();
726
  }
727
  $lines[] = "DELETE FROM core_resource WHERE code = '".$namespace.'_'.$module."_setup';";
728
  $lines[] = "DELETE FROM core_config_data WHERE path like '".$namespace.'_'.$module."/%';";
729
+ $text = implode($this->getEol(), $lines);
730
  $this->_writeFile($this->getUninstallPath(),$text);
731
  return $this;
732
  }
755
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
756
  */
757
  public function getLogPath(){
758
+ return $this->getHelper()->getLocalPackagesPath().$this->getExtensionName().'/files.log';
759
  }
760
  /**
761
  * get path for uninstall sql file
764
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
765
  */
766
  public function getUninstallPath(){
767
+ return $this->getHelper()->getLocalPackagesPath().$this->getExtensionName().'/uninstall.sql';
768
  }
769
 
770
  /**
794
  /**
795
  * get the module config
796
  * @access public
797
+ * @return Varien_Simplexml_Config
798
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
799
  */
800
  public function getConfig(){
846
  /**
847
  * validate xml condition
848
  * @access protected
849
+ * @param Ultimate_ModuleCreator_Model_Abstract $entity
850
+ * @param Mage_Core_Model_Config_Element $conditions
851
+ * @param mixed $params
852
  * @return bool
853
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
854
  */
855
+ protected function _validateDepend(Ultimate_ModuleCreator_Model_Abstract $entity, Mage_Core_Model_Config_Element $conditions, $params = null){
856
  if (!$conditions){
857
  return true;
858
  }
888
  }
889
  else{
890
  $code = $this->_sortCodeFiles((array)$config->code);
891
+ foreach ($code as $file){
892
  $sourceContent = $this->getFileContents($sourceFolder.(string)$file->name);
893
  $scope = (string)$file->scope;
894
  $depend = $file->depend;
 
895
  if ($scope == 'entity'){
896
  foreach ($this->getEntities() as $entity){
897
  if ($this->_validateDepend($entity, $depend)){
902
  }
903
  elseif($scope == 'attribute'){
904
  $depend = $file->depend;
905
+ /** @var Mage_Core_Model_Config_Element $dependType */
906
  $dependType = $file->depend_type;
907
  foreach ($this->getEntities() as $entity){
908
  foreach ($entity->getAttributes() as $attribute){
1016
  continue;
1017
  }
1018
  $code = $this->_sortCodeFiles((array)$config->code);
1019
+ foreach ($code as $file){
1020
  $sourceContent = $this->getFileContents($sourceFolder.(string)$file->name);
1021
  $scope = (string)$file->scope;
1022
  $depend = $file->depend;
1023
+ /** @var Mage_Core_Model_Config_Element $dependType */
1024
  $dependType = $file->depend_type;
1025
  if ($scope == 'attribute'){
1026
  foreach ($entity->getAttributes() as $attribute){
1125
  $destinationFile = $this->_filterString((string)$config->destination, $filetype, $placeholders, true);
1126
  $content = '';
1127
  $code = $this->_sortCodeFiles((array)$config->code);
1128
+ foreach ($code as $file){
1129
  $depend = $file->depend;
1130
  if (!$this->_validateDepend($relation, $depend, $index)){
1131
  continue;
1169
  $destinationFile = $this->_filterString((string)$config->destination, $filetype, $placeholders, true);
1170
  $content = '';
1171
  $code = $this->_sortCodeFiles((array)$config->code);
1172
+ foreach ($code as $file){
1173
  $depend = $file->depend;
1174
  if (!$this->_validateDepend($relation, $depend)){
1175
  continue;
1204
  continue;
1205
  }
1206
  $code = $this->_sortCodeFiles((array)$config->code);
1207
+ foreach ($code as $file){
1208
+ $depend = $file->depend;
1209
  if (!$this->_validateDepend($attribute, $depend)){
1210
  continue;
1211
  }
1433
  */
1434
  protected function _sortCodeFiles($files, $sortField = 'sort_order'){
1435
  $sorted = array();
1436
+ foreach ($files as $values){
1437
  $sorted[(int)$values->$sortField][] = $values;
1438
  }
1439
  ksort($sorted);
1440
  $return = array();
1441
+ foreach ($sorted as $values){
1442
  foreach ($values as $file){
1443
  $return[] = $file;
1444
  }
1646
  foreach ($this->getEntities() as $entity) {
1647
  $name = $entity->getNameSingular(true);
1648
  $names = $entity->getNamePlural(true);
 
1649
  if ($entity->getShowOnProduct()) {
1650
  $content .= $padding.'<block type="'.$ns.'_'.$module.'/catalog_category_list_'.$name.'" name="category.info.'.$names.'" as="category_'.$names.'" template="'.$ns.'_'.$module.'/catalog/category/list/'.$name.'.phtml" after="-" />'.$eol;
1651
  }
1663
  $padding = $this->getPadding(1);
1664
  $tab = $this->getPadding();
1665
  $eol = $this->getEol();
1666
+ /** @var Ultimate_ModuleCreator_Model_Entity[] $top */
1667
  $top = array();
1668
+ /** @var Ultimate_ModuleCreator_Model_Entity[] $footer */
1669
  $footer = array();
1670
  $content = $eol.$padding;
1671
  $namespace = $this->getNamespace(true);
1868
  */
1869
  public function getEavOptionsDefaults() {
1870
  $content = '';
 
1871
  foreach ($this->getEntities() as $entity) {
1872
  if ($entity->getIsEav()) {
1873
  foreach ($entity->getAttributes() as $attribute) {
app/code/community/Ultimate/ModuleCreator/Model/Module/Collection.php CHANGED
@@ -47,7 +47,8 @@ class Ultimate_ModuleCreator_Model_Module_Collection
47
  public function __construct() {
48
  $this->_baseDir = Mage::getBaseDir('var') . DS . 'modulecreator'.DS.'package';
49
  $io = new Varien_Io_File();
50
- $io->setAllowCreateFolders(true)->createDestinationDir($this->_baseDir);
 
51
  $this->addTargetDir($this->_baseDir);
52
  }
53
 
47
  public function __construct() {
48
  $this->_baseDir = Mage::getBaseDir('var') . DS . 'modulecreator'.DS.'package';
49
  $io = new Varien_Io_File();
50
+ $io->setAllowCreateFolders(true);
51
+ $io->createDestinationDir($this->_baseDir);
52
  $this->addTargetDir($this->_baseDir);
53
  }
54
 
app/code/community/Ultimate/ModuleCreator/Model/Relation.php CHANGED
@@ -81,7 +81,7 @@ class Ultimate_ModuleCreator_Model_Relation extends Ultimate_ModuleCreator_Model
81
  /**
82
  * get relation entities
83
  * @access public
84
- * @return array
85
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
86
  */
87
  public function getEntities(){
81
  /**
82
  * get relation entities
83
  * @access public
84
+ * @return Ultimate_ModuleCreator_Model_Entity[]
85
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
86
  */
87
  public function getEntities(){
app/code/community/Ultimate/ModuleCreator/Model/Source/Attribute/Type.php CHANGED
@@ -37,8 +37,10 @@ class Ultimate_ModuleCreator_Model_Source_Attribute_Type {
37
  */
38
  public function toArray($withEmpty = false) {
39
  if (is_null($this->_options)){
40
- $types = Mage::helper('modulecreator')->getAttributeTypes();
41
- $groups = Mage::helper('modulecreator')->getAttributeTypeGroups();
 
 
42
  foreach ($groups as $key=>$group) {
43
  $this->_options[$key] = array('label'=>(string)$group->label, 'value'=>array());
44
  }
37
  */
38
  public function toArray($withEmpty = false) {
39
  if (is_null($this->_options)){
40
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
41
+ $helper = Mage::helper('modulecreator');
42
+ $types = $helper->getAttributeTypes();
43
+ $groups = $helper->getAttributeTypeGroups();
44
  foreach ($groups as $key=>$group) {
45
  $this->_options[$key] = array('label'=>(string)$group->label, 'value'=>array());
46
  }
app/code/community/Ultimate/ModuleCreator/Model/Source/Attribute/Value/Source.php CHANGED
@@ -38,7 +38,9 @@ class Ultimate_ModuleCreator_Model_Source_Attribute_Value_Source {
38
  */
39
  public function toArray($withEmpty = false) {
40
  if (is_null($this->_options)) {
41
- $options = Mage::helper('modulecreator')->getDropdownSubtypes(true);
 
 
42
  $this->_options = array();
43
  foreach ($options as $key=>$option){
44
  $this->_options[$key] = $option->label;
38
  */
39
  public function toArray($withEmpty = false) {
40
  if (is_null($this->_options)) {
41
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
42
+ $helper = Mage::helper('modulecreator');
43
+ $options = $helper->getDropdownSubtypes(true);
44
  $this->_options = array();
45
  foreach ($options as $key=>$option){
46
  $this->_options[$key] = $option->label;
app/code/community/Ultimate/ModuleCreator/Model/Source/Codepool.php CHANGED
@@ -47,7 +47,7 @@ class Ultimate_ModuleCreator_Model_Source_Codepool {
47
  */
48
  public function getAllOptions($withEmpty = true){
49
  $options = array();
50
- foreach ($this->toOptionArray($withEmpty) as $key=>$option){
51
  $options[$option['value']] = $option['label'];
52
  }
53
  return $options;
47
  */
48
  public function getAllOptions($withEmpty = true){
49
  $options = array();
50
+ foreach ($this->toOptionArray($withEmpty) as $option){
51
  $options[$option['value']] = $option['label'];
52
  }
53
  return $options;
app/code/community/Ultimate/ModuleCreator/Model/Source/Entity/Layout.php CHANGED
@@ -37,7 +37,9 @@ class Ultimate_ModuleCreator_Model_Source_Entity_Layout {
37
  */
38
  public function toArray($withEmpty = false){
39
  if (is_null($this->_options)){
40
- $_options = Mage::getSingleton('page/source_layout')->toOptionArray();
 
 
41
  foreach ($_options as $option){
42
  $this->_options[$option['value']] = $option['label'];
43
  }
37
  */
38
  public function toArray($withEmpty = false){
39
  if (is_null($this->_options)){
40
+ /** @var Mage_Page_Model_Source_Layout $layoutModel */
41
+ $layoutModel = Mage::getSingleton('page/source_layout');
42
+ $_options = $layoutModel->toOptionArray();
43
  foreach ($_options as $option){
44
  $this->_options[$option['value']] = $option['label'];
45
  }
app/code/community/Ultimate/ModuleCreator/Model/Source/Entity/Type.php CHANGED
@@ -37,7 +37,9 @@ class Ultimate_ModuleCreator_Model_Source_Entity_Type {
37
  */
38
  public function toArray($withEmpty = false) {
39
  if (is_null($this->_options)){
40
- $types = Mage::helper('modulecreator')->getEntityTypes();
 
 
41
  foreach ($types as $type=>$values){
42
  $this->_options[$type] = Mage::helper('modulecreator')->__((string)$values->label);
43
  }
37
  */
38
  public function toArray($withEmpty = false) {
39
  if (is_null($this->_options)){
40
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
41
+ $helper = Mage::helper('modulecreator');
42
+ $types = $helper->getEntityTypes();
43
  foreach ($types as $type=>$values){
44
  $this->_options[$type] = Mage::helper('modulecreator')->__((string)$values->label);
45
  }
app/code/community/Ultimate/ModuleCreator/Model/Source/Install.php CHANGED
@@ -56,7 +56,7 @@ class Ultimate_ModuleCreator_Model_Source_Install {
56
  */
57
  public function getAllOptions($withEmpty = true) {
58
  $options = array();
59
- foreach ($this->toOptionArray($withEmpty) as $key=>$option) {
60
  $options[$option['value']] = $option['label'];
61
  }
62
  return $options;
56
  */
57
  public function getAllOptions($withEmpty = true) {
58
  $options = array();
59
+ foreach ($this->toOptionArray($withEmpty) as $option) {
60
  $options[$option['value']] = $option['label'];
61
  }
62
  return $options;
app/code/community/Ultimate/ModuleCreator/Model/Writer.php CHANGED
@@ -21,7 +21,8 @@
21
  * @package Ultimate_ModuleCreator
22
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
23
  */
24
- class Ultimate_ModuleCreator_Model_Writer extends Mage_Connect_Package_Writer {
 
25
  /**
26
  * prefix for path
27
  * @var string
21
  * @package Ultimate_ModuleCreator
22
  * @author Marius Strajeru <ultimate.module.creator@gmail.com>
23
  */
24
+ class Ultimate_ModuleCreator_Model_Writer
25
+ extends Mage_Connect_Package_Writer {
26
  /**
27
  * prefix for path
28
  * @var string
app/code/community/Ultimate/ModuleCreator/controllers/Adminhtml/ModulecreatorController.php CHANGED
@@ -91,12 +91,14 @@ class Ultimate_ModuleCreator_Adminhtml_ModulecreatorController
91
  $packageName = base64_decode(strtr($this->getRequest()->getParam('id'), '-_,', '+/='));
92
  if ($packageName) {
93
  try {
94
- $path = Mage::helper('modulecreator')->getLocalPackagesPath();
 
 
95
  $packageName = basename($packageName);
96
  $xmlFile = $path . $packageName . '.xml';
97
  if (file_exists($xmlFile) && is_readable($xmlFile)) {
98
  $xml = simplexml_load_file($xmlFile, 'Varien_Simplexml_Element');
99
- $module = Mage::helper('modulecreator')->loadModule($xml);
100
  Mage::register('current_module', $module);
101
  return $module;
102
  }
@@ -118,6 +120,7 @@ class Ultimate_ModuleCreator_Adminhtml_ModulecreatorController
118
  */
119
  protected function _initModuleFromData($data) {
120
  $entitiesByIndex = array();
 
121
  $module = Mage::getModel('modulecreator/module');
122
  if (isset($data['settings'])) {
123
  $module->addData($data['settings']);
@@ -126,6 +129,7 @@ class Ultimate_ModuleCreator_Adminhtml_ModulecreatorController
126
  $entities = $data['entity'];
127
  if (is_array($entities)) {
128
  foreach ($entities as $key=>$entityData) {
 
129
  $entity = Mage::getModel('modulecreator/entity');
130
  $entity->addData($entityData);
131
  $entity->setIndex($key);
@@ -138,6 +142,7 @@ class Ultimate_ModuleCreator_Adminhtml_ModulecreatorController
138
  }
139
  }
140
  foreach ($entityData['attributes'] as $aKey=>$attributeData) {
 
141
  $attribute = Mage::getModel('modulecreator/attribute');
142
  $attribute->addData($attributeData);
143
  $attribute->setIndex($aKey);
@@ -152,6 +157,7 @@ class Ultimate_ModuleCreator_Adminhtml_ModulecreatorController
152
  foreach($data['relation'] as $index=>$values){
153
  foreach ($values as $jndex=>$type){
154
  if (isset($entitiesByIndex[$index]) && isset($entitiesByIndex[$jndex])) {
 
155
  $relation = Mage::getModel('modulecreator/relation');
156
  $relation->setEntities($entitiesByIndex[$index], $entitiesByIndex[$jndex], $type);
157
  $module->addRelation($relation);
@@ -224,7 +230,9 @@ class Ultimate_ModuleCreator_Adminhtml_ModulecreatorController
224
  public function downloadAction(){
225
  $what = $this->getRequest()->getParam('type');
226
  $packageName = base64_decode(strtr($this->getRequest()->getParam('id'), '-_,', '+/='));
227
- $path = Mage::helper('modulecreator')->getLocalModulesDir();
 
 
228
  $namePrefix = '';
229
  switch ($what) {
230
  case 'config' :
91
  $packageName = base64_decode(strtr($this->getRequest()->getParam('id'), '-_,', '+/='));
92
  if ($packageName) {
93
  try {
94
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
95
+ $helper = Mage::helper('modulecreator');
96
+ $path = $helper->getLocalPackagesPath();
97
  $packageName = basename($packageName);
98
  $xmlFile = $path . $packageName . '.xml';
99
  if (file_exists($xmlFile) && is_readable($xmlFile)) {
100
  $xml = simplexml_load_file($xmlFile, 'Varien_Simplexml_Element');
101
+ $module = $helper->loadModule($xml);
102
  Mage::register('current_module', $module);
103
  return $module;
104
  }
120
  */
121
  protected function _initModuleFromData($data) {
122
  $entitiesByIndex = array();
123
+ /** @var Ultimate_ModuleCreator_Model_Module $module */
124
  $module = Mage::getModel('modulecreator/module');
125
  if (isset($data['settings'])) {
126
  $module->addData($data['settings']);
129
  $entities = $data['entity'];
130
  if (is_array($entities)) {
131
  foreach ($entities as $key=>$entityData) {
132
+ /** @var Ultimate_ModuleCreator_Model_Entity $entity */
133
  $entity = Mage::getModel('modulecreator/entity');
134
  $entity->addData($entityData);
135
  $entity->setIndex($key);
142
  }
143
  }
144
  foreach ($entityData['attributes'] as $aKey=>$attributeData) {
145
+ /** @var Ultimate_ModuleCreator_Model_Attribute $attribute */
146
  $attribute = Mage::getModel('modulecreator/attribute');
147
  $attribute->addData($attributeData);
148
  $attribute->setIndex($aKey);
157
  foreach($data['relation'] as $index=>$values){
158
  foreach ($values as $jndex=>$type){
159
  if (isset($entitiesByIndex[$index]) && isset($entitiesByIndex[$jndex])) {
160
+ /** @var Ultimate_ModuleCreator_Model_Relation $relation */
161
  $relation = Mage::getModel('modulecreator/relation');
162
  $relation->setEntities($entitiesByIndex[$index], $entitiesByIndex[$jndex], $type);
163
  $module->addRelation($relation);
230
  public function downloadAction(){
231
  $what = $this->getRequest()->getParam('type');
232
  $packageName = base64_decode(strtr($this->getRequest()->getParam('id'), '-_,', '+/='));
233
+ /** @var Ultimate_ModuleCreator_Helper_Data $helper */
234
+ $helper = Mage::helper('modulecreator');
235
+ $path = $helper->getLocalModulesDir();
236
  $namePrefix = '';
237
  switch ($what) {
238
  case 'config' :
app/code/community/Ultimate/ModuleCreator/etc/config.xml CHANGED
@@ -19,7 +19,7 @@
19
  <config>
20
  <modules>
21
  <Ultimate_ModuleCreator>
22
- <version>1.9.3.0</version>
23
  <build></build>
24
  </Ultimate_ModuleCreator>
25
  </modules>
19
  <config>
20
  <modules>
21
  <Ultimate_ModuleCreator>
22
+ <version>1.9.4.1</version>
23
  <build></build>
24
  </Ultimate_ModuleCreator>
25
  </modules>
app/code/community/Ultimate/ModuleCreator/etc/source/app/code/Block/Adminhtml/Entity/Edit/Tab/Attributes/021_default_values ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ $this->_setFieldset($attributes, $fieldset, array());
2
+ $formValues = Mage::registry('current_{{entity}}')->getData();
3
+ if (!Mage::registry('current_{{entity}}')->getId()) {
4
+ foreach ($attributes as $attribute) {
5
+ if (!isset($formValues[$attribute->getAttributeCode()])) {
6
+ $formValues[$attribute->getAttributeCode()] = $attribute->getDefaultValue();
7
+ }
8
+ }
9
+ }
app/code/community/Ultimate/ModuleCreator/etc/source/app/code/Block/Adminhtml/Entity/Edit/Tab/Attributes/022_default_values_tree ADDED
@@ -0,0 +1,2 @@
 
 
1
+ //do not set default value for path
2
+ unset($formValues['path']);
app/code/community/Ultimate/ModuleCreator/etc/source/app/code/Block/Adminhtml/Entity/Edit/Tab/Attributes/023_layout CHANGED
@@ -1,12 +1,3 @@
1
- $this->_setFieldset($attributes, $fieldset, array());
2
- $formValues = Mage::registry('current_{{entity}}')->getData();
3
- if (!Mage::registry('current_{{entity}}')->getId()) {
4
- foreach ($attributes as $attribute) {
5
- if (!isset($formValues[$attribute->getAttributeCode()])) {
6
- $formValues[$attribute->getAttributeCode()] = $attribute->getDefaultValue();
7
- }
8
- }
9
- }
10
  $form->addValues($formValues);
11
  $form->setFieldNameSuffix('{{entity}}');
12
  $this->setForm($form);
 
 
 
 
 
 
 
 
 
1
  $form->addValues($formValues);
2
  $form->setFieldNameSuffix('{{entity}}');
3
  $this->setForm($form);
app/code/community/Ultimate/ModuleCreator/etc/source/app/code/Controller/Router/020_entity CHANGED
@@ -1,6 +1,8 @@
1
  $check['{{entity}}'] = new Varien_Object(array(
2
  'prefix' => Mage::getStoreConfig('{{namespace}}_{{module}}/{{entity}}/url_prefix'),
3
  'suffix' => Mage::getStoreConfig('{{namespace}}_{{module}}/{{entity}}/url_suffix'),
 
 
4
  'model' =>'{{namespace}}_{{module}}/{{entity}}',
5
  'controller' => '{{entity}}',
6
  'action' => 'view',
1
  $check['{{entity}}'] = new Varien_Object(array(
2
  'prefix' => Mage::getStoreConfig('{{namespace}}_{{module}}/{{entity}}/url_prefix'),
3
  'suffix' => Mage::getStoreConfig('{{namespace}}_{{module}}/{{entity}}/url_suffix'),
4
+ 'list_key' => Mage::getStoreConfig('{{namespace}}_{{module}}/{{entity}}/url_rewrite_list'),
5
+ 'list_action' => 'index',
6
  'model' =>'{{namespace}}_{{module}}/{{entity}}',
7
  'controller' => '{{entity}}',
8
  'action' => 'view',
app/code/community/Ultimate/ModuleCreator/etc/source/app/code/Controller/Router/030_footer CHANGED
@@ -1,4 +1,16 @@
1
  foreach ($check as $key=>$settings) {
 
 
 
 
 
 
 
 
 
 
 
 
2
  if ($settings['prefix']){
3
  $parts = explode('/', $urlKey);
4
  if ($parts[0] != $settings['prefix'] || count($parts) != 2){
1
  foreach ($check as $key=>$settings) {
2
+ if ($settings->getListKey()) {
3
+ if ($urlKey == $settings->getListKey()) {
4
+ $request->setModuleName('{{frontKey}}')
5
+ ->setControllerName($settings->getController())
6
+ ->setActionName($settings->getListAction());
7
+ $request->setAlias(
8
+ Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS,
9
+ $urlKey
10
+ );
11
+ return true;
12
+ }
13
+ }
14
  if ($settings['prefix']){
15
  $parts = explode('/', $urlKey);
16
  if ($parts[0] != $settings['prefix'] || count($parts) != 2){
app/code/community/Ultimate/ModuleCreator/etc/source/app/code/Helper/Entity/020_create_list CHANGED
@@ -5,5 +5,8 @@
5
  * {{qwertyuiop}}
6
  */
7
  public function get{{Entities}}Url(){
 
 
 
8
  return Mage::getUrl('{{namespace}}_{{module}}/{{entity}}/index');
9
  }
5
  * {{qwertyuiop}}
6
  */
7
  public function get{{Entities}}Url(){
8
+ if ($listKey = Mage::getStoreConfig('{{namespace}}_{{module}}/{{entity}}/url_rewrite_list')) {
9
+ return Mage::getUrl('', array('_direct'=>$listKey));
10
+ }
11
  return Mage::getUrl('{{namespace}}_{{module}}/{{entity}}/index');
12
  }
app/code/community/Ultimate/ModuleCreator/etc/source/app/locale/130_url_rewrite CHANGED
@@ -7,3 +7,5 @@
7
  "Leave empty for no prefix","Leave empty for no prefix"
8
  "What goes after the dot. Leave empty for no suffix.","What goes after the dot. Leave empty for no suffix."
9
  "URL suffix","URL suffix"
 
 
7
  "Leave empty for no prefix","Leave empty for no prefix"
8
  "What goes after the dot. Leave empty for no suffix.","What goes after the dot. Leave empty for no suffix."
9
  "URL suffix","URL suffix"
10
+ "URL key for list page","URL key for list page"
11
+ "Leave empty to use default URL module/controller/action","Leave empty to use default URL module/controller/action"
app/code/community/Ultimate/ModuleCreator/etc/umc.xml CHANGED
@@ -356,6 +356,15 @@
356
  <tooltip><![CDATA[If you set this to 'Yes', a new field will be added to your entity called 'url_key'.<br />This will allow you to use SEF url's for your entity view pages. Example: http://mysite.com/some-key-here.html]]></tooltip>
357
  <additional><![CDATA[If is set to 'No' your entity view page will be accessed in the default way http://mysite.com/module/controller/action/id/7<br /><span class="label label-warning">warning</span>This field is available only if 'Create entity view page' is set to 'Yes'.]]></additional>
358
  </url_rewrite>
 
 
 
 
 
 
 
 
 
359
  <url_prefix translate="label tooltip" module="modulecreator">
360
  <label>URL prefix</label>
361
  <type>text</type>
@@ -758,6 +767,7 @@
758
  <view_template />
759
  <add_seo />
760
  <url_rewrite />
 
761
  <url_prefix />
762
  <url_suffix />
763
  <rss />
@@ -1020,6 +1030,27 @@
1020
  <f>YmFzZTY0X2RlY29kZQ==</f>
1021
  </system>
1022
  <release_notes>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1023
  <v1_9_4_0>
1024
  <version>1.9.4.0</version>
1025
  <date>2014-08-19</date>
356
  <tooltip><![CDATA[If you set this to 'Yes', a new field will be added to your entity called 'url_key'.<br />This will allow you to use SEF url's for your entity view pages. Example: http://mysite.com/some-key-here.html]]></tooltip>
357
  <additional><![CDATA[If is set to 'No' your entity view page will be accessed in the default way http://mysite.com/module/controller/action/id/7<br /><span class="label label-warning">warning</span>This field is available only if 'Create entity view page' is set to 'Yes'.]]></additional>
358
  </url_rewrite>
359
+ <url_rewrite_list translate="label tooltip" module="modulecreator">
360
+ <label>List page url rewrite</label>
361
+ <type>text</type>
362
+ <required>0</required>
363
+ <position>71</position>
364
+ <class>use-frontend use-create-list use-url-rewrite</class>
365
+ <system>0</system>
366
+ <tooltip><![CDATA[Fill in here the url for the list page. Leave empty to use 'module/entity/index'. It can later be changed from the config section.]]></tooltip>
367
+ </url_rewrite_list>
368
  <url_prefix translate="label tooltip" module="modulecreator">
369
  <label>URL prefix</label>
370
  <type>text</type>
767
  <view_template />
768
  <add_seo />
769
  <url_rewrite />
770
+ <url_rewrite_list />
771
  <url_prefix />
772
  <url_suffix />
773
  <rss />
1030
  <f>YmFzZTY0X2RlY29kZQ==</f>
1031
  </system>
1032
  <release_notes>
1033
+ <v1_9_4_1>
1034
+ <version>1.9.4.1</version>
1035
+ <date>TBD</date>
1036
+ <data>
1037
+ <tree_eav translate="label type comment">
1038
+ <label>EAV tree entities admin tree not refreshing on save</label>
1039
+ <type>Bug Fix</type>
1040
+ <comment>The left side tree on the admin add/edit form for EAV tree entities does not refresh when a new entity instance is added.</comment>
1041
+ </tree_eav>
1042
+ <list_url translate="label type comment">
1043
+ <label>Support for url rewrites for entity list pages</label>
1044
+ <type>Feature</type>
1045
+ <comment>You can now set a SEF url for the entity list page on frontend instead of 'module/controller/action'. The value can be changed later.</comment>
1046
+ </list_url>
1047
+ <cleanup translate="label type comment">
1048
+ <label>Cleaned a bit the code</label>
1049
+ <type>Improvement</type>
1050
+ <comment>Removed some unused variables, added some type hints. I hope I didn't break anything.</comment>
1051
+ </cleanup>
1052
+ </data>
1053
+ </v1_9_4_1>
1054
  <v1_9_4_0>
1055
  <version>1.9.4.0</version>
1056
  <date>2014-08-19</date>
app/code/community/Ultimate/ModuleCreator/etc/umc_source.xml CHANGED
@@ -1309,6 +1309,17 @@
1309
  </depend>
1310
  <sort_order>20</sort_order>
1311
  </tree>
 
 
 
 
 
 
 
 
 
 
 
1312
  <layout>
1313
  <name>023_layout</name>
1314
  <sort_order>23</sort_order>
1309
  </depend>
1310
  <sort_order>20</sort_order>
1311
  </tree>
1312
+ <default_values>
1313
+ <name>021_default_values</name>
1314
+ <sort_order>21</sort_order>
1315
+ </default_values>
1316
+ <default_values_tree>
1317
+ <name>022_default_values_tree</name>
1318
+ <sort_order>22</sort_order>
1319
+ <depend>
1320
+ <is_tree />
1321
+ </depend>
1322
+ </default_values_tree>
1323
  <layout>
1324
  <name>023_layout</name>
1325
  <sort_order>23</sort_order>
app/design/adminhtml/default/default/layout/ultimate_modulecreator.xml CHANGED
@@ -17,8 +17,8 @@
17
  */
18
  /**
19
  * @category Ultimate
20
- * @package Ultimate_ModuleCreator
21
- * @author Marius Strajeru <ultimate.module.creator@gmail.com>
22
  */
23
  -->
24
  <layout>
17
  */
18
  /**
19
  * @category Ultimate
20
+ * @package Ultimate_ModuleCreator
21
+ * @author Marius Strajeru <ultimate.module.creator@gmail.com>
22
  */
23
  -->
24
  <layout>
app/design/adminhtml/default/default/template/ultimate_modulecreator/edit.phtml CHANGED
@@ -19,7 +19,7 @@
19
  * module edit template
20
  * @category Ultimate
21
  * @package Ultimate_ModuleCreator
22
- * @author Marius Strajeru <marius.strajeru@gmail.com>
23
  */
24
  ?>
25
  <script type="text/javascript">
19
  * module edit template
20
  * @category Ultimate
21
  * @package Ultimate_ModuleCreator
22
+ * @author Marius Strajeru <ultimate.module.creator@gmail.com>
23
  */
24
  ?>
25
  <script type="text/javascript">
app/design/adminhtml/default/default/template/ultimate_modulecreator/edit/tab/entities.phtml CHANGED
@@ -19,7 +19,7 @@
19
  * entities tab template
20
  * @category Ultimate
21
  * @package Ultimate_ModuleCreator
22
- * @author Marius Strajeru <marius.strajeru@gmail.com>
23
  */
24
  ?>
25
  <?php $_entities = $this->getEntities();?>
19
  * entities tab template
20
  * @category Ultimate
21
  * @package Ultimate_ModuleCreator
22
+ * @author Marius Strajeru <ultimate.module.creator@gmail.com>
23
  */
24
  ?>
25
  <?php $_entities = $this->getEntities();?>
app/design/adminhtml/default/default/template/ultimate_modulecreator/edit/tab/entities/entity.phtml CHANGED
@@ -18,9 +18,10 @@
18
  * entity template
19
  * @category Ultimate
20
  * @package Ultimate_ModuleCreator
21
- * @author Marius Strajeru <marius.strajeru@gmail.com>
22
  */
23
  ?>
 
24
  <?php $_entity = $this->getEntity();?>
25
  <div class="entry-edit modulecreator-entity" id="entity_<?php echo $this->getIncrement();?>">
26
  <div class="entry-edit-head">
18
  * entity template
19
  * @category Ultimate
20
  * @package Ultimate_ModuleCreator
21
+ * @author Marius Strajeru <ultimate.module.creator@gmail.com>
22
  */
23
  ?>
24
+ <?php /** @var Ultimate_ModuleCreator_Model_Entity $_entity */?>
25
  <?php $_entity = $this->getEntity();?>
26
  <div class="entry-edit modulecreator-entity" id="entity_<?php echo $this->getIncrement();?>">
27
  <div class="entry-edit-head">
app/design/adminhtml/default/default/template/ultimate_modulecreator/edit/tab/entities/entity/attribute.phtml CHANGED
@@ -26,6 +26,7 @@
26
  <?php $_attribute = $this->getAttributeInstance();?>
27
  <div class="entry-edit modulecreator-attribute" id="attribute_<?php echo $_id?>">
28
  <?php echo $this->getFormHtml()?>
 
29
  <?php if ($_attribute->getIsName()) : ?>
30
  <script type="text/javascript">
31
  document.observe("dom:loaded", function() {
26
  <?php $_attribute = $this->getAttributeInstance();?>
27
  <div class="entry-edit modulecreator-attribute" id="attribute_<?php echo $_id?>">
28
  <?php echo $this->getFormHtml()?>
29
+ <?php /** @var Ultimate_ModuleCreator_Model_Attribute $_attribute */?>
30
  <?php if ($_attribute->getIsName()) : ?>
31
  <script type="text/javascript">
32
  document.observe("dom:loaded", function() {
app/design/adminhtml/default/default/template/ultimate_modulecreator/edit/tab/help.phtml CHANGED
@@ -19,7 +19,7 @@
19
  * help template
20
  * @category Ultimate
21
  * @package Ultimate_ModuleCreator
22
- * @author Marius Strajeru <marius.strajeru@gmail.com>
23
  */
24
  ?>
25
  <div id="modulecreator_help_container">
19
  * help template
20
  * @category Ultimate
21
  * @package Ultimate_ModuleCreator
22
+ * @author Marius Strajeru <ultimate.module.creator@gmail.com>
23
  */
24
  ?>
25
  <div id="modulecreator_help_container">
app/design/adminhtml/default/default/template/ultimate_modulecreator/edit/tab/help/fieldset.phtml CHANGED
@@ -18,7 +18,7 @@
18
  * help fieldset
19
  * @category Ultimate
20
  * @package Ultimate_ModuleCreator
21
- * @author Marius Strajeru <marius.strajeru@gmail.com>
22
  */
23
  ?>
24
  <?php $fieldsets = $this->getFieldsets();?>
18
  * help fieldset
19
  * @category Ultimate
20
  * @package Ultimate_ModuleCreator
21
+ * @author Marius Strajeru <ultimate.module.creator@gmail.com>
22
  */
23
  ?>
24
  <?php $fieldsets = $this->getFieldsets();?>
app/design/adminhtml/default/default/template/ultimate_modulecreator/edit/tab/relation.phtml CHANGED
@@ -19,7 +19,7 @@
19
  * relation tab template
20
  * @category Ultimate
21
  * @package Ultimate_ModuleCreator
22
- * @author Marius Strajeru <marius.strajeru@gmail.com>
23
  */
24
  ?>
25
  <div id="modulecreator_relations_container" class="box custom-options"></div>
19
  * relation tab template
20
  * @category Ultimate
21
  * @package Ultimate_ModuleCreator
22
+ * @author Marius Strajeru <ultimate.module.creator@gmail.com>
23
  */
24
  ?>
25
  <div id="modulecreator_relations_container" class="box custom-options"></div>
app/design/adminhtml/default/default/template/ultimate_modulecreator/tooltip.phtml CHANGED
@@ -17,8 +17,8 @@
17
  /**
18
  * tooltip template
19
  * @category Ultimate
20
- * @package Ultimate_ModuleCreator
21
- * @author Marius Strajeru <marius.strajeru@gmail.com>
22
  */
23
  ?>
24
  <div class="f-right ">
17
  /**
18
  * tooltip template
19
  * @category Ultimate
20
+ * @package Ultimate_ModuleCreator
21
+ * @author Marius Strajeru <ultimate.module.creator@gmail.com>
22
  */
23
  ?>
24
  <div class="f-right ">
app/locale/en_US/Ultimate_ModuleCreator.csv CHANGED
@@ -151,6 +151,7 @@ Categories,Categories
151
  "Changed identation from TAB to 4x space","Changed identation from TAB to 4x space"
152
  "Changed the class aliases from `module` to `namespace_module`. For example a model will be instantiated using `Mage::getModel('namespace_module/some_model')` to avoid extension conflicts.","Changed the class aliases from `module` to `namespace_module`. For example a model will be instantiated using `Mage::getModel('namespace_module/some_model')` to avoid extension conflicts."
153
  "Changed the way sibling entities relations are saved","Changed the way sibling entities relations are saved"
 
154
  "Code pool","Code pool"
155
  "Collection resource model for entities that are related many to many","Collection resource model for entities that are related many to many"
156
  "Collection resource model for entity category relation","Collection resource model for entity category relation"
@@ -216,6 +217,7 @@ EAV,EAV
216
  "EAV attribute resource model.","EAV attribute resource model."
217
  "EAV entity admin controller (not tree).","EAV entity admin controller (not tree)."
218
  "EAV entity admin controller EAV Tree.","EAV entity admin controller EAV Tree."
 
219
  "Each entity must have a label used for buttons, links, messages.<br />This is the singular form of the label. For example in a blog module, the post entity will have the label in singular form 'Post'","Each entity must have a label used for buttons, links, messages.<br />This is the singular form of the label. For example in a blog module, the post entity will have the label in singular form 'Post'"
220
  "Each entity must have an attribute to behave as ""Name"". This attribute will be used to identify different entities among themselves. It will also be used in dropdowns with entities. This option is available only for text, number and decimal attributes.","Each entity must have an attribute to behave as ""Name"". This attribute will be used to identify different entities among themselves. It will also be used in dropdowns with entities. This option is available only for text, number and decimal attributes."
221
  "Each field has a tooltip about what it means, but there are all listed here.","Each field has a tooltip about what it means, but there are all listed here."
@@ -314,6 +316,7 @@ File,File
314
  "File save backend model","File save backend model"
315
  "File used for translation with all the texts in the module","File used for translation with all the texts in the module"
316
  "Fill in a default value for the attribute. Leave empty for no value. For dropdown and multiselect attributes the value, must be a valid value. not valid ones will be removed. For the multiselect attributes add one default value on each line. For Yes/No attribtues enter 1 for Yes, 0 for No. For country attributes fill in the country ISO2 code. You cannot set a default value for dropdown and multiselect attributes that use a source model and on image and file attributes.","Fill in a default value for the attribute. Leave empty for no value. For dropdown and multiselect attributes the value, must be a valid value. not valid ones will be removed. For the multiselect attributes add one default value on each line. For Yes/No attribtues enter 1 for Yes, 0 for No. For country attributes fill in the country ISO2 code. You cannot set a default value for dropdown and multiselect attributes that use a source model and on image and file attributes."
 
317
  "Fill in the dropdown attribute code.","Fill in the dropdown attribute code."
318
  Fix,Fix
319
  "Fix url rewrite save","Fix url rewrite save"
@@ -557,6 +560,7 @@ License,License
557
  "Link to related entities in grids and add/edit forms","Link to related entities in grids and add/edit forms"
558
  "Links to entities related to categories had a wrong format in the category view page.","Links to entities related to categories had a wrong format in the category view page."
559
  "List page template","List page template"
 
560
  "MOdel used for EAV attributes","MOdel used for EAV attributes"
561
  "Made extension ""extensible""","Made extension ""extensible"""
562
  "Magento offers a REST API for managing products, categories and other entities.<br />If this is set to 'Yes', then your entity will also be available for managing through the REST API.<br />It generates the classes and xml files needed.","Magento offers a REST API for managing products, categories and other entities.<br />If this is set to 'Yes', then your entity will also be available for managing through the REST API.<br />It generates the classes and xml files needed."
@@ -657,6 +661,7 @@ Relation,Relation
657
  "Remove entity","Remove entity"
658
  "Remove field / attribute","Remove field / attribute"
659
  "Removed frontend package and theme fields","Removed frontend package and theme fields"
 
660
  "Renderer used for EAV attribute form","Renderer used for EAV attribute form"
661
  "Replaced 'addFilter' with 'addFieldToFilter'","Replaced 'addFilter' with 'addFieldToFilter'"
662
  Required,Required
@@ -698,6 +703,7 @@ Save,Save
698
  "Source file refactoring","Source file refactoring"
699
  "Store View","Store View"
700
  "Stores tab for editing comments.","Stores tab for editing comments."
 
701
  "Supported field / attribute types","Supported field / attribute types"
702
  "System -> Configuration tab name","System -> Configuration tab name"
703
  "System -> Configuration tab position","System -> Configuration tab position"
@@ -757,6 +763,7 @@ Thanks,Thanks
757
  "The generated files could not pe written to disk because of the changes in Varien_Io_File in this version.","The generated files could not pe written to disk because of the changes in Varien_Io_File in this version."
758
  "The guest handler model for the entity REST API","The guest handler model for the entity REST API"
759
  "The image attributes/fields were displayed wrong on frontend for EAV entities.","The image attributes/fields were displayed wrong on frontend for EAV entities."
 
760
  "The main handler model for the entity REST API","The main handler model for the entity REST API"
761
  "The main model for the entity REST API","The main model for the entity REST API"
762
  "The module configuration file","The module configuration file"
@@ -897,6 +904,7 @@ Yes,Yes
897
  "You are editing the module: %s","You are editing the module: %s"
898
  "You can choose to allow customers to write comments on your entities.","You can choose to allow customers to write comments on your entities."
899
  "You can not generate the files needed for the REST API of you entities.","You can not generate the files needed for the REST API of you entities."
 
900
  "You can set the configuration tab name and position when creating a module.","You can set the configuration tab name and position when creating a module."
901
  "You can set the version of your generated module.","You can set the version of your generated module."
902
  "You cannot use the front key %s. It is used by the module %s","You cannot use the front key %s. It is used by the module %s"
151
  "Changed identation from TAB to 4x space","Changed identation from TAB to 4x space"
152
  "Changed the class aliases from `module` to `namespace_module`. For example a model will be instantiated using `Mage::getModel('namespace_module/some_model')` to avoid extension conflicts.","Changed the class aliases from `module` to `namespace_module`. For example a model will be instantiated using `Mage::getModel('namespace_module/some_model')` to avoid extension conflicts."
153
  "Changed the way sibling entities relations are saved","Changed the way sibling entities relations are saved"
154
+ "Cleaned a bit the code","Cleaned a bit the code"
155
  "Code pool","Code pool"
156
  "Collection resource model for entities that are related many to many","Collection resource model for entities that are related many to many"
157
  "Collection resource model for entity category relation","Collection resource model for entity category relation"
217
  "EAV attribute resource model.","EAV attribute resource model."
218
  "EAV entity admin controller (not tree).","EAV entity admin controller (not tree)."
219
  "EAV entity admin controller EAV Tree.","EAV entity admin controller EAV Tree."
220
+ "EAV tree entities admin tree not refreshing on save","EAV tree entities admin tree not refreshing on save"
221
  "Each entity must have a label used for buttons, links, messages.<br />This is the singular form of the label. For example in a blog module, the post entity will have the label in singular form 'Post'","Each entity must have a label used for buttons, links, messages.<br />This is the singular form of the label. For example in a blog module, the post entity will have the label in singular form 'Post'"
222
  "Each entity must have an attribute to behave as ""Name"". This attribute will be used to identify different entities among themselves. It will also be used in dropdowns with entities. This option is available only for text, number and decimal attributes.","Each entity must have an attribute to behave as ""Name"". This attribute will be used to identify different entities among themselves. It will also be used in dropdowns with entities. This option is available only for text, number and decimal attributes."
223
  "Each field has a tooltip about what it means, but there are all listed here.","Each field has a tooltip about what it means, but there are all listed here."
316
  "File save backend model","File save backend model"
317
  "File used for translation with all the texts in the module","File used for translation with all the texts in the module"
318
  "Fill in a default value for the attribute. Leave empty for no value. For dropdown and multiselect attributes the value, must be a valid value. not valid ones will be removed. For the multiselect attributes add one default value on each line. For Yes/No attribtues enter 1 for Yes, 0 for No. For country attributes fill in the country ISO2 code. You cannot set a default value for dropdown and multiselect attributes that use a source model and on image and file attributes.","Fill in a default value for the attribute. Leave empty for no value. For dropdown and multiselect attributes the value, must be a valid value. not valid ones will be removed. For the multiselect attributes add one default value on each line. For Yes/No attribtues enter 1 for Yes, 0 for No. For country attributes fill in the country ISO2 code. You cannot set a default value for dropdown and multiselect attributes that use a source model and on image and file attributes."
319
+ "Fill in here the url for the list page. Leave empty to use 'module/entity/index'. It can later be changed from the config section.","Fill in here the url for the list page. Leave empty to use 'module/entity/index'. It can later be changed from the config section."
320
  "Fill in the dropdown attribute code.","Fill in the dropdown attribute code."
321
  Fix,Fix
322
  "Fix url rewrite save","Fix url rewrite save"
560
  "Link to related entities in grids and add/edit forms","Link to related entities in grids and add/edit forms"
561
  "Links to entities related to categories had a wrong format in the category view page.","Links to entities related to categories had a wrong format in the category view page."
562
  "List page template","List page template"
563
+ "List page url rewrite","List page url rewrite"
564
  "MOdel used for EAV attributes","MOdel used for EAV attributes"
565
  "Made extension ""extensible""","Made extension ""extensible"""
566
  "Magento offers a REST API for managing products, categories and other entities.<br />If this is set to 'Yes', then your entity will also be available for managing through the REST API.<br />It generates the classes and xml files needed.","Magento offers a REST API for managing products, categories and other entities.<br />If this is set to 'Yes', then your entity will also be available for managing through the REST API.<br />It generates the classes and xml files needed."
661
  "Remove entity","Remove entity"
662
  "Remove field / attribute","Remove field / attribute"
663
  "Removed frontend package and theme fields","Removed frontend package and theme fields"
664
+ "Removed some unused variables, added some type hints. I hope I didn't break anything.","Removed some unused variables, added some type hints. I hope I didn't break anything."
665
  "Renderer used for EAV attribute form","Renderer used for EAV attribute form"
666
  "Replaced 'addFilter' with 'addFieldToFilter'","Replaced 'addFilter' with 'addFieldToFilter'"
667
  Required,Required
703
  "Source file refactoring","Source file refactoring"
704
  "Store View","Store View"
705
  "Stores tab for editing comments.","Stores tab for editing comments."
706
+ "Support for url rewrites for entity list pages","Support for url rewrites for entity list pages"
707
  "Supported field / attribute types","Supported field / attribute types"
708
  "System -> Configuration tab name","System -> Configuration tab name"
709
  "System -> Configuration tab position","System -> Configuration tab position"
763
  "The generated files could not pe written to disk because of the changes in Varien_Io_File in this version.","The generated files could not pe written to disk because of the changes in Varien_Io_File in this version."
764
  "The guest handler model for the entity REST API","The guest handler model for the entity REST API"
765
  "The image attributes/fields were displayed wrong on frontend for EAV entities.","The image attributes/fields were displayed wrong on frontend for EAV entities."
766
+ "The left side tree on the admin add/edit form for EAV tree entities does not refresh when a new entity instance is added.","The left side tree on the admin add/edit form for EAV tree entities does not refresh when a new entity instance is added."
767
  "The main handler model for the entity REST API","The main handler model for the entity REST API"
768
  "The main model for the entity REST API","The main model for the entity REST API"
769
  "The module configuration file","The module configuration file"
904
  "You are editing the module: %s","You are editing the module: %s"
905
  "You can choose to allow customers to write comments on your entities.","You can choose to allow customers to write comments on your entities."
906
  "You can not generate the files needed for the REST API of you entities.","You can not generate the files needed for the REST API of you entities."
907
+ "You can now set a SEF url for the entity list page on frontend instead of 'module/controller/action'. The value can be changed later.","You can now set a SEF url for the entity list page on frontend instead of 'module/controller/action'. The value can be changed later."
908
  "You can set the configuration tab name and position when creating a module.","You can set the configuration tab name and position when creating a module."
909
  "You can set the version of your generated module.","You can set the version of your generated module."
910
  "You cannot use the front key %s. It is used by the module %s","You cannot use the front key %s. It is used by the module %s"
js/ultimate_modulecreator.js CHANGED
@@ -17,7 +17,7 @@
17
  * js for module creation UI
18
  * @category Ultimate
19
  * @package Ultimate_ModuleCreator
20
- * @author Marius Strajeru <marius.strajeru@gmail.com>
21
  */
22
  if(typeof UMC=='undefined') {
23
  var UMC = {};
17
  * js for module creation UI
18
  * @category Ultimate
19
  * @package Ultimate_ModuleCreator
20
+ * @author Marius Strajeru <ultimate.module.creator@gmail.com>
21
  */
22
  if(typeof UMC=='undefined') {
23
  var UMC = {};
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Ultimate_ModuleCreator</name>
4
- <version>1.9.4.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/MIT">MIT License</license>
7
  <channel>community</channel>
@@ -9,15 +9,18 @@
9
  <summary>Develop custom Magento modules without writing any code. Use a module creator. Use this module creator</summary>
10
  <description>This module allows you to create custom Magento modules for your own entities. You can create as many entities as you want in one extension, you can establish relations between them, decide to generate only back-end pages or both back-end and frontend pages.</description>
11
  <notes>Feature&#xD;
12
- - Link to related entities in grids and add/edit forms&#xD;
13
  &#xD;
14
- Bug Fixes: &#xD;
15
- - Fixed related entities grid columns&#xD;
16
- - The related entities tab did not show only selected entities on category edit mode.</notes>
 
 
 
17
  <authors><author><name>Marius</name><user>tzyganu</user><email>tzyganu@gmail.com</email></author></authors>
18
- <date>2014-08-19</date>
19
- <time>11:24:21</time>
20
- <contents><target name="magecommunity"><dir name="Ultimate"><dir name="ModuleCreator"><dir name="Block"><dir name="Adminhtml"><dir name="Modulecreator"><dir name="Edit"><file name="Form.php" hash="a6855a30efbe87f5b1c593c83bfe2342"/><dir name="Tab"><dir name="Entities"><dir name="Entity"><file name="Attribute.php" hash="1c9379375866c9239163bc56be11e114"/></dir><file name="Entity.php" hash="2f182d8c35a1f4228efa8bdb23945aca"/></dir><file name="Entities.php" hash="6f770aec8ae66a09c5304e876bb5f8f0"/><dir name="Help"><file name="Fieldset.php" hash="f7d687241b4f60475fd1d6b0d9862fcc"/></dir><file name="Help.php" hash="85427034d5f35125d13e75b17f9f64f8"/><file name="Relation.php" hash="579b6d87747b82789ee65d737fc1e315"/><file name="Settings.php" hash="cf3a8b5980bd39d7fa591091f8394a5f"/></dir><file name="Tabs.php" hash="0a9fa3fae23d5b7f815e77e53da2537d"/></dir><file name="Edit.php" hash="e7d396642d6408ce9034ede7517b7046"/><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="Download.php" hash="b0cf83e2273cff29cd203c8635b2fff5"/></dir></dir></dir><file name="Grid.php" hash="72f199fe34b312cd8aada2957ed4f3cd"/><file name="Menu.php" hash="40ee71583453626a03967c822a78164b"/><dir name="System"><dir name="Config"><dir name="Form"><dir name="Fieldset"><file name="Abstract.php" hash="70c0e64c09521b7a98dd4be7187c7ea2"/><file name="Attribute.php" hash="ffab3a73feb7f37c4047081cf43419b9"/><file name="Entity.php" hash="427369fa1062bc11978710d67fe2e71a"/><file name="Settings.php" hash="61b1b50af247081a066a8af9e9e54a2a"/></dir></dir></dir></dir></dir><file name="Modulecreator.php" hash="ce93deb82c8b64d0e059e9434d2174a0"/></dir></dir><file name="Exception.php" hash="f060d2ba3fac64341c3749d2cebbaac1"/><dir name="Helper"><file name="Data.php" hash="7f61b02c0583b20d0322e792b2cf040e"/></dir><dir name="Model"><file name="Abstract.php" hash="f3ac316da79db7d628b2c3b893df48ab"/><dir name="Attribute"><dir name="Type"><file name="Abstract.php" hash="27a3880a7520e08adbaa0f245555c9d4"/><file name="Country.php" hash="7009b88ee14e9c66b767f7bc90a3250d"/><file name="Decimal.php" hash="bf3df688974cae17f9e16b6b6bb166a1"/><dir name="Dropdown"><file name="Abstract.php" hash="3f73a641f1c2e993677c3ffba0710c34"/><file name="Category.php" hash="da47dd40ae39238a5395652a228549e0"/><file name="Custom.php" hash="c401e6905868955b86f5206e0f15e609"/><file name="Customer.php" hash="6b5f51e69c38ef99ee8d7e119c5f2346"/><file name="Product.php" hash="4144613d5dd6699ff7dd29d59a7c876d"/></dir><file name="Dropdown.php" hash="3544e492b621a027efb95d6d08c92e3d"/><file name="File.php" hash="93b160916baa561247dcd8040361f6f2"/><file name="Image.php" hash="25f0b1b1abdef560d0d778338b0d8d8d"/><file name="Int.php" hash="35a5bf8b9cd1fc772b7c4f1647d7ac6f"/><file name="Multiselect.php" hash="11558da53178821cb3dbdbf3f2fa7a99"/><file name="Text.php" hash="1649397e1bde1c2223d2656ac520bc48"/><file name="Textarea.php" hash="cb194ab2636b2b3fb26ccaa11b6b2559"/><file name="Timestamp.php" hash="45b63de13d8f8847ed37cc3a286f70f9"/><file name="Yesno.php" hash="127caade490a16be15cc9bff97dc17e4"/></dir></dir><file name="Attribute.php" hash="94626efc4fa978e9f4ff2ef76135f106"/><file name="Config.php" hash="9d66fecf768d2a34908bab41a7b3504b"/><dir name="Entity"><dir name="Type"><file name="Abstract.php" hash="503265801e11e97e6baa863bb8cb96a3"/><file name="Eav.php" hash="adb0d9e8ad02fc1405b18e81752c5b73"/><file name="Flat.php" hash="c8de6e6997cf0728f2e0cdfa86a17a94"/></dir></dir><file name="Entity.php" hash="fc7e3b65338f93971beb9c94200abdb6"/><dir name="Module"><file name="Collection.php" hash="60ccda6198d5fd2dfd7a60fcb1815f04"/></dir><file name="Module.php" hash="00459169fc5b815348d9b9c8733beaf1"/><file name="Relation.php" hash="4a529c42ac26526c12c62fad38ad99c0"/><dir name="Source"><dir name="Attribute"><file name="Scope.php" hash="681d3030cf2dc35b53f4e7e447db35e9"/><file name="Type.php" hash="64eb092c4a5f9baa717f221c4a530a23"/><dir name="Value"><file name="Source.php" hash="5b455b0d1f41e66bbc36ebfe72a84298"/></dir></dir><file name="Codepool.php" hash="ffbf45052406fecaf43673ee7c9b61a2"/><dir name="Entity"><file name="Layout.php" hash="4105f906cb3274b6b2b230a420d7795f"/><file name="Menu.php" hash="4dc0dc33661f310e7e15e62ff5e4741f"/><file name="Type.php" hash="ce97a7bf1d6e6b068f114c1efcd81464"/></dir><file name="Install.php" hash="475f6da35aee1bafd4fe162721d01666"/></dir><file name="Writer.php" hash="e99f2326600d2ed162af7c3e12d8e620"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="ModulecreatorController.php" hash="64e8ba96f84f59b4fe56b61e8077f16b"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="841cab623830270784e5752ceb1c0b5e"/><file name="config.xml" hash="da0b13ccaa191544f8ca09f3e0613124"/><file name="jstranslator.xml" hash="197089f92ccb2cf369fe7e401945ecb5"/><dir name="source"><dir name="app"><dir name="code"><dir name="Block"><dir name="Adminhtml"><dir name="Catalog"><dir name="Category"><dir name="Tab"><dir name="Entity"><file name="010_tree" hash="71ef3094dedfc7d9e414cb697e3d539a"/><file name="020_not_tree" hash="2e86dacfe0362ce6aa38d25e82524b56"/></dir></dir></dir><dir name="Product"><dir name="Edit"><dir name="Tab"><dir name="Entity"><file name="010_top" hash="dd67d1c7c6b352a71965868a06697988"/><file name="020_not_tree" hash="a7be24f5cc397ef37ca22bb40e1527e9"/><file name="030_tree" hash="bd02537f09e5d8260144eeb3704f6401"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir></dir></dir></dir><dir name="Entity"><file name="010_top" hash="44aa5df6aab34804fd961137d9c7720d"/><file name="020_eav" hash="d38b3883793eff2891b06995e5082b68"/><file name="030_footer" hash="dfe5fb1e14742631320317fdb64ac885"/><dir name="Abstract"><file name="010_content" hash="62e973ae6efd0e36b775d538496954d1"/></dir><dir name="Attribute"><file name="010_content" hash="37764dc55ce7b4d9aa84809327943236"/><dir name="Edit"><file name="010_content" hash="8b42c988f42c6f0bffca550b18cad8a1"/><dir name="Form"><file name="010_content" hash="a263f608e4abdc3ec96e89052b527aad"/></dir><dir name="Tab"><dir name="Main"><file name="010_content" hash="05f4aa0555d8cfd9e124f99b3d0b7d04"/></dir><dir name="Options"><file name="010_content" hash="03570e69a55e721f961425a5172369cd"/></dir></dir><dir name="Tabs"><file name="010_content" hash="2b58699bdec1699e78a56e97f54605b7"/></dir></dir><dir name="Grid"><file name="010_content" hash="fb0ce347335b8deb92c6a9eb534894a0"/></dir></dir><dir name="Comment"><file name="010_content" hash="2aad8608b533909000e8b48458da0a3e"/><dir name="Edit"><file name="010_content" hash="3a43b33ef1731abb327d58ea4454445f"/><dir name="Form"><file name="010_content" hash="233d80b778a00c2e648fb6de70984de4"/></dir><dir name="Tab"><dir name="Form"><file name="010_top" hash="5654766f5a10ea79f985348ae8e1af45"/><file name="020_stores" hash="c7dea0c3fcf3f795ab5da4d2b262f523"/><file name="030_footer" hash="064e9107e3d0c0c99f905cb537877af6"/></dir><dir name="Stores"><file name="010_content" hash="b32ca2512c5e7679aa7c8b764be57c6b"/></dir></dir><dir name="Tabs"><file name="010_top" hash="967ecca69509dd46542623ebf7997767"/><file name="020_stores" hash="ca6ebaaafcb7d002971667a1d564ae27"/><file name="030_footer" hash="4488490317047e328c140b54951a26ca"/></dir></dir><dir name="Grid"><file name="010_top" hash="da6cd2d19fefbd5be0d5fc311571ea0e"/><file name="013_store_data" hash="f570d17a1052b9a8046ba3755a023051"/><file name="016_prepare" hash="472a0698416a84ea47c82136f875f39e"/><file name="020_stores" hash="f687942567140176aa4880c33a7263b2"/><file name="030_content" hash="66542005515d3e559d08ce71a5a51f15"/><file name="040_store_filter" hash="b84a10ad4e2f39480082af313a399959"/><file name="050_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir><dir name="Edit"><file name="010_top" hash="964785e013506cf5d4e05c0d28c50f7c"/><file name="020_tree" hash="e56ca7916c16b857b2d1bc5249bbd21d"/><file name="030_not_tree" hash="47fa3c2b9e77b57153b3f8a0f65a06ac"/><dir name="Form"><file name="010_top" hash="d0478b32e45e042916b28f5586ff69ad"/><file name="020_prepare_form" hash="eca2778ff92b76e6f3ac85b674e1460a"/><file name="025_prepare_form_eav" hash="ef76808baf8d37a2911843f511e1f6d2"/><file name="030_tree_top" hash="354a7fab693ceb69477eef69cc358cb0"/><file name="040_product_relation" hash="af98a2c088ac78b6d6fa8be0e61f79e8"/><file name="050_entity_relation" hash="292d2fbe7909805ecb9c214ba4e8d814"/><file name="060_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Tab"><dir name="Attributes"><file name="010_top" hash="e72033bd8e9dbae97171f5d98a082d58"/><file name="020_tree" hash="c2c9894426c3940418571436243c1187"/><file name="023_layout" hash="66be97ceef6a6972181419062c490019"/><file name="025_after_html_top" hash="e5fc8150b1ed7bb72a00b66611a1a218"/><file name="026_after_html" hash="1592e14d6de7e9bc8e55e446a2bcc337"/><file name="027_after_html_footer" hash="a277507fa5955bce889c679c508388be"/><file name="030_footer" hash="d0ec668477e12567a13e4ccc638e455f"/></dir><dir name="Categories"><file name="010_content" hash="e20886b79464507bec2b16f55e99fc8d"/></dir><dir name="Form"><file name="010_top" hash="1ac27a852fe07bd1f7912f72744e933d"/><file name="020_image" hash="ae451284767c290d0296194d4fc3cdfc"/><file name="030_file" hash="c8b1533c27644b7292da44e3e5075182"/><file name="040_wysiwyg" hash="a9f496f0a360903d1654b19d5430bf9f"/><file name="050_wysiwyg_is_tree" hash="59014226536c7bdfaba780a6bbbb5793"/><file name="060_path_tree" hash="d484f7fa33f1f092da2b241926cbebe8"/><file name="070_parents" hash="eb406f81670d46929c473cf49a66c387"/><file name="080_attributes" hash="99af6befb259348dd3f8df1bc0abba90"/><file name="090_url_rewrite" hash="18d636d351172ac645665b5fa0666ea0"/><file name="100_status" hash="782adfdcddf0cc6e362212ec18767b46"/><file name="110_rss" hash="0639b5c95b847303dd9a78332cc7933e"/><file name="120_stores" hash="1f3467451ba06db6cd40fce76ba431e6"/><file name="130_allow_comment" hash="1e4a500f05e2047024481d4e9a7b7469"/><file name="140_add_values_not_tree" hash="e1e054e2dc6696cbcd4b24e58f251f24"/><file name="150_add_values_tree" hash="c55e02ed1b018553d2525d1259eece10"/><file name="160_get_entity_tree" hash="381ec60c1dd0dd6c814dec91e8d46582"/><file name="170_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Meta"><file name="010_content" hash="49d0707a5037f1810d0a441ff20ed595"/></dir><dir name="Product"><file name="010_content" hash="9933e63eb427541140837b24af8f4619"/></dir><dir name="Sibling"><file name="010_top" hash="ba8a142d41f861168b2630a942c88e33"/><file name="020_not_tree" hash="e288ac29c834ced318f1082bd4b842e8"/><file name="030_tree" hash="3b5ef23cdb0b9b567c48eada21f78dc6"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Stores"><file name="010_content" hash="7b096cda06f6f93eb6bdc52d1c0b016d"/></dir></dir><dir name="Tabs"><file name="010_top" hash="3ae69e6c370264f0deed58e079ae154c"/><file name="020_flat_not_tree_prepare" hash="c9cdc338692f7600e8be71fb398f8c59"/><file name="030_flat_tree_prepare" hash="4f9b40a9a6f7831ed5a0da4fb5cf2be6"/><file name="040_eav_prepare_top" hash="56ff77fa7809b550070cec4143f24480"/><file name="042_eav_tree_prepare_top" hash="abb75c407e5e9c03d55d05d4402f97d1"/><file name="043_eav_seo_prepare" hash="61cffd93a3c33dbe12a5982f1a2e36f0"/><file name="047_eav_prepare_bottom" hash="3e1ed9863f0a13c2b5cd82f020421801"/><file name="048_eav_prepare_bottom_tree" hash="d7a268cbdd380f9432ae59fde52c3e1e"/><file name="049_eav_prepare_real_bottom" hash="a8b98afa000e57649d0c3817f0421c75"/><file name="050_seo" hash="831d9fce4e93ea6857db7041e74846ce"/><file name="055_seo_eav" hash="0eccfe9d8b8743400af74a7c2649a70f"/><file name="060_stores" hash="70a6a54560b40f6be67ff54042cd8e9e"/><file name="070_relation_not_tree" hash="37057553194dab96aa89776dd5e5bb41"/><file name="080_relation_tree" hash="5e3f27c006232d637464126d87eded50"/><file name="090_product_relation_not_tree" hash="a906db60873d481e1a1551d7ac9e89e8"/><file name="100_product_relation_tree" hash="b03028a427b64a825f7fa0ac6941f212"/><file name="110_category_relation_not_tree" hash="f2c7186e89f310c6c30ae16feb960cf0"/><file name="120_category_relation_tree" hash="4ce1e47bf3a1a97c5613e97d5ff5c08f"/><file name="130_end_prepare_not_tree" hash="eeb1743c5582f0b0d6bb7315e976ed79"/><file name="140_end_prepare_tree" hash="eeb1743c5582f0b0d6bb7315e976ed79"/><file name="150_footer" hash="750622e2965e5bcb8bf88674614f0ec2"/></dir></dir><dir name="Grid"><file name="010_top" hash="dc1ae56bab399b8687fc55da8a040658"/><file name="020_parents" hash="694c129db89ef3095f5b0dcdbf61f12e"/><file name="030_name_attribute" hash="a771e41d5af27b91a9595f9d642299ef"/><file name="040_grid_attributes" hash="4ef4f2cd9efbef4cb4d0638d163190a8"/><file name="050_url_rewrite" hash="4f688b429c00490a909e0476f42b8c39"/><file name="060_stores" hash="eea00206f5570b3aef5f7980f0cbbd3a"/><file name="070_created_at" hash="bdffe8831ecdada3514d4c9cda0514e8"/><file name="080_updated_at" hash="e732b86e31ae7d14d309f98c1a2405cb"/><file name="090_columns_footer" hash="ed6bcf9d2a0f66b4a7c5fbccff5a6941"/><file name="100_eav_functions" hash="d972bd0811ec04e2bb851305a1b0ef2c"/><file name="110_mass_action_top" hash="46e42d2d57468e2ced716c77e41bb010"/><file name="120_mass_action_flags" hash="ee39259db1169a85c024b0d05e7baedd"/><file name="130_mass_action_parents" hash="529e188155dd0cbc382b8228caccbf70"/><file name="140_collection_end" hash="8d6cbd0cbae4a7c3ca0add81f97ff5f2"/><file name="145_collection_walk" hash="006d866e55eee02fb6767a5c6ceb955d"/><file name="150_store_filter" hash="b395005eae63f8b30fbddc15057281f2"/><file name="160_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Helper"><dir name="File"><file name="010_content" hash="d355e5da535b3e0cfccb5d217e1a170e"/></dir><dir name="Image"><file name="010_content" hash="e157ea8cd01b05b55eecda599191fc3f"/></dir></dir><dir name="Tree"><file name="010_top" hash="727a04df04b9b80db6cefdc1b4c60419"/><file name="020_store_switcher" hash="b6d1e1a1742425c0b3f8a02ee8f64d32"/><file name="030_content" hash="2055bf21f85a1b953664e2aaeb3b763c"/><file name="040_eav" hash="5deee6fe249f7ea1ddc60b8276e3758c"/><file name="050_methods" hash="0c4d45292eb83da095668795585ed264"/><file name="060_store_switcher_block" hash="9ebb73a790da8983dfc85574af127399"/><file name="070_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Widget"><dir name="Chooser"><file name="010_top" hash="f5bc94317c2c6c0d14882ba15eb6407b"/><file name="020_not_tree" hash="9fee15af4f12185d3197293692c338a3"/><file name="030_not_tree_eav" hash="0d63352bbb0abc265ab13da33c2204b2"/><file name="040_not_tree_content" hash="48e22a4e365563c69632bb74d0db99de"/><file name="050_not_tree_store" hash="b26d7218d7bcff222c679aa5e07c8e78"/><file name="060_not_tree_footer" hash="345e81687c80d6119461c5cade1edd00"/><file name="070_not_tree_flat" hash="a3ebee24e32e43eb5b6aae582ae5e449"/><file name="080_tree" hash="f857bd064de6c07d1599b47f0ffd9d1a"/><file name="090_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir></dir><dir name="Helper"><dir name="Column"><dir name="Renderer"><dir name="Parent"><file name="010_content" hash="da6055368584a12c81c3e577fa9e2475"/></dir><dir name="Relation"><file name="010_content" hash="2aaedc2f263a540e3e9418357d4e57c9"/></dir></dir></dir><dir name="Wysiwyg"><file name="010_content" hash="9ed57fe215b6d0e0169431902eb2afd8"/></dir></dir><dir name="Module"><dir name="Helper"><dir name="Form"><dir name="Wysiwyg"><dir name="Content"><file name="010_content" hash="7275f215b7d9172874faad0adc8fa936"/></dir></dir></dir></dir><dir name="Renderer"><dir name="Fieldset"><dir name="Element"><file name="010_content" hash="0d61c16f0f376875912c71817afd6846"/></dir></dir></dir></dir></dir><dir name="Catalog"><dir name="Category"><dir name="List"><dir name="Entity"><file name="010_top" hash="45187464be8d2fcba46051d82bb50d94"/><file name="020_store" hash="5d4378ac1469cee33c19375021c8c9d6"/><file name="030_eav" hash="378270a4fb279491fa8237f7232d9661"/><file name="040_not_eav" hash="c61d22711029de35ea23c8cc5582c37d"/><file name="050_footer" hash="3310177fcbadb4048cb5130d57da91dd"/></dir></dir></dir><dir name="Product"><dir name="List"><dir name="Entity"><file name="010_top" hash="05ebc701573a2381f1929d0f3fd1d6b8"/><file name="020_store" hash="5d4378ac1469cee33c19375021c8c9d6"/><file name="030_eav" hash="62e0e3f434eac5d7646ca67253b94657"/><file name="040_not_eav" hash="c61d22711029de35ea23c8cc5582c37d"/><file name="050_footer" hash="0f75591667e0afae13d399833a7a8a1b"/></dir></dir></dir></dir><dir name="Entity"><dir name="Catalog"><dir name="Category"><dir name="List"><file name="010_content" hash="6c201af0ef142175a8078a93138a098b"/></dir></dir><dir name="Product"><dir name="List"><file name="010_content" hash="ffd30c32262494c2378583817d08cf59"/></dir></dir></dir><dir name="Child"><dir name="List"><file name="010_content" hash="6da876bcf90940c58da4bcbd01cab880"/></dir></dir><dir name="Children"><file name="010_content" hash="d34a0f45f86b2573310fa4fb423fac38"/></dir><dir name="Comment"><dir name="Form"><file name="010_content" hash="a22dbea3608170f316f8a4eec14229ad"/></dir><dir name="List"><file name="010_top" hash="f8bf579c5879e621e7df165465ec744f"/><file name="020_stores" hash="1a60133a8449a1bd4d25a2bab577770b"/><file name="030_footer" hash="8610627b14ec5f50ec149fbbcbc3be17"/></dir></dir><dir name="Customer"><dir name="Comment"><dir name="List"><file name="010_top" hash="e16c62c85566442b4877ae0263c203e5"/><file name="020_store" hash="f07cc10c13871c59a0c0300dce0ec56c"/><file name="030_filter_eav" hash="e6d6c6009d19f1b98520902649a6a30b"/><file name="040_filter_flat" hash="4321e0b31704ca31099f3ed39010a7c0"/><file name="050_footer" hash="ada9954ac40ef54c9e34df34e386df61"/></dir><dir name="View"><file name="010_content" hash="95db6a28de6c1692727a03eed355e86c"/></dir></dir></dir><dir name="List"><file name="010_top" hash="ce7935dd65bafcf532cb160cc7788803"/><file name="020_stores" hash="1a60133a8449a1bd4d25a2bab577770b"/><file name="030_attributes" hash="7bebacd043bc336aa31ccdc9dc266d89"/><file name="040_status" hash="b69d2141c5536497d662c0e8cdba19ed"/><file name="050_not_tree" hash="d20e7e08d7ee8ada6175dc6fe78ae558"/><file name="060_tree_flat" hash="e5e7821bd8b6c235c81cc27e24ef3011"/><file name="070_tree_eav" hash="5a0cfa7f968eef1206c0ac790d95071e"/><file name="080_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Rss"><file name="010_top" hash="f7c37e18de4f2c414c433061b47a9eba"/><file name="020_stores" hash="d0e26ab44bfcc5cdf03ec07ee1892d3c"/><file name="025_eav" hash="a807bf30d9099707957723afde2c551b"/><file name="030_content" hash="dc62f579677a86de9388a45ac4a098d8"/><file name="035_tree" hash="ee870fe0ca6aaf095331706b990c0bbe"/><file name="040_attributes" hash="60b1b3fab87fd4e4dcbc2f0520e03d96"/><file name="050_footer" hash="0b4ea347619c4e5e1a22c292cac994f3"/></dir><dir name="Sibling"><dir name="List"><file name="010_content" hash="b04170108593b8e355f647064e4009f2"/></dir></dir><dir name="View"><file name="010_content" hash="20fbe7cdcb216c66f1c5251e970b5537"/></dir><dir name="Widget"><dir name="Link"><file name="010_content" hash="c4fa4367c50464a64468f33ed21c743c"/></dir><dir name="Subtree"><file name="010_content" hash="8e67bb76eaf6429add47d0cbc04cfb72"/></dir><dir name="View"><file name="010_content" hash="d5e6f76c199865aa9ed3ecf94cf504c7"/><file name="020_not_tree" hash="3c3223f687e821acadbd7bde19bd2cfd"/><file name="030_tree" hash="9bd327687df296fd0711c6447dce9125"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir></dir><dir name="Rss"><file name="010_content" hash="14b33c43cdc5ad5c6ea380202a5164bc"/></dir></dir><dir name="Controller"><dir name="Adminhtml"><dir name="Module"><file name="010_content" hash="f510ed431b5bab046332cd6f3c38769e"/></dir></dir><dir name="Router"><file name="010_top" hash="6a76e84bcfb10be23d0eb33d8d343449"/><file name="020_entity" hash="a59adc2495266732dd52b1325a4c830a"/><file name="030_footer" hash="f7c38d8f972dea142b1361d40184e12d"/></dir></dir><dir name="Helper"><dir name="Category"><file name="010_top" hash="392f1c1f15aef77b14d030142e9e0911"/><file name="020_content" hash="b0f85cae35d0ea79785366cdbafb8c90"/><file name="030_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Data"><file name="010_content" hash="8f198e3360c8e7521d742cacdd476508"/></dir><dir name="Entity"><file name="010_top" hash="2fde677bbbfc2e09fd17262124f74a13"/><file name="020_create_list" hash="d8457e9a07ab48ba715a309441746627"/><file name="030_breadcrumbs" hash="a46e398f83bd4082a7a152d749dd1f61"/><file name="040_tree" hash="08344c280e0fd774758c61a4cc4e44c8"/><file name="050_rss" hash="520dda1d6fc1865d1ae9df572b620e06"/><file name="060_file" hash="9ed3e363751611299e4e45aecdc1fd49"/><file name="070_eav" hash="45848ed420d251949373264ba057c741"/><file name="080_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="Image"><file name="010_content" hash="4ea39c0d2c473ffe77bfc1137e4dc235"/></dir></dir><dir name="Image"><dir name="Abstract"><file name="010_content" hash="c8088806800b22611ee521e473562912"/></dir></dir><dir name="Product"><file name="010_top" hash="f1ce7ecd9ddc4aa8b2db8c2565dbb8a5"/><file name="020_content" hash="bdce693f564f5eba013a31521e405058"/><file name="030_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir><dir name="Model"><dir name="Adminhtml"><dir name="Observer"><file name="010_top" hash="45fae6e032afa21958f2fb7772d10d55"/><file name="020_entity_product" hash="173aaa3b9c38a62ad3ff6f8e64bbfa5a"/><file name="030_entity_product_save" hash="ba94bb27ccd3509ac4c5f82e4554ca7e"/><file name="040_entity_product_save_tree" hash="461d0c5305ace01323b5e007dc4197cd"/><file name="050_entity_category" hash="b1e6c102cb60ca8891ae3d77c529514c"/><file name="055_entity_category_tree" hash="7706c91cc09a7823fcaea416cec9fbfc"/><file name="060_entity_category_save" hash="8f7e379ebc7263da3999ee82250c0bfd"/><file name="070_entity_category_save_tree" hash="081d7667b0b3455880cce2704646c6e1"/><file name="080_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Search"><dir name="Entity"><file name="010_content" hash="430bc31e965daaeb9d58e27010bc6ce9"/></dir></dir><dir name="Source"><dir name="Yesnodefault"><file name="010_content" hash="4b65106d152b7f525f69b92e8ac630fe"/></dir></dir></dir><dir name="Api2"><dir name="Entity"><file name="010_top" hash="1c1fafa410c7f3594a382b60cd82b895"/><file name="020_eav" hash="c2009e3f271b934758c006563688f013"/><file name="030_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="Rest"><file name="010_top" hash="6943d53a27e5be13125d02cafd65a8a4"/><file name="015_tree_filter" hash="118d710b629243636f8bee1ccc0ca540"/><file name="020_store_collection" hash="2e424d6ea253d9d31e3cab3f314c3f8f"/><file name="030_collection_center" hash="d7dfdbb2d4155b227ae8b7419a872b36"/><file name="040_url" hash="2740a317d14cdb1bce61c804e1a30fee"/><file name="050_center" hash="26bb3431af58671f8a463bd2e0502bfe"/><file name="060_eav" hash="700b2c2a42b32d2673bfd66da6b58dbd"/><file name="070_load" hash="1c27ea317ad3606042e0bd0e02d7fc8e"/><file name="080_store" hash="4eecd5e32bd395f0cae0f774f2409528"/><file name="090_footer" hash="b2309d4a6f23d5628e45ae91e5f0bfe3"/><dir name="Admin"><dir name="V1"><file name="010_top" hash="5b5d86ac37f2e7dc488bc218617611ee"/><file name="020_tree_filter" hash="118d710b629243636f8bee1ccc0ca540"/><file name="030_footer" hash="c4e2e6415f3967822a7824b592f1a9f1"/></dir></dir><dir name="Customer"><dir name="V1"><file name="010_content" hash="f81f187ca29560a66102e518f7559ba8"/></dir></dir><dir name="Guest"><dir name="V1"><file name="010_content" hash="b6fc9dd8769b27d28722b67c267f956c"/></dir></dir></dir></dir></dir><dir name="Attribute"><file name="010_content" hash="8c70785be3fba9e4293bf460f8b4978e"/><dir name="Source"><dir name="Country"><file name="010_content" hash="c2b0da3332b0ffe9874eb5e0021ab7a6"/></dir></dir></dir><dir name="Entity"><file name="010_top" hash="31f795dbbcc01e5c599ddfbf5cfbe36d"/><file name="020_var_sibling" hash="4b7512938ed84c1851008644e1142626"/><file name="030_var_product_relation" hash="0a235d5a42529098101a1db4a7e09a7c"/><file name="040_var_category_relation" hash="acc309d3f08cd90366b56f05b32c660e"/><file name="050_construct" hash="08d00c8908572e0b0b997f5a81ed7e2b"/><file name="060_url" hash="e4b59be60c17bb5916f7693a9d804520"/><file name="070_url_rewrite" hash="68f3bace5d21beb76ecae3a14836a3d2"/><file name="080_editors" hash="b1eee42fd1b5bd76852673f6e720a9ca"/><file name="090_after_save_top" hash="3e696a9ed8b6bb6bb17a9549080fde09"/><file name="100_after_save_product" hash="ebbe3a0c8e4263543e1eab8390c58c4f"/><file name="110_after_save_category" hash="d62441af6e2443c374e2d409bc7f123c"/><file name="120_after_save_sibling" hash="03d3fd215da4502784f499bfcb0dfc80"/><file name="130_after_save_footer" hash="bdee8f14a98fb1d71110feeedfa6e5cc"/><file name="140_product_relation" hash="b935922e8a4cc2fca7dc2ef429a7071a"/><file name="150_category_relation" hash="6a19b688bb96f42cfa6f2a192cbbd979"/><file name="160_sibling_relation" hash="365a712f9a1797d56462f936d8898d44"/><file name="163_children_relation" hash="4778629c5b6175577b0659925afaa285"/><file name="165_parent_relation" hash="a5e6b9434dd2b570645d5cb54b36ecc2"/><file name="170_tree" hash="08fe1c89e0c59c1ecb8cf8cf9742f457"/><file name="175_eav_default_attribute_set" hash="a7d8bcce3193f0fcc36ab51bb357f1ac"/><file name="180_allow_comment" hash="8cd61a9ca67829edbe9d68c23727100a"/><file name="190_default_values" hash="097d3f12cda0e3cf3abd506dcdd1ba79"/><file name="200_default_values_rss" hash="646194a1ca9053973723596c20330800"/><file name="210_default_values_comment" hash="6b94a24151b5f8e646afa3b0f466e860"/><file name="215_default_attribute_values" hash="3cf469c78b16513f851023cab27e663b"/><file name="220_footer" hash="0f02e5c5b98bdf5aa1a781b00676adf1"/><dir name="Api"><file name="010_top" hash="6fd8834981a39002193c5dbd803a0073"/><file name="013_eav" hash="9470ddabf3ae917f5c1a7c64ab828e96"/><file name="014_tree_filter" hash="c767d9267165ada747dd6e38b66dd56a"/><file name="016_content" hash="715afd3c921c488be03ca702fcc48398"/><file name="017_add_eav" hash="23e74a43cae5808801c43e75522e16aa"/><file name="018_add_end" hash="c6cf5082c2aca919313c81723d94c7de"/><file name="019_update_eav" hash="79e99889476117fedf4ba4208cb7dc44"/><file name="020_update_footer" hash="a06789ebc0c9a1a0a9c95ee1e1d07558"/><file name="024_product_relation_info" hash="d8c79d9993895ddae6b22656ec00003e"/><file name="030_category_relation_info" hash="860d30c4a465eb9a911c5463e41b2861"/><file name="040_sibling_info" hash="18d4d13b426a7ee501077968fab64553"/><file name="050_info_footer" hash="f5cc640d359f31cd56e688615e914e76"/><file name="060_tree" hash="164eac71584eb3498f072f346cdfcd3f"/><file name="070_product_relation" hash="f09f9bd9b0a6b330a75b783e4bf759c1"/><file name="080_category_relation" hash="0a353f9e41824ed8cd1c718235189b00"/><file name="090_sibling_relation" hash="963e92fcb74d02267de706cc7b485077"/><file name="095_sibling_relation_tree" hash="c18bfc04bc1de27d1c7d69bd7cfb57c2"/><file name="097_get_attributes" hash="cbc4a2bab7afd5b761bde5cd6f15ae5c"/><file name="098_get_api_data_flat" hash="f5825e7a144f02a37d2ca0eb35e3418a"/><file name="099_get_api_data_eav" hash="c4ef595faa4d4a4e200badc6bceae5f8"/><file name="100_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="V2"><file name="010_top" hash="71c410ce154cf8f19c7c092033617dab"/><file name="020_product_relation" hash="4f8a836af7c07103a2458eb1a5934eb7"/><file name="030_category_relation" hash="fca88f5026f5362ebb02efb84e6960b3"/><file name="040_sibling_relation" hash="91a324ff552519e703c32f11f7eb53bb"/><file name="050_footer" hash="967560f87a90d6f3ce298622c3022261"/></dir></dir><dir name="Attribute"><dir name="Api"><file name="010_content" hash="b604da1dd0cb4d6bfe781fccf908d98f"/><dir name="V2"><file name="010_content" hash="2bc0b18f3500e13ac707fac0f0db22d0"/></dir></dir><dir name="Backend"><dir name="File"><file name="010_content" hash="4a53a37506ec061f5c18b5fcae4ccb2e"/></dir><dir name="Image"><file name="010_content" hash="d890cc8ca52dc509387edcc41ab615e7"/></dir><dir name="Urlkey"><file name="010_content" hash="0b984983ce537c8db91dad4a81a3ba7d"/></dir></dir><dir name="Source"><dir name="Attributecode"><file name="010_content" hash="d2a8fa231aaeb8157b228a744f60ce91"/><file name="020_eav" hash="565eab6bdde007ce5549c4c04f53195c"/><file name="030_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir></dir><dir name="Category"><file name="010_content" hash="843bad4119f9596e10159a5863f38c3b"/></dir><dir name="Comment"><file name="010_content" hash="558285d2e72d7b1baa581e5a4310f72f"/><dir name="Api"><file name="010_content" hash="8116ff11103d0bbb2063aebecbc96915"/><dir name="V2"><file name="010_content" hash="70ccd2ca6adb5d2677d5d364dfbf28ae"/></dir></dir></dir><dir name="Product"><file name="010_content" hash="51a5166350a2362d09e446e8c90ea40f"/></dir><dir name="Sibling"><file name="010_content" hash="10f829bac28892b7b87cde0d257f0196"/></dir><dir name="Source"><file name="010_top" hash="95a53880e82a27f59c59cc757daab698"/><file name="020_eav" hash="face552e254a9d5cb270590d66014427"/><file name="030_footer" hash="62834cfd6dd511f091c6036327f083bf"/></dir></dir><dir name="Observer"><file name="010_top" hash="2f39cf94f4778240b136a34d80ce1eae"/><file name="020_entity" hash="3be4e17190b2528d881cd9e9ef8f33aa"/><file name="030_footer" hash="54adfbade96adb4d8eb64b60f1762539"/></dir><dir name="Resource"><dir name="Attribute"><file name="010_content" hash="1dec815470580eb3bb649dad41d3f1a6"/></dir><dir name="Eav"><dir name="Attribute"><file name="010_content" hash="8f1e4a80ed73fb79bfda6c24d9fa54d3"/></dir></dir><dir name="Entity"><file name="010_top" hash="52ed0ddb8d8c3c5ab91ff55d8cd0e712"/><file name="020_tree_var" hash="803cd2c9fb0e326a8da7324d646772bc"/><file name="030_constructor" hash="6d6df4466051b610eef517de022e1565"/><file name="032_eav_construct" hash="a23e3d0786a73b5a9af2183614a0a985"/><file name="037_store" hash="a1e166e91511d02049837f550e485d57"/><file name="040_not_tree" hash="a0db425c376f08808ca74a8570ebc9bc"/><file name="045_before_save_multiple" hash="bd778b2226c5b1ff68b993d068b0eb06"/><file name="050_tree" hash="40c503c5d8c152801193aae4a6306c9c"/><file name="052_tree_store" hash="0343050748d07930db2d0009a0715cd6"/><file name="053_tree_after" hash="2d2cbab84a8052b25e1b37fed79ce638"/><file name="055_tree_eav" hash="b0f032390da9245957ebb9be758a2706"/><file name="060_tree_before_save_no_url_rewrite" hash="d0bc2fe70ff868d212e3698fdf90fe14"/><file name="070_eav_tree_before_save_url_rewrite" hash="d0bc2fe70ff868d212e3698fdf90fe14"/><file name="080_tree_before_save_url_rewrite" hash="e36fcd134b8f611d2efc466aff42280c"/><file name="090_content" hash="438df7ae371ed58cfd8fa7e805a351b1"/><file name="100_url_rewrite" hash="772b39b033f271a34aa22df73a041672"/><file name="103_url_rewrite_store" hash="2a48d4e67762841635078c3f53fc0a16"/><file name="107_url_rewrite_no_store" hash="fd7796f4e7b45835b69d18f5c1c36969"/><file name="110_url_rewrite_before_save_not_tree" hash="ad6af13f19f703ec1a8f2df31ec5defc"/><file name="120_url_rewrite_eav" hash="329d8134036b7752b137f2249f8d1440"/><file name="130_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="Attribute"><dir name="Collection"><file name="010_content" hash="4a4ecbc27408f93a04d87b7097d6ba64"/></dir></dir><dir name="Category"><file name="010_top" hash="39aaf309aada910997d87b1a2dca71db"/><file name="020_not_tree" hash="395092f56c11e09ec1ed3724d2aa319d"/><file name="030_tree" hash="1a27671b95fbc88a4e2309cbc55300aa"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="Collection"><file name="010_content" hash="ad079021de3491eead24d4b2cf009fb5"/></dir></dir><dir name="Collection"><file name="010_top" hash="e2aac1dc442877c27b919bb64b609983"/><file name="020_top_store" hash="02ac73aafce3b0f45fb49063d8d138e8"/><file name="030_content" hash="fb287480f5f5c581cd3415cfbb4d880f"/><file name="040_store" hash="d8db10c2a523f91f9b6416a746db75c2"/><file name="050_tree" hash="12df937d796c84906cb8d935cd6d4032"/><file name="060_not_tree" hash="aa562dd58bc027412d1cb2b1ee49e26b"/><file name="070_product_relation" hash="1546d5a1607cd6b36687dad4d8ffc447"/><file name="080_category_relation" hash="750d894c947bf1b965c4020f5b5aad34"/><file name="090_sibling_relation" hash="c23388818a8a79df074a74721aa95902"/><file name="100_footer" hash="f53d84c0a99e10a5839cbe00d7758894"/></dir><dir name="Comment"><file name="010_top" hash="c27763a3ceebc3040d72625c83f61fac"/><file name="020_store" hash="3c2ecae139ef84007951cf382e3b91d2"/><file name="030_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="Collection"><file name="010_top" hash="ab17d39abbecb97d7f4b0050f8a73153"/><file name="020_top_store" hash="02ac73aafce3b0f45fb49063d8d138e8"/><file name="030_content" hash="fb287480f5f5c581cd3415cfbb4d880f"/><file name="040_store" hash="40b8268a6b02d72e102aa6a8010c8d25"/><file name="050_footer" hash="f53d84c0a99e10a5839cbe00d7758894"/></dir><dir name="Entity"><dir name="Collection"><file name="010_top" hash="c07f6aa18d1deb31f2ca3d337c487f15"/><file name="020_store_var" hash="3620225301b89a45fa4c15b7eb9c4b7a"/><file name="030_construct" hash="f5359fb3850daff182c56af87ffe2a49"/><file name="040_construct_store" hash="a4e310f526aedfdc272bd0506575b47f"/><file name="050_content" hash="9a2d9499cd23a37d7b7bf38fb1074e43"/><file name="060_eav_title" hash="708315d25bb5703319b586075e3c854c"/><file name="070_more_content" hash="811fe686230a300c3a7cd4a6124f6b2f"/><file name="073_select_count_store" hash="aa326fbcfdd7292d99b0207c87db1348"/><file name="075_select_sql" hash="119d632bcf5e5f00de1b3e82de27bb0c"/><file name="080_store_top" hash="42aac25b822ee9a76bf90ed29086c89b"/><file name="090_flat_store" hash="e5fa3cb0b097373b7b9ccdc207ba7607"/><file name="100_store" hash="40e089a5b2e560b3704c558a29ff853d"/><file name="110_filter" hash="f06c225b111cd561ea42442cbddc820b"/><file name="120_store_filter" hash="3a97b2f851b75e134d9386eab2864fb7"/><file name="130_footer" hash="cf9e3a21123b393055caace4283d9cf4"/></dir></dir></dir><dir name="Product"><file name="010_top" hash="54bee728d2b28478580d9775b465fe0c"/><file name="020_not_tree" hash="c1f8116878e4bc7f55474793f5ea8fc1"/><file name="030_tree" hash="ce58097cbcd22db0917b94672f007fb5"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="Collection"><file name="010_content" hash="e09ca44678a76f7a1a62078dec473ed8"/></dir></dir><dir name="Sibling"><file name="010_top" hash="63ad063ff499996377e437e1c982ee42"/><file name="020_save_relation" hash="1bb5232b3965901d947a8e93555ebde3"/><file name="030_save_relation_tree" hash="8fd13f972d33aa73064c524fc6b5eed1"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="Collection"><file name="010_content" hash="d7c1feb03479792547216ef160201fb3"/></dir></dir><dir name="Tree"><file name="010_top" hash="d94eb147e0b86237b8571ec56408d751"/><file name="020_eav" hash="756d3fa32a2607a3fe1179fd0dbcb89f"/><file name="030_content" hash="f93f44659f99d936f6114dd5d12f2b25"/><file name="040_flat_collection" hash="18a3ae2dc1fdb9b4ad8612942878b735"/><file name="050_eav_collection" hash="dda84ce3ad429c1311147aedfb1e7200"/><file name="060_footer" hash="ec6aa607fd5a32c77f6c69883f26bd5e"/></dir></dir><dir name="Setup"><file name="010_top" hash="10ddb159051eeb6b5f3a365075df6c27"/><file name="020_eav_top" hash="8fbeb530b4e7be6b20feffa4055a397b"/><file name="030_eav" hash="2a67d14756e724608b88947dbce2f2a2"/><file name="040_eav_footer" hash="e239c95376c76b802f24d1d0e75e6323"/><file name="050_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Module"><dir name="Entity"><dir name="AttributeController"><file name="010_content" hash="22b48b83e785b7a3ab39f6f2df017b2d"/></dir><dir name="Catalog"><dir name="CategoryController"><file name="010_top" hash="da38228f766c1f6110b3eee4f29aa3ff"/><file name="020_not_tree" hash="eeccc102e390d8ef2e5bd9a35caf5d51"/><file name="030_tree" hash="498b2762986db20e32272298356b46f1"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="ProductController"><file name="010_top" hash="017c2ad6dd7dcafa16456f8a72ba7530"/><file name="020_not_tree" hash="e8227936a2baf50dc23ea45dd3e689c0"/><file name="030_tree" hash="5ea06f642a2eb06c325383bacf5fd0a2"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir><dir name="CommentController"><file name="010_content" hash="710884a2484cf47da0094774a46491b6"/></dir><dir name="WidgetController"><file name="010_top" hash="401bc2877ec22157889b662ad7369bca"/><file name="020_tree" hash="4ca3ce9a440967216f09b7b0daf85280"/><file name="030_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir><dir name="EntityControllerEavNotTree"><file name="010_top" hash="5d2787a18e2c2c2deff29843ba134ab7"/><file name="020_save_product_relation" hash="5f64d703ad51f457791021034dac9a22"/><file name="030_save_category_relation" hash="97e2d1bb3c452bc1977c6cc29762266a"/><file name="040_sibling_save" hash="e5a3043a283aafc6c202db9210d26b0b"/><file name="045_sibling_save_tree" hash="5798921bd354c057e3b952885f068814"/><file name="050_middle" hash="9b65758c552847e9511b71b64f6e4c11"/><file name="060_mass_action" hash="4760d1e79c619d606ddfad74f72fdd27"/><file name="065_mass_parents" hash="15d0f2a1dc964f5c2779fa53e09e5840"/><file name="070_product_relation_actions" hash="dff5825fb9ffdcdf851ddf1e78331c2e"/><file name="080_category_relation_actions" hash="5a1adebee4394d06171f9f0dc74e63eb"/><file name="090_sibling_grid" hash="9f437e1f0ff316bc4f08ffb19b8471e9"/><file name="100_sibling_actions_tree" hash="ec816c2575fdd3d5921decf6c486215e"/><file name="110_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="EntityControllerEavTree"><file name="010_top" hash="ebd5ae7a078df0a90473cde61203dc29"/><file name="020_product_data" hash="ef35afd04bfedbdd9a08dbb2254eabdd"/><file name="030_category_data" hash="97e2d1bb3c452bc1977c6cc29762266a"/><file name="040_sibling_data" hash="cf7e5061ac1cf2d8600e5f545954de2c"/><file name="045_sibling_data_tree" hash="5798921bd354c057e3b952885f068814"/><file name="050_real_save" hash="cedbb11e16dab61867f9cfa8182da39b"/><file name="060_product_relation_action" hash="3827c87fbd6c722791ab202a385deff4"/><file name="070_category_relation_action" hash="2993db7b85b7164b88cd8d9ef2fd92c6"/><file name="080_sibling_actions" hash="58e028e693705952165fe5677ccc543d"/><file name="090_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="EntityControllerFlatNotTree"><file name="010_top" hash="c42ffcf05fbe24b0828ea4b5f0abe0bd"/><file name="020_upload_image" hash="8eb947a4dbf6989e635fd5ce1381d0d0"/><file name="030_upload_files" hash="424e24cfae698c29d36d405d060617f2"/><file name="040_save_product_relation" hash="5f64d703ad51f457791021034dac9a22"/><file name="050_save_category_relation" hash="97e2d1bb3c452bc1977c6cc29762266a"/><file name="060_save_sibling_relation" hash="4857f358e471ec22bb35b893b5e8aaab"/><file name="070_save_sibling_relation_tree" hash="5798921bd354c057e3b952885f068814"/><file name="080_save" hash="a74adf52f0b222e1a30990e75e1f2860"/><file name="090_exception_upload" hash="ca7b53f3c03d0c3e0c926ad312ef1981"/><file name="100_exception" hash="00f90ef0513b82fffc0f19585ac7cd8b"/><file name="110_center" hash="c74f082a97590533a66550d04cd28501"/><file name="120_mass_update" hash="3ace1d78a8dab8648a85047515395bbf"/><file name="130_mass_parents" hash="15d0f2a1dc964f5c2779fa53e09e5840"/><file name="140_product_relation_actions" hash="dff5825fb9ffdcdf851ddf1e78331c2e"/><file name="150_category_relation_actions" hash="5a1adebee4394d06171f9f0dc74e63eb"/><file name="160_sibling_actions" hash="eded044ea2c515756bf78dbbd48154ca"/><file name="170_sibling_actions_tree" hash="ec816c2575fdd3d5921decf6c486215e"/><file name="180_footer" hash="1de3e8c1cf941195894ba438de23b6cf"/></dir><dir name="EntityControllerFlatTree"><file name="010_top" hash="399f46b7f4f1ed5e05223ef4d6b33e69"/><file name="020_wysiwyg" hash="d43e8888ad2c3a2be5e9ab4f6c8ea112"/><file name="030_save" hash="89499414fd87eee842bf7c68c5b72ace"/><file name="040_upload_image" hash="8eb947a4dbf6989e635fd5ce1381d0d0"/><file name="050_upload_file" hash="424e24cfae698c29d36d405d060617f2"/><file name="060_save_continue" hash="517334331bc285ac1fd2a395bb110af6"/><file name="070_product_data" hash="69fb7236c7346aa998a68aee646904c6"/><file name="080_category_data" hash="97e2d1bb3c452bc1977c6cc29762266a"/><file name="090_sibling_data" hash="cf7e5061ac1cf2d8600e5f545954de2c"/><file name="095_sibling_data_tree" hash="5798921bd354c057e3b952885f068814"/><file name="100_real_save" hash="ae703e1d79cbb3b989a3e79d68616d7e"/><file name="110_product_relation_action" hash="3827c87fbd6c722791ab202a385deff4"/><file name="120_category_relation_action" hash="2993db7b85b7164b88cd8d9ef2fd92c6"/><file name="130_sibling_actions" hash="58e028e693705952165fe5677ccc543d"/><file name="135_sibling_actions_tree" hash="ec816c2575fdd3d5921decf6c486215e"/><file name="140_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir></dir><dir name="Entity"><dir name="Customer"><dir name="CommentController"><file name="010_top" hash="9f62f4cf9623a20a21051add6d53e33a"/><file name="020_entity_eav" hash="e3928f0c5176f7ef8c2e9c1cfc5c7e39"/><file name="030_entity_flat" hash="8111faf8ab205e42f80a01364e910d90"/><file name="040_store" hash="35770a11b9af34946533859a9bfd1c8f"/><file name="050_entity_flat_store" hash="15a379ec302d933bc618a8f3b19c6b93"/><file name="060_footer" hash="e20522e04290376a1e49520b11206983"/></dir></dir></dir><dir name="EntityController"><file name="010_top" hash="86d72db023b8b448068a4c156b29e630"/><file name="020_list" hash="446e82cd88ff847dbcb2c0d80b8ee542"/><file name="030_list_seo" hash="f2ca1a03f3af0b0e6fac01d698bf5b4e"/><file name="040_list_footer" hash="765f671c6c8df0b2dc138adadaef66d8"/><file name="050_view" hash="72625bb483a975414a34ff7ba6add736"/><file name="060_view_tree" hash="3fe6f66fcb554cb3ba4a0d60cbafc912"/><file name="070_view2" hash="25a8b855f1d531064b2e1c1b7aee060f"/><file name="080_breadcrumbs" hash="317bbb91ae8b80682df6f82f6b325ec3"/><file name="090_breadcrumbs_tree" hash="0d01c24d56ce14a946209225180a15f7"/><file name="100_breadcrumbs_footer" hash="4c00b1852b26c7782dc7ef0af43bf688"/><file name="110_view_seo" hash="df29b452c36d9f51c93ad3442f09089f"/><file name="120_view_footer" hash="765f671c6c8df0b2dc138adadaef66d8"/><file name="130_rss" hash="b64a15b83af918ffd04a7923436d8978"/><file name="140_comment" hash="fc67e1a965ff7ece556c426bdee0af0a"/><file name="150_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir><dir name="data"><dir name="namespace_module_setup"><dir name="data-install"><file name="010_top" hash="9baa375f86c77c971bdf4ff58a1c0490"/><file name="020_entity" hash="bf3f9669f77cc9123c49814307991d2b"/></dir></dir></dir><dir name="etc"><dir name="adminhtml"><file name="010_content" hash="5b38ce3527f5c51f6159da6d5dccabdb"/></dir><dir name="api"><file name="010_top" hash="867c51b5c21efd691c7c3df3af4bc693"/><file name="020_entity_api" hash="b31ed12c80316bbdf61b6ff04eb3a51f"/><file name="030_resource_alias" hash="b943f39407ab6131bf93d6e6e44936e8"/><file name="040_entity_resource_alias" hash="d7f51e1ed157c61dda3ddb9a22f484fc"/><file name="050_v2" hash="12dcbc42e0ec81ef5f8d0d563fbf885f"/><file name="060_v2_entity" hash="c0e32ae7d754a1d36302a501ff23ca18"/><file name="070_acl" hash="4f900c28a8eef538b9f5710b6116631e"/><file name="080_acl_entity" hash="9f3c85df11943be774a2a6bf316e66e1"/><file name="090_footer" hash="325809a4d6fd615e7c2c9743b3655c53"/></dir><dir name="api2"><file name="010_content" hash="3cee98654e6d59b601235e45dcf4d2b6"/></dir><dir name="config"><file name="010_top" hash="5b6ad2628b143dcae6b168ca4bf14904"/><file name="020_tables" hash="81a36d80bacf44a97c8d59887d0e2164"/><file name="030_store_tables" hash="73114fc78d20c8ab8f8d79a3d984dc87"/><file name="040_siblings_table" hash="e362aa300301fc423c8641ad434f0eac"/><file name="050_product_relation_table" hash="ab5676590138330d4ff36a15002bee5d"/><file name="060_category_relation_table" hash="5ed5fbeaab8d1fd7ca3dbc1343d71f0a"/><file name="070_comment_table" hash="c0181d16ba7087f4f981bfcc1c6dc8ad"/><file name="080_comment_store_table" hash="2d19f290726a6a9a80f534fd404595e0"/><file name="090_eav_attribute" hash="49b2ecc7c4d9940bb4e934b11df4dbbc"/><file name="100_global" hash="bcc43369c66a79dd5ceb6ca31cd944b1"/><file name="110_url_rewrite" hash="b9020832f4c9d77474687d409bf07369"/><file name="120_adminhtml" hash="750c8c73a53ba5d80148cf5628468efd"/><file name="130_relation_events_top" hash="7d655aaf8e39e8e21234c4589e9c0f75"/><file name="140_relation_product_top" hash="5edc7f53f573872a9bfd6122f3961702"/><file name="150_relation_events_middle" hash="6f4be5a184572f9a5ec53e1bc6341380"/><file name="160_relation_category_top" hash="e07d99af7575f411274c0e2b86aa144c"/><file name="170_relation_product_bottom_start" hash="c4389c5178de3b3491d021f6bd292e35"/><file name="180_relation_product_bottom" hash="2cac1148f2d56395435902be1d350d36"/><file name="190_relation_product_bottom_end" hash="cddbb3962c99a02f3b7e449b7c02baf1"/><file name="200_relation_category_bottom_start" hash="a5ea816ddaf504e565945c4fa5c5c93d"/><file name="210_relation_category_bottom" hash="e6776a83e08a397b8a3ca255bdf386e4"/><file name="220_relation_category_bottom_end" hash="1d55309dbdeb0dd473ef6a8bac71a785"/><file name="230_relation_events_bottom" hash="a5862d4611e980ff9553372b34560ce6"/><file name="240_global_search_top" hash="949ac50acd8c5fe3b68b66204d00e938"/><file name="250_global_search_entity" hash="3db0a74a189b145960107a16dc86086a"/><file name="260_global_search_footer" hash="4387151e9004196f17df55f4031fb471"/><file name="270_admin" hash="c1df2cc861cbb4644e6f0b8d46896664"/><file name="280_frontend" hash="17f720c665a0c4c3d2d6f0b21cae4139"/><file name="284_router" hash="9e4cb67792931dd76b552305e61e125f"/><file name="287_frontend_footer" hash="51f85cf376369ebf50cf3701b469b1c9"/><file name="290_default_top" hash="c81ae31e57983c412c3f286b83a20a5c"/><file name="300_default" hash="0daa38656f72266230a6ee8162a0353d"/><file name="310_default_footer" hash="8d9422cb320d29d38c21c42f22c00c1f"/><file name="320_footer" hash="5766fab0272399ec661c78736a631dc1"/></dir><dir name="system"><file name="010_top" hash="213a55275becea72f93398fb19813039"/><file name="020_entity" hash="091e1ee91fde3b161f3da0988aa7f710"/><file name="030_footer" hash="626d555d520d969b4eba12d3b6dc32c0"/></dir><dir name="widget"><file name="010_top" hash="29a6efa02a0f04ce056cc53d0b4e2272"/><file name="020_entity" hash="acff756a0ba07434c3ffb280b90af55c"/><file name="030_tree" hash="305740f2e0e3bb6ef2959d1c60476c4c"/><file name="040_footer" hash="cef2c02165fc166d7f62359f295c776a"/></dir><dir name="wsdl"><file name="010_top" hash="17165c0a86e1cec22cf8daf487086939"/><file name="020_entity_types" hash="7c4b90a6ee31d11cfff79eac452bc574"/><file name="023_entity_comment_types" hash="99ef208d5e2cd4c0c94a4514e2c5b038"/><file name="026_entity_attribute_types" hash="9fdc466d3ee17f47abe4f3012ddf7a16"/><file name="030_schema_footer" hash="b108663b3854ef338073d82182c99e63"/><file name="040_entity_messages" hash="d3e739a2efae20883d9ebf4149c46507"/><file name="043_entity_comment_messages" hash="d515922a475bcc48492416fe5205cf48"/><file name="046_entity_attribute_messages" hash="c3374cad433dee3ceecb4ccb950f58e5"/><file name="050_porttype_top" hash="1bc699e11eacc6c8df7326525db516d4"/><file name="060_porttype_entity" hash="adeb7d5741d6578fed57e8db68e50d0b"/><file name="063_porttype_entity_comment" hash="8fdacfec6cb6383961730d5a8fd1f15a"/><file name="066_porttype_entity_attribute" hash="82406651e497f919b7ab1efcd9dc263d"/><file name="070_porttype_footer" hash="d47918d188cadf66538eb0d81b382520"/><file name="080_binding_top" hash="6c9a2fa40d2d8ce3e8f5bd69574f16c5"/><file name="090_entity_binding" hash="a09b0b6dd147a65d5ead46ad0b910174"/><file name="093_entity_binding_comment" hash="9a57fd5962d4e1f369f126dbd9439fc3"/><file name="096_entity_binding_attribute" hash="7ee2aa999385c857a4e82f85beafbec8"/><file name="100_footer" hash="fd1c8b122b4873e1e68d94929e44fba7"/></dir><dir name="wsi"><file name="010_top" hash="a0c873516a509f5d9da5f17345540ec8"/><file name="020_entity_types" hash="ad25a26d30bf2dafbcd8a514b8b04395"/><file name="023_entity_comment_types" hash="2944750eb27bd12cc57be639220da60e"/><file name="026_entity_attribute_types" hash="48a70b7e2ef28331b84adabb948ea151"/><file name="030_schema_footer" hash="6e5916b770444e599eb9b9fe9454302a"/><file name="040_entity_messages" hash="98db3bd67659f19d66b22e7ed8607d0b"/><file name="043_entity_comment_messages" hash="8ba13f08ac9abafa741777d9b34d5c5a"/><file name="046_entity_attribute_messages" hash="e2df4b87853fe7e1dc8978e5c6b43e29"/><file name="050_porttype_top" hash="5ef5138db4c8c80c945359baa23f0102"/><file name="060_porttype_entity" hash="f4c0fd664d81b2337dd675ad297c535c"/><file name="063_porttype_entity_comment" hash="c59251b07a2317a33f98121c20d7b291"/><file name="066_porttype_entity_attribute" hash="9ab778046249f0f75f37e6f7a7926f87"/><file name="070_porttype_footer" hash="6c49b132200e7cb361cc8379736af66b"/><file name="080_binding_top" hash="5fe0693515fd41176023a7b5ee52ff31"/><file name="090_entity_binding" hash="b3334a6ec6e894350104009fc604c07b"/><file name="093_entity_binding_comment" hash="a41e98f20978067107bc1d03589c1135"/><file name="096_entity_binding_attribute" hash="862d06d59664343b00c28b48e9042952"/><file name="100_footer" hash="d58e080977127430d922eec5ed9be32a"/></dir></dir><dir name="sql"><dir name="namespace_module_setup"><dir name="install"><file name="010_top" hash="b626615168f25d23e910d0ee731cd010"/><file name="020_entity_flat" hash="8e4b8c5bd1b349028a7f091610826a9a"/><file name="030_entity_store" hash="5a880c3319500d9f7a0ac2355377f91d"/><file name="040_entity_eav" hash="dd4148c35d0a6728931461e26a06d679"/><file name="050_product_relation" hash="0318d0b29d914aaf23eb2ab96fd5ceec"/><file name="060_category_relation" hash="6c4ab8177a09a19b1e9c0e608914da94"/><file name="070_comments" hash="1e3850eeca0ddb910bdc7a687e1cf161"/><file name="080_comments_store" hash="98792a81673a34296b2985e6b1ecb9eb"/><file name="090_sibling_relation" hash="98a41a2f9c90bccffa10ea294d5038f3"/><file name="100_has_eav" hash="376ee9448c597d8f5742aee9c9fddcef"/><file name="110_product_attribute" hash="067cf2c53917c651e122575cb5378286"/><file name="120_category_attribute" hash="a8bbc66944d73b1f8a8510bb74b1b898"/><file name="125_eav_options_default" hash="c2798f5b82089781ace1074bec6e7fe7"/><file name="130_footer" hash="72aa99adf9ca490f11fabcedd5290fc4"/></dir></dir></dir></dir><dir name="design"><dir name="adminhtml"><dir name="layout"><dir name="namespace_module"><file name="010_top" hash="c657e63ddce2df350b7d45c57620e967"/><file name="020_entity_not_tree" hash="9a4c1b28ee061042cc76a236da9d86a8"/><file name="023_eav" hash="a90cef461e9496016b4d5d1818ec50b2"/><file name="027_entity_not_tree_footer" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="028_entity_edit_eav" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="029_edit_footer" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="030_relation_product" hash="147ec1c3620a12c30d8c7fbf4a047bb0"/><file name="040_relation_category" hash="e0c37abbaae3c58705a8921c3f10d13d"/><file name="050_relation_sibling" hash="4b7a308623c095ba6ef28ecb70cffee2"/><file name="060_entity_tree" hash="f75243adcc56c69711cb7dca55dee7d0"/><file name="070_relation_product_tree" hash="29adcc4c866977bbda2939a48b3f9377"/><file name="080_relation_category_tree" hash="a2f99eefe2903a2bbcab8b6282c48328"/><file name="090_relation_sibling_tree" hash="87af8f9a93be9ade1f8ebd73de47b80f"/><file name="100_eav_attribute_edit" hash="01db5571ca8b30844fb404563fefcffd"/><file name="110_comment" hash="338f02e3de7f86d2b28f112c96dcf143"/><file name="120_footer" hash="e38301056eb83a4de70947444e0e047f"/></dir></dir><dir name="template"><dir name="namespace_module"><dir name="attribute"><dir name="js"><file name="010_content" hash="88a5e01babe2d4e8d45bdb69a0dcf9c5"/></dir></dir><dir name="catalog"><dir name="category"><dir name="tab"><dir name="entities"><file name="010_content" hash="14dddd04c3798f3714f5263c95335f3c"/></dir></dir></dir><dir name="product"><dir name="edit"><dir name="tab"><dir name="entity"><file name="010_content" hash="4e2496ed7414b06c0b68a93cbeba3b34"/></dir></dir></dir></dir></dir><dir name="entity"><dir name="edit"><file name="010_content" hash="457f5e7ee94eaa075549b402cc04c90d"/><dir name="form"><file name="010_top" hash="5d504dea5b45f8af43a0d6e7c9d851f3"/><file name="020_product_hidden" hash="86402e52c83df9cbae8f0af1b281b912"/><file name="030_category_hidden" hash="e2ecbfcd825531e55174a97d833d339e"/><file name="040_sibling_hidden" hash="d1b52e8c4306a5689198d8020921a466"/><file name="050_content" hash="86d631712b4dc672bbf543e72edbac01"/><file name="060_product_relation" hash="20632de5f0caa7b33fde47fa6ae91dec"/><file name="070_sibling_relations" hash="62f27a022840d3fa15f217664454ca3b"/><file name="080_footer" hash="f5b26f293440dfb08e77e30e6eab9eee"/></dir><dir name="tab"><dir name="categories"><file name="010_content" hash="5833c90e662af9e44ac764b230d3b131"/></dir><dir name="sibling"><file name="010_content" hash="44c9f6b54559c7939b0275b1211f18b5"/></dir></dir></dir><dir name="tree"><file name="010_not_eav" hash="05b8c2e11f6db22e0e3de68d18605582"/><file name="020_eav" hash="29e7479f4da2b2cdcba0838bf96369a7"/></dir><dir name="widget"><dir name="tree"><file name="010_content" hash="4fafa06db66187e73fbf4e0c525791be"/></dir></dir></dir><dir name="form"><dir name="renderer"><dir name="fieldset"><dir name="element"><file name="010_content" hash="e8718e51805c0ca1eebdfc27557f579f"/></dir></dir></dir></dir><dir name="grid"><file name="010_content" hash="6651c76539c9fbc066d14bfa5f8b6d25"/></dir></dir></dir></dir><dir name="frontend"><dir name="layout"><dir name="namespace_module"><file name="010_top" hash="15cdb696e6db3f0724b315d817774edf"/><file name="020_comment" hash="24c52d027dd42a0355d12563a4654d16"/><file name="060_list" hash="6c7e4b877f895c0159171f4e6c6a103c"/><file name="070_view" hash="b9963e0c35ccc5b228531e6623905995"/><file name="080_entity_rss" hash="da751f73d104cf1daa35e39753b4e8d3"/><file name="090_rss_top" hash="5546694e606a9b3be3167398144f1fe0"/><file name="100_rss" hash="c0d78771dd8ceb256e10dc158fa4f113"/><file name="110_rss_footer" hash="8a0ce083998ffae9647b1dfce6ff28d7"/><file name="120_relation_product" hash="ccb980dcb8b4672df02ecc58821ab7e2"/><file name="130_relation_category" hash="14472da688c261667c742a8479b8aeb3"/><file name="135_entity_comment" hash="7e811871e23a1d44b4b34779a00de792"/><file name="140_footer" hash="e38301056eb83a4de70947444e0e047f"/></dir></dir><dir name="template"><dir name="namespace_module"><dir name="catalog"><dir name="category"><dir name="list"><dir name="entity"><file name="010_content" hash="255e7a9acb16106c8708c40aa92741e5"/></dir></dir></dir><dir name="product"><dir name="list"><dir name="entity"><file name="010_content" hash="8b3559297dc3824c14d09a46a188f749"/></dir></dir></dir></dir><dir name="entity"><dir name="catalog"><dir name="category"><dir name="list"><file name="010_content" hash="46e48fce4680a1725c1c285ac61e55a8"/></dir></dir><dir name="product"><dir name="list"><file name="010_content" hash="2e394b64cb6ecbf8975083ccbe69b709"/></dir></dir></dir><dir name="child"><dir name="list"><file name="010_content" hash="5a0ecef8ff01c476373504ae2032329b"/></dir></dir><dir name="children"><file name="010_content" hash="8485f70bdc2a819f432375d643099268"/></dir><dir name="comment"><dir name="form"><file name="010_content" hash="f2f695b4da6462e954eba77a4b369ec2"/></dir><dir name="list"><file name="010_content" hash="8649e79743f7d5dc6a634d3ef656ede6"/></dir></dir><dir name="customer"><dir name="comment"><dir name="list"><file name="010_content" hash="7fb9364fe69c4d40f6514cb7fd988a03"/></dir><dir name="view"><file name="010_content" hash="09d7914ec8ea7166ed90151cc9298a7d"/></dir></dir></dir><dir name="list"><file name="010_top" hash="a7cc8748eb003a18af68f7abc7164522"/><file name="020_rss_link" hash="7053e8c95be2facf2673b3b4d7a9bc99"/><file name="030_footer" hash="bb5d1c8a7a9070c10402dc152d736c09"/><file name="040_footer_is_tree" hash="28067e09720d62f0e928a09eeee94de8"/></dir><dir name="sibling"><dir name="list"><file name="010_content" hash="63893b913cb62e847712b408caa43cfb"/></dir></dir><dir name="view"><file name="010_content" hash="709e3570777e6e3ee5cb4453940bb06b"/></dir><dir name="widget"><dir name="link"><file name="010_content" hash="f38d2755f4ffda5d801117ed1fbfce0e"/></dir><dir name="subtree"><file name="010_content" hash="d4ca6ed68bf9cd7c69a75cf2852aa7db"/></dir><dir name="view"><file name="010_content" hash="e3907ff9a83026d7a54701f55fb06d23"/></dir></dir></dir><dir name="rss"><file name="010_content" hash="98fb61cdce9133a0b68f3ed5fb00827e"/></dir></dir></dir></dir></dir><dir name="etc"><dir name="modules"><dir name="Namespace_Module"><file name="010_content" hash="a41ceeea2ef52bd7108aab9e3724d6e4"/></dir></dir></dir><dir name="locale"><file name="010_global" hash="406695b232401f92114f0228223960cb"/><file name="020_entity" hash="7b3b9580e421493434ae3e498c48bbd0"/><file name="030_attribute" hash="0bc9532d35587f2225e398156cc3ef7f"/><file name="040_rss" hash="5e72d78710b03b014b69a492438d5602"/><file name="050_seo" hash="1c5889d31d3410540715b6c866966178"/><file name="060_attribute_yesno" hash="20eaf2d5eaa8224e5fa1c7a63634b1c0"/><file name="070_file" hash="8bebcdd48d5ae7b533cc53e789f03ef2"/><file name="080_product_relation" hash="b96f377dfa788f2772f2f8b7f156aebd"/><file name="090_category_relation" hash="5e8c099f6269eb2c18bac7003c40950b"/><file name="100_relations" hash="b7e6d3ed392ec8f0083588e7feb20bad"/><file name="110_tree" hash="37bf0971ca18e0e4222ae2b0d3ba6311"/><file name="120_tree_entity" hash="0ebe3d6c664ef1eece3031a0fc1558b8"/><file name="130_url_rewrite" hash="9b4c0c91f4e5001812d825503841433e"/><file name="140_api" hash="58e27bb8ef0a04a711e20207dce037a4"/><file name="150_api_entity" hash="5f79e38c8a97f2e171eedc2d5246910d"/><file name="160_api_product_related" hash="f6875de876ab6e34595e5513aa35628b"/><file name="170_api_category_related" hash="06843fd4b33897e431ac4f86190e4433"/><file name="180_api_tree" hash="99bae32405e8a3eff292b0a12fd972f5"/><file name="190_api_sibling" hash="096605fae72bf35317dc4601406a23d0"/><file name="200_entity_eav" hash="f07b6cabd42c0a2878b68d6f786f2cfc"/><file name="210_eav" hash="af526c63d99167884a226b43580fb305"/><file name="220_entity_comment" hash="81d3484f7ab23fe3fa48f691017ec954"/><file name="230_comment" hash="31344b22a3622cb2e8d16fd509579000"/><file name="240_comment_store" hash="0cfb47a807925d64f8c69d97731a0c01"/><file name="250_api_comment" hash="bf31f09d8ae78799d3f037749cf17875"/><file name="260_eav_api" hash="6bee23c604fa04bf8b97571b30a26ec7"/><file name="270_frontend" hash="dd6eb8db5b99a5d5412106f3b11f0948"/><file name="280_entity_seo" hash="69afaf0eb278d53a50f8b56b80f810fa"/><file name="290_rest" hash="5fa69e22784f680e3f6b25254c097e74"/><file name="300_rest_entity" hash="a5a9c01f79a015f1041ab61de0ddfffa"/><file name="310_parent" hash="67424563811389a605b8d2d1be287a90"/></dir></dir><dir name="skin"><dir name="css"><dir name="namespace_module"><dir name="tree"><file name="010_content" hash="ebab2fbc43a5609ca870e49ca1e5be79"/></dir></dir></dir><dir name="images"><dir name="namespace_module"><dir name="collapsedgif"><file name="010_content.gif" hash="ef74c08289e94b7aae81766fb00d4195"/></dir><dir name="collapsedpng"><file name="010_content.png" hash="0613450d25c762b6a40c51768b02462d"/></dir><dir name="expandedgif"><file name="010_content.gif" hash="3f5512a54f359343273caf7b3787ee8a"/></dir><dir name="expandedpng"><file name="010_content.png" hash="f7f28ae897708c78b28ead22c3692bb8"/></dir><dir name="line1gif"><file name="010_content.gif" hash="65b0c812c8d57ea72b84fc69a077a40a"/></dir><dir name="line1png"><file name="010_content.png" hash="4e01064a2c78b8885f65ff7a40f78c02"/></dir><dir name="line2gif"><file name="010_content.gif" hash="95fc5c58069ece5eb44e198ee53b3fe1"/></dir><dir name="line2png"><file name="010_content.png" hash="6adbb4ca64d943f5ee5528d713757fde"/></dir></dir><dir name="placeholder"><dir name="entity"><file name="010_content" hash="4b2c997fd2142a6dab492f82269dd310"/></dir></dir></dir><dir name="js"><dir name="namespace_module"><dir name="tree"><file name="010_content" hash="fbfaa20b029a6a8679c21b3b8932ab0b"/></dir></dir></dir></dir></dir><file name="system.xml" hash="d921fe7409ddf9fb30e439a4766f643a"/><file name="umc.xml" hash="a9a2d21710e90558c104f7cf08283944"/><file name="umc_source.xml" hash="04a92a6d25b470e276ca4a1ed3671d54"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="ultimate_modulecreator.xml" hash="c2a7eacd872e0149a21f6d1b2a6712e9"/></dir><dir name="template"><dir name="ultimate_modulecreator"><dir name="edit"><dir name="tab"><dir name="entities"><dir name="entity"><file name="attribute.phtml" hash="1653a058cdeb4ad723493f2bbb22ef23"/></dir><file name="entity.phtml" hash="39ba62b4cf330df1136a44f1912795eb"/></dir><file name="entities.phtml" hash="c647c306a75d9212b538642d4fa5b53e"/><dir name="help"><file name="fieldset.phtml" hash="0eba0b67b3ef0935c73db56657ec98b8"/></dir><file name="help.phtml" hash="31f035951bbd8a23bf372401ebb784e3"/><file name="relation.phtml" hash="975cc452bda652141f17f9b446c9adf5"/></dir></dir><file name="edit.phtml" hash="7b65e0bd3c93f51d95fe001ae2874a09"/><file name="tooltip.phtml" hash="cb545a9f068cf348a6546295daad3834"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Ultimate_ModuleCreator.xml" hash="82c74149ad25681e1490577ddb609d18"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Ultimate_ModuleCreator.csv" hash="ceeca438e9e52de58768dd89c98e4f1b"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><file name="ultimate_modulecreator.css" hash="8079fa763d027f90d98ae86ccb0a588e"/><dir name="images"><dir name="ultimate_modulecreator"><file name="collapsed.png" hash="0613450d25c762b6a40c51768b02462d"/><file name="expanded.png" hash="f7f28ae897708c78b28ead22c3692bb8"/><file name="line1.png" hash="4e01064a2c78b8885f65ff7a40f78c02"/><file name="line2.png" hash="6adbb4ca64d943f5ee5528d713757fde"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="js"><file name="ultimate_modulecreator.js" hash="b69279b7c1c8f4e2d504d52a68d0ed01"/></dir></target></contents>
21
  <compatible/>
22
  <dependencies><required><php><min>5.0.0</min><max>7.0.0</max></php></required></dependencies>
23
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Ultimate_ModuleCreator</name>
4
+ <version>1.9.4.1</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/MIT">MIT License</license>
7
  <channel>community</channel>
9
  <summary>Develop custom Magento modules without writing any code. Use a module creator. Use this module creator</summary>
10
  <description>This module allows you to create custom Magento modules for your own entities. You can create as many entities as you want in one extension, you can establish relations between them, decide to generate only back-end pages or both back-end and frontend pages.</description>
11
  <notes>Feature&#xD;
12
+ - Support for URL rewrites for entity list pages&#xD;
13
  &#xD;
14
+ Bug Fix: &#xD;
15
+ - EAV tree entities admin tree not refreshing on save&#xD;
16
+ &#xD;
17
+ Improvement&#xD;
18
+ - Cleaned a bit the code&#xD;
19
+ </notes>
20
  <authors><author><name>Marius</name><user>tzyganu</user><email>tzyganu@gmail.com</email></author></authors>
21
+ <date>2014-08-27</date>
22
+ <time>06:32:57</time>
23
+ <contents><target name="magecommunity"><dir name="Ultimate"><dir name="ModuleCreator"><dir name="Block"><dir name="Adminhtml"><dir name="Modulecreator"><dir name="Edit"><file name="Form.php" hash="d489bf7c750cbc116fea72ca06bceb2a"/><dir name="Tab"><dir name="Entities"><dir name="Entity"><file name="Attribute.php" hash="8d78446203c60b3e6928cd90fa73c01b"/></dir><file name="Entity.php" hash="e59d4aa1289e37d7a8bd4396e599254d"/></dir><file name="Entities.php" hash="c866e6b2eaedd25cb0033011a77a1b81"/><dir name="Help"><file name="Fieldset.php" hash="437cdb778be67cc82b9922fa032b8c9b"/></dir><file name="Help.php" hash="54d2bcfa013811fc9688c456912f79af"/><file name="Relation.php" hash="81b9528e757798d4972d1c3a52d48aa6"/><file name="Settings.php" hash="6716374f4607489660a8b5d9c80c1b85"/></dir><file name="Tabs.php" hash="8f7cd935aaf72666f8483b202ab392ff"/></dir><file name="Edit.php" hash="ecc7d9f78a0930e5114dc8ebc222e172"/><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="Download.php" hash="c2a8bc859e1f2a94ba5c04b0f72e8d56"/></dir></dir></dir><file name="Grid.php" hash="f39988527df06fb4b924fae0325fcff8"/><file name="Menu.php" hash="40ee71583453626a03967c822a78164b"/><dir name="System"><dir name="Config"><dir name="Form"><dir name="Fieldset"><file name="Abstract.php" hash="e6009d52ebf8103878f34624b78a000a"/><file name="Attribute.php" hash="ffab3a73feb7f37c4047081cf43419b9"/><file name="Entity.php" hash="427369fa1062bc11978710d67fe2e71a"/><file name="Settings.php" hash="61b1b50af247081a066a8af9e9e54a2a"/></dir></dir></dir></dir></dir><file name="Modulecreator.php" hash="ce93deb82c8b64d0e059e9434d2174a0"/></dir></dir><file name="Exception.php" hash="cd01fc4454c59825fce4eae9b1a8fc53"/><dir name="Helper"><file name="Data.php" hash="545caa2c818f11ccb45e79237f74312d"/></dir><dir name="Model"><file name="Abstract.php" hash="5ddddfd991de9ca6d62f5e3597642eff"/><dir name="Attribute"><dir name="Type"><file name="Abstract.php" hash="6786430eee2d5beb56298cd9085bbe81"/><file name="Country.php" hash="17013d81ef900ee3e6a9334ade997c75"/><file name="Decimal.php" hash="bf3df688974cae17f9e16b6b6bb166a1"/><dir name="Dropdown"><file name="Abstract.php" hash="a8d404f7995c95c2bd465b2956960cc4"/><file name="Category.php" hash="da47dd40ae39238a5395652a228549e0"/><file name="Custom.php" hash="f40804fac44aa660dad81476cae4a811"/><file name="Customer.php" hash="6b5f51e69c38ef99ee8d7e119c5f2346"/><file name="Product.php" hash="5da8a1ac84f65c52e4c33d865f53dd06"/></dir><file name="Dropdown.php" hash="22e88823b0edc4ea731388042891ff84"/><file name="File.php" hash="03f790458c9f3098ee987f266b7e6a75"/><file name="Image.php" hash="aa06a75f175d8c9eae11e0a8536a3948"/><file name="Int.php" hash="35a5bf8b9cd1fc772b7c4f1647d7ac6f"/><file name="Multiselect.php" hash="11558da53178821cb3dbdbf3f2fa7a99"/><file name="Text.php" hash="1649397e1bde1c2223d2656ac520bc48"/><file name="Textarea.php" hash="cb194ab2636b2b3fb26ccaa11b6b2559"/><file name="Timestamp.php" hash="740f84889cd092f999332938513c8566"/><file name="Yesno.php" hash="19a252a975a5ba304e44e49a8a5bfc88"/></dir></dir><file name="Attribute.php" hash="100203e8174b3f389e9f6fc2d5ce1c76"/><file name="Config.php" hash="9527732a429d49c3855d8f4d977bfe8b"/><dir name="Entity"><dir name="Type"><file name="Abstract.php" hash="503265801e11e97e6baa863bb8cb96a3"/><file name="Eav.php" hash="aecb3cd96c66b454538185158b3aaf98"/><file name="Flat.php" hash="c8de6e6997cf0728f2e0cdfa86a17a94"/></dir></dir><file name="Entity.php" hash="341f46e911969b80b53c08d2f334a865"/><dir name="Module"><file name="Collection.php" hash="89ae8df9e4ee5beed2d1686fe329fe3a"/></dir><file name="Module.php" hash="7daec0dbb39d88a47b18491dbd5fdbe1"/><file name="Relation.php" hash="36d6ac4d801998a32283032258f5a36e"/><dir name="Source"><dir name="Attribute"><file name="Scope.php" hash="681d3030cf2dc35b53f4e7e447db35e9"/><file name="Type.php" hash="bcc8d092e5e593600923b5b1809c2579"/><dir name="Value"><file name="Source.php" hash="abd1e4db0397711de4a098b2d0e79f87"/></dir></dir><file name="Codepool.php" hash="8d71e411fbb410136dc39853088c0128"/><dir name="Entity"><file name="Layout.php" hash="5e5058acf997c487634482199f57580a"/><file name="Menu.php" hash="4dc0dc33661f310e7e15e62ff5e4741f"/><file name="Type.php" hash="fe0b3c8e51e99abb02314ef57df4f737"/></dir><file name="Install.php" hash="f409ea5293d5e5fcaf697c7a37663c1a"/></dir><file name="Writer.php" hash="5045fd81e80ecd37a53e22412b270c68"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="ModulecreatorController.php" hash="10a36d26e4de52ac7e1b65d0b380d773"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="841cab623830270784e5752ceb1c0b5e"/><file name="config.xml" hash="aa4b93d4c82602010f7b708098c9ff24"/><file name="jstranslator.xml" hash="197089f92ccb2cf369fe7e401945ecb5"/><dir name="source"><dir name="app"><dir name="code"><dir name="Block"><dir name="Adminhtml"><dir name="Catalog"><dir name="Category"><dir name="Tab"><dir name="Entity"><file name="010_tree" hash="71ef3094dedfc7d9e414cb697e3d539a"/><file name="020_not_tree" hash="2e86dacfe0362ce6aa38d25e82524b56"/></dir></dir></dir><dir name="Product"><dir name="Edit"><dir name="Tab"><dir name="Entity"><file name="010_top" hash="dd67d1c7c6b352a71965868a06697988"/><file name="020_not_tree" hash="a7be24f5cc397ef37ca22bb40e1527e9"/><file name="030_tree" hash="bd02537f09e5d8260144eeb3704f6401"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir></dir></dir></dir><dir name="Entity"><file name="010_top" hash="44aa5df6aab34804fd961137d9c7720d"/><file name="020_eav" hash="d38b3883793eff2891b06995e5082b68"/><file name="030_footer" hash="dfe5fb1e14742631320317fdb64ac885"/><dir name="Abstract"><file name="010_content" hash="62e973ae6efd0e36b775d538496954d1"/></dir><dir name="Attribute"><file name="010_content" hash="37764dc55ce7b4d9aa84809327943236"/><dir name="Edit"><file name="010_content" hash="8b42c988f42c6f0bffca550b18cad8a1"/><dir name="Form"><file name="010_content" hash="a263f608e4abdc3ec96e89052b527aad"/></dir><dir name="Tab"><dir name="Main"><file name="010_content" hash="05f4aa0555d8cfd9e124f99b3d0b7d04"/></dir><dir name="Options"><file name="010_content" hash="03570e69a55e721f961425a5172369cd"/></dir></dir><dir name="Tabs"><file name="010_content" hash="2b58699bdec1699e78a56e97f54605b7"/></dir></dir><dir name="Grid"><file name="010_content" hash="fb0ce347335b8deb92c6a9eb534894a0"/></dir></dir><dir name="Comment"><file name="010_content" hash="2aad8608b533909000e8b48458da0a3e"/><dir name="Edit"><file name="010_content" hash="3a43b33ef1731abb327d58ea4454445f"/><dir name="Form"><file name="010_content" hash="233d80b778a00c2e648fb6de70984de4"/></dir><dir name="Tab"><dir name="Form"><file name="010_top" hash="5654766f5a10ea79f985348ae8e1af45"/><file name="020_stores" hash="c7dea0c3fcf3f795ab5da4d2b262f523"/><file name="030_footer" hash="064e9107e3d0c0c99f905cb537877af6"/></dir><dir name="Stores"><file name="010_content" hash="b32ca2512c5e7679aa7c8b764be57c6b"/></dir></dir><dir name="Tabs"><file name="010_top" hash="967ecca69509dd46542623ebf7997767"/><file name="020_stores" hash="ca6ebaaafcb7d002971667a1d564ae27"/><file name="030_footer" hash="4488490317047e328c140b54951a26ca"/></dir></dir><dir name="Grid"><file name="010_top" hash="da6cd2d19fefbd5be0d5fc311571ea0e"/><file name="013_store_data" hash="f570d17a1052b9a8046ba3755a023051"/><file name="016_prepare" hash="472a0698416a84ea47c82136f875f39e"/><file name="020_stores" hash="f687942567140176aa4880c33a7263b2"/><file name="030_content" hash="66542005515d3e559d08ce71a5a51f15"/><file name="040_store_filter" hash="b84a10ad4e2f39480082af313a399959"/><file name="050_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir><dir name="Edit"><file name="010_top" hash="964785e013506cf5d4e05c0d28c50f7c"/><file name="020_tree" hash="e56ca7916c16b857b2d1bc5249bbd21d"/><file name="030_not_tree" hash="47fa3c2b9e77b57153b3f8a0f65a06ac"/><dir name="Form"><file name="010_top" hash="d0478b32e45e042916b28f5586ff69ad"/><file name="020_prepare_form" hash="eca2778ff92b76e6f3ac85b674e1460a"/><file name="025_prepare_form_eav" hash="ef76808baf8d37a2911843f511e1f6d2"/><file name="030_tree_top" hash="354a7fab693ceb69477eef69cc358cb0"/><file name="040_product_relation" hash="af98a2c088ac78b6d6fa8be0e61f79e8"/><file name="050_entity_relation" hash="292d2fbe7909805ecb9c214ba4e8d814"/><file name="060_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Tab"><dir name="Attributes"><file name="010_top" hash="e72033bd8e9dbae97171f5d98a082d58"/><file name="020_tree" hash="c2c9894426c3940418571436243c1187"/><file name="021_default_values" hash="629b42efc0b7d9399fc0d704a89bfd2c"/><file name="022_default_values_tree" hash="7dbd8dda6f0e945ce615ebdb7644654f"/><file name="023_layout" hash="6f95a6eb75f55833a3342f85635317a3"/><file name="025_after_html_top" hash="e5fc8150b1ed7bb72a00b66611a1a218"/><file name="026_after_html" hash="1592e14d6de7e9bc8e55e446a2bcc337"/><file name="027_after_html_footer" hash="a277507fa5955bce889c679c508388be"/><file name="030_footer" hash="d0ec668477e12567a13e4ccc638e455f"/></dir><dir name="Categories"><file name="010_content" hash="e20886b79464507bec2b16f55e99fc8d"/></dir><dir name="Form"><file name="010_top" hash="1ac27a852fe07bd1f7912f72744e933d"/><file name="020_image" hash="ae451284767c290d0296194d4fc3cdfc"/><file name="030_file" hash="c8b1533c27644b7292da44e3e5075182"/><file name="040_wysiwyg" hash="a9f496f0a360903d1654b19d5430bf9f"/><file name="050_wysiwyg_is_tree" hash="59014226536c7bdfaba780a6bbbb5793"/><file name="060_path_tree" hash="d484f7fa33f1f092da2b241926cbebe8"/><file name="070_parents" hash="eb406f81670d46929c473cf49a66c387"/><file name="080_attributes" hash="99af6befb259348dd3f8df1bc0abba90"/><file name="090_url_rewrite" hash="18d636d351172ac645665b5fa0666ea0"/><file name="100_status" hash="782adfdcddf0cc6e362212ec18767b46"/><file name="110_rss" hash="0639b5c95b847303dd9a78332cc7933e"/><file name="120_stores" hash="1f3467451ba06db6cd40fce76ba431e6"/><file name="130_allow_comment" hash="1e4a500f05e2047024481d4e9a7b7469"/><file name="140_add_values_not_tree" hash="e1e054e2dc6696cbcd4b24e58f251f24"/><file name="150_add_values_tree" hash="c55e02ed1b018553d2525d1259eece10"/><file name="160_get_entity_tree" hash="381ec60c1dd0dd6c814dec91e8d46582"/><file name="170_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Meta"><file name="010_content" hash="49d0707a5037f1810d0a441ff20ed595"/></dir><dir name="Product"><file name="010_content" hash="9933e63eb427541140837b24af8f4619"/></dir><dir name="Sibling"><file name="010_top" hash="ba8a142d41f861168b2630a942c88e33"/><file name="020_not_tree" hash="e288ac29c834ced318f1082bd4b842e8"/><file name="030_tree" hash="3b5ef23cdb0b9b567c48eada21f78dc6"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Stores"><file name="010_content" hash="7b096cda06f6f93eb6bdc52d1c0b016d"/></dir></dir><dir name="Tabs"><file name="010_top" hash="3ae69e6c370264f0deed58e079ae154c"/><file name="020_flat_not_tree_prepare" hash="c9cdc338692f7600e8be71fb398f8c59"/><file name="030_flat_tree_prepare" hash="4f9b40a9a6f7831ed5a0da4fb5cf2be6"/><file name="040_eav_prepare_top" hash="56ff77fa7809b550070cec4143f24480"/><file name="042_eav_tree_prepare_top" hash="abb75c407e5e9c03d55d05d4402f97d1"/><file name="043_eav_seo_prepare" hash="61cffd93a3c33dbe12a5982f1a2e36f0"/><file name="047_eav_prepare_bottom" hash="3e1ed9863f0a13c2b5cd82f020421801"/><file name="048_eav_prepare_bottom_tree" hash="d7a268cbdd380f9432ae59fde52c3e1e"/><file name="049_eav_prepare_real_bottom" hash="a8b98afa000e57649d0c3817f0421c75"/><file name="050_seo" hash="831d9fce4e93ea6857db7041e74846ce"/><file name="055_seo_eav" hash="0eccfe9d8b8743400af74a7c2649a70f"/><file name="060_stores" hash="70a6a54560b40f6be67ff54042cd8e9e"/><file name="070_relation_not_tree" hash="37057553194dab96aa89776dd5e5bb41"/><file name="080_relation_tree" hash="5e3f27c006232d637464126d87eded50"/><file name="090_product_relation_not_tree" hash="a906db60873d481e1a1551d7ac9e89e8"/><file name="100_product_relation_tree" hash="b03028a427b64a825f7fa0ac6941f212"/><file name="110_category_relation_not_tree" hash="f2c7186e89f310c6c30ae16feb960cf0"/><file name="120_category_relation_tree" hash="4ce1e47bf3a1a97c5613e97d5ff5c08f"/><file name="130_end_prepare_not_tree" hash="eeb1743c5582f0b0d6bb7315e976ed79"/><file name="140_end_prepare_tree" hash="eeb1743c5582f0b0d6bb7315e976ed79"/><file name="150_footer" hash="750622e2965e5bcb8bf88674614f0ec2"/></dir></dir><dir name="Grid"><file name="010_top" hash="dc1ae56bab399b8687fc55da8a040658"/><file name="020_parents" hash="694c129db89ef3095f5b0dcdbf61f12e"/><file name="030_name_attribute" hash="a771e41d5af27b91a9595f9d642299ef"/><file name="040_grid_attributes" hash="4ef4f2cd9efbef4cb4d0638d163190a8"/><file name="050_url_rewrite" hash="4f688b429c00490a909e0476f42b8c39"/><file name="060_stores" hash="eea00206f5570b3aef5f7980f0cbbd3a"/><file name="070_created_at" hash="bdffe8831ecdada3514d4c9cda0514e8"/><file name="080_updated_at" hash="e732b86e31ae7d14d309f98c1a2405cb"/><file name="090_columns_footer" hash="ed6bcf9d2a0f66b4a7c5fbccff5a6941"/><file name="100_eav_functions" hash="d972bd0811ec04e2bb851305a1b0ef2c"/><file name="110_mass_action_top" hash="46e42d2d57468e2ced716c77e41bb010"/><file name="120_mass_action_flags" hash="ee39259db1169a85c024b0d05e7baedd"/><file name="130_mass_action_parents" hash="529e188155dd0cbc382b8228caccbf70"/><file name="140_collection_end" hash="8d6cbd0cbae4a7c3ca0add81f97ff5f2"/><file name="145_collection_walk" hash="006d866e55eee02fb6767a5c6ceb955d"/><file name="150_store_filter" hash="b395005eae63f8b30fbddc15057281f2"/><file name="160_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Helper"><dir name="File"><file name="010_content" hash="d355e5da535b3e0cfccb5d217e1a170e"/></dir><dir name="Image"><file name="010_content" hash="e157ea8cd01b05b55eecda599191fc3f"/></dir></dir><dir name="Tree"><file name="010_top" hash="727a04df04b9b80db6cefdc1b4c60419"/><file name="020_store_switcher" hash="b6d1e1a1742425c0b3f8a02ee8f64d32"/><file name="030_content" hash="2055bf21f85a1b953664e2aaeb3b763c"/><file name="040_eav" hash="5deee6fe249f7ea1ddc60b8276e3758c"/><file name="050_methods" hash="0c4d45292eb83da095668795585ed264"/><file name="060_store_switcher_block" hash="9ebb73a790da8983dfc85574af127399"/><file name="070_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Widget"><dir name="Chooser"><file name="010_top" hash="f5bc94317c2c6c0d14882ba15eb6407b"/><file name="020_not_tree" hash="9fee15af4f12185d3197293692c338a3"/><file name="030_not_tree_eav" hash="0d63352bbb0abc265ab13da33c2204b2"/><file name="040_not_tree_content" hash="48e22a4e365563c69632bb74d0db99de"/><file name="050_not_tree_store" hash="b26d7218d7bcff222c679aa5e07c8e78"/><file name="060_not_tree_footer" hash="345e81687c80d6119461c5cade1edd00"/><file name="070_not_tree_flat" hash="a3ebee24e32e43eb5b6aae582ae5e449"/><file name="080_tree" hash="f857bd064de6c07d1599b47f0ffd9d1a"/><file name="090_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir></dir><dir name="Helper"><dir name="Column"><dir name="Renderer"><dir name="Parent"><file name="010_content" hash="da6055368584a12c81c3e577fa9e2475"/></dir><dir name="Relation"><file name="010_content" hash="2aaedc2f263a540e3e9418357d4e57c9"/></dir></dir></dir><dir name="Wysiwyg"><file name="010_content" hash="9ed57fe215b6d0e0169431902eb2afd8"/></dir></dir><dir name="Module"><dir name="Helper"><dir name="Form"><dir name="Wysiwyg"><dir name="Content"><file name="010_content" hash="7275f215b7d9172874faad0adc8fa936"/></dir></dir></dir></dir><dir name="Renderer"><dir name="Fieldset"><dir name="Element"><file name="010_content" hash="0d61c16f0f376875912c71817afd6846"/></dir></dir></dir></dir></dir><dir name="Catalog"><dir name="Category"><dir name="List"><dir name="Entity"><file name="010_top" hash="45187464be8d2fcba46051d82bb50d94"/><file name="020_store" hash="5d4378ac1469cee33c19375021c8c9d6"/><file name="030_eav" hash="378270a4fb279491fa8237f7232d9661"/><file name="040_not_eav" hash="c61d22711029de35ea23c8cc5582c37d"/><file name="050_footer" hash="3310177fcbadb4048cb5130d57da91dd"/></dir></dir></dir><dir name="Product"><dir name="List"><dir name="Entity"><file name="010_top" hash="05ebc701573a2381f1929d0f3fd1d6b8"/><file name="020_store" hash="5d4378ac1469cee33c19375021c8c9d6"/><file name="030_eav" hash="62e0e3f434eac5d7646ca67253b94657"/><file name="040_not_eav" hash="c61d22711029de35ea23c8cc5582c37d"/><file name="050_footer" hash="0f75591667e0afae13d399833a7a8a1b"/></dir></dir></dir></dir><dir name="Entity"><dir name="Catalog"><dir name="Category"><dir name="List"><file name="010_content" hash="6c201af0ef142175a8078a93138a098b"/></dir></dir><dir name="Product"><dir name="List"><file name="010_content" hash="ffd30c32262494c2378583817d08cf59"/></dir></dir></dir><dir name="Child"><dir name="List"><file name="010_content" hash="6da876bcf90940c58da4bcbd01cab880"/></dir></dir><dir name="Children"><file name="010_content" hash="d34a0f45f86b2573310fa4fb423fac38"/></dir><dir name="Comment"><dir name="Form"><file name="010_content" hash="a22dbea3608170f316f8a4eec14229ad"/></dir><dir name="List"><file name="010_top" hash="f8bf579c5879e621e7df165465ec744f"/><file name="020_stores" hash="1a60133a8449a1bd4d25a2bab577770b"/><file name="030_footer" hash="8610627b14ec5f50ec149fbbcbc3be17"/></dir></dir><dir name="Customer"><dir name="Comment"><dir name="List"><file name="010_top" hash="e16c62c85566442b4877ae0263c203e5"/><file name="020_store" hash="f07cc10c13871c59a0c0300dce0ec56c"/><file name="030_filter_eav" hash="e6d6c6009d19f1b98520902649a6a30b"/><file name="040_filter_flat" hash="4321e0b31704ca31099f3ed39010a7c0"/><file name="050_footer" hash="ada9954ac40ef54c9e34df34e386df61"/></dir><dir name="View"><file name="010_content" hash="95db6a28de6c1692727a03eed355e86c"/></dir></dir></dir><dir name="List"><file name="010_top" hash="ce7935dd65bafcf532cb160cc7788803"/><file name="020_stores" hash="1a60133a8449a1bd4d25a2bab577770b"/><file name="030_attributes" hash="7bebacd043bc336aa31ccdc9dc266d89"/><file name="040_status" hash="b69d2141c5536497d662c0e8cdba19ed"/><file name="050_not_tree" hash="d20e7e08d7ee8ada6175dc6fe78ae558"/><file name="060_tree_flat" hash="e5e7821bd8b6c235c81cc27e24ef3011"/><file name="070_tree_eav" hash="5a0cfa7f968eef1206c0ac790d95071e"/><file name="080_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Rss"><file name="010_top" hash="f7c37e18de4f2c414c433061b47a9eba"/><file name="020_stores" hash="d0e26ab44bfcc5cdf03ec07ee1892d3c"/><file name="025_eav" hash="a807bf30d9099707957723afde2c551b"/><file name="030_content" hash="dc62f579677a86de9388a45ac4a098d8"/><file name="035_tree" hash="ee870fe0ca6aaf095331706b990c0bbe"/><file name="040_attributes" hash="60b1b3fab87fd4e4dcbc2f0520e03d96"/><file name="050_footer" hash="0b4ea347619c4e5e1a22c292cac994f3"/></dir><dir name="Sibling"><dir name="List"><file name="010_content" hash="b04170108593b8e355f647064e4009f2"/></dir></dir><dir name="View"><file name="010_content" hash="20fbe7cdcb216c66f1c5251e970b5537"/></dir><dir name="Widget"><dir name="Link"><file name="010_content" hash="c4fa4367c50464a64468f33ed21c743c"/></dir><dir name="Subtree"><file name="010_content" hash="8e67bb76eaf6429add47d0cbc04cfb72"/></dir><dir name="View"><file name="010_content" hash="d5e6f76c199865aa9ed3ecf94cf504c7"/><file name="020_not_tree" hash="3c3223f687e821acadbd7bde19bd2cfd"/><file name="030_tree" hash="9bd327687df296fd0711c6447dce9125"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir></dir><dir name="Rss"><file name="010_content" hash="14b33c43cdc5ad5c6ea380202a5164bc"/></dir></dir><dir name="Controller"><dir name="Adminhtml"><dir name="Module"><file name="010_content" hash="f510ed431b5bab046332cd6f3c38769e"/></dir></dir><dir name="Router"><file name="010_top" hash="6a76e84bcfb10be23d0eb33d8d343449"/><file name="020_entity" hash="11eff30f3428dca6cc3cc389d10f9aed"/><file name="030_footer" hash="d40d12171626629c0fae3734f97a843f"/></dir></dir><dir name="Helper"><dir name="Category"><file name="010_top" hash="392f1c1f15aef77b14d030142e9e0911"/><file name="020_content" hash="b0f85cae35d0ea79785366cdbafb8c90"/><file name="030_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Data"><file name="010_content" hash="8f198e3360c8e7521d742cacdd476508"/></dir><dir name="Entity"><file name="010_top" hash="2fde677bbbfc2e09fd17262124f74a13"/><file name="020_create_list" hash="cb1d306d2a2c2e5f2f70d24f4d9c40f4"/><file name="030_breadcrumbs" hash="a46e398f83bd4082a7a152d749dd1f61"/><file name="040_tree" hash="08344c280e0fd774758c61a4cc4e44c8"/><file name="050_rss" hash="520dda1d6fc1865d1ae9df572b620e06"/><file name="060_file" hash="9ed3e363751611299e4e45aecdc1fd49"/><file name="070_eav" hash="45848ed420d251949373264ba057c741"/><file name="080_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="Image"><file name="010_content" hash="4ea39c0d2c473ffe77bfc1137e4dc235"/></dir></dir><dir name="Image"><dir name="Abstract"><file name="010_content" hash="c8088806800b22611ee521e473562912"/></dir></dir><dir name="Product"><file name="010_top" hash="f1ce7ecd9ddc4aa8b2db8c2565dbb8a5"/><file name="020_content" hash="bdce693f564f5eba013a31521e405058"/><file name="030_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir><dir name="Model"><dir name="Adminhtml"><dir name="Observer"><file name="010_top" hash="45fae6e032afa21958f2fb7772d10d55"/><file name="020_entity_product" hash="173aaa3b9c38a62ad3ff6f8e64bbfa5a"/><file name="030_entity_product_save" hash="ba94bb27ccd3509ac4c5f82e4554ca7e"/><file name="040_entity_product_save_tree" hash="461d0c5305ace01323b5e007dc4197cd"/><file name="050_entity_category" hash="b1e6c102cb60ca8891ae3d77c529514c"/><file name="055_entity_category_tree" hash="7706c91cc09a7823fcaea416cec9fbfc"/><file name="060_entity_category_save" hash="8f7e379ebc7263da3999ee82250c0bfd"/><file name="070_entity_category_save_tree" hash="081d7667b0b3455880cce2704646c6e1"/><file name="080_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="Search"><dir name="Entity"><file name="010_content" hash="430bc31e965daaeb9d58e27010bc6ce9"/></dir></dir><dir name="Source"><dir name="Yesnodefault"><file name="010_content" hash="4b65106d152b7f525f69b92e8ac630fe"/></dir></dir></dir><dir name="Api2"><dir name="Entity"><file name="010_top" hash="1c1fafa410c7f3594a382b60cd82b895"/><file name="020_eav" hash="c2009e3f271b934758c006563688f013"/><file name="030_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="Rest"><file name="010_top" hash="6943d53a27e5be13125d02cafd65a8a4"/><file name="015_tree_filter" hash="118d710b629243636f8bee1ccc0ca540"/><file name="020_store_collection" hash="2e424d6ea253d9d31e3cab3f314c3f8f"/><file name="030_collection_center" hash="d7dfdbb2d4155b227ae8b7419a872b36"/><file name="040_url" hash="2740a317d14cdb1bce61c804e1a30fee"/><file name="050_center" hash="26bb3431af58671f8a463bd2e0502bfe"/><file name="060_eav" hash="700b2c2a42b32d2673bfd66da6b58dbd"/><file name="070_load" hash="1c27ea317ad3606042e0bd0e02d7fc8e"/><file name="080_store" hash="4eecd5e32bd395f0cae0f774f2409528"/><file name="090_footer" hash="b2309d4a6f23d5628e45ae91e5f0bfe3"/><dir name="Admin"><dir name="V1"><file name="010_top" hash="5b5d86ac37f2e7dc488bc218617611ee"/><file name="020_tree_filter" hash="118d710b629243636f8bee1ccc0ca540"/><file name="030_footer" hash="c4e2e6415f3967822a7824b592f1a9f1"/></dir></dir><dir name="Customer"><dir name="V1"><file name="010_content" hash="f81f187ca29560a66102e518f7559ba8"/></dir></dir><dir name="Guest"><dir name="V1"><file name="010_content" hash="b6fc9dd8769b27d28722b67c267f956c"/></dir></dir></dir></dir></dir><dir name="Attribute"><file name="010_content" hash="8c70785be3fba9e4293bf460f8b4978e"/><dir name="Source"><dir name="Country"><file name="010_content" hash="c2b0da3332b0ffe9874eb5e0021ab7a6"/></dir></dir></dir><dir name="Entity"><file name="010_top" hash="31f795dbbcc01e5c599ddfbf5cfbe36d"/><file name="020_var_sibling" hash="4b7512938ed84c1851008644e1142626"/><file name="030_var_product_relation" hash="0a235d5a42529098101a1db4a7e09a7c"/><file name="040_var_category_relation" hash="acc309d3f08cd90366b56f05b32c660e"/><file name="050_construct" hash="08d00c8908572e0b0b997f5a81ed7e2b"/><file name="060_url" hash="e4b59be60c17bb5916f7693a9d804520"/><file name="070_url_rewrite" hash="68f3bace5d21beb76ecae3a14836a3d2"/><file name="080_editors" hash="b1eee42fd1b5bd76852673f6e720a9ca"/><file name="090_after_save_top" hash="3e696a9ed8b6bb6bb17a9549080fde09"/><file name="100_after_save_product" hash="ebbe3a0c8e4263543e1eab8390c58c4f"/><file name="110_after_save_category" hash="d62441af6e2443c374e2d409bc7f123c"/><file name="120_after_save_sibling" hash="03d3fd215da4502784f499bfcb0dfc80"/><file name="130_after_save_footer" hash="bdee8f14a98fb1d71110feeedfa6e5cc"/><file name="140_product_relation" hash="b935922e8a4cc2fca7dc2ef429a7071a"/><file name="150_category_relation" hash="6a19b688bb96f42cfa6f2a192cbbd979"/><file name="160_sibling_relation" hash="365a712f9a1797d56462f936d8898d44"/><file name="163_children_relation" hash="4778629c5b6175577b0659925afaa285"/><file name="165_parent_relation" hash="a5e6b9434dd2b570645d5cb54b36ecc2"/><file name="170_tree" hash="08fe1c89e0c59c1ecb8cf8cf9742f457"/><file name="175_eav_default_attribute_set" hash="a7d8bcce3193f0fcc36ab51bb357f1ac"/><file name="180_allow_comment" hash="8cd61a9ca67829edbe9d68c23727100a"/><file name="190_default_values" hash="097d3f12cda0e3cf3abd506dcdd1ba79"/><file name="200_default_values_rss" hash="646194a1ca9053973723596c20330800"/><file name="210_default_values_comment" hash="6b94a24151b5f8e646afa3b0f466e860"/><file name="215_default_attribute_values" hash="3cf469c78b16513f851023cab27e663b"/><file name="220_footer" hash="0f02e5c5b98bdf5aa1a781b00676adf1"/><dir name="Api"><file name="010_top" hash="6fd8834981a39002193c5dbd803a0073"/><file name="013_eav" hash="9470ddabf3ae917f5c1a7c64ab828e96"/><file name="014_tree_filter" hash="c767d9267165ada747dd6e38b66dd56a"/><file name="016_content" hash="715afd3c921c488be03ca702fcc48398"/><file name="017_add_eav" hash="23e74a43cae5808801c43e75522e16aa"/><file name="018_add_end" hash="c6cf5082c2aca919313c81723d94c7de"/><file name="019_update_eav" hash="79e99889476117fedf4ba4208cb7dc44"/><file name="020_update_footer" hash="a06789ebc0c9a1a0a9c95ee1e1d07558"/><file name="024_product_relation_info" hash="d8c79d9993895ddae6b22656ec00003e"/><file name="030_category_relation_info" hash="860d30c4a465eb9a911c5463e41b2861"/><file name="040_sibling_info" hash="18d4d13b426a7ee501077968fab64553"/><file name="050_info_footer" hash="f5cc640d359f31cd56e688615e914e76"/><file name="060_tree" hash="164eac71584eb3498f072f346cdfcd3f"/><file name="070_product_relation" hash="f09f9bd9b0a6b330a75b783e4bf759c1"/><file name="080_category_relation" hash="0a353f9e41824ed8cd1c718235189b00"/><file name="090_sibling_relation" hash="963e92fcb74d02267de706cc7b485077"/><file name="095_sibling_relation_tree" hash="c18bfc04bc1de27d1c7d69bd7cfb57c2"/><file name="097_get_attributes" hash="cbc4a2bab7afd5b761bde5cd6f15ae5c"/><file name="098_get_api_data_flat" hash="f5825e7a144f02a37d2ca0eb35e3418a"/><file name="099_get_api_data_eav" hash="c4ef595faa4d4a4e200badc6bceae5f8"/><file name="100_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="V2"><file name="010_top" hash="71c410ce154cf8f19c7c092033617dab"/><file name="020_product_relation" hash="4f8a836af7c07103a2458eb1a5934eb7"/><file name="030_category_relation" hash="fca88f5026f5362ebb02efb84e6960b3"/><file name="040_sibling_relation" hash="91a324ff552519e703c32f11f7eb53bb"/><file name="050_footer" hash="967560f87a90d6f3ce298622c3022261"/></dir></dir><dir name="Attribute"><dir name="Api"><file name="010_content" hash="b604da1dd0cb4d6bfe781fccf908d98f"/><dir name="V2"><file name="010_content" hash="2bc0b18f3500e13ac707fac0f0db22d0"/></dir></dir><dir name="Backend"><dir name="File"><file name="010_content" hash="4a53a37506ec061f5c18b5fcae4ccb2e"/></dir><dir name="Image"><file name="010_content" hash="d890cc8ca52dc509387edcc41ab615e7"/></dir><dir name="Urlkey"><file name="010_content" hash="0b984983ce537c8db91dad4a81a3ba7d"/></dir></dir><dir name="Source"><dir name="Attributecode"><file name="010_content" hash="d2a8fa231aaeb8157b228a744f60ce91"/><file name="020_eav" hash="565eab6bdde007ce5549c4c04f53195c"/><file name="030_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir></dir><dir name="Category"><file name="010_content" hash="843bad4119f9596e10159a5863f38c3b"/></dir><dir name="Comment"><file name="010_content" hash="558285d2e72d7b1baa581e5a4310f72f"/><dir name="Api"><file name="010_content" hash="8116ff11103d0bbb2063aebecbc96915"/><dir name="V2"><file name="010_content" hash="70ccd2ca6adb5d2677d5d364dfbf28ae"/></dir></dir></dir><dir name="Product"><file name="010_content" hash="51a5166350a2362d09e446e8c90ea40f"/></dir><dir name="Sibling"><file name="010_content" hash="10f829bac28892b7b87cde0d257f0196"/></dir><dir name="Source"><file name="010_top" hash="95a53880e82a27f59c59cc757daab698"/><file name="020_eav" hash="face552e254a9d5cb270590d66014427"/><file name="030_footer" hash="62834cfd6dd511f091c6036327f083bf"/></dir></dir><dir name="Observer"><file name="010_top" hash="2f39cf94f4778240b136a34d80ce1eae"/><file name="020_entity" hash="3be4e17190b2528d881cd9e9ef8f33aa"/><file name="030_footer" hash="54adfbade96adb4d8eb64b60f1762539"/></dir><dir name="Resource"><dir name="Attribute"><file name="010_content" hash="1dec815470580eb3bb649dad41d3f1a6"/></dir><dir name="Eav"><dir name="Attribute"><file name="010_content" hash="8f1e4a80ed73fb79bfda6c24d9fa54d3"/></dir></dir><dir name="Entity"><file name="010_top" hash="52ed0ddb8d8c3c5ab91ff55d8cd0e712"/><file name="020_tree_var" hash="803cd2c9fb0e326a8da7324d646772bc"/><file name="030_constructor" hash="6d6df4466051b610eef517de022e1565"/><file name="032_eav_construct" hash="a23e3d0786a73b5a9af2183614a0a985"/><file name="037_store" hash="a1e166e91511d02049837f550e485d57"/><file name="040_not_tree" hash="a0db425c376f08808ca74a8570ebc9bc"/><file name="045_before_save_multiple" hash="bd778b2226c5b1ff68b993d068b0eb06"/><file name="050_tree" hash="40c503c5d8c152801193aae4a6306c9c"/><file name="052_tree_store" hash="0343050748d07930db2d0009a0715cd6"/><file name="053_tree_after" hash="2d2cbab84a8052b25e1b37fed79ce638"/><file name="055_tree_eav" hash="b0f032390da9245957ebb9be758a2706"/><file name="060_tree_before_save_no_url_rewrite" hash="d0bc2fe70ff868d212e3698fdf90fe14"/><file name="070_eav_tree_before_save_url_rewrite" hash="d0bc2fe70ff868d212e3698fdf90fe14"/><file name="080_tree_before_save_url_rewrite" hash="e36fcd134b8f611d2efc466aff42280c"/><file name="090_content" hash="438df7ae371ed58cfd8fa7e805a351b1"/><file name="100_url_rewrite" hash="772b39b033f271a34aa22df73a041672"/><file name="103_url_rewrite_store" hash="2a48d4e67762841635078c3f53fc0a16"/><file name="107_url_rewrite_no_store" hash="fd7796f4e7b45835b69d18f5c1c36969"/><file name="110_url_rewrite_before_save_not_tree" hash="ad6af13f19f703ec1a8f2df31ec5defc"/><file name="120_url_rewrite_eav" hash="329d8134036b7752b137f2249f8d1440"/><file name="130_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="Attribute"><dir name="Collection"><file name="010_content" hash="4a4ecbc27408f93a04d87b7097d6ba64"/></dir></dir><dir name="Category"><file name="010_top" hash="39aaf309aada910997d87b1a2dca71db"/><file name="020_not_tree" hash="395092f56c11e09ec1ed3724d2aa319d"/><file name="030_tree" hash="1a27671b95fbc88a4e2309cbc55300aa"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="Collection"><file name="010_content" hash="ad079021de3491eead24d4b2cf009fb5"/></dir></dir><dir name="Collection"><file name="010_top" hash="e2aac1dc442877c27b919bb64b609983"/><file name="020_top_store" hash="02ac73aafce3b0f45fb49063d8d138e8"/><file name="030_content" hash="fb287480f5f5c581cd3415cfbb4d880f"/><file name="040_store" hash="d8db10c2a523f91f9b6416a746db75c2"/><file name="050_tree" hash="12df937d796c84906cb8d935cd6d4032"/><file name="060_not_tree" hash="aa562dd58bc027412d1cb2b1ee49e26b"/><file name="070_product_relation" hash="1546d5a1607cd6b36687dad4d8ffc447"/><file name="080_category_relation" hash="750d894c947bf1b965c4020f5b5aad34"/><file name="090_sibling_relation" hash="c23388818a8a79df074a74721aa95902"/><file name="100_footer" hash="f53d84c0a99e10a5839cbe00d7758894"/></dir><dir name="Comment"><file name="010_top" hash="c27763a3ceebc3040d72625c83f61fac"/><file name="020_store" hash="3c2ecae139ef84007951cf382e3b91d2"/><file name="030_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="Collection"><file name="010_top" hash="ab17d39abbecb97d7f4b0050f8a73153"/><file name="020_top_store" hash="02ac73aafce3b0f45fb49063d8d138e8"/><file name="030_content" hash="fb287480f5f5c581cd3415cfbb4d880f"/><file name="040_store" hash="40b8268a6b02d72e102aa6a8010c8d25"/><file name="050_footer" hash="f53d84c0a99e10a5839cbe00d7758894"/></dir><dir name="Entity"><dir name="Collection"><file name="010_top" hash="c07f6aa18d1deb31f2ca3d337c487f15"/><file name="020_store_var" hash="3620225301b89a45fa4c15b7eb9c4b7a"/><file name="030_construct" hash="f5359fb3850daff182c56af87ffe2a49"/><file name="040_construct_store" hash="a4e310f526aedfdc272bd0506575b47f"/><file name="050_content" hash="9a2d9499cd23a37d7b7bf38fb1074e43"/><file name="060_eav_title" hash="708315d25bb5703319b586075e3c854c"/><file name="070_more_content" hash="811fe686230a300c3a7cd4a6124f6b2f"/><file name="073_select_count_store" hash="aa326fbcfdd7292d99b0207c87db1348"/><file name="075_select_sql" hash="119d632bcf5e5f00de1b3e82de27bb0c"/><file name="080_store_top" hash="42aac25b822ee9a76bf90ed29086c89b"/><file name="090_flat_store" hash="e5fa3cb0b097373b7b9ccdc207ba7607"/><file name="100_store" hash="40e089a5b2e560b3704c558a29ff853d"/><file name="110_filter" hash="f06c225b111cd561ea42442cbddc820b"/><file name="120_store_filter" hash="3a97b2f851b75e134d9386eab2864fb7"/><file name="130_footer" hash="cf9e3a21123b393055caace4283d9cf4"/></dir></dir></dir><dir name="Product"><file name="010_top" hash="54bee728d2b28478580d9775b465fe0c"/><file name="020_not_tree" hash="c1f8116878e4bc7f55474793f5ea8fc1"/><file name="030_tree" hash="ce58097cbcd22db0917b94672f007fb5"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="Collection"><file name="010_content" hash="e09ca44678a76f7a1a62078dec473ed8"/></dir></dir><dir name="Sibling"><file name="010_top" hash="63ad063ff499996377e437e1c982ee42"/><file name="020_save_relation" hash="1bb5232b3965901d947a8e93555ebde3"/><file name="030_save_relation_tree" hash="8fd13f972d33aa73064c524fc6b5eed1"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/><dir name="Collection"><file name="010_content" hash="d7c1feb03479792547216ef160201fb3"/></dir></dir><dir name="Tree"><file name="010_top" hash="d94eb147e0b86237b8571ec56408d751"/><file name="020_eav" hash="756d3fa32a2607a3fe1179fd0dbcb89f"/><file name="030_content" hash="f93f44659f99d936f6114dd5d12f2b25"/><file name="040_flat_collection" hash="18a3ae2dc1fdb9b4ad8612942878b735"/><file name="050_eav_collection" hash="dda84ce3ad429c1311147aedfb1e7200"/><file name="060_footer" hash="ec6aa607fd5a32c77f6c69883f26bd5e"/></dir></dir><dir name="Setup"><file name="010_top" hash="10ddb159051eeb6b5f3a365075df6c27"/><file name="020_eav_top" hash="8fbeb530b4e7be6b20feffa4055a397b"/><file name="030_eav" hash="2a67d14756e724608b88947dbce2f2a2"/><file name="040_eav_footer" hash="e239c95376c76b802f24d1d0e75e6323"/><file name="050_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Module"><dir name="Entity"><dir name="AttributeController"><file name="010_content" hash="22b48b83e785b7a3ab39f6f2df017b2d"/></dir><dir name="Catalog"><dir name="CategoryController"><file name="010_top" hash="da38228f766c1f6110b3eee4f29aa3ff"/><file name="020_not_tree" hash="eeccc102e390d8ef2e5bd9a35caf5d51"/><file name="030_tree" hash="498b2762986db20e32272298356b46f1"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="ProductController"><file name="010_top" hash="017c2ad6dd7dcafa16456f8a72ba7530"/><file name="020_not_tree" hash="e8227936a2baf50dc23ea45dd3e689c0"/><file name="030_tree" hash="5ea06f642a2eb06c325383bacf5fd0a2"/><file name="040_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir><dir name="CommentController"><file name="010_content" hash="710884a2484cf47da0094774a46491b6"/></dir><dir name="WidgetController"><file name="010_top" hash="401bc2877ec22157889b662ad7369bca"/><file name="020_tree" hash="4ca3ce9a440967216f09b7b0daf85280"/><file name="030_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir><dir name="EntityControllerEavNotTree"><file name="010_top" hash="5d2787a18e2c2c2deff29843ba134ab7"/><file name="020_save_product_relation" hash="5f64d703ad51f457791021034dac9a22"/><file name="030_save_category_relation" hash="97e2d1bb3c452bc1977c6cc29762266a"/><file name="040_sibling_save" hash="e5a3043a283aafc6c202db9210d26b0b"/><file name="045_sibling_save_tree" hash="5798921bd354c057e3b952885f068814"/><file name="050_middle" hash="9b65758c552847e9511b71b64f6e4c11"/><file name="060_mass_action" hash="4760d1e79c619d606ddfad74f72fdd27"/><file name="065_mass_parents" hash="15d0f2a1dc964f5c2779fa53e09e5840"/><file name="070_product_relation_actions" hash="dff5825fb9ffdcdf851ddf1e78331c2e"/><file name="080_category_relation_actions" hash="5a1adebee4394d06171f9f0dc74e63eb"/><file name="090_sibling_grid" hash="9f437e1f0ff316bc4f08ffb19b8471e9"/><file name="100_sibling_actions_tree" hash="ec816c2575fdd3d5921decf6c486215e"/><file name="110_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="EntityControllerEavTree"><file name="010_top" hash="ebd5ae7a078df0a90473cde61203dc29"/><file name="020_product_data" hash="ef35afd04bfedbdd9a08dbb2254eabdd"/><file name="030_category_data" hash="97e2d1bb3c452bc1977c6cc29762266a"/><file name="040_sibling_data" hash="cf7e5061ac1cf2d8600e5f545954de2c"/><file name="045_sibling_data_tree" hash="5798921bd354c057e3b952885f068814"/><file name="050_real_save" hash="cedbb11e16dab61867f9cfa8182da39b"/><file name="060_product_relation_action" hash="3827c87fbd6c722791ab202a385deff4"/><file name="070_category_relation_action" hash="2993db7b85b7164b88cd8d9ef2fd92c6"/><file name="080_sibling_actions" hash="58e028e693705952165fe5677ccc543d"/><file name="090_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir><dir name="EntityControllerFlatNotTree"><file name="010_top" hash="c42ffcf05fbe24b0828ea4b5f0abe0bd"/><file name="020_upload_image" hash="8eb947a4dbf6989e635fd5ce1381d0d0"/><file name="030_upload_files" hash="424e24cfae698c29d36d405d060617f2"/><file name="040_save_product_relation" hash="5f64d703ad51f457791021034dac9a22"/><file name="050_save_category_relation" hash="97e2d1bb3c452bc1977c6cc29762266a"/><file name="060_save_sibling_relation" hash="4857f358e471ec22bb35b893b5e8aaab"/><file name="070_save_sibling_relation_tree" hash="5798921bd354c057e3b952885f068814"/><file name="080_save" hash="a74adf52f0b222e1a30990e75e1f2860"/><file name="090_exception_upload" hash="ca7b53f3c03d0c3e0c926ad312ef1981"/><file name="100_exception" hash="00f90ef0513b82fffc0f19585ac7cd8b"/><file name="110_center" hash="c74f082a97590533a66550d04cd28501"/><file name="120_mass_update" hash="3ace1d78a8dab8648a85047515395bbf"/><file name="130_mass_parents" hash="15d0f2a1dc964f5c2779fa53e09e5840"/><file name="140_product_relation_actions" hash="dff5825fb9ffdcdf851ddf1e78331c2e"/><file name="150_category_relation_actions" hash="5a1adebee4394d06171f9f0dc74e63eb"/><file name="160_sibling_actions" hash="eded044ea2c515756bf78dbbd48154ca"/><file name="170_sibling_actions_tree" hash="ec816c2575fdd3d5921decf6c486215e"/><file name="180_footer" hash="1de3e8c1cf941195894ba438de23b6cf"/></dir><dir name="EntityControllerFlatTree"><file name="010_top" hash="399f46b7f4f1ed5e05223ef4d6b33e69"/><file name="020_wysiwyg" hash="d43e8888ad2c3a2be5e9ab4f6c8ea112"/><file name="030_save" hash="89499414fd87eee842bf7c68c5b72ace"/><file name="040_upload_image" hash="8eb947a4dbf6989e635fd5ce1381d0d0"/><file name="050_upload_file" hash="424e24cfae698c29d36d405d060617f2"/><file name="060_save_continue" hash="517334331bc285ac1fd2a395bb110af6"/><file name="070_product_data" hash="69fb7236c7346aa998a68aee646904c6"/><file name="080_category_data" hash="97e2d1bb3c452bc1977c6cc29762266a"/><file name="090_sibling_data" hash="cf7e5061ac1cf2d8600e5f545954de2c"/><file name="095_sibling_data_tree" hash="5798921bd354c057e3b952885f068814"/><file name="100_real_save" hash="ae703e1d79cbb3b989a3e79d68616d7e"/><file name="110_product_relation_action" hash="3827c87fbd6c722791ab202a385deff4"/><file name="120_category_relation_action" hash="2993db7b85b7164b88cd8d9ef2fd92c6"/><file name="130_sibling_actions" hash="58e028e693705952165fe5677ccc543d"/><file name="135_sibling_actions_tree" hash="ec816c2575fdd3d5921decf6c486215e"/><file name="140_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir></dir><dir name="Entity"><dir name="Customer"><dir name="CommentController"><file name="010_top" hash="9f62f4cf9623a20a21051add6d53e33a"/><file name="020_entity_eav" hash="e3928f0c5176f7ef8c2e9c1cfc5c7e39"/><file name="030_entity_flat" hash="8111faf8ab205e42f80a01364e910d90"/><file name="040_store" hash="35770a11b9af34946533859a9bfd1c8f"/><file name="050_entity_flat_store" hash="15a379ec302d933bc618a8f3b19c6b93"/><file name="060_footer" hash="e20522e04290376a1e49520b11206983"/></dir></dir></dir><dir name="EntityController"><file name="010_top" hash="86d72db023b8b448068a4c156b29e630"/><file name="020_list" hash="446e82cd88ff847dbcb2c0d80b8ee542"/><file name="030_list_seo" hash="f2ca1a03f3af0b0e6fac01d698bf5b4e"/><file name="040_list_footer" hash="765f671c6c8df0b2dc138adadaef66d8"/><file name="050_view" hash="72625bb483a975414a34ff7ba6add736"/><file name="060_view_tree" hash="3fe6f66fcb554cb3ba4a0d60cbafc912"/><file name="070_view2" hash="25a8b855f1d531064b2e1c1b7aee060f"/><file name="080_breadcrumbs" hash="317bbb91ae8b80682df6f82f6b325ec3"/><file name="090_breadcrumbs_tree" hash="0d01c24d56ce14a946209225180a15f7"/><file name="100_breadcrumbs_footer" hash="4c00b1852b26c7782dc7ef0af43bf688"/><file name="110_view_seo" hash="df29b452c36d9f51c93ad3442f09089f"/><file name="120_view_footer" hash="765f671c6c8df0b2dc138adadaef66d8"/><file name="130_rss" hash="b64a15b83af918ffd04a7923436d8978"/><file name="140_comment" hash="fc67e1a965ff7ece556c426bdee0af0a"/><file name="150_footer" hash="df3995adfef69bc118334aef3a6911ad"/></dir></dir><dir name="data"><dir name="namespace_module_setup"><dir name="data-install"><file name="010_top" hash="9baa375f86c77c971bdf4ff58a1c0490"/><file name="020_entity" hash="bf3f9669f77cc9123c49814307991d2b"/></dir></dir></dir><dir name="etc"><dir name="adminhtml"><file name="010_content" hash="5b38ce3527f5c51f6159da6d5dccabdb"/></dir><dir name="api"><file name="010_top" hash="867c51b5c21efd691c7c3df3af4bc693"/><file name="020_entity_api" hash="b31ed12c80316bbdf61b6ff04eb3a51f"/><file name="030_resource_alias" hash="b943f39407ab6131bf93d6e6e44936e8"/><file name="040_entity_resource_alias" hash="d7f51e1ed157c61dda3ddb9a22f484fc"/><file name="050_v2" hash="12dcbc42e0ec81ef5f8d0d563fbf885f"/><file name="060_v2_entity" hash="c0e32ae7d754a1d36302a501ff23ca18"/><file name="070_acl" hash="4f900c28a8eef538b9f5710b6116631e"/><file name="080_acl_entity" hash="9f3c85df11943be774a2a6bf316e66e1"/><file name="090_footer" hash="325809a4d6fd615e7c2c9743b3655c53"/></dir><dir name="api2"><file name="010_content" hash="3cee98654e6d59b601235e45dcf4d2b6"/></dir><dir name="config"><file name="010_top" hash="5b6ad2628b143dcae6b168ca4bf14904"/><file name="020_tables" hash="81a36d80bacf44a97c8d59887d0e2164"/><file name="030_store_tables" hash="73114fc78d20c8ab8f8d79a3d984dc87"/><file name="040_siblings_table" hash="e362aa300301fc423c8641ad434f0eac"/><file name="050_product_relation_table" hash="ab5676590138330d4ff36a15002bee5d"/><file name="060_category_relation_table" hash="5ed5fbeaab8d1fd7ca3dbc1343d71f0a"/><file name="070_comment_table" hash="c0181d16ba7087f4f981bfcc1c6dc8ad"/><file name="080_comment_store_table" hash="2d19f290726a6a9a80f534fd404595e0"/><file name="090_eav_attribute" hash="49b2ecc7c4d9940bb4e934b11df4dbbc"/><file name="100_global" hash="bcc43369c66a79dd5ceb6ca31cd944b1"/><file name="110_url_rewrite" hash="b9020832f4c9d77474687d409bf07369"/><file name="120_adminhtml" hash="750c8c73a53ba5d80148cf5628468efd"/><file name="130_relation_events_top" hash="7d655aaf8e39e8e21234c4589e9c0f75"/><file name="140_relation_product_top" hash="5edc7f53f573872a9bfd6122f3961702"/><file name="150_relation_events_middle" hash="6f4be5a184572f9a5ec53e1bc6341380"/><file name="160_relation_category_top" hash="e07d99af7575f411274c0e2b86aa144c"/><file name="170_relation_product_bottom_start" hash="c4389c5178de3b3491d021f6bd292e35"/><file name="180_relation_product_bottom" hash="2cac1148f2d56395435902be1d350d36"/><file name="190_relation_product_bottom_end" hash="cddbb3962c99a02f3b7e449b7c02baf1"/><file name="200_relation_category_bottom_start" hash="a5ea816ddaf504e565945c4fa5c5c93d"/><file name="210_relation_category_bottom" hash="e6776a83e08a397b8a3ca255bdf386e4"/><file name="220_relation_category_bottom_end" hash="1d55309dbdeb0dd473ef6a8bac71a785"/><file name="230_relation_events_bottom" hash="a5862d4611e980ff9553372b34560ce6"/><file name="240_global_search_top" hash="949ac50acd8c5fe3b68b66204d00e938"/><file name="250_global_search_entity" hash="3db0a74a189b145960107a16dc86086a"/><file name="260_global_search_footer" hash="4387151e9004196f17df55f4031fb471"/><file name="270_admin" hash="c1df2cc861cbb4644e6f0b8d46896664"/><file name="280_frontend" hash="17f720c665a0c4c3d2d6f0b21cae4139"/><file name="284_router" hash="9e4cb67792931dd76b552305e61e125f"/><file name="287_frontend_footer" hash="51f85cf376369ebf50cf3701b469b1c9"/><file name="290_default_top" hash="c81ae31e57983c412c3f286b83a20a5c"/><file name="300_default" hash="0daa38656f72266230a6ee8162a0353d"/><file name="310_default_footer" hash="8d9422cb320d29d38c21c42f22c00c1f"/><file name="320_footer" hash="5766fab0272399ec661c78736a631dc1"/></dir><dir name="system"><file name="010_top" hash="213a55275becea72f93398fb19813039"/><file name="020_entity" hash="091e1ee91fde3b161f3da0988aa7f710"/><file name="030_footer" hash="626d555d520d969b4eba12d3b6dc32c0"/></dir><dir name="widget"><file name="010_top" hash="29a6efa02a0f04ce056cc53d0b4e2272"/><file name="020_entity" hash="acff756a0ba07434c3ffb280b90af55c"/><file name="030_tree" hash="305740f2e0e3bb6ef2959d1c60476c4c"/><file name="040_footer" hash="cef2c02165fc166d7f62359f295c776a"/></dir><dir name="wsdl"><file name="010_top" hash="17165c0a86e1cec22cf8daf487086939"/><file name="020_entity_types" hash="7c4b90a6ee31d11cfff79eac452bc574"/><file name="023_entity_comment_types" hash="99ef208d5e2cd4c0c94a4514e2c5b038"/><file name="026_entity_attribute_types" hash="9fdc466d3ee17f47abe4f3012ddf7a16"/><file name="030_schema_footer" hash="b108663b3854ef338073d82182c99e63"/><file name="040_entity_messages" hash="d3e739a2efae20883d9ebf4149c46507"/><file name="043_entity_comment_messages" hash="d515922a475bcc48492416fe5205cf48"/><file name="046_entity_attribute_messages" hash="c3374cad433dee3ceecb4ccb950f58e5"/><file name="050_porttype_top" hash="1bc699e11eacc6c8df7326525db516d4"/><file name="060_porttype_entity" hash="adeb7d5741d6578fed57e8db68e50d0b"/><file name="063_porttype_entity_comment" hash="8fdacfec6cb6383961730d5a8fd1f15a"/><file name="066_porttype_entity_attribute" hash="82406651e497f919b7ab1efcd9dc263d"/><file name="070_porttype_footer" hash="d47918d188cadf66538eb0d81b382520"/><file name="080_binding_top" hash="6c9a2fa40d2d8ce3e8f5bd69574f16c5"/><file name="090_entity_binding" hash="a09b0b6dd147a65d5ead46ad0b910174"/><file name="093_entity_binding_comment" hash="9a57fd5962d4e1f369f126dbd9439fc3"/><file name="096_entity_binding_attribute" hash="7ee2aa999385c857a4e82f85beafbec8"/><file name="100_footer" hash="fd1c8b122b4873e1e68d94929e44fba7"/></dir><dir name="wsi"><file name="010_top" hash="a0c873516a509f5d9da5f17345540ec8"/><file name="020_entity_types" hash="ad25a26d30bf2dafbcd8a514b8b04395"/><file name="023_entity_comment_types" hash="2944750eb27bd12cc57be639220da60e"/><file name="026_entity_attribute_types" hash="48a70b7e2ef28331b84adabb948ea151"/><file name="030_schema_footer" hash="6e5916b770444e599eb9b9fe9454302a"/><file name="040_entity_messages" hash="98db3bd67659f19d66b22e7ed8607d0b"/><file name="043_entity_comment_messages" hash="8ba13f08ac9abafa741777d9b34d5c5a"/><file name="046_entity_attribute_messages" hash="e2df4b87853fe7e1dc8978e5c6b43e29"/><file name="050_porttype_top" hash="5ef5138db4c8c80c945359baa23f0102"/><file name="060_porttype_entity" hash="f4c0fd664d81b2337dd675ad297c535c"/><file name="063_porttype_entity_comment" hash="c59251b07a2317a33f98121c20d7b291"/><file name="066_porttype_entity_attribute" hash="9ab778046249f0f75f37e6f7a7926f87"/><file name="070_porttype_footer" hash="6c49b132200e7cb361cc8379736af66b"/><file name="080_binding_top" hash="5fe0693515fd41176023a7b5ee52ff31"/><file name="090_entity_binding" hash="b3334a6ec6e894350104009fc604c07b"/><file name="093_entity_binding_comment" hash="a41e98f20978067107bc1d03589c1135"/><file name="096_entity_binding_attribute" hash="862d06d59664343b00c28b48e9042952"/><file name="100_footer" hash="d58e080977127430d922eec5ed9be32a"/></dir></dir><dir name="sql"><dir name="namespace_module_setup"><dir name="install"><file name="010_top" hash="b626615168f25d23e910d0ee731cd010"/><file name="020_entity_flat" hash="8e4b8c5bd1b349028a7f091610826a9a"/><file name="030_entity_store" hash="5a880c3319500d9f7a0ac2355377f91d"/><file name="040_entity_eav" hash="dd4148c35d0a6728931461e26a06d679"/><file name="050_product_relation" hash="0318d0b29d914aaf23eb2ab96fd5ceec"/><file name="060_category_relation" hash="6c4ab8177a09a19b1e9c0e608914da94"/><file name="070_comments" hash="1e3850eeca0ddb910bdc7a687e1cf161"/><file name="080_comments_store" hash="98792a81673a34296b2985e6b1ecb9eb"/><file name="090_sibling_relation" hash="98a41a2f9c90bccffa10ea294d5038f3"/><file name="100_has_eav" hash="376ee9448c597d8f5742aee9c9fddcef"/><file name="110_product_attribute" hash="067cf2c53917c651e122575cb5378286"/><file name="120_category_attribute" hash="a8bbc66944d73b1f8a8510bb74b1b898"/><file name="125_eav_options_default" hash="c2798f5b82089781ace1074bec6e7fe7"/><file name="130_footer" hash="72aa99adf9ca490f11fabcedd5290fc4"/></dir></dir></dir></dir><dir name="design"><dir name="adminhtml"><dir name="layout"><dir name="namespace_module"><file name="010_top" hash="c657e63ddce2df350b7d45c57620e967"/><file name="020_entity_not_tree" hash="9a4c1b28ee061042cc76a236da9d86a8"/><file name="023_eav" hash="a90cef461e9496016b4d5d1818ec50b2"/><file name="027_entity_not_tree_footer" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="028_entity_edit_eav" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="029_edit_footer" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="030_relation_product" hash="147ec1c3620a12c30d8c7fbf4a047bb0"/><file name="040_relation_category" hash="e0c37abbaae3c58705a8921c3f10d13d"/><file name="050_relation_sibling" hash="4b7a308623c095ba6ef28ecb70cffee2"/><file name="060_entity_tree" hash="f75243adcc56c69711cb7dca55dee7d0"/><file name="070_relation_product_tree" hash="29adcc4c866977bbda2939a48b3f9377"/><file name="080_relation_category_tree" hash="a2f99eefe2903a2bbcab8b6282c48328"/><file name="090_relation_sibling_tree" hash="87af8f9a93be9ade1f8ebd73de47b80f"/><file name="100_eav_attribute_edit" hash="01db5571ca8b30844fb404563fefcffd"/><file name="110_comment" hash="338f02e3de7f86d2b28f112c96dcf143"/><file name="120_footer" hash="e38301056eb83a4de70947444e0e047f"/></dir></dir><dir name="template"><dir name="namespace_module"><dir name="attribute"><dir name="js"><file name="010_content" hash="88a5e01babe2d4e8d45bdb69a0dcf9c5"/></dir></dir><dir name="catalog"><dir name="category"><dir name="tab"><dir name="entities"><file name="010_content" hash="14dddd04c3798f3714f5263c95335f3c"/></dir></dir></dir><dir name="product"><dir name="edit"><dir name="tab"><dir name="entity"><file name="010_content" hash="4e2496ed7414b06c0b68a93cbeba3b34"/></dir></dir></dir></dir></dir><dir name="entity"><dir name="edit"><file name="010_content" hash="457f5e7ee94eaa075549b402cc04c90d"/><dir name="form"><file name="010_top" hash="5d504dea5b45f8af43a0d6e7c9d851f3"/><file name="020_product_hidden" hash="86402e52c83df9cbae8f0af1b281b912"/><file name="030_category_hidden" hash="e2ecbfcd825531e55174a97d833d339e"/><file name="040_sibling_hidden" hash="d1b52e8c4306a5689198d8020921a466"/><file name="050_content" hash="86d631712b4dc672bbf543e72edbac01"/><file name="060_product_relation" hash="20632de5f0caa7b33fde47fa6ae91dec"/><file name="070_sibling_relations" hash="62f27a022840d3fa15f217664454ca3b"/><file name="080_footer" hash="f5b26f293440dfb08e77e30e6eab9eee"/></dir><dir name="tab"><dir name="categories"><file name="010_content" hash="5833c90e662af9e44ac764b230d3b131"/></dir><dir name="sibling"><file name="010_content" hash="44c9f6b54559c7939b0275b1211f18b5"/></dir></dir></dir><dir name="tree"><file name="010_not_eav" hash="05b8c2e11f6db22e0e3de68d18605582"/><file name="020_eav" hash="29e7479f4da2b2cdcba0838bf96369a7"/></dir><dir name="widget"><dir name="tree"><file name="010_content" hash="4fafa06db66187e73fbf4e0c525791be"/></dir></dir></dir><dir name="form"><dir name="renderer"><dir name="fieldset"><dir name="element"><file name="010_content" hash="e8718e51805c0ca1eebdfc27557f579f"/></dir></dir></dir></dir><dir name="grid"><file name="010_content" hash="6651c76539c9fbc066d14bfa5f8b6d25"/></dir></dir></dir></dir><dir name="frontend"><dir name="layout"><dir name="namespace_module"><file name="010_top" hash="15cdb696e6db3f0724b315d817774edf"/><file name="020_comment" hash="24c52d027dd42a0355d12563a4654d16"/><file name="060_list" hash="6c7e4b877f895c0159171f4e6c6a103c"/><file name="070_view" hash="b9963e0c35ccc5b228531e6623905995"/><file name="080_entity_rss" hash="da751f73d104cf1daa35e39753b4e8d3"/><file name="090_rss_top" hash="5546694e606a9b3be3167398144f1fe0"/><file name="100_rss" hash="c0d78771dd8ceb256e10dc158fa4f113"/><file name="110_rss_footer" hash="8a0ce083998ffae9647b1dfce6ff28d7"/><file name="120_relation_product" hash="ccb980dcb8b4672df02ecc58821ab7e2"/><file name="130_relation_category" hash="14472da688c261667c742a8479b8aeb3"/><file name="135_entity_comment" hash="7e811871e23a1d44b4b34779a00de792"/><file name="140_footer" hash="e38301056eb83a4de70947444e0e047f"/></dir></dir><dir name="template"><dir name="namespace_module"><dir name="catalog"><dir name="category"><dir name="list"><dir name="entity"><file name="010_content" hash="255e7a9acb16106c8708c40aa92741e5"/></dir></dir></dir><dir name="product"><dir name="list"><dir name="entity"><file name="010_content" hash="8b3559297dc3824c14d09a46a188f749"/></dir></dir></dir></dir><dir name="entity"><dir name="catalog"><dir name="category"><dir name="list"><file name="010_content" hash="46e48fce4680a1725c1c285ac61e55a8"/></dir></dir><dir name="product"><dir name="list"><file name="010_content" hash="2e394b64cb6ecbf8975083ccbe69b709"/></dir></dir></dir><dir name="child"><dir name="list"><file name="010_content" hash="5a0ecef8ff01c476373504ae2032329b"/></dir></dir><dir name="children"><file name="010_content" hash="8485f70bdc2a819f432375d643099268"/></dir><dir name="comment"><dir name="form"><file name="010_content" hash="f2f695b4da6462e954eba77a4b369ec2"/></dir><dir name="list"><file name="010_content" hash="8649e79743f7d5dc6a634d3ef656ede6"/></dir></dir><dir name="customer"><dir name="comment"><dir name="list"><file name="010_content" hash="7fb9364fe69c4d40f6514cb7fd988a03"/></dir><dir name="view"><file name="010_content" hash="09d7914ec8ea7166ed90151cc9298a7d"/></dir></dir></dir><dir name="list"><file name="010_top" hash="a7cc8748eb003a18af68f7abc7164522"/><file name="020_rss_link" hash="7053e8c95be2facf2673b3b4d7a9bc99"/><file name="030_footer" hash="bb5d1c8a7a9070c10402dc152d736c09"/><file name="040_footer_is_tree" hash="28067e09720d62f0e928a09eeee94de8"/></dir><dir name="sibling"><dir name="list"><file name="010_content" hash="63893b913cb62e847712b408caa43cfb"/></dir></dir><dir name="view"><file name="010_content" hash="709e3570777e6e3ee5cb4453940bb06b"/></dir><dir name="widget"><dir name="link"><file name="010_content" hash="f38d2755f4ffda5d801117ed1fbfce0e"/></dir><dir name="subtree"><file name="010_content" hash="d4ca6ed68bf9cd7c69a75cf2852aa7db"/></dir><dir name="view"><file name="010_content" hash="e3907ff9a83026d7a54701f55fb06d23"/></dir></dir></dir><dir name="rss"><file name="010_content" hash="98fb61cdce9133a0b68f3ed5fb00827e"/></dir></dir></dir></dir></dir><dir name="etc"><dir name="modules"><dir name="Namespace_Module"><file name="010_content" hash="a41ceeea2ef52bd7108aab9e3724d6e4"/></dir></dir></dir><dir name="locale"><file name="010_global" hash="406695b232401f92114f0228223960cb"/><file name="020_entity" hash="7b3b9580e421493434ae3e498c48bbd0"/><file name="030_attribute" hash="0bc9532d35587f2225e398156cc3ef7f"/><file name="040_rss" hash="5e72d78710b03b014b69a492438d5602"/><file name="050_seo" hash="1c5889d31d3410540715b6c866966178"/><file name="060_attribute_yesno" hash="20eaf2d5eaa8224e5fa1c7a63634b1c0"/><file name="070_file" hash="8bebcdd48d5ae7b533cc53e789f03ef2"/><file name="080_product_relation" hash="b96f377dfa788f2772f2f8b7f156aebd"/><file name="090_category_relation" hash="5e8c099f6269eb2c18bac7003c40950b"/><file name="100_relations" hash="b7e6d3ed392ec8f0083588e7feb20bad"/><file name="110_tree" hash="37bf0971ca18e0e4222ae2b0d3ba6311"/><file name="120_tree_entity" hash="0ebe3d6c664ef1eece3031a0fc1558b8"/><file name="130_url_rewrite" hash="f2364f59558c87cc918ac627fd6be92d"/><file name="140_api" hash="58e27bb8ef0a04a711e20207dce037a4"/><file name="150_api_entity" hash="5f79e38c8a97f2e171eedc2d5246910d"/><file name="160_api_product_related" hash="f6875de876ab6e34595e5513aa35628b"/><file name="170_api_category_related" hash="06843fd4b33897e431ac4f86190e4433"/><file name="180_api_tree" hash="99bae32405e8a3eff292b0a12fd972f5"/><file name="190_api_sibling" hash="096605fae72bf35317dc4601406a23d0"/><file name="200_entity_eav" hash="f07b6cabd42c0a2878b68d6f786f2cfc"/><file name="210_eav" hash="af526c63d99167884a226b43580fb305"/><file name="220_entity_comment" hash="81d3484f7ab23fe3fa48f691017ec954"/><file name="230_comment" hash="31344b22a3622cb2e8d16fd509579000"/><file name="240_comment_store" hash="0cfb47a807925d64f8c69d97731a0c01"/><file name="250_api_comment" hash="bf31f09d8ae78799d3f037749cf17875"/><file name="260_eav_api" hash="6bee23c604fa04bf8b97571b30a26ec7"/><file name="270_frontend" hash="dd6eb8db5b99a5d5412106f3b11f0948"/><file name="280_entity_seo" hash="69afaf0eb278d53a50f8b56b80f810fa"/><file name="290_rest" hash="5fa69e22784f680e3f6b25254c097e74"/><file name="300_rest_entity" hash="a5a9c01f79a015f1041ab61de0ddfffa"/><file name="310_parent" hash="67424563811389a605b8d2d1be287a90"/></dir></dir><dir name="skin"><dir name="css"><dir name="namespace_module"><dir name="tree"><file name="010_content" hash="ebab2fbc43a5609ca870e49ca1e5be79"/></dir></dir></dir><dir name="images"><dir name="namespace_module"><dir name="collapsedgif"><file name="010_content.gif" hash="ef74c08289e94b7aae81766fb00d4195"/></dir><dir name="collapsedpng"><file name="010_content.png" hash="0613450d25c762b6a40c51768b02462d"/></dir><dir name="expandedgif"><file name="010_content.gif" hash="3f5512a54f359343273caf7b3787ee8a"/></dir><dir name="expandedpng"><file name="010_content.png" hash="f7f28ae897708c78b28ead22c3692bb8"/></dir><dir name="line1gif"><file name="010_content.gif" hash="65b0c812c8d57ea72b84fc69a077a40a"/></dir><dir name="line1png"><file name="010_content.png" hash="4e01064a2c78b8885f65ff7a40f78c02"/></dir><dir name="line2gif"><file name="010_content.gif" hash="95fc5c58069ece5eb44e198ee53b3fe1"/></dir><dir name="line2png"><file name="010_content.png" hash="6adbb4ca64d943f5ee5528d713757fde"/></dir></dir><dir name="placeholder"><dir name="entity"><file name="010_content" hash="4b2c997fd2142a6dab492f82269dd310"/></dir></dir></dir><dir name="js"><dir name="namespace_module"><dir name="tree"><file name="010_content" hash="fbfaa20b029a6a8679c21b3b8932ab0b"/></dir></dir></dir></dir></dir><file name="system.xml" hash="d921fe7409ddf9fb30e439a4766f643a"/><file name="umc.xml" hash="cece67b01ee2e44f70d5fad3cb154d7d"/><file name="umc_source.xml" hash="97b25c3610755d1301f8d6ff9b260370"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="ultimate_modulecreator.xml" hash="7fe024bab018b7612b6dc08211039968"/></dir><dir name="template"><dir name="ultimate_modulecreator"><dir name="edit"><dir name="tab"><dir name="entities"><dir name="entity"><file name="attribute.phtml" hash="27c8c9a4bd2277d259d27077203650c8"/></dir><file name="entity.phtml" hash="da83f08d5ff04003c02f094dca71271e"/></dir><file name="entities.phtml" hash="bae43279fd4d7f8adb3143b7a712a8b2"/><dir name="help"><file name="fieldset.phtml" hash="797ba4de22b39047880680b8e3445005"/></dir><file name="help.phtml" hash="47d3329bb38616348eee04127e941bd3"/><file name="relation.phtml" hash="29f7155d54c5ea9a344051ed6bbae125"/></dir></dir><file name="edit.phtml" hash="6fb48af7bcc7400eb86d618486e18b07"/><file name="tooltip.phtml" hash="fa2de6f84eaea5d175da8eaac72d34fe"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Ultimate_ModuleCreator.xml" hash="82c74149ad25681e1490577ddb609d18"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Ultimate_ModuleCreator.csv" hash="eac24b97b9a8f2fb50cd0f6a447c4077"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><file name="ultimate_modulecreator.css" hash="8079fa763d027f90d98ae86ccb0a588e"/><dir name="images"><dir name="ultimate_modulecreator"><file name="collapsed.png" hash="0613450d25c762b6a40c51768b02462d"/><file name="expanded.png" hash="f7f28ae897708c78b28ead22c3692bb8"/><file name="line1.png" hash="4e01064a2c78b8885f65ff7a40f78c02"/><file name="line2.png" hash="6adbb4ca64d943f5ee5528d713757fde"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="js"><file name="ultimate_modulecreator.js" hash="242cd77bbb0976c08c0f3a722bc7b1a4"/></dir></target></contents>
24
  <compatible/>
25
  <dependencies><required><php><min>5.0.0</min><max>7.0.0</max></php></required></dependencies>
26
  </package>