Ultimate_ModuleCreator - Version 1.5.0

Version Notes

Features:
- Generate API (v1 & v2) files.
- WSI compliance for API
Bug fixes:
- Fixed Generated translation file
- Uppercase letter in entity codes is now restricted
Refactoring:
- Entity Model.

Download this release

Release Info

Developer Marius
Extension Ultimate_ModuleCreator
Version 1.5.0
Comparing to
See all releases


Code changes from version 1.4.1 to 1.5.0

Files changed (60) hide show
  1. app/code/community/Ultimate/ModuleCreator/Model/Attribute.php +13 -0
  2. app/code/community/Ultimate/ModuleCreator/Model/Entity.php +929 -58
  3. app/code/community/Ultimate/ModuleCreator/Model/Module.php +3 -0
  4. app/code/community/Ultimate/ModuleCreator/Model/Relation.php +11 -0
  5. app/code/community/Ultimate/ModuleCreator/etc/config.xml +2 -1
  6. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/14_sibling_relation.php +1 -1
  7. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/01_top.php +116 -0
  8. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/02_product_relation_info.php +6 -0
  9. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/03_sibling_info.php +6 -0
  10. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/04_info_footer.php +2 -0
  11. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/05_tree.php +26 -0
  12. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/06_product_relation.php +55 -0
  13. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/07_sibling_relation.php +55 -0
  14. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/08_footer.php +1 -0
  15. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/V2/01_top.php +13 -0
  16. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/V2/02_product_relation.php +3 -0
  17. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/V2/03_sibling_relation.php +3 -0
  18. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/V2/04_footer.php +3 -0
  19. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/01_top.xml +5 -0
  20. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/02_entity_api.xml +46 -0
  21. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/03_resource_alias.xml +2 -0
  22. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/04_entity_resource_alias.xml +1 -0
  23. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/05_v2.xml +3 -0
  24. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/06_v2_entity.xml +1 -0
  25. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/07_acl.xml +6 -0
  26. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/08_acl_entity.xml +19 -0
  27. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/09_footer.xml +5 -0
  28. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/01_top.xml +7 -0
  29. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/02_entity_types.xml +34 -0
  30. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/03_schema_footer.xml +2 -0
  31. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/04_entity_messages.xml +37 -0
  32. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/05_porttype_top.xml +1 -0
  33. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/06_porttype_entity.xml +26 -0
  34. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/07_porttype_footer.xml +1 -0
  35. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/08_binding_top.xml +2 -0
  36. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/09_entity_binding.xml +46 -0
  37. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/10_footer.xml +7 -0
  38. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/01_top.xml +10 -0
  39. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/02_entity_types.xml +109 -0
  40. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/03_schema_footer.xml +2 -0
  41. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/04_entity_messages.xml +31 -0
  42. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/05_porttype_top.xml +1 -0
  43. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/06_porttype_entity.xml +26 -0
  44. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/07_porttype_footer.xml +1 -0
  45. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/08_binding_top.xml +2 -0
  46. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/09_entity_binding.xml +46 -0
  47. app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/10_footer.xml +7 -0
  48. app/code/community/Ultimate/ModuleCreator/etc/m/app/locale/en_US/Namespace_Module/12_tree_entity.csv +1 -1
  49. app/code/community/Ultimate/ModuleCreator/etc/m/app/locale/en_US/Namespace_Module/13_url_rewrite.csv +1 -1
  50. app/code/community/Ultimate/ModuleCreator/etc/m/app/locale/en_US/Namespace_Module/14_api.csv +8 -0
  51. app/code/community/Ultimate/ModuleCreator/etc/m/app/locale/en_US/Namespace_Module/15_api_entity.csv +10 -0
  52. app/code/community/Ultimate/ModuleCreator/etc/m/app/locale/en_US/Namespace_Module/16_api_product_related.csv +3 -0
  53. app/code/community/Ultimate/ModuleCreator/etc/m/app/locale/en_US/Namespace_Module/17_api_tree.csv +4 -0
  54. app/code/community/Ultimate/ModuleCreator/etc/m/app/locale/en_US/Namespace_Module/18_api_sibling.csv +3 -0
  55. app/code/community/Ultimate/ModuleCreator/etc/modulecreator.xml +279 -0
  56. app/code/community/Ultimate/ModuleCreator/etc/system.xml +10 -1
  57. app/design/adminhtml/default/default/template/ultimate_modulecreator/edit/tab/entities/entity.phtml +13 -2
  58. app/locale/en_US/Ultimate_ModuleCreator.csv +2 -0
  59. modman +3 -1
  60. package.xml +12 -14
app/code/community/Ultimate/ModuleCreator/Model/Attribute.php CHANGED
@@ -200,4 +200,17 @@ class Ultimate_ModuleCreator_Model_Attribute extends Ultimate_ModuleCreator_Mode
200
  }
201
  return $this->getTypeInstance()->getRequired();
202
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
203
  }
200
  }
201
  return $this->getTypeInstance()->getRequired();
202
  }
203
+ /**
204
+ * get wsdl format for attribute
205
+ * @access public
206
+ * @param bool $wsi
207
+ * @return string
208
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
209
+ */
210
+ public function getWsdlFormat($wsi = false){
211
+ if ($wsi){
212
+ return '<xsd:element name="'.$this->getCode().'" type="xsd:string" />';
213
+ }
214
+ return '<element name="'.$this->getCode().'" type="xsd:string" minOccurs="'.(int)$this->getRequired().'" />';
215
+ }
216
  }
app/code/community/Ultimate/ModuleCreator/Model/Entity.php CHANGED
@@ -47,6 +47,11 @@ class Ultimate_ModuleCreator_Model_Entity extends Ultimate_ModuleCreator_Model_A
47
  * @var array()
48
  */
49
  protected $_relatedEntities = array();
 
 
 
 
 
50
  /**
51
  * set the entity module
52
  * @access public
@@ -91,6 +96,7 @@ class Ultimate_ModuleCreator_Model_Entity extends Ultimate_ModuleCreator_Model_A
91
  if ($attribute->getEditor()){
92
  $this->setEditor(true);
93
  }
 
94
  return $this;
95
  }
96
  /**
@@ -176,7 +182,7 @@ class Ultimate_ModuleCreator_Model_Entity extends Ultimate_ModuleCreator_Model_A
176
  'updated_to_grid', 'add_status', 'use_frontend', 'frontend_list',
177
  'frontend_list_template', 'frontend_view', 'frontend_view_template', 'frontend_add_seo',
178
  'rss', 'widget', 'link_product', 'show_on_product', 'show_products',
179
- 'is_tree', 'url_rewrite', 'admin_search'
180
  );
181
  }
182
  /**
@@ -186,34 +192,53 @@ class Ultimate_ModuleCreator_Model_Entity extends Ultimate_ModuleCreator_Model_A
186
  * @author Marius Strajeru <marius.strajeru@gmail.com>
187
  */
188
  public function getPlaceholders(){
189
- $placeholders = array();
190
- $placeholders['{{EntityLabel}}'] = ucfirst($this->getLabelSingular());
191
- $placeholders['{{entityLabel}}'] = strtolower($this->getLabelSingular());
192
- $placeholders['{{EntitiesLabel}}'] = ucfirst($this->getLabelPlural());
193
- $placeholders['{{entitiesLabel}}'] = strtolower($this->getLabelPlural());
194
- $placeholders['{{entity}}'] = strtolower($this->getNameSingular());
195
- $placeholders['{{Entity}}'] = ucfirst($this->getNameSingular());
196
- $placeholders['{{ENTITY}}'] = strtoupper($this->getNameSingular());
197
- $placeholders['{{Entities}}'] = ucfirst($this->getNamePlural());
198
- $placeholders['{{entities}}'] = $this->getNamePlural();
199
- $placeholders['{{listLayout}}'] = $this->getFrontendListTemplate();
200
- $placeholders['{{viewLayout}}'] = $this->getFrontendViewTemplate();
201
- $nameAttribute = $this->getNameAttribute();
202
- $placeholders['{{EntityNameMagicCode}}'] = $this->getNameAttributeMagicCode();
203
- $placeholders['{{nameAttribute}}'] = $nameAttribute->getCode();
204
- $placeholders['{{nameAttributeLabel}}'] = $nameAttribute->getLabel();
205
- $placeholders['{{firstImageField}}'] = $this->getFirstImageField();
206
- $placeholders['{{attributeSql}}'] = $this->getAttributesSql();
207
- $placeholders['{{menu_sort}}'] = $this->getPosition();
208
- $placeholders['{{defaults}}'] = $this->getConfigDefaults();
209
- $placeholders['{{systemAttributes}}'] = $this->getSystemAttributes();
210
- $placeholders['{{EntityListItem}}'] = $this->getListItemHtml();
211
- $placeholders['{{EntityViewAttributes}}'] = $this->getViewAttributesHtml();
212
- $placeholders['{{EntityViewWidgetAttributes}}'] = $this->getViewWidgetAttributesHtml();
213
- $placeholders['{{EntityViewRelationLayout}}'] = $this->getRelationLayoutXml();
214
- $placeholders['{{fks}}'] = $this->getParentEntitiesFks("\t\t");
215
- $placeholders['{{referenceHead}}'] = $this->getReferenceHeadLayout();
216
- return $placeholders;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
217
  }
218
  /**
219
  * get the placeholders for an entity as a sibling
@@ -222,33 +247,37 @@ class Ultimate_ModuleCreator_Model_Entity extends Ultimate_ModuleCreator_Model_A
222
  * @author Marius Strajeru <marius.strajeru@gmail.com>
223
  */
224
  public function getPlaceholdersAsSibling(){
225
- $placeholders = array();
226
- $placeholders['{{SiblingLabel}}'] = ucfirst($this->getLabelSingular());
227
- $placeholders['{{siblingLabel}}'] = strtolower($this->getLabelSingular());
228
- $placeholders['{{SiblingsLabel}}'] = ucfirst($this->getLabelPlural());
229
- $placeholders['{{siblingsLabel}}'] = strtolower($this->getLabelPlural());
230
- $placeholders['{{sibling}}'] = strtolower($this->getNameSingular());
231
- $placeholders['{{Sibling}}'] = ucfirst($this->getNameSingular());
232
- $placeholders['{{SIBLING}}'] = strtoupper($this->getNameSingular());
233
- $placeholders['{{Siblings}}'] = ucfirst($this->getNamePlural());
234
- $placeholders['{{siblings}}'] = $this->getNamePlural();
235
- $placeholders['{{siblingListLayout}}'] = $this->getFrontendListTemplate();
236
- $placeholders['{{siblingViewLayout}}'] = $this->getFrontendViewTemplate();
237
- $nameAttribute = $this->getNameAttribute();
238
- $placeholders['{{SiblingNameMagicCode}}'] = $this->getNameAttributeMagicCode();
239
- $placeholders['{{siblingNameAttribute}}'] = $nameAttribute->getCode();
240
- $placeholders['{{siblingNameAttributeLabel}}'] = $nameAttribute->getLabel();
241
- $placeholders['{{siblingFirstImageField}}'] = $this->getFirstImageField();
242
- $placeholders['{{siblingAttributeSql}}'] = $this->getAttributesSql();
243
- $placeholders['{{sibling_menu_sort}}'] = $this->getPosition();
244
- $placeholders['{{sibling_defaults}}'] = $this->getConfigDefaults();
245
- $placeholders['{{siblingSystemAttributes}}'] = $this->getSystemAttributes();
246
- $placeholders['{{SiblingListItem}}'] = $this->getListItemHtml();
247
- $placeholders['{{SiblingViewAttributes}}'] = $this->getViewAttributesHtml();
248
- $placeholders['{{SiblingViewWidgetAttributes}}'] = $this->getViewWidgetAttributesHtml();
249
- $placeholders['{{SiblingViewRelationLayout}}'] = $this->getRelationLayoutXml();
250
- $placeholders['{{siblingFks}}'] = $this->getParentEntitiesFks("\t\t");
251
- return $placeholders;
 
 
 
 
252
  }
253
  /**
254
  * get magic function code for the name attribute
@@ -339,7 +368,11 @@ class Ultimate_ModuleCreator_Model_Entity extends Ultimate_ModuleCreator_Model_A
339
  foreach ($this->getAttributes() as $attribute){
340
  $content .= $padding.$attribute->getSqlColumn()."\n";
341
  }
342
- if ($this->getUrlRewrite()){
 
 
 
 
343
  $attr = Mage::getModel('modulecreator/attribute');
344
  $attr->setCode('url_key');
345
  $attr->setLabel('URL key');
@@ -409,7 +442,7 @@ class Ultimate_ModuleCreator_Model_Entity extends Ultimate_ModuleCreator_Model_A
409
  $attr->setLabel('Meta description');
410
  $attr->setType('textarea');
411
  $content .= $padding.$attr->getSqlColumn()."\n";
412
- }
413
  return substr($content,0, strlen($content) - strlen("\n"));
414
  }
415
  /**
@@ -805,4 +838,842 @@ class Ultimate_ModuleCreator_Model_Entity extends Ultimate_ModuleCreator_Model_A
805
  public function getAdminSearch(){
806
  return !$this->getIsTree() && $this->getData('admin_search');
807
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
808
  }
47
  * @var array()
48
  */
49
  protected $_relatedEntities = array();
50
+ /**
51
+ * placeholders
52
+ * @var array
53
+ */
54
+ protected $_placeholders = array();
55
  /**
56
  * set the entity module
57
  * @access public
96
  if ($attribute->getEditor()){
97
  $this->setEditor(true);
98
  }
99
+ $this->_placeholders = array();
100
  return $this;
101
  }
102
  /**
182
  'updated_to_grid', 'add_status', 'use_frontend', 'frontend_list',
183
  'frontend_list_template', 'frontend_view', 'frontend_view_template', 'frontend_add_seo',
184
  'rss', 'widget', 'link_product', 'show_on_product', 'show_products',
185
+ 'is_tree', 'url_rewrite', 'admin_search', 'create_api'
186
  );
187
  }
188
  /**
192
  * @author Marius Strajeru <marius.strajeru@gmail.com>
193
  */
194
  public function getPlaceholders(){
195
+ if (!isset($this->_placeholders['entity'])){
196
+ $placeholders = array();
197
+ $placeholders['{{EntityLabel}}'] = ucfirst($this->getLabelSingular());
198
+ $placeholders['{{entityLabel}}'] = strtolower($this->getLabelSingular());
199
+ $placeholders['{{EntitiesLabel}}'] = ucfirst($this->getLabelPlural());
200
+ $placeholders['{{entitiesLabel}}'] = strtolower($this->getLabelPlural());
201
+ $placeholders['{{entity}}'] = strtolower($this->getNameSingular());
202
+ $placeholders['{{Entity}}'] = ucfirst($this->getNameSingular());
203
+ $placeholders['{{ENTITY}}'] = strtoupper($this->getNameSingular());
204
+ $placeholders['{{Entities}}'] = ucfirst($this->getNamePlural());
205
+ $placeholders['{{entities}}'] = $this->getNamePlural();
206
+ $placeholders['{{listLayout}}'] = $this->getFrontendListTemplate();
207
+ $placeholders['{{viewLayout}}'] = $this->getFrontendViewTemplate();
208
+ $nameAttribute = $this->getNameAttribute();
209
+ $placeholders['{{EntityNameMagicCode}}'] = $this->getNameAttributeMagicCode();
210
+ $placeholders['{{nameAttribute}}'] = $nameAttribute->getCode();
211
+ $placeholders['{{nameAttributeLabel}}'] = $nameAttribute->getLabel();
212
+ $placeholders['{{firstImageField}}'] = $this->getFirstImageField();
213
+ $placeholders['{{attributeSql}}'] = $this->getAttributesSql();
214
+ $placeholders['{{menu_sort}}'] = $this->getPosition();
215
+ $placeholders['{{defaults}}'] = $this->getConfigDefaults();
216
+ $placeholders['{{systemAttributes}}'] = $this->getSystemAttributes();
217
+ $placeholders['{{EntityListItem}}'] = $this->getListItemHtml();
218
+ $placeholders['{{EntityViewAttributes}}'] = $this->getViewAttributesHtml();
219
+ $placeholders['{{EntityViewWidgetAttributes}}'] = $this->getViewWidgetAttributesHtml();
220
+ $placeholders['{{EntityViewRelationLayout}}'] = $this->getRelationLayoutXml();
221
+ $placeholders['{{fks}}'] = $this->getParentEntitiesFks("\t\t");
222
+ $placeholders['{{referenceHead}}'] = $this->getReferenceHeadLayout();
223
+ //$placeholders['{{entityApiRelations}}'] = $this->getApiRelations();
224
+ $placeholders['{{entityApiAdditional}}'] = $this->getApiAdditional();
225
+ $placeholders['{{entityAdditionalApiAcl}}'] = $this->getAdditionalApiAcl();
226
+ $placeholders['{{entityApiFaults}}'] = $this->getApiFaults();
227
+ $placeholders['{{entityApiSortOrder}}'] = 110 + $this->getPosition();
228
+ $placeholders['{{entityWsdlAttributes}}'] = $this->getWsdlAttributes();
229
+ $placeholders['{{entityWsdlRelationTypes}}'] = $this->getWsdlRelationTypes();
230
+ $placeholders['{{entityWsdlPortTypeRelation}}'] = $this->getWsdlPortTypeRelation();
231
+ $placeholders['{{entityWsdlRelationBinding}}'] = $this->getWsdlRelationBinding();
232
+ $placeholders['{{entityWsiRelationParamTypes}}']= $this->getWsiRelationParamTypes();
233
+ $placeholders['{{entityWsiRelationMessages}}'] = $this->getWsiRelationMessages();
234
+ $placeholders['{{entityWsiPortTypeRelation}}'] = $this->getWsiPortTypeRelation();
235
+ $placeholders['{{entityWsiRelationBinding}}'] = $this->getWsiRelationBinding();
236
+ $placeholders['{{entityWsiAttributes}}'] = $this->getWsiAttributes();
237
+ $placeholders['{{entityWsiRelationTypes}}'] = $this->getWsiRelationTypes();
238
+ $placeholders['{{entityWsdlMessages}}'] = $this->getWsdlMessages();
239
+ $this->_placeholders['entity'] = $placeholders;
240
+ }
241
+ return $this->_placeholders['entity'];
242
  }
243
  /**
244
  * get the placeholders for an entity as a sibling
247
  * @author Marius Strajeru <marius.strajeru@gmail.com>
248
  */
249
  public function getPlaceholdersAsSibling(){
250
+ if (!isset($this->_placeholders['sibling'])){
251
+ $placeholders = array();
252
+ $placeholders['{{SiblingLabel}}'] = ucfirst($this->getLabelSingular());
253
+ $placeholders['{{siblingLabel}}'] = strtolower($this->getLabelSingular());
254
+ $placeholders['{{SiblingsLabel}}'] = ucfirst($this->getLabelPlural());
255
+ $placeholders['{{siblingsLabel}}'] = strtolower($this->getLabelPlural());
256
+ $placeholders['{{sibling}}'] = strtolower($this->getNameSingular());
257
+ $placeholders['{{Sibling}}'] = ucfirst($this->getNameSingular());
258
+ $placeholders['{{SIBLING}}'] = strtoupper($this->getNameSingular());
259
+ $placeholders['{{Siblings}}'] = ucfirst($this->getNamePlural());
260
+ $placeholders['{{siblings}}'] = $this->getNamePlural();
261
+ $placeholders['{{siblingListLayout}}'] = $this->getFrontendListTemplate();
262
+ $placeholders['{{siblingViewLayout}}'] = $this->getFrontendViewTemplate();
263
+ $nameAttribute = $this->getNameAttribute();
264
+ $placeholders['{{SiblingNameMagicCode}}'] = $this->getNameAttributeMagicCode();
265
+ $placeholders['{{siblingNameAttribute}}'] = $nameAttribute->getCode();
266
+ $placeholders['{{siblingNameAttributeLabel}}'] = $nameAttribute->getLabel();
267
+ $placeholders['{{siblingFirstImageField}}'] = $this->getFirstImageField();
268
+ $placeholders['{{siblingAttributeSql}}'] = $this->getAttributesSql();
269
+ $placeholders['{{sibling_menu_sort}}'] = $this->getPosition();
270
+ $placeholders['{{sibling_defaults}}'] = $this->getConfigDefaults();
271
+ $placeholders['{{siblingSystemAttributes}}'] = $this->getSystemAttributes();
272
+ $placeholders['{{SiblingListItem}}'] = $this->getListItemHtml();
273
+ $placeholders['{{SiblingViewAttributes}}'] = $this->getViewAttributesHtml();
274
+ $placeholders['{{SiblingViewWidgetAttributes}}'] = $this->getViewWidgetAttributesHtml();
275
+ $placeholders['{{SiblingViewRelationLayout}}'] = $this->getRelationLayoutXml();
276
+ $placeholders['{{siblingFks}}'] = $this->getParentEntitiesFks("\t\t");
277
+
278
+ $this->_placeholders['sibling'] = $placeholders;
279
+ }
280
+ return $this->_placeholders['sibling'];
281
  }
282
  /**
283
  * get magic function code for the name attribute
368
  foreach ($this->getAttributes() as $attribute){
369
  $content .= $padding.$attribute->getSqlColumn()."\n";
370
  }
371
+ $simulated = $this->_getSimulatedAttributes(null, false);
372
+ foreach ($simulated as $attr){
373
+ $content .= $padding.$attr->getSqlColumn()."\n";
374
+ }
375
+ /*if ($this->getUrlRewrite()){
376
  $attr = Mage::getModel('modulecreator/attribute');
377
  $attr->setCode('url_key');
378
  $attr->setLabel('URL key');
442
  $attr->setLabel('Meta description');
443
  $attr->setType('textarea');
444
  $content .= $padding.$attr->getSqlColumn()."\n";
445
+ }*/
446
  return substr($content,0, strlen($content) - strlen("\n"));
447
  }
448
  /**
838
  public function getAdminSearch(){
839
  return !$this->getIsTree() && $this->getData('admin_search');
840
  }
841
+ /**
842
+ * get API xml for entity relations
843
+ * @access public
844
+ * @return string
845
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
846
+ */
847
+ public function getApiRelations(){
848
+ $string = '';
849
+ $prefix = "\t\t\t\t\t";
850
+ $eol = "\n";
851
+ $module = strtolower($this->getModule()->getModuleName());
852
+ $entity = strtolower($this->getNameSingular());
853
+ $entityLabelUc = ucfirst($this->getLabelSingular());
854
+ $entityLabel = strtolower($this->getLabelSingular());
855
+ if ($this->getLinkProduct()){
856
+ $string .= $prefix. '<assignProduct translate="title" module="'.$module.'">'.$eol;
857
+ $string .= $prefix."\t". '<title>Assign product to '.$entityLabelUc.'</title>'.$eol;
858
+ $string .= $prefix."\t". '<acl>'.$module.'/'.$entity.'/update</acl>'.$eol;
859
+ $string .= $prefix. '</assignProduct>'.$eol;
860
+
861
+ $string .= $prefix. '<unassignProduct translate="title" module="'.$module.'">'.$eol;
862
+ $string .= $prefix."\t". '<title>Remove product from '.$entityLabel.'}</title>'.$eol;
863
+ $string .= $prefix."\t". '<acl>'.$module.'/'.$entity.'/update</acl>'.$eol;
864
+ $string .= $prefix. '</unassignProduct>'.$eol;
865
+ }
866
+ $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Helper_Data::RELATION_TYPE_SIBLING);
867
+ foreach ($siblings as $sibling){
868
+ $siblingName = strtolower($sibling->getNameSingular());
869
+ $siblingNameUc = ucfirst($sibling->getNameSingular());
870
+ $siblingLabel = strtolower($sibling->getLabelSingular());
871
+
872
+ $string .= $prefix.'<assign'.$siblingNameUc.' translate="title" module="'.$module.'">'.$eol;
873
+ $string .= $prefix."\t".'<title>Assign '.$siblingLabel.' to '.$entityLabel.'</title>'.$eol;
874
+ $string .= $prefix."\t".'<acl>'.$module.'/'.$entity.'/update</acl>'.$eol;
875
+ $string .= $prefix.'</assign'.$siblingNameUc.'>'.$eol;
876
+
877
+ $string .= $prefix.'<unassign'.$siblingNameUc.' translate="title" module="'.$module.'">'.$eol;
878
+ $string .= $prefix."\t".'<title>Remove '.$siblingLabel.' from '.$entityLabel.'</title>'.$eol;
879
+ $string .= $prefix."\t".'<acl>'.$module.'/'.$entity.'/update</acl>'.$eol;
880
+ $string .= $prefix.'</unassign'.$siblingNameUc.'>'.$eol;
881
+ }
882
+ $string .= "\t\t\t\t";
883
+ return $string;
884
+ }
885
+ /**
886
+ * get list of faults for API
887
+ * @access public
888
+ * @return string
889
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
890
+ */
891
+ public function getApiFaults(){
892
+ $string = '';
893
+ $prefix = "\t\t\t\t\t";
894
+ $eol = "\n";
895
+ $code = 105;
896
+ $entity = strtolower($this->getNameSingular());
897
+ $entityLabelUc = ucfirst($this->getLabelSingular());
898
+ $entityLabel = strtolower($this->getLabelSingular());
899
+ if ($this->getIsTree()){
900
+ $string .= $prefix.'<not_moved>'.$eol;
901
+ $string .= $prefix."\t".'<code>'.$code.'</code>'.$eol;
902
+ $string .= $prefix."\t".'<message>'.$entityLabelUc.' not moved. Details in error message.</message>'.$eol;
903
+ $string .= $prefix.'</not_moved>'.$eol;
904
+ $code++;
905
+ }
906
+ if ($this->getLinkProduct()){
907
+ $string .= $prefix.'<product_not_exists>'.$eol;
908
+ $string .= $prefix."\t".'<code>'.$code.'</code>'.$eol;
909
+ $string .= $prefix."\t".'<message>Product does not exist.</message>'.$eol;
910
+ $string .= $prefix.'</product_not_exists>'.$eol;
911
+ $code++;
912
+ }
913
+ $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Helper_Data::RELATION_TYPE_SIBLING);
914
+ foreach ($siblings as $sibling){
915
+ $siblingName = strtolower($sibling->getNameSingular());
916
+ $siblingNameUc = ucfirst($sibling->getNameSingular());
917
+ $siblingLabel = strtolower($sibling->getLabelSingular());
918
+ $siblingLabelUc = ucfirst($sibling->getLabelSingular());
919
+
920
+ $string .= $prefix.'<'.$entity.'_'.$siblingName.'_not_exists>'.$eol;
921
+ $string .= $prefix."\t".'<code>'.$code.'</code>'.$eol;
922
+ $string .= $prefix."\t".'<message>'.$siblingLabelUc.' does not exist.</message>'.$eol;
923
+ $string .= $prefix.'</'.$entity.'_'.$siblingName.'_not_exists>'.$eol;
924
+ $code++;
925
+ }
926
+ $string .= "\t\t\t\t";
927
+ return $string;
928
+ }
929
+ /**
930
+ * get attributes format for wsdl
931
+ * @access public
932
+ * @param bool $wsi
933
+ * @return string
934
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
935
+ */
936
+ public function getWsdlAttributes($wsi = false){
937
+ $parents = $this->getRelatedEntities(Ultimate_ModuleCreator_Helper_Data::RELATION_TYPE_CHILD);
938
+ $padding = "\t\t\t\t\t";
939
+ $content = '';
940
+ foreach ($parents as $parent){
941
+ $attr = Mage::getModel('modulecreator/attribute');
942
+ $attr->setCode($parent->getNameSingular().'_id');
943
+ $attr->setLabel($parent->getLabelSingular());
944
+ $attr->setType('int');
945
+ $content .= $padding.$attr->getWsdlFormat($wsi)."\n";
946
+ }
947
+ foreach ($this->getAttributes() as $attribute){
948
+ $content .= $padding.$attribute->getWsdlFormat($wsi)."\n";
949
+ }
950
+ $simulated = $this->_getSimulatedAttributes(null, false);
951
+ foreach ($simulated as $attr){
952
+ if (!$attr->getIgnoreApi()){
953
+ $content .= $padding.$attr->getWsdlFormat($wsi)."\n";
954
+ }
955
+ }
956
+ return $content;
957
+ }
958
+ /**
959
+ * get attributes format for wsi
960
+ * @access public
961
+ * @return string
962
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
963
+ */
964
+ public function getWsiAttributes(){
965
+ return $this->getWsdlAttributes(true);
966
+ }
967
+ /**
968
+ * get simulated attribtues
969
+ * @access public
970
+ * @param mixed $type
971
+ * @param bool $ignoreSettings
972
+ * @return array()
973
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
974
+ */
975
+ protected function _getSimulatedAttributes($type = null, $ignoreSettings = false){
976
+ $attributes = array();
977
+ if (is_null($type)){
978
+ return array_merge(
979
+ $this->_getSimulatedAttributes('url_rewrite', $ignoreSettings),
980
+ $this->_getSimulatedAttributes('status', $ignoreSettings),
981
+ $this->_getSimulatedAttributes('tree', $ignoreSettings),
982
+ $this->_getSimulatedAttributes('rss', $ignoreSettings),
983
+ $this->_getSimulatedAttributes('seo', $ignoreSettings)
984
+ );
985
+ }
986
+ switch ($type){
987
+ case 'url_rewrite':
988
+ if ($this->getUrlRewrite() || $ignoreSettings){
989
+ $attr = Mage::getModel('modulecreator/attribute');
990
+ $attr->setCode('url_key');
991
+ $attr->setLabel('URL key');
992
+ $attr->setType('text');
993
+ $attributes[] = $attr;
994
+ }
995
+ break;
996
+ case 'status' :
997
+ if($this->getAddStatus() || $ignoreSettings){
998
+ $attr = Mage::getModel('modulecreator/attribute');
999
+ $attr->setCode('status');
1000
+ $attr->setLabel('Status');
1001
+ $attr->setType('yesno');
1002
+ $attributes[] = $attr;
1003
+ }
1004
+ break;
1005
+ case 'tree' :
1006
+ if ($this->getIsTree() || $ignoreSettings){
1007
+ $attr = Mage::getModel('modulecreator/attribute');
1008
+ $attr->setCode('parent_id');
1009
+ $attr->setLabel('Parent id');
1010
+ $attr->setType('int');
1011
+ $attributes[] = $attr;
1012
+
1013
+ $attr = Mage::getModel('modulecreator/attribute');
1014
+ $attr->setCode('path');
1015
+ $attr->setLabel('Path');
1016
+ $attr->setType('text');
1017
+ $attr->setIgnoreApi(true);
1018
+ $attributes[] = $attr;
1019
+
1020
+ $attr = Mage::getModel('modulecreator/attribute');
1021
+ $attr->setCode('position');
1022
+ $attr->setLabel('Position');
1023
+ $attr->setType('int');
1024
+ $attr->setIgnoreApi(true);
1025
+ $attributes[] = $attr;
1026
+
1027
+ $attr = Mage::getModel('modulecreator/attribute');
1028
+ $attr->setCode('level');
1029
+ $attr->setLabel('Level');
1030
+ $attr->setType('int');
1031
+ $attr->setIgnoreApi(true);
1032
+ $attributes[] = $attr;
1033
+
1034
+ $attr = Mage::getModel('modulecreator/attribute');
1035
+ $attr->setCode('children_count');
1036
+ $attr->setLabel('Children count');
1037
+ $attr->setType('int');
1038
+ $attr->setIgnoreApi(true);
1039
+ $attributes[] = $attr;
1040
+ }
1041
+ break;
1042
+ case 'rss':
1043
+ if($this->getRss() || $ignoreSettings){
1044
+ $attr = Mage::getModel('modulecreator/attribute');
1045
+ $attr->setCode('in_rss');
1046
+ $attr->setLabel('In RSS');
1047
+ $attr->setType('yesno');
1048
+ $attributes[] = $attr;
1049
+ }
1050
+ break;
1051
+ case 'seo':
1052
+ if ($this->getFrontendAddSeo() || $ignoreSettings){
1053
+ $attr = Mage::getModel('modulecreator/attribute');
1054
+ $attr->setCode('meta_title');
1055
+ $attr->setLabel('Meta title');
1056
+ $attr->setType('text');
1057
+ $attributes[] = $attr;
1058
+
1059
+ $attr = Mage::getModel('modulecreator/attribute');
1060
+ $attr->setCode('meta_keywords');
1061
+ $attr->setLabel('Meta keywords');
1062
+ $attr->setType('textarea');
1063
+ $attributes[] = $attr;
1064
+
1065
+ $attr = Mage::getModel('modulecreator/attribute');
1066
+ $attr->setCode('meta_description');
1067
+ $attr->setLabel('Meta description');
1068
+ $attr->setType('textarea');
1069
+ $attributes[] = $attr;
1070
+ }
1071
+ break;
1072
+ default:
1073
+ break;
1074
+ }
1075
+ return $attributes;
1076
+ }
1077
+ /**
1078
+ * get entity WSDL relation types
1079
+ * @access public
1080
+ * @param bool $wsi
1081
+ * @return string
1082
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
1083
+ */
1084
+ public function getWsdlRelationTypes($wsi = false){
1085
+ $content = '';
1086
+ $padding = "\t\t\t";
1087
+ $mainTag = ($wsi) ? 'xsd:complexType':'complexType';
1088
+ $subtag = ($wsi) ? 'xsd:sequence' : 'all';
1089
+ $element = ($wsi) ? 'xsd:element' : 'element';
1090
+ $eol = "\n";
1091
+ $module = strtolower($this->getModule()->getModuleName());
1092
+ $entity = $this->getNameSingular();
1093
+ $entityUc = ucfirst($this->getNameSingular());
1094
+ if ($this->getIsTree()){
1095
+ $content .= $padding.'<'.$mainTag .' name="'.$module.$entityUc.'MoveEntity">'.$eol;
1096
+ $content .= $padding."\t".'<'.$subtag.'>'.$eol;
1097
+ $content .= $padding."\t".'<'.$element.' name="'.$entity.'_id" type="xsd:string"'.((!$wsi)?' minOccurs="1"':'').' />'.$eol;
1098
+ $content .= $padding."\t".'<'.$element.' name="parent_id" type="xsd:string"'.((!$wsi)?' minOccurs="1"':'').' />'.$eol;
1099
+ $content .= $padding."\t".'<'.$element.' name="after_id" type="xsd:string"'.((!$wsi)?' minOccurs="0"':'').' />'.$eol;
1100
+ $content .= $padding."\t".'</'.$subtag.'>'.$eol;
1101
+ $content .= $padding.'</'.$mainTag.'>'.$eol;
1102
+ }
1103
+
1104
+ if ($this->getLinkProduct()){
1105
+ $content .= $padding.'<'.$mainTag .' name="'.$module.$entityUc.'AssignProductEntity">'.$eol;
1106
+ $content .= $padding."\t".'<'.$subtag.'>'.$eol;
1107
+ $content .= $padding."\t".'<'.$element.' name="'.$entity.'_id" type="xsd:string"'.((!$wsi)?' minOccurs="1"':'').' />'.$eol;
1108
+ $content .= $padding."\t".'<'.$element.' name="product_id" type="xsd:string"'.((!$wsi)?' minOccurs="1"':'').' />'.$eol;
1109
+ $content .= $padding."\t".'<'.$element.' name="position" type="xsd:string"'.((!$wsi)?' minOccurs="0"':'').' />'.$eol;
1110
+ $content .= $padding."\t".'</'.$subtag.'>'.$eol;
1111
+ $content .= $padding.'</'.$mainTag.'>'.$eol;
1112
+
1113
+ $content .= $padding.'<'.$mainTag .' name="'.$module.$entityUc.'UnassignProductEntity">'.$eol;
1114
+ $content .= $padding."\t".'<'.$subtag.'>'.$eol;
1115
+ $content .= $padding."\t".'<'.$element.' name="'.$entity.'_id" type="xsd:string"'.((!$wsi)?' minOccurs="1"':'').' />'.$eol;
1116
+ $content .= $padding."\t".'<'.$element.' name="product_id" type="xsd:string"'.((!$wsi)?' minOccurs="1"':'').' />'.$eol;
1117
+ $content .= $padding."\t".'</'.$subtag.'>'.$eol;
1118
+ $content .= $padding.'</'.$mainTag.'>'.$eol;
1119
+ }
1120
+ $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Helper_Data::RELATION_TYPE_SIBLING);
1121
+ foreach ($siblings as $sibling){
1122
+ $siblingName = strtolower($sibling->getNameSingular());
1123
+ $siblingNameUc = ucfirst($sibling->getNameSingular());
1124
+ $siblingLabel = strtolower($sibling->getLabelSingular());
1125
+
1126
+ $content .= $padding.'<'.$mainTag .' name="'.$module.$entityUc.'Assign'.$siblingNameUc.'Entity">'.$eol;
1127
+ $content .= $padding."\t".'<'.$subtag.'>'.$eol;
1128
+ $content .= $padding."\t".'<'.$element.' name="'.$entity.'_id" type="xsd:string"'.((!$wsi)?' minOccurs="1"':'').' />'.$eol;
1129
+ $content .= $padding."\t".'<'.$element.' name="'.$siblingName.'_id" type="xsd:string"'.((!$wsi)?' minOccurs="1"':'').' />'.$eol;
1130
+ $content .= $padding."\t".'<'.$element.' name="position" type="xsd:string"'.((!$wsi)?' minOccurs="0"':'').' />'.$eol;
1131
+ $content .= $padding."\t".'</'.$subtag.'>'.$eol;
1132
+ $content .= $padding.'</'.$mainTag.'>'.$eol;
1133
+
1134
+ $content .= $padding.'<'.$mainTag .' name="'.$module.$entityUc.'Unassign'.$siblingNameUc.'Entity">'.$eol;
1135
+ $content .= $padding."\t".'<'.$subtag.'>'.$eol;
1136
+ $content .= $padding."\t".'<'.$element.' name="'.$entity.'_id" type="xsd:string"'.((!$wsi)?' minOccurs="1"':'').' />'.$eol;
1137
+ $content .= $padding."\t".'<'.$element.' name="'.$siblingName.'_id" type="xsd:string"'.((!$wsi)?' minOccurs="1"':'').' />'.$eol;
1138
+ $content .= $padding."\t".'</'.$subtag.'>'.$eol;
1139
+ $content .= $padding.'</'.$mainTag.'>'.$eol;
1140
+ }
1141
+ $content .= "\t\t";
1142
+ return $content;
1143
+ }
1144
+ /**
1145
+ * get entity WSI relation types
1146
+ * @access public
1147
+ * @return string
1148
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
1149
+ */
1150
+ public function getWsiRelationTypes(){
1151
+ return $this->getWsdlRelationTypes(true);
1152
+ }
1153
+
1154
+ /**
1155
+ * get entity WSDL messages for relations
1156
+ * @access public
1157
+ * @return string
1158
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
1159
+ */
1160
+ public function getWsdlMessages(){
1161
+ $content = '';
1162
+ $padding = "\t\t";
1163
+ $eol = "\n";
1164
+ $module = strtolower($this->getModule()->getModuleName());
1165
+ $entity = $this->getNameSingular();
1166
+ $entityUc = ucfirst($this->getNameSingular());
1167
+ if ($this->getIsTree()){
1168
+ $content .= $padding.'<message name="'.$module.$entityUc.'MoveRequest">'.$eol;
1169
+ $content .= $padding."\t".'<part name="sessionId" type="xsd:string" />'.$eol;
1170
+ $content .= $padding."\t".'<part name="'.$entity.'Id" type="xsd:string" />'.$eol;
1171
+ $content .= $padding."\t".'<part name="parentId" type="xsd:string" />'.$eol;
1172
+ $content .= $padding."\t".'<part name="afterId" type="xsd:string" />'.$eol;
1173
+ $content .= $padding.'</message>'.$eol;
1174
+
1175
+ $content .= $padding.'<message name="'.$module.$entityUc.'MoveResponse">'.$eol;
1176
+ $content .= $padding."\t".'<part name="id" type="xsd:boolean"/>'.$eol;
1177
+ $content .= $padding.'</message>'.$eol;
1178
+ }
1179
+ if ($this->getLinkProduct()){
1180
+ $content .= $padding.'<message name="'.$module.$entityUc.'AssignProductRequest">'.$eol;
1181
+ $content .= $padding."\t".'<part name="sessionId" type="xsd:string" />'.$eol;
1182
+ $content .= $padding."\t".'<part name="'.$entity.'Id" type="xsd:string" />'.$eol;
1183
+ $content .= $padding."\t".'<part name="productId" type="xsd:string" />'.$eol;
1184
+ $content .= $padding."\t".'<part name="position" type="xsd:string" />'.$eol;
1185
+ $content .= $padding.'</message>'.$eol;
1186
+ $content .= $padding.'<message name="'.$module.$entityUc.'AssignProductResponse">'.$eol;
1187
+ $content .= $padding."\t".'<part name="result" type="xsd:boolean" />'.$eol;
1188
+ $content .= $padding.'</message>'.$eol;
1189
+ $content .= $padding.'<message name="'.$module.$entityUc.'UnassignProductRequest">'.$eol;
1190
+ $content .= $padding."\t".'<part name="sessionId" type="xsd:string" />'.$eol;
1191
+ $content .= $padding."\t".'<part name="'.$entity.'Id" type="xsd:string" />'.$eol;
1192
+ $content .= $padding."\t".'<part name="productId" type="xsd:string" />'.$eol;
1193
+ $content .= $padding.'</message>'.$eol;
1194
+ $content .= $padding.'<message name="'.$module.$entityUc.'UnassignProductResponse">'.$eol;
1195
+ $content .= $padding."\t".'<part name="result" type="xsd:boolean" />'.$eol;
1196
+ $content .= $padding.'</message>'.$eol;
1197
+ }
1198
+ $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Helper_Data::RELATION_TYPE_SIBLING);
1199
+ foreach ($siblings as $sibling){
1200
+ $siblingName = strtolower($sibling->getNameSingular());
1201
+ $siblingNameUc = ucfirst($sibling->getNameSingular());
1202
+ $siblingLabel = strtolower($sibling->getLabelSingular());
1203
+
1204
+ $content .= $padding.'<message name="'.$module.$entityUc.'Assign'.$siblingNameUc.'Request">'.$eol;
1205
+ $content .= $padding."\t".'<part name="sessionId" type="xsd:string" />'.$eol;
1206
+ $content .= $padding."\t".'<part name="'.$entity.'Id" type="xsd:string" />'.$eol;
1207
+ $content .= $padding."\t".'<part name="'.$siblingName.'Id" type="xsd:string" />'.$eol;
1208
+ $content .= $padding."\t".'<part name="position" type="xsd:string" />'.$eol;
1209
+ $content .= $padding.'</message>'.$eol;
1210
+ $content .= $padding.'<message name="'.$module.$entityUc.'Assign'.$siblingNameUc.'Response">'.$eol;
1211
+ $content .= $padding."\t".'<part name="result" type="xsd:boolean" />'.$eol;
1212
+ $content .= $padding.'</message>'.$eol;
1213
+ $content .= $padding.'<message name="'.$module.$entityUc.'Unassign'.$siblingNameUc.'Request">'.$eol;
1214
+ $content .= $padding."\t".'<part name="sessionId" type="xsd:string" />'.$eol;
1215
+ $content .= $padding."\t".'<part name="'.$entity.'Id" type="xsd:string" />'.$eol;
1216
+ $content .= $padding."\t".'<part name="'.$siblingName.'Id" type="xsd:string" />'.$eol;
1217
+ $content .= $padding.'</message>'.$eol;
1218
+ $content .= $padding.'<message name="'.$module.$entityUc.'Unassign'.$siblingNameUc.'Response">'.$eol;
1219
+ $content .= $padding."\t".'<part name="result" type="xsd:boolean" />'.$eol;
1220
+ $content .= $padding.'</message>'.$eol;
1221
+ }
1222
+ $content .= "\t";
1223
+ return $content;
1224
+ }
1225
+ /**
1226
+ * get entity WSDL port type for relations
1227
+ * @access public
1228
+ * @param bool $wsi
1229
+ * @return string
1230
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
1231
+ */
1232
+ public function getWsdlPortTypeRelation($wsi = false){
1233
+ $content = '';
1234
+ $padding = "\t\t";
1235
+ $eol = "\n";
1236
+ $module = strtolower($this->getModule()->getModuleName());
1237
+ $entity = $this->getNameSingular();
1238
+ $entityUc = ucfirst($this->getNameSingular());
1239
+ $label = strtolower($this->getLabelSingular());
1240
+
1241
+ $tagPrefix = ($wsi) ? 'wsdl:':'';
1242
+
1243
+ if ($this->getIsTree()){
1244
+ $content .= $padding.'<'.$tagPrefix.'operation name="'.$module.$entityUc.'Move">'.$eol;
1245
+ $content .= $padding."\t".'<'.$tagPrefix.'documentation>Move '.$label.' in tree</'.$tagPrefix.'documentation>'.$eol;
1246
+ $content .= $padding."\t".'<'.$tagPrefix.'input message="typens:'.$module.$entityUc.'MoveRequest" />'.$eol;
1247
+ $content .= $padding."\t".'<'.$tagPrefix.'output message="typens:'.$module.$entityUc.'MoveResponse" />'.$eol;
1248
+ $content .= $padding.'</'.$tagPrefix.'operation>'.$eol;
1249
+
1250
+ }
1251
+
1252
+ if ($this->getLinkProduct()){
1253
+ $content .= $padding.'<'.$tagPrefix.'operation name="'.$module.$entityUc.'AssignProduct">'.$eol;
1254
+ $content .= $padding."\t".'<'.$tagPrefix.'documentation>Assign product to '.$label.'</'.$tagPrefix.'documentation>'.$eol;
1255
+ $content .= $padding."\t".'<'.$tagPrefix.'input message="typens:'.$module.$entityUc.'AssignProductRequest" />'.$eol;
1256
+ $content .= $padding."\t".'<'.$tagPrefix.'output message="typens:'.$module.$entityUc.'AssignProductResponse" />'.$eol;
1257
+ $content .= $padding.'</'.$tagPrefix.'operation>'.$eol;
1258
+ $content .= $padding.'<'.$tagPrefix.'operation name="'.$module.$entityUc.'UnassignProduct">'.$eol;
1259
+ $content .= $padding."\t".'<'.$tagPrefix.'documentation>Remove product from '.$label.'</'.$tagPrefix.'documentation>'.$eol;
1260
+ $content .= $padding."\t".'<'.$tagPrefix.'input message="typens:'.$module.$entityUc.'UnassignProductRequest" />'.$eol;
1261
+ $content .= $padding."\t".'<'.$tagPrefix.'output message="typens:'.$module.$entityUc.'UnassignProductResponse" />'.$eol;
1262
+ $content .= $padding.'</'.$tagPrefix.'operation>'.$eol;
1263
+ }
1264
+ $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Helper_Data::RELATION_TYPE_SIBLING);
1265
+ foreach ($siblings as $sibling){
1266
+ $siblingName = strtolower($sibling->getNameSingular());
1267
+ $siblingNameUc = ucfirst($sibling->getNameSingular());
1268
+ $siblingLabel = strtolower($sibling->getLabelSingular());
1269
+
1270
+ $content .= $padding.'<'.$tagPrefix.'operation name="'.$module.$entityUc.'Assign'.$siblingNameUc.'">'.$eol;
1271
+ $content .= $padding."\t".'<'.$tagPrefix.'documentation>Assign '.$siblingLabel.' to '.$label.'</'.$tagPrefix.'documentation>'.$eol;
1272
+ $content .= $padding."\t".'<'.$tagPrefix.'input message="typens:'.$module.$entityUc.'Assign'.$siblingNameUc.'Request" />'.$eol;
1273
+ $content .= $padding."\t".'<'.$tagPrefix.'output message="typens:'.$module.$entityUc.'Assign'.$siblingNameUc.'Response" />'.$eol;
1274
+ $content .= $padding.'</'.$tagPrefix.'operation>'.$eol;
1275
+ $content .= $padding.'<'.$tagPrefix.'operation name="'.$module.$entityUc.'Unassign'.$siblingNameUc.'">'.$eol;
1276
+ $content .= $padding."\t".'<'.$tagPrefix.'documentation>Remove '.$siblingLabel.' from '.$label.'</'.$tagPrefix.'documentation>'.$eol;
1277
+ $content .= $padding."\t".'<'.$tagPrefix.'input message="typens:'.$module.$entityUc.'Unassign'.$siblingNameUc.'Request" />'.$eol;
1278
+ $content .= $padding."\t".'<'.$tagPrefix.'output message="typens:'.$module.$entityUc.'Unassign'.$siblingNameUc.'Response" />'.$eol;
1279
+ $content .= $padding.'</'.$tagPrefix.'operation>'.$eol;
1280
+
1281
+ }
1282
+ $content .="\t";
1283
+ return $content;
1284
+ }
1285
+ /**
1286
+ * get entity WSI port type for relations
1287
+ * @access public
1288
+ * @return string
1289
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
1290
+ */
1291
+ public function getWsiPortTypeRelation(){
1292
+ return $this->getWsdlPortTypeRelation(true);
1293
+ }
1294
+ /**
1295
+ * get WSDL relation binding
1296
+ * @access public
1297
+ * @return string
1298
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
1299
+ */
1300
+ public function getWsdlRelationBinding(){
1301
+ $content = '';
1302
+ $padding = "\t\t";
1303
+ $eol = "\n";
1304
+ $module = strtolower($this->getModule()->getModuleName());
1305
+ $entity = $this->getNameSingular();
1306
+ $entityUc = ucfirst($this->getNameSingular());
1307
+ $label = strtolower($this->getLabelSingular());
1308
+ if ($this->getIsTree()){
1309
+ $content .= $padding.'<operation name="'.$module.$entityUc.'Move">'.$eol;
1310
+ $content .= $padding."\t".'<soap:operation soapAction="urn:{{var wsdl.handler}}Action" />'.$eol;
1311
+ $content .= $padding."\t".'<input>'.$eol;
1312
+ $content .= $padding."\t\t".'<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />'.$eol;
1313
+ $content .= $padding."\t".'</input>'.$eol;
1314
+ $content .= $padding."\t".'<output>'.$eol;
1315
+ $content .= $padding."\t\t".'<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />'.$eol;
1316
+ $content .= $padding."\t".'</output>'.$eol;
1317
+ $content .= $padding.'</operation>'.$eol;
1318
+ }
1319
+ if ($this->getLinkProduct()){
1320
+ $content .= $padding.'<operation name="'.$module.$entityUc.'AssignProduct">'.$eol;
1321
+ $content .= $padding."\t".'<soap:operation soapAction="urn:{{var wsdl.handler}}Action" />'.$eol;
1322
+ $content .= $padding."\t".'<input>'.$eol;
1323
+ $content .= $padding."\t\t".'<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />'.$eol;
1324
+ $content .= $padding."\t".'</input>'.$eol;
1325
+ $content .= $padding."\t".'<output>'.$eol;
1326
+ $content .= $padding."\t\t".'<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />'.$eol;
1327
+ $content .= $padding."\t".'</output>'.$eol;
1328
+ $content .= $padding.'</operation>'.$eol;
1329
+
1330
+ $content .= $padding.'<operation name="'.$module.$entityUc.'UnassignProduct">'.$eol;
1331
+ $content .= $padding."\t".'<soap:operation soapAction="urn:{{var wsdl.handler}}Action" />'.$eol;
1332
+ $content .= $padding."\t".'<input>'.$eol;
1333
+ $content .= $padding."\t\t".'<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />'.$eol;
1334
+ $content .= $padding."\t".'</input>'.$eol;
1335
+ $content .= $padding."\t".'<output>'.$eol;
1336
+ $content .= $padding."\t\t".'<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />'.$eol;
1337
+ $content .= $padding."\t".'</output>'.$eol;
1338
+ $content .= $padding.'</operation>'.$eol;
1339
+ }
1340
+ $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Helper_Data::RELATION_TYPE_SIBLING);
1341
+ foreach ($siblings as $sibling){
1342
+ $siblingName = strtolower($sibling->getNameSingular());
1343
+ $siblingNameUc = ucfirst($sibling->getNameSingular());
1344
+ $siblingLabel = strtolower($sibling->getLabelSingular());
1345
+
1346
+ $content .= $padding.'<operation name="'.$module.$entityUc.'Assign'.$siblingNameUc.'">'.$eol;
1347
+ $content .= $padding."\t".'<soap:operation soapAction="urn:{{var wsdl.handler}}Action" />'.$eol;
1348
+ $content .= $padding."\t".'<input>'.$eol;
1349
+ $content .= $padding."\t\t".'<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />'.$eol;
1350
+ $content .= $padding."\t".'</input>'.$eol;
1351
+ $content .= $padding."\t".'<output>'.$eol;
1352
+ $content .= $padding."\t\t".'<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />'.$eol;
1353
+ $content .= $padding."\t".'</output>'.$eol;
1354
+ $content .= $padding.'</operation>'.$eol;
1355
+
1356
+ $content .= $padding.'<operation name="'.$module.$entityUc.'Unassign'.$siblingNameUc.'">'.$eol;
1357
+ $content .= $padding."\t".'<soap:operation soapAction="urn:{{var wsdl.handler}}Action" />'.$eol;
1358
+ $content .= $padding."\t".'<input>'.$eol;
1359
+ $content .= $padding."\t\t".'<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />'.$eol;
1360
+ $content .= $padding."\t".'</input>'.$eol;
1361
+ $content .= $padding."\t".'<output>'.$eol;
1362
+ $content .= $padding."\t\t".'<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />'.$eol;
1363
+ $content .= $padding."\t".'</output>'.$eol;
1364
+ $content .= $padding.'</operation>'.$eol;
1365
+ }
1366
+ $content .= "\t";
1367
+ return $content;
1368
+ }
1369
+ /**
1370
+ * get WSI relation binding
1371
+ * @access public
1372
+ * @return string
1373
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
1374
+ */
1375
+ public function getWsiRelationBinding(){
1376
+ $content = '';
1377
+ $padding = "\t\t";
1378
+ $eol = "\n";
1379
+ $module = strtolower($this->getModule()->getModuleName());
1380
+ $entity = $this->getNameSingular();
1381
+ $entityUc = ucfirst($this->getNameSingular());
1382
+ $label = strtolower($this->getLabelSingular());
1383
+
1384
+ if ($this->getIsTree()){
1385
+ $content .= $padding.'<wsdl:operation name="'.$module.$entityUc.'Move">'.$eol;
1386
+ $content .= $padding."\t".'<soap:operation soapAction="" />'.$eol;
1387
+ $content .= $padding."\t".'<wsdl:input>'.$eol;
1388
+ $content .= $padding."\t\t".'<soap:body use="literal" />'.$eol;
1389
+ $content .= $padding."\t".'</wsdl:input>'.$eol;
1390
+ $content .= $padding."\t".'<wsdl:output>'.$eol;
1391
+ $content .= $padding."\t\t".'<soap:body use="literal" />'.$eol;
1392
+ $content .= $padding."\t".'</wsdl:output>'.$eol;
1393
+ $content .= $padding.'</wsdl:operation>'.$eol;
1394
+ }
1395
+
1396
+ if ($this->getLinkProduct()){
1397
+ $content .= $padding.'<wsdl:operation name="'.$module.$entityUc.'AssignProduct">'.$eol;
1398
+ $content .= $padding."\t".'<soap:operation soapAction="" />'.$eol;
1399
+ $content .= $padding."\t".'<wsdl:input>'.$eol;
1400
+ $content .= $padding."\t\t".'<soap:body use="literal" />'.$eol;
1401
+ $content .= $padding."\t".'</wsdl:input>'.$eol;
1402
+ $content .= $padding."\t".'<wsdl:output>'.$eol;
1403
+ $content .= $padding."\t\t".'<soap:body use="literal" />'.$eol;
1404
+ $content .= $padding."\t".'</wsdl:output>'.$eol;
1405
+ $content .= $padding.'</wsdl:operation>'.$eol;
1406
+
1407
+ $content .= $padding.'<wsdl:operation name="'.$module.$entityUc.'UnassignProduct">'.$eol;
1408
+ $content .= $padding."\t".'<soap:operation soapAction="" />'.$eol;
1409
+ $content .= $padding."\t".'<wsdl:input>'.$eol;
1410
+ $content .= $padding."\t\t".'<soap:body use="literal" />'.$eol;
1411
+ $content .= $padding."\t".'</wsdl:input>'.$eol;
1412
+ $content .= $padding."\t".'<wsdl:output>'.$eol;
1413
+ $content .= $padding."\t\t".'<soap:body use="literal" />'.$eol;
1414
+ $content .= $padding."\t".'</wsdl:output>'.$eol;
1415
+ $content .= $padding.'</wsdl:operation>'.$eol;
1416
+ }
1417
+ $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Helper_Data::RELATION_TYPE_SIBLING);
1418
+ foreach ($siblings as $sibling){
1419
+ $siblingName = strtolower($sibling->getNameSingular());
1420
+ $siblingNameUc = ucfirst($sibling->getNameSingular());
1421
+ $siblingLabel = strtolower($sibling->getLabelSingular());
1422
+
1423
+ $content .= $padding.'<wsdl:operation name="'.$module.$entityUc.'Assign'.$siblingNameUc.'">'.$eol;
1424
+ $content .= $padding."\t".'<soap:operation soapAction="" />'.$eol;
1425
+ $content .= $padding."\t".'<wsdl:input>'.$eol;
1426
+ $content .= $padding."\t\t".'<soap:body use="literal" />'.$eol;
1427
+ $content .= $padding."\t".'</wsdl:input>'.$eol;
1428
+ $content .= $padding."\t".'<wsdl:output>'.$eol;
1429
+ $content .= $padding."\t\t".'<soap:body use="literal" />'.$eol;
1430
+ $content .= $padding."\t".'</wsdl:output>'.$eol;
1431
+ $content .= $padding.'</wsdl:operation>'.$eol;
1432
+
1433
+ $content .= $padding.'<wsdl:operation name="'.$module.$entityUc.'Unssign'.$siblingNameUc.'">'.$eol;
1434
+ $content .= $padding."\t".'<soap:operation soapAction="" />'.$eol;
1435
+ $content .= $padding."\t".'<wsdl:input>'.$eol;
1436
+ $content .= $padding."\t\t".'<soap:body use="literal" />'.$eol;
1437
+ $content .= $padding."\t".'</wsdl:input>'.$eol;
1438
+ $content .= $padding."\t".'<wsdl:output>'.$eol;
1439
+ $content .= $padding."\t\t".'<soap:body use="literal" />'.$eol;
1440
+ $content .= $padding."\t".'</wsdl:output>'.$eol;
1441
+ $content .= $padding.'</wsdl:operation>'.$eol;
1442
+ }
1443
+ $content .= "\t";
1444
+ return $content;
1445
+ }
1446
+ /**
1447
+ * get entity WSI relation param types
1448
+ * @access public
1449
+ * @return string
1450
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
1451
+ */
1452
+ public function getWsiRelationParamTypes(){
1453
+ $content = '';
1454
+ $padding = "\t\t\t";
1455
+ $eol = "\n";
1456
+ $module = strtolower($this->getModule()->getModuleName());
1457
+ $entity = $this->getNameSingular();
1458
+ $entityUc = ucfirst($this->getNameSingular());
1459
+ $label = strtolower($this->getLabelSingular());
1460
+
1461
+ if ($this->getIsTree()){
1462
+ $content .= $padding.'<xsd:element name="'.$module.$entityUc.'MoveRequestParam">'.$eol;
1463
+ $content .= $padding."\t".'<xsd:complexType>'.$eol;
1464
+ $content .= $padding."\t\t".'<xsd:sequence>'.$eol;
1465
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="sessionId" type="xsd:string" />'.$eol;
1466
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="'.$entity.'Id" type="xsd:string" />'.$eol;
1467
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="parent_d" type="xsd:string" />'.$eol;
1468
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="0" maxOccurs="1" name="after_id" type="xsd:string" />'.$eol;
1469
+ $content .= $padding."\t\t".'</xsd:sequence>'.$eol;
1470
+ $content .= $padding."\t".'</xsd:complexType>'.$eol;
1471
+ $content .= $padding.'</xsd:element>'.$eol;
1472
+
1473
+ $content .= $padding.'<xsd:element name="'.$module.$entityUc.'AssignProductResponseParam">'.$eol;
1474
+ $content .= $padding."\t".'<xsd:complexType>'.$eol;
1475
+ $content .= $padding."\t\t".'<xsd:sequence>'.$eol;
1476
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="result" type="xsd:boolean" />'.$eol;
1477
+ $content .= $padding."\t\t".'</xsd:sequence>'.$eol;
1478
+ $content .= $padding."\t".'</xsd:complexType>'.$eol;
1479
+ $content .= $padding.'</xsd:element>'.$eol;
1480
+ }
1481
+
1482
+ if ($this->getLinkProduct()){
1483
+ $content .= $padding.'<xsd:element name="'.$module.$entityUc.'AssignProductRequestParam">'.$eol;
1484
+ $content .= $padding."\t".'<xsd:complexType>'.$eol;
1485
+ $content .= $padding."\t\t".'<xsd:sequence>'.$eol;
1486
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="sessionId" type="xsd:string" />'.$eol;
1487
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="'.$entity.'Id" type="xsd:string" />'.$eol;
1488
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="productId" type="xsd:string" />'.$eol;
1489
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="0" maxOccurs="1" name="position" type="xsd:string" />'.$eol;
1490
+ $content .= $padding."\t\t".'</xsd:sequence>'.$eol;
1491
+ $content .= $padding."\t".'</xsd:complexType>'.$eol;
1492
+ $content .= $padding.'</xsd:element>'.$eol;
1493
+
1494
+ $content .= $padding.'<xsd:element name="'.$module.$entityUc.'AssignProductResponseParam">'.$eol;
1495
+ $content .= $padding."\t".'<xsd:complexType>'.$eol;
1496
+ $content .= $padding."\t\t".'<xsd:sequence>'.$eol;
1497
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="result" type="xsd:boolean" />'.$eol;
1498
+ $content .= $padding."\t\t".'</xsd:sequence>'.$eol;
1499
+ $content .= $padding."\t".'</xsd:complexType>'.$eol;
1500
+ $content .= $padding.'</xsd:element>'.$eol;
1501
+
1502
+ $content .= $padding.'<xsd:element name="'.$module.$entityUc.'UnassignProductRequestParam">'.$eol;
1503
+ $content .= $padding."\t".'<xsd:complexType>'.$eol;
1504
+ $content .= $padding."\t\t".'<xsd:sequence>'.$eol;
1505
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="sessionId" type="xsd:string" />'.$eol;
1506
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="'.$entity.'Id" type="xsd:string" />'.$eol;
1507
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="productId" type="xsd:string" />'.$eol;
1508
+ $content .= $padding."\t\t".'</xsd:sequence>'.$eol;
1509
+ $content .= $padding."\t".'</xsd:complexType>'.$eol;
1510
+ $content .= $padding.'</xsd:element>'.$eol;
1511
+
1512
+ $content .= $padding.'<xsd:element name="'.$module.$entityUc.'UnassignProductResponseParam">'.$eol;
1513
+ $content .= $padding."\t".'<xsd:complexType>'.$eol;
1514
+ $content .= $padding."\t\t".'<xsd:sequence>'.$eol;
1515
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="result" type="xsd:boolean" />'.$eol;
1516
+ $content .= $padding."\t\t".'</xsd:sequence>'.$eol;
1517
+ $content .= $padding."\t".'</xsd:complexType>'.$eol;
1518
+ $content .= $padding.'</xsd:element>'.$eol;
1519
+ }
1520
+ $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Helper_Data::RELATION_TYPE_SIBLING);
1521
+ foreach ($siblings as $sibling){
1522
+ $siblingName = strtolower($sibling->getNameSingular());
1523
+ $siblingNameUc = ucfirst($sibling->getNameSingular());
1524
+ $siblingLabel = strtolower($sibling->getLabelSingular());
1525
+
1526
+ $content .= $padding.'<xsd:element name="'.$module.$entityUc.'Assign'.$siblingNameUc.'RequestParam">'.$eol;
1527
+ $content .= $padding."\t".'<xsd:complexType>'.$eol;
1528
+ $content .= $padding."\t\t".'<xsd:sequence>'.$eol;
1529
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="sessionId" type="xsd:string" />'.$eol;
1530
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="'.$entity.'Id" type="xsd:string" />'.$eol;
1531
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="'.$siblingName.'Id" type="xsd:string" />'.$eol;
1532
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="0" maxOccurs="1" name="position" type="xsd:string" />'.$eol;
1533
+ $content .= $padding."\t\t".'</xsd:sequence>'.$eol;
1534
+ $content .= $padding."\t".'</xsd:complexType>'.$eol;
1535
+ $content .= $padding.'</xsd:element>'.$eol;
1536
+
1537
+ $content .= $padding.'<xsd:element name="'.$module.$entityUc.'Assign'.$siblingNameUc.'ResponseParam">'.$eol;
1538
+ $content .= $padding."\t".'<xsd:complexType>'.$eol;
1539
+ $content .= $padding."\t\t".'<xsd:sequence>'.$eol;
1540
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="result" type="xsd:boolean" />'.$eol;
1541
+ $content .= $padding."\t\t".'</xsd:sequence>'.$eol;
1542
+ $content .= $padding."\t".'</xsd:complexType>'.$eol;
1543
+ $content .= $padding.'</xsd:element>'.$eol;
1544
+
1545
+ $content .= $padding.'<xsd:element name="'.$module.$entityUc.'Unassign'.$siblingNameUc.'RequestParam">'.$eol;
1546
+ $content .= $padding."\t".'<xsd:complexType>'.$eol;
1547
+ $content .= $padding."\t\t".'<xsd:sequence>'.$eol;
1548
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="sessionId" type="xsd:string" />'.$eol;
1549
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="'.$entity.'Id" type="xsd:string" />'.$eol;
1550
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="'.$siblingName.'Id" type="xsd:string" />'.$eol;
1551
+ $content .= $padding."\t\t".'</xsd:sequence>'.$eol;
1552
+ $content .= $padding."\t".'</xsd:complexType>'.$eol;
1553
+ $content .= $padding.'</xsd:element>'.$eol;
1554
+
1555
+ $content .= $padding.'<xsd:element name="'.$module.$entityUc.'Unassign'.$siblingNameUc.'ResponseParam">'.$eol;
1556
+ $content .= $padding."\t".'<xsd:complexType>'.$eol;
1557
+ $content .= $padding."\t\t".'<xsd:sequence>'.$eol;
1558
+ $content .= $padding."\t\t\t".'<xsd:element minOccurs="1" maxOccurs="1" name="result" type="xsd:boolean" />'.$eol;
1559
+ $content .= $padding."\t\t".'</xsd:sequence>'.$eol;
1560
+ $content .= $padding."\t".'</xsd:complexType>'.$eol;
1561
+ $content .= $padding.'</xsd:element>'.$eol;
1562
+ }
1563
+ $content .= "\t\t";
1564
+ return $content;
1565
+ }
1566
+ /**
1567
+ * get entity WSI relation messages
1568
+ * @access public
1569
+ * @return string
1570
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
1571
+ */
1572
+ public function getWsiRelationMessages(){
1573
+ $content = '';
1574
+ $padding = "\t";
1575
+ $eol = "\n";
1576
+ $module = strtolower($this->getModule()->getModuleName());
1577
+ $entity = $this->getNameSingular();
1578
+ $entityUc = ucfirst($this->getNameSingular());
1579
+ $label = strtolower($this->getLabelSingular());
1580
+
1581
+ if ($this->getIsTree()){
1582
+ $content .= $padding.'<wsdl:message name="'.$module.$entityUc.'MoveRequest">'.$eol;
1583
+ $content .= $padding."\t".'<wsdl:part name="parameters" element="typens:'.$module.$entityUc.'MoveRequestParam" />'.$eol;
1584
+ $content .= $padding.'</wsdl:message>'.$eol;
1585
+ $content .= $padding.'<wsdl:message name="'.$module.$entityUc.'MoveResponse">'.$eol;
1586
+ $content .= $padding."\t".'<wsdl:part name="parameters" element="typens:'.$module.$entityUc.'MoveResponseParam" />'.$eol;
1587
+ $content .= $padding.'</wsdl:message>'.$eol;
1588
+ }
1589
+
1590
+ if ($this->getLinkProduct()){
1591
+ $content .= $padding.'<wsdl:message name="'.$module.$entityUc.'AssignProductRequest">'.$eol;
1592
+ $content .= $padding."\t".'<wsdl:part name="parameters" element="typens:'.$module.$entityUc.'AssignProductRequestParam" />'.$eol;
1593
+ $content .= $padding.'</wsdl:message>'.$eol;
1594
+ $content .= $padding.'<wsdl:message name="'.$module.$entityUc.'AssignProductResponse">'.$eol;
1595
+ $content .= $padding."\t".'<wsdl:part name="parameters" element="typens:'.$module.$entityUc.'AssignProductResponseParam" />'.$eol;
1596
+ $content .= $padding.'</wsdl:message>'.$eol;
1597
+ $content .= $padding.'<wsdl:message name="'.$module.$entityUc.'UnassignProductRequest">'.$eol;
1598
+ $content .= $padding."\t".'<wsdl:part name="parameters" element="typens:'.$module.$entityUc.'UnassignProductRequestParam" />'.$eol;
1599
+ $content .= $padding.'</wsdl:message>'.$eol;
1600
+ $content .= $padding.'<wsdl:message name="'.$module.$entityUc.'UnassignProductResponse">'.$eol;
1601
+ $content .= $padding."\t".'<wsdl:part name="parameters" element="typens:'.$module.$entityUc.'UnassignProductResponseParam" />'.$eol;
1602
+ $content .= $padding.'</wsdl:message>'.$eol;
1603
+ }
1604
+ $siblings = $this->getRelatedEntities(Ultimate_ModuleCreator_Helper_Data::RELATION_TYPE_SIBLING);
1605
+ foreach ($siblings as $sibling){
1606
+ $siblingName = strtolower($sibling->getNameSingular());
1607
+ $siblingNameUc = ucfirst($sibling->getNameSingular());
1608
+ $siblingLabel = strtolower($sibling->getLabelSingular());
1609
+
1610
+ $content .= $padding.'<wsdl:message name="'.$module.$entityUc.'Assign'.$siblingNameUc.'Request">'.$eol;
1611
+ $content .= $padding."\t".'<wsdl:part name="parameters" element="typens:'.$module.$entityUc.'Assign'.$siblingNameUc.'RequestParam" />'.$eol;
1612
+ $content .= $padding.'</wsdl:message>'.$eol;
1613
+ $content .= $padding.'<wsdl:message name="'.$module.$entityUc.'Assign'.$siblingNameUc.'Response">'.$eol;
1614
+ $content .= $padding."\t".'<wsdl:part name="parameters" element="typens:'.$module.$entityUc.'Assign'.$siblingNameUc.'ResponseParam" />'.$eol;
1615
+ $content .= $padding.'</wsdl:message>'.$eol;
1616
+ $content .= $padding.'<wsdl:message name="'.$module.$entityUc.'Unassign'.$siblingNameUc.'Request">'.$eol;
1617
+ $content .= $padding."\t".'<wsdl:part name="parameters" element="typens:'.$module.$entityUc.'Unassign'.$siblingNameUc.'RequestParam" />'.$eol;
1618
+ $content .= $padding.'</wsdl:message>'.$eol;
1619
+ $content .= $padding.'<wsdl:message name="'.$module.$entityUc.'Unassign'.$siblingNameUc.'Response">'.$eol;
1620
+ $content .= $padding."\t".'<wsdl:part name="parameters" element="typens:'.$module.$entityUc.'Unassign'.$siblingNameUc.'ResponseParam" />'.$eol;
1621
+ $content .= $padding.'</wsdl:message>'.$eol;
1622
+ }
1623
+ return $content;
1624
+ }
1625
+ /**
1626
+ * get additional api xml
1627
+ * @access public
1628
+ * @return string
1629
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
1630
+ */
1631
+ public function getApiAdditional(){
1632
+ $content = $this->getApiTree();
1633
+ $content .= $this->getApiRelations();
1634
+ return $content;
1635
+ }
1636
+ /**
1637
+ * get additional api xml for tree entities
1638
+ * @access public
1639
+ * @return string
1640
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
1641
+ */
1642
+ public function getApiTree(){
1643
+ $content = '';
1644
+ $prefix = "\t\t\t\t\t";
1645
+ $eol = "\n";
1646
+ if ($this->getIsTree()){
1647
+ $module = strtolower($this->getModule()->getModuleName());
1648
+ $entity = strtolower($this->getNameSingular());
1649
+ $entityLabelUc = ucfirst($this->getLabelSingular());
1650
+ $entityLabel = strtolower($this->getLabelSingular());
1651
+ $entitiesLabel = strtolower($this->getLabelPlural());
1652
+ $content = $prefix.'<level translate="title" module="'.$entity.'">'.$eol;
1653
+ $content .= $prefix."\t".'<title>Retrieve one level of '.$entitiesLabel.'</title>'.$eol;
1654
+ $content .= $prefix."\t".'<acl>'.$module.'/'.$entity.'/info</acl>'.$eol;
1655
+ $content .= $prefix.'</level>'.$eol;
1656
+ $content .= $prefix.'<move translate="title" module="catalog">'.$eol;
1657
+ $content .= $prefix."\t".'<title>Move '.$entityLabel.' in tree</title>'.$eol;
1658
+ $content .= $prefix."\t".'<acl>'.$module.'/'.$entity.'/move</acl>'.$eol;
1659
+ $content .= $prefix.'</move>'.$eol;
1660
+ }
1661
+ return $content;
1662
+ }
1663
+ public function getAdditionalApiAcl(){
1664
+ $content = '';
1665
+ $prefix = "\t\t\t\t\t\t";
1666
+ $eol = "\n";
1667
+ if ($this->getIsTree()){
1668
+ $module = strtolower($this->getModule()->getModuleName());
1669
+ $entity = strtolower($this->getNameSingular());
1670
+ $entityLabelUc = ucfirst($this->getLabelSingular());
1671
+ $entityLabel = strtolower($this->getLabelSingular());
1672
+ $content .= $prefix.'<move translate="title" module="'.$module.'">'.$eol;
1673
+ $content .= $prefix."\t".'<title>Move</title>'.$eol;
1674
+ $content .= $prefix.'</move>'.$eol;
1675
+ }
1676
+ $content .= "\t\t\t\t\t";
1677
+ return $content;
1678
+ }
1679
  }
app/code/community/Ultimate/ModuleCreator/Model/Module.php CHANGED
@@ -101,6 +101,9 @@ class Ultimate_ModuleCreator_Model_Module extends Ultimate_ModuleCreator_Model_A
101
  if ($entity->getAdminSearch()){
102
  $this->setAdminSearch(true);
103
  }
 
 
 
104
  return $this;
105
  }
106
  /**
101
  if ($entity->getAdminSearch()){
102
  $this->setAdminSearch(true);
103
  }
104
+ if ($entity->getCreateApi()){
105
+ $this->setCreateApi(true);
106
+ }
107
  return $this;
108
  }
109
  /**
app/code/community/Ultimate/ModuleCreator/Model/Relation.php CHANGED
@@ -179,4 +179,15 @@ class Ultimate_ModuleCreator_Model_Relation extends Ultimate_ModuleCreator_Model
179
  public function getSiblingIsNotTree($index){
180
  return !$this->getSiblingIsTree($index);
181
  }
 
 
 
 
 
 
 
 
 
 
 
182
  }
179
  public function getSiblingIsNotTree($index){
180
  return !$this->getSiblingIsTree($index);
181
  }
182
+ /**
183
+ * check if entity has API
184
+ * @access public
185
+ * @param int $index
186
+ * @return bool
187
+ * @author Marius Strajeru <marius.strajeru@gmail.com>
188
+ */
189
+ public function getEntityHasApi($index){
190
+ $entities = $this->getEntities();
191
+ return $entities[$index]->getCreateApi();
192
+ }
193
  }
app/code/community/Ultimate/ModuleCreator/etc/config.xml CHANGED
@@ -24,7 +24,7 @@
24
  <config>
25
  <modules>
26
  <Ultimate_ModuleCreator>
27
- <version>1.4.1</version>
28
  </Ultimate_ModuleCreator>
29
  </modules>
30
  <global>
@@ -105,6 +105,7 @@ http://opensource.org/licenses/mit-license.php
105
  <frontend_add_seo>1</frontend_add_seo>
106
  <created_to_grid>1</created_to_grid>
107
  <updated_to_grid>1</updated_to_grid>
 
108
  <add_status>1</add_status>
109
  <rss>1</rss>
110
  <widget>1</widget>
24
  <config>
25
  <modules>
26
  <Ultimate_ModuleCreator>
27
+ <version>1.5.0</version>
28
  </Ultimate_ModuleCreator>
29
  </modules>
30
  <global>
105
  <frontend_add_seo>1</frontend_add_seo>
106
  <created_to_grid>1</created_to_grid>
107
  <updated_to_grid>1</updated_to_grid>
108
+ <create_api>0</create_api>
109
  <add_status>1</add_status>
110
  <rss>1</rss>
111
  <widget>1</widget>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/14_sibling_relation.php CHANGED
@@ -29,7 +29,7 @@
29
  /**
30
  * Retrieve collection selected {{siblings}}
31
  * @access public
32
- * @return E{{Namespace}}_{{Module}}_Model_{{Entity}}_{{Sibling}}_Collection
33
  * {{qwertyuiop}}
34
  */
35
  public function getSelected{{Siblings}}Collection(){
29
  /**
30
  * Retrieve collection selected {{siblings}}
31
  * @access public
32
+ * @return {{Namespace}}_{{Module}}_Model_{{Entity}}_{{Sibling}}_Collection
33
  * {{qwertyuiop}}
34
  */
35
  public function getSelected{{Siblings}}Collection(){
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/01_top.php ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ {{License}}
3
+ class {{Namespace}}_{{Module}}_Model_{{Entity}}_Api extends Mage_Api_Model_Resource_Abstract{
4
+ /**
5
+ * init {{entityLabel}}
6
+ * @access protected
7
+ * @param ${{entity}}Id
8
+ * @return {{Namespace}}_{{Module}}_Model_{{Entity}}
9
+ * {{qwertyuiop}}
10
+ */
11
+ protected function _init{{Entity}}(${{entity}}Id){
12
+ ${{entity}} = Mage::getModel('{{module}}/{{entity}}')->load(${{entity}}Id);
13
+ if (!${{entity}}->getId()) {
14
+ $this->_fault('{{entity}}_not_exists');
15
+ }
16
+ return ${{entity}};
17
+ }
18
+ /**
19
+ * get {{entities}}
20
+ * @access public
21
+ * @param mixed $filters
22
+ * @return array
23
+ * {{qwertyuiop}}
24
+ */
25
+ public function items($filters = null){
26
+ $collection = Mage::getModel('{{module}}/{{entity}}')->getCollection();
27
+ $apiHelper = Mage::helper('api');
28
+ $filters = $apiHelper->parseFilters($filters);
29
+ try {
30
+ foreach ($filters as $field => $value) {
31
+ $collection->addFieldToFilter($field, $value);
32
+ }
33
+ }
34
+ catch (Mage_Core_Exception $e) {
35
+ $this->_fault('filters_invalid', $e->getMessage());
36
+ }
37
+ $result = array();
38
+ foreach ($collection as ${{entity}}) {
39
+ $result[] = ${{entity}}->getData();
40
+ }
41
+ return $result;
42
+ }
43
+ /**
44
+ * Add {{entity}}
45
+ * @access public
46
+ * @param array $data
47
+ * @return array
48
+ * {{qwertyuiop}}
49
+ */
50
+ public function add($data){
51
+ try {
52
+ if (is_null($data)){
53
+ throw new Exception(Mage::helper('{{module}}')->__("Data cannot be null"));
54
+ }
55
+ ${{entity}} = Mage::getModel('{{module}}/{{entity}}')
56
+ ->setData((array)$data)
57
+ ->save();
58
+ }
59
+ catch (Mage_Core_Exception $e) {
60
+ $this->_fault('data_invalid', $e->getMessage());
61
+ }
62
+ catch (Exception $e) {
63
+ $this->_fault('data_invalid', $e->getMessage());
64
+ }
65
+ return ${{entity}}->getId();
66
+ }
67
+
68
+ /**
69
+ * Change existing {{entity}} information
70
+ * @access public
71
+ * @param int ${{entity}}Id
72
+ * @param array $data
73
+ * @return bool
74
+ * {{qwertyuiop}}
75
+ */
76
+ public function update(${{entity}}Id, $data){
77
+ ${{entity}} = $this->_init{{Entity}}(${{entity}}Id);
78
+ try {
79
+ ${{entity}}->addData((array)$data);
80
+ ${{entity}}->save();
81
+ }
82
+ catch (Mage_Core_Exception $e) {
83
+ $this->_fault('save_error', $e->getMessage());
84
+ }
85
+
86
+ return true;
87
+ }
88
+ /**
89
+ * remove {{entity}}
90
+ * @access public
91
+ * @param int ${{entity}}Id
92
+ * @return bool
93
+ * {{qwertyuiop}}
94
+ */
95
+ public function remove(${{entity}}Id){
96
+ ${{entity}} = $this->_init{{Entity}}(${{entity}}Id);
97
+ try {
98
+ ${{entity}}->delete();
99
+ }
100
+ catch (Mage_Core_Exception $e) {
101
+ $this->_fault('remove_error', $e->getMessage());
102
+ }
103
+ return true;
104
+ }
105
+ /**
106
+ * get info
107
+ * @access public
108
+ * @param int ${{entity}}Id
109
+ * @return array
110
+ * {{qwertyuiop}}
111
+ */
112
+ public function info(${{entity}}Id){
113
+ $result = array();
114
+ ${{entity}} = $this->_init{{Entity}}(${{entity}}Id);
115
+ $result = ${{entity}}->getData();
116
+
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/02_product_relation_info.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ //related products
2
+ $result['products'] = array();
3
+ $relatedProductsCollection = ${{entity}}->getSelectedProductsCollection();
4
+ foreach ($relatedProductsCollection as $product) {
5
+ $result['products'][$product->getId()] = $product->getPosition();
6
+ }
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/03_sibling_info.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ //related {{siblings}}
2
+ $result['{{siblings}}'] = array();
3
+ $related{{Siblings}}Collection = ${{entity}}->getSelected{{Siblings}}Collection();
4
+ foreach ($related{{Siblings}}Collection as ${{sibling}}) {
5
+ $result['{{siblings}}'][${{sibling}}->getId()] = ${{sibling}}->getPosition();
6
+ }
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/04_info_footer.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ return $result;
2
+ }
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/05_tree.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Move {{entityLabel}} in tree
3
+ *
4
+ * @param int ${{entity}}Id
5
+ * @param int $parentId
6
+ * @param int $afterId
7
+ * @return boolean
8
+ */
9
+ public function move(${{entity}}Id, $parentId, $afterId = null){
10
+ ${{entity}} = $this->_init{{Entity}}(${{entity}}Id);
11
+ $parent_{{entity}} = $this->_init{{Entity}}($parentId);
12
+ if ($afterId === null && $parent_{{entity}}->hasChildren()) {
13
+ $parentChildren = $parent_{{entity}}->getChildren();
14
+ $afterId = array_pop(explode(',', $parentChildren));
15
+ }
16
+ if( strpos($parent_{{entity}}->getPath(), ${{entity}}->getPath()) === 0) {
17
+ $this->_fault('not_moved', Mage::helper('{{module}}')->__("Cannot move parent inside {{entityLabel}}"));
18
+ }
19
+ try {
20
+ ${{entity}}->move($parentId, $afterId);
21
+ }
22
+ catch (Mage_Core_Exception $e) {
23
+ $this->_fault('not_moved', $e->getMessage());
24
+ }
25
+ return true;
26
+ }
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/06_product_relation.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Assign product to {{entityLabel}}
3
+ * @access public
4
+ * @param int ${{entity}}Id
5
+ * @param int ${{entity}}Id
6
+ * @param int $position
7
+ * @return boolean
8
+ * {{qwertyuiop}}
9
+ */
10
+ public function assignProduct(${{entity}}Id, $productId, $position = null){
11
+ ${{entity}} = $this->_init{{Entity}}(${{entity}}Id);
12
+ $positions = array();
13
+ $products = ${{entity}}->getSelectedProducts();
14
+ foreach ($products as $product){
15
+ $positions[$product->getId()] = array('position'=>$product->getPosition());
16
+ }
17
+ $product = Mage::getModel('catalog/product')->load($productId);
18
+ if (!$product->getId()){
19
+ $this->_fault('product_not_exists');
20
+ }
21
+ $positions[$productId]['position'] = $position;
22
+ ${{entity}}->setProductsData($positions);
23
+ try {
24
+ ${{entity}}->save();
25
+ }
26
+ catch (Mage_Core_Exception $e) {
27
+ $this->_fault('data_invalid', $e->getMessage());
28
+ }
29
+ return true;
30
+ }
31
+ /**
32
+ * remove product from {{entityLabel}}
33
+ * @access public
34
+ * @param int ${{entity}}Id
35
+ * @param int $productId
36
+ * @return boolean
37
+ * {{qwertyuiop}}
38
+ */
39
+ public function unassignProduct(${{entity}}Id, $productId){
40
+ ${{entity}} = $this->_init{{Entity}}(${{entity}}Id);
41
+ $positions = array();
42
+ $products = ${{entity}}->getSelectedProducts();
43
+ foreach ($products as $product){
44
+ $positions[$product->getId()] = array('position'=>$product->getPosition());
45
+ }
46
+ unset($positions[$productId]);
47
+ ${{entity}}->setProductsData($positions);
48
+ try {
49
+ ${{entity}}->save();
50
+ }
51
+ catch (Mage_Core_Exception $e) {
52
+ $this->_fault('data_invalid', $e->getMessage());
53
+ }
54
+ return true;
55
+ }
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/07_sibling_relation.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Assign {{siblingLabel}} to {{entityLabel}}
3
+ * @access public
4
+ * @param int ${{entity}}Id
5
+ * @param int ${{sibling}}Id
6
+ * @param int $position
7
+ * @return boolean
8
+ * {{qwertyuiop}}
9
+ */
10
+ public function assign{{Sibling}}(${{entity}}Id, ${{sibling}}Id, $position = null){
11
+ ${{entity}} = $this->_init{{Entity}}(${{entity}}Id);
12
+ $positions = array();
13
+ ${{siblings}} = ${{entity}}->getSelected{{Siblings}}();
14
+ foreach (${{siblings}} as ${{sibling}}){
15
+ ${{siblings}}[${{sibling}}->getId()] = array('position'=>${{sibling}}->getPosition());
16
+ }
17
+ ${{sibling}} = Mage::getModel('{{module}}/{{sibling}}')->load(${{sibling}}Id);
18
+ if (!${{sibling}}->getId()){
19
+ $this->_fault('{{entity}}_{{sibling}}_not_exists');
20
+ }
21
+ $positions[${{sibling}}Id]['position'] = $position;
22
+ ${{sibling}}->set{{Siblings}}Data($positions);
23
+ try {
24
+ ${{sibling}}->save();
25
+ }
26
+ catch (Mage_Core_Exception $e) {
27
+ $this->_fault('data_invalid', $e->getMessage());
28
+ }
29
+ return true;
30
+ }
31
+ /**
32
+ * remove {{siblingLabel}} from {{entityLabel}}
33
+ * @access public
34
+ * @param int ${{entity}}Id
35
+ * @param int ${{sibling}}Id
36
+ * @return boolean
37
+ * {{qwertyuiop}}
38
+ */
39
+ public function unassign{{Sibling}}(${{entity}}Id, ${{sibling}}Id){
40
+ ${{entity}} = $this->_init{{Entity}}(${{entity}}Id);
41
+ $positions = array();
42
+ ${{siblings}} = ${{entity}}->getSelected{{Siblings}}();
43
+ foreach (${{siblings}} as ${{sibling}}){
44
+ ${{siblings}}[${{sibling}}->getId()] = array('position'=>${{sibling}}->getPosition());
45
+ }
46
+ unset($positions[${{sibling}}Id]);
47
+ ${{entity}}->set{{Siblings}}Data($positions);
48
+ try {
49
+ ${{entity}}->save();
50
+ }
51
+ catch (Mage_Core_Exception $e) {
52
+ $this->_fault('data_invalid', $e->getMessage());
53
+ }
54
+ return true;
55
+ }
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/08_footer.php ADDED
@@ -0,0 +1 @@
 
1
+ }
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/V2/01_top.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ {{License}}
3
+ class {{Namespace}}_{{Module}}_Model_{{Entity}}_Api_V2 extends {{Namespace}}_{{Module}}_Model_{{Entity}}_Api{
4
+ /**
5
+ * {{EntityLabel}} info
6
+ * @access public
7
+ * @param int ${{entity}}Id
8
+ * @return object
9
+ * {{qwertyuiop}}
10
+ */
11
+ public function info(${{entity}}Id){
12
+ $result = parent::info(${{entity}}Id);
13
+ $result = Mage::helper('api')->wsiArrayPacker($result);
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/V2/02_product_relation.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ foreach ($result->products as $key => $value) {
2
+ $result->products[$key] = array('key' => $key, 'value' => $value);
3
+ }
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/V2/03_sibling_relation.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ foreach ($result->{{siblings}} as $key => $value) {
2
+ $result->{{siblings}}[$key] = array('key' => $key, 'value' => $value);
3
+ }
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/Model/Entity/Api/V2/04_footer.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ return $result;
2
+ }
3
+ }
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/01_top.xml ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ {{License}}
3
+ <config>
4
+ <api>
5
+ <resources>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/02_entity_api.xml ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <{{module}}_{{entity}} translate="title" module="{{module}}">
2
+ <title>{{EntityLabel}} API</title>
3
+ <model>{{module}}/{{entity}}_api</model>
4
+ <acl>{{module}}/{{entity}}</acl>
5
+ <methods>
6
+ <list translate="title" module="{{module}}">
7
+ <title>Retrieve list of {{entitiesLabel}}</title>
8
+ <method>items</method>
9
+ <acl>{{module}}/{{entity}}/list</acl>
10
+ </list>
11
+ <info translate="title" module="{{module}}">
12
+ <title>Retrieve {{entityLabel}} info</title>
13
+ <acl>{{module}}/{{entity}}/info</acl>
14
+ </info>
15
+ <add translate="title" module="{{module}}">
16
+ <title>Add {{entityLabel}}</title>
17
+ <acl>{{module}}/{{entity}}/add</acl>
18
+ </add>
19
+ <update translate="title" module="{{module}}">
20
+ <title>Update {{entityLabel}}</title>
21
+ <acl>{{module}}/{{entity}}/update</acl>
22
+ </update>
23
+ <remove translate="title" module="{{module}}">
24
+ <title>Remove {{entityLabel}}</title>
25
+ <acl>{{module}}/{{entity}}/remove</acl>
26
+ </remove>
27
+ {{entityApiAdditional}}</methods>
28
+ <faults module="{{module}}">
29
+ <{{entity}}_not_exists>
30
+ <code>101</code>
31
+ <message>Requested {{entityLabel}} does not exist.</message>
32
+ </{{entity}}_not_exists>
33
+ <invalid_data>
34
+ <code>102</code>
35
+ <message>Provided data is invalid.</message>
36
+ </invalid_data>
37
+ <save_error>
38
+ <code>103</code>
39
+ <message>Error while saving {{entityLabel}}. Details in error message.</message>
40
+ </save_error>
41
+ <remove_error>
42
+ <code>104</code>
43
+ <message>Error while removing {{entityLabel}}. Details in error message.</message>
44
+ </remove_error>
45
+ {{entityApiFaults}}</faults>
46
+ </{{module}}_{{entity}}>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/03_resource_alias.xml ADDED
@@ -0,0 +1,2 @@
 
 
1
+ </resources>
2
+ <resources_alias>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/04_entity_resource_alias.xml ADDED
@@ -0,0 +1 @@
 
1
+ <{{entity}}>{{module}}_{{entity}}</{{entity}}>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/05_v2.xml ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ </resources_alias>
2
+ <v2>
3
+ <resources_function_prefix>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/06_v2_entity.xml ADDED
@@ -0,0 +1 @@
 
1
+ <{{entity}}>{{module}}{{Entity}}</{{entity}}>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/07_acl.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ </resources_function_prefix>
2
+ </v2>
3
+ <acl>
4
+ <resources>
5
+ <{{module}} translate="title" module="{{module}}">
6
+ <title>{{Module}}</title>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/08_acl_entity.xml ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <{{entity}} translate="title" module="{{module}}">
2
+ <title>{{EntityLabel}}</title>
3
+ <sort_order>{{entityApiSortOrder}}</sort_order>
4
+ <list translate="title" module="{{module}}">
5
+ <title>List</title>
6
+ </list>
7
+ <info translate="title" module="{{module}}">
8
+ <title>Info</title>
9
+ </info>
10
+ <add translate="title" module="{{module}}">
11
+ <title>Add</title>
12
+ </add>
13
+ <update translate="title" module="{{module}}">
14
+ <title>Update</title>
15
+ </update>
16
+ <remove translate="title" module="{{module}}">
17
+ <title>Remove</title>
18
+ </remove>
19
+ {{entityAdditionalApiAcl}}</{{entity}}>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/api/09_footer.xml ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ </{{module}}>
2
+ </resources>
3
+ </acl>
4
+ </api>
5
+ </config>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/01_top.xml ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <definitions xmlns:typens="urn:{{var wsdl.name}}" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
3
+ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"
4
+ name="{{var wsdl.name}}" targetNamespace="urn:{{var wsdl.name}}">
5
+ <types>
6
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Magento">
7
+ <import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/" />
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/02_entity_types.xml ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <complexType name="{{module}}{{Entity}}ListEntity">
2
+ <all>
3
+ <element name="entity_id" type="xsd:string" minOccurs="1" />
4
+ {{entityWsdlAttributes}}
5
+ <element name="created_at" type="xsd:string" minOccurs="1" />
6
+ <element name="updated_at" type="xsd:string" minOccurs="1" />
7
+ </all>
8
+ </complexType>
9
+ <complexType name="{{module}}{{Entity}}ListEntityArray">
10
+ <complexContent>
11
+ <restriction base="soapenc:Array">
12
+ <attribute ref="soapenc:arrayType" wsdl:arrayType="typens:{{module}}{{Entity}}ListEntity[]" />
13
+ </restriction>
14
+ </complexContent>
15
+ </complexType>
16
+ <complexType name="{{module}}{{Entity}}AddEntity">
17
+ <all>
18
+ {{entityWsdlAttributes}}
19
+ </all>
20
+ </complexType>
21
+ <complexType name="{{module}}{{Entity}}UpdateEntity">
22
+ <all>
23
+ {{entityWsdlAttributes}}
24
+ </all>
25
+ </complexType>
26
+ <complexType name="{{module}}{{Entity}}InfoEntity">
27
+ <all>
28
+ <element name="entity_id" type="xsd:string" minOccurs="1" />
29
+ {{entityWsdlAttributes}}
30
+ <element name="created_at" type="xsd:string" minOccurs="1" />
31
+ <element name="updated_at" type="xsd:string" minOccurs="1" />
32
+ </all>
33
+ </complexType>
34
+ {{entityWsdlRelationTypes}}
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/03_schema_footer.xml ADDED
@@ -0,0 +1,2 @@
 
 
1
+ </schema>
2
+ </types>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/04_entity_messages.xml ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <message name="{{module}}{{Entity}}ListRequest">
2
+ <part name="sessionId" type="xsd:string" />
3
+ <part name="filters" type="typens:filters"/>
4
+ </message>
5
+ <message name="{{module}}{{Entity}}ListResponse">
6
+ <part name="result" type="typens:{{module}}{{Entity}}ListEntityArray" />
7
+ </message>
8
+ <message name="{{module}}{{Entity}}InfoRequest">
9
+ <part name="sessionId" type="xsd:string" />
10
+ <part name="{{entity}}Id" type="xsd:string" />
11
+ </message>
12
+ <message name="{{module}}{{Entity}}InfoResponse">
13
+ <part name="result" type="typens:{{module}}{{Entity}}InfoEntity" />
14
+ </message>
15
+ <message name="{{module}}{{Entity}}AddRequest">
16
+ <part name="sessionId" type="xsd:string" />
17
+ <part name="data" type="typens:{{module}}{{Entity}}AddEntity" />
18
+ </message>
19
+ <message name="{{module}}{{Entity}}AddResponse">
20
+ <part name="result" type="xsd:int"/>
21
+ </message>
22
+ <message name="{{module}}{{Entity}}UpdateRequest">
23
+ <part name="sessionId" type="xsd:string" />
24
+ <part name="{{entity}}Id" type="xsd:string" />
25
+ <part name="data" type="typens:{{module}}{{Entity}}UpdateEntity" />
26
+ </message>
27
+ <message name="{{module}}{{Entity}}UpdateResponse">
28
+ <part name="result" type="xsd:boolean" />
29
+ </message>
30
+ <message name="{{module}}{{Entity}}RemoveRequest">
31
+ <part name="sessionId" type="xsd:string" />
32
+ <part name="{{entity}}Id" type="xsd:string" />
33
+ </message>
34
+ <message name="{{module}}{{Entity}}RemoveResponse">
35
+ <part name="result" type="xsd:boolean" />
36
+ </message>
37
+ {{entityWsdlMessages}}
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/05_porttype_top.xml ADDED
@@ -0,0 +1 @@
 
1
+ <portType name="{{var wsdl.handler}}PortType">
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/06_porttype_entity.xml ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <operation name="{{module}}{{Entity}}List">
2
+ <documentation>Retrieve list of {{entityLabel}}</documentation>
3
+ <input message="typens:{{module}}{{Entity}}ListRequest" />
4
+ <output message="typens:{{module}}{{Entity}}ListResponse" />
5
+ </operation>
6
+ <operation name="{{module}}{{Entity}}Info">
7
+ <documentation>Retrieve {{entityLabel}} info</documentation>
8
+ <input message="typens:{{module}}{{Entity}}InfoRequest" />
9
+ <output message="typens:{{module}}{{Entity}}InfoResponse" />
10
+ </operation>
11
+ <operation name="{{module}}{{Entity}}Add">
12
+ <documentation>Add {{entityLabel}}</documentation>
13
+ <input message="typens:{{module}}{{Entity}}AddRequest" />
14
+ <output message="typens:{{module}}{{Entity}}AddResponse" />
15
+ </operation>
16
+ <operation name="{{module}}{{Entity}}Update">
17
+ <documentation>Update {{entityLabel}}</documentation>
18
+ <input message="typens:{{module}}{{Entity}}UpdateRequest" />
19
+ <output message="typens:{{module}}{{Entity}}UpdateResponse" />
20
+ </operation>
21
+ <operation name="{{module}}{{Entity}}Remove">
22
+ <documentation>Remove {{entityLabel}}</documentation>
23
+ <input message="typens:{{module}}{{Entity}}RemoveRequest" />
24
+ <output message="typens:{{module}}{{Entity}}RemoveResponse" />
25
+ </operation>
26
+ {{entityWsdlPortTypeRelation}}
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/07_porttype_footer.xml ADDED
@@ -0,0 +1 @@
 
1
+ </portType>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/08_binding_top.xml ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <binding name="{{var wsdl.handler}}Binding" type="typens:{{var wsdl.handler}}PortType">
2
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/09_entity_binding.xml ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <operation name="{{module}}{{Entity}}List">
2
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action" />
3
+ <input>
4
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
5
+ </input>
6
+ <output>
7
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
8
+ </output>
9
+ </operation>
10
+ <operation name="{{module}}{{Entity}}Info">
11
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action" />
12
+ <input>
13
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
14
+ </input>
15
+ <output>
16
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
17
+ </output>
18
+ </operation>
19
+ <operation name="{{module}}{{Entity}}Add">
20
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action" />
21
+ <input>
22
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
23
+ </input>
24
+ <output>
25
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
26
+ </output>
27
+ </operation>
28
+ <operation name="{{module}}{{Entity}}Update">
29
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action" />
30
+ <input>
31
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
32
+ </input>
33
+ <output>
34
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
35
+ </output>
36
+ </operation>
37
+ <operation name="{{module}}{{Entity}}Remove">
38
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action" />
39
+ <input>
40
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
41
+ </input>
42
+ <output>
43
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
44
+ </output>
45
+ </operation>
46
+ {{entityWsdlRelationBinding}}
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsdl/10_footer.xml ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ </binding>
2
+ <service name="{{var wsdl.name}}Service">
3
+ <port name="{{var wsdl.handler}}Port" binding="typens:{{var wsdl.handler}}Binding">
4
+ <soap:address location="{{var wsdl.url}}" />
5
+ </port>
6
+ </service>
7
+ </definitions>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/01_top.xml ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <wsdl:definitions xmlns:typens="urn:{{var wsdl.name}}"
3
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
4
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
5
+ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
6
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
7
+ name="{{var wsdl.name}}"
8
+ targetNamespace="urn:{{var wsdl.name}}">
9
+ <wsdl:types>
10
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:{{var wsdl.name}}">
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/02_entity_types.xml ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <xsd:complexType name="{{module}}{{Entity}}ListEntityArray">
2
+ <xsd:sequence>
3
+ <xsd:element maxOccurs="unbounded" name="complexObjectArray" type="typens:{{module}}{{Entity}}ListEntity" />
4
+ </xsd:sequence>
5
+ </xsd:complexType>
6
+ <xsd:complexType name="{{module}}{{Entity}}ListEntity">
7
+ <xsd:sequence>
8
+ <xsd:element name="entity_id" type="xsd:string" />
9
+ {{entityWsiAttributes}}
10
+ <xsd:element name="created_at" type="xsd:string" />
11
+ <xsd:element name="updated_at" type="xsd:string" />
12
+ </xsd:sequence>
13
+ </xsd:complexType>
14
+ <xsd:complexType name="{{module}}{{Entity}}AddEntity">
15
+ <xsd:sequence>
16
+ {{entityWsiAttributes}}
17
+ </xsd:sequence>
18
+ </xsd:complexType>
19
+ <xsd:complexType name="{{module}}{{Entity}}UpdateEntity">
20
+ <xsd:sequence>
21
+ {{entityWsiAttributes}}
22
+ </xsd:sequence>
23
+ </xsd:complexType>
24
+ <xsd:complexType name="{{module}}{{Entity}}InfoEntity">
25
+ <xsd:sequence>
26
+ <xsd:element name="entity_id" type="xsd:string" />
27
+ {{entityWsiAttributes}}
28
+ <xsd:element name="created_at" type="xsd:string" />
29
+ <xsd:element name="updated_at" type="xsd:string" />
30
+ </xsd:sequence>
31
+ </xsd:complexType>
32
+ {{entityWsiRelationTypes}}
33
+ <xsd:element name="{{module}}{{Entity}}ListRequestParam">
34
+ <xsd:complexType>
35
+ <xsd:sequence>
36
+ <xsd:element minOccurs="1" maxOccurs="1" name="sessionId" type="xsd:string" />
37
+ <xsd:element minOccurs="0" maxOccurs="1" name="filters" type="typens:filters" />
38
+ </xsd:sequence>
39
+ </xsd:complexType>
40
+ </xsd:element>
41
+ <xsd:element name="{{module}}{{Entity}}ListResponseParam">
42
+ <xsd:complexType>
43
+ <xsd:sequence>
44
+ <xsd:element minOccurs="1" maxOccurs="1" name="result" type="typens:{{module}}{{Entity}}ListEntityArray" />
45
+ </xsd:sequence>
46
+ </xsd:complexType>
47
+ </xsd:element>
48
+ <xsd:element name="{{module}}{{Entity}}InfoRequestParam">
49
+ <xsd:complexType>
50
+ <xsd:sequence>
51
+ <xsd:element minOccurs="1" maxOccurs="1" name="sessionId" type="xsd:string" />
52
+ <xsd:element minOccurs="1" maxOccurs="1" name="{{entity}}Id" type="xsd:string" />
53
+ </xsd:sequence>
54
+ </xsd:complexType>
55
+ </xsd:element>
56
+ <xsd:element name="{{module}}{{Entity}}InfoResponseParam">
57
+ <xsd:complexType>
58
+ <xsd:sequence>
59
+ <xsd:element minOccurs="1" maxOccurs="1" name="result" type="typens:{{module}}{{Entity}}InfoEntity" />
60
+ </xsd:sequence>
61
+ </xsd:complexType>
62
+ </xsd:element>
63
+ <xsd:element name="{{module}}{{Entity}}AddRequestParam">
64
+ <xsd:complexType>
65
+ <xsd:sequence>
66
+ <xsd:element minOccurs="1" maxOccurs="1" name="sessionId" type="xsd:string" />
67
+ <xsd:element minOccurs="1" maxOccurs="1" name="data" type="typens:{{module}}{{Entity}}AddEntity" />
68
+ </xsd:sequence>
69
+ </xsd:complexType>
70
+ </xsd:element>
71
+ <xsd:element name="{{module}}{{Entity}}AddResponseParam">
72
+ <xsd:complexType>
73
+ <xsd:sequence>
74
+ <xsd:element minOccurs="1" maxOccurs="1" name="result" type="xsd:int" />
75
+ </xsd:sequence>
76
+ </xsd:complexType>
77
+ </xsd:element>
78
+ <xsd:element name="{{module}}{{Entity}}UpdateRequestParam">
79
+ <xsd:complexType>
80
+ <xsd:sequence>
81
+ <xsd:element minOccurs="1" maxOccurs="1" name="sessionId" type="xsd:string" />
82
+ <xsd:element minOccurs="1" maxOccurs="1" name="{{entity}}Id" type="xsd:string" />
83
+ <xsd:element minOccurs="1" maxOccurs="1" name="data" type="typens:{{module}}{{Entity}}UpdateEntity" />
84
+ </xsd:sequence>
85
+ </xsd:complexType>
86
+ </xsd:element>
87
+ <xsd:element name="{{module}}{{Entity}}UpdateResponseParam">
88
+ <xsd:complexType>
89
+ <xsd:sequence>
90
+ <xsd:element minOccurs="1" maxOccurs="1" name="result" type="xsd:boolean" />
91
+ </xsd:sequence>
92
+ </xsd:complexType>
93
+ </xsd:element>
94
+ <xsd:element name="{{module}}{{Entity}}RemoveRequestParam">
95
+ <xsd:complexType>
96
+ <xsd:sequence>
97
+ <xsd:element minOccurs="1" maxOccurs="1" name="sessionId" type="xsd:string" />
98
+ <xsd:element minOccurs="1" maxOccurs="1" name="{{entity}}Id" type="xsd:string" />
99
+ </xsd:sequence>
100
+ </xsd:complexType>
101
+ </xsd:element>
102
+ <xsd:element name="{{module}}{{Entity}}RemoveResponseParam">
103
+ <xsd:complexType>
104
+ <xsd:sequence>
105
+ <xsd:element minOccurs="1" maxOccurs="1" name="result" type="xsd:boolean" />
106
+ </xsd:sequence>
107
+ </xsd:complexType>
108
+ </xsd:element>
109
+ {{entityWsiRelationParamTypes}}
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/03_schema_footer.xml ADDED
@@ -0,0 +1,2 @@
 
 
1
+ </xsd:schema>
2
+ </wsdl:types>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/04_entity_messages.xml ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <wsdl:message name="{{module}}{{Entity}}ListRequest">
2
+ <wsdl:part name="parameters" element="typens:{{module}}{{Entity}}ListRequestParam" />
3
+ </wsdl:message>
4
+ <wsdl:message name="{{module}}{{Entity}}ListResponse">
5
+ <wsdl:part name="parameters" element="typens:{{module}}{{Entity}}ListResponseParam" />
6
+ </wsdl:message>
7
+ <wsdl:message name="{{module}}{{Entity}}InfoRequest">
8
+ <wsdl:part name="parameters" element="typens:{{module}}{{Entity}}InfoRequestParam" />
9
+ </wsdl:message>
10
+ <wsdl:message name="{{module}}{{Entity}}InfoResponse">
11
+ <wsdl:part name="parameters" element="typens:{{module}}{{Entity}}InfoResponseParam" />
12
+ </wsdl:message>
13
+ <wsdl:message name="{{module}}{{Entity}}AddRequest">
14
+ <wsdl:part name="parameters" element="typens:{{module}}{{Entity}}AddRequestParam" />
15
+ </wsdl:message>
16
+ <wsdl:message name="{{module}}{{Entity}}AddResponse">
17
+ <wsdl:part name="parameters" element="typens:{{module}}{{Entity}}AddResponseParam"/>
18
+ </wsdl:message>
19
+ <wsdl:message name="{{module}}{{Entity}}UpdateRequest">
20
+ <wsdl:part name="parameters" element="typens:{{module}}{{Entity}}UpdateRequestParam" />
21
+ </wsdl:message>
22
+ <wsdl:message name="{{module}}{{Entity}}UpdateResponse">
23
+ <wsdl:part name="parameters" element="typens:{{module}}{{Entity}}UpdateResponseParam"/>
24
+ </wsdl:message>
25
+ <wsdl:message name="{{module}}{{Entity}}RemoveRequest">
26
+ <wsdl:part name="parameters" element="typens:{{module}}{{Entity}}RemoveRequestParam" />
27
+ </wsdl:message>
28
+ <wsdl:message name="{{module}}{{Entity}}RemoveResponse">
29
+ <wsdl:part name="parameters" element="typens:{{module}}{{Entity}}RemoveResponseParam" />
30
+ </wsdl:message>
31
+ {{entityWsiRelationMessages}}
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/05_porttype_top.xml ADDED
@@ -0,0 +1 @@
 
1
+ <wsdl:portType name="{{var wsdl.handler}}PortType">
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/06_porttype_entity.xml ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <wsdl:operation name="{{module}}{{Entity}}List">
2
+ <wsdl:documentation>Retrieve list of articles</wsdl:documentation>
3
+ <wsdl:input message="typens:{{module}}{{Entity}}ListRequest" />
4
+ <wsdl:output message="typens:{{module}}{{Entity}}ListResponse" />
5
+ </wsdl:operation>
6
+ <wsdl:operation name="{{module}}{{Entity}}Info">
7
+ <wsdl:documentation>Retrieve article info</wsdl:documentation>
8
+ <wsdl:input message="typens:{{module}}{{Entity}}InfoRequest" />
9
+ <wsdl:output message="typens:{{module}}{{Entity}}InfoResponse" />
10
+ </wsdl:operation>
11
+ <wsdl:operation name="{{module}}{{Entity}}Add">
12
+ <wsdl:documentation>Add {{entityLabel}}</wsdl:documentation>
13
+ <wsdl:input message="typens:{{module}}{{Entity}}AddRequest" />
14
+ <wsdl:output message="typens:{{module}}{{Entity}}AddResponse" />
15
+ </wsdl:operation>
16
+ <wsdl:operation name="{{module}}{{Entity}}Update">
17
+ <wsdl:documentation>Update {{entityLabel}}</wsdl:documentation>
18
+ <wsdl:input message="typens:{{module}}{{Entity}}UpdateRequest" />
19
+ <wsdl:output message="typens:{{module}}{{Entity}}UpdateResponse" />
20
+ </wsdl:operation>
21
+ <wsdl:operation name="{{module}}{{Entity}}Remove">
22
+ <wsdl:documentation>Remove {{entityLabel}}</wsdl:documentation>
23
+ <wsdl:input message="typens:{{module}}{{Entity}}RemoveRequest" />
24
+ <wsdl:output message="typens:{{module}}{{Entity}}RemoveResponse" />
25
+ </wsdl:operation>
26
+ {{entityWsiPortTypeRelation}}
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/07_porttype_footer.xml ADDED
@@ -0,0 +1 @@
 
1
+ </wsdl:portType>
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/08_binding_top.xml ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <wsdl:binding name="{{var wsdl.handler}}Binding" type="typens:{{var wsdl.handler}}PortType">
2
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/09_entity_binding.xml ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <wsdl:operation name="{{module}}{{Entity}}List">
2
+ <soap:operation soapAction="" />
3
+ <wsdl:input>
4
+ <soap:body use="literal" />
5
+ </wsdl:input>
6
+ <wsdl:output>
7
+ <soap:body use="literal" />
8
+ </wsdl:output>
9
+ </wsdl:operation>
10
+ <wsdl:operation name="{{module}}{{Entity}}Info">
11
+ <soap:operation soapAction="" />
12
+ <wsdl:input>
13
+ <soap:body use="literal" />
14
+ </wsdl:input>
15
+ <wsdl:output>
16
+ <soap:body use="literal" />
17
+ </wsdl:output>
18
+ </wsdl:operation>
19
+ <wsdl:operation name="{{module}}{{Entity}}Add">
20
+ <soap:operation soapAction="" />
21
+ <wsdl:input>
22
+ <soap:body use="literal" />
23
+ </wsdl:input>
24
+ <wsdl:output>
25
+ <soap:body use="literal" />
26
+ </wsdl:output>
27
+ </wsdl:operation>
28
+ <wsdl:operation name="{{module}}{{Entity}}Update">
29
+ <soap:operation soapAction="" />
30
+ <wsdl:input>
31
+ <soap:body use="literal" />
32
+ </wsdl:input>
33
+ <wsdl:output>
34
+ <soap:body use="literal" />
35
+ </wsdl:output>
36
+ </wsdl:operation>
37
+ <wsdl:operation name="{{module}}{{Entity}}Remove">
38
+ <soap:operation soapAction="" />
39
+ <wsdl:input>
40
+ <soap:body use="literal" />
41
+ </wsdl:input>
42
+ <wsdl:output>
43
+ <soap:body use="literal" />
44
+ </wsdl:output>
45
+ </wsdl:operation>
46
+ {{entityWsiRelationBinding}}
app/code/community/Ultimate/ModuleCreator/etc/m/app/code/cp/Ns/Md/etc/wsi/10_footer.xml ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ </wsdl:binding>
2
+ <wsdl:service name="{{var wsdl.name}}Service">
3
+ <wsdl:port name="{{var wsdl.handler}}Port" binding="typens:{{var wsdl.handler}}Binding">
4
+ <soap:address location="{{var wsdl.url}}" />
5
+ </wsdl:port>
6
+ </wsdl:service>
7
+ </wsdl:definitions>
app/code/community/Ultimate/ModuleCreator/etc/m/app/locale/en_US/Namespace_Module/12_tree_entity.csv CHANGED
@@ -1,4 +1,4 @@
1
- "New Root {{EntityLavel}}","New Root {{EntityLavel}}"
2
  "Add Child {{EntityLabel}}","Add Child {{EntityLabel}}"
3
  "Add Root {{EntityLabel}}","Add Root {{EntityLabel}}"
4
  "New {{EntityLabel}}","New {{EntityLabel}}"
1
+ "New Root {{EntityLabel}}","New Root {{EntityLabel}}"
2
  "Add Child {{EntityLabel}}","Add Child {{EntityLabel}}"
3
  "Add Root {{EntityLabel}}","Add Root {{EntityLabel}}"
4
  "New {{EntityLabel}}","New {{EntityLabel}}"
app/code/community/Ultimate/ModuleCreator/etc/m/app/locale/en_US/Namespace_Module/13_url_rewrite.csv CHANGED
@@ -2,4 +2,4 @@
2
  "URL key already exists.","URL key already exists."
3
  "The URL key contains capital letters or disallowed symbols.","The URL key contains capital letters or disallowed symbols."
4
  "URL key","URL key"
5
- "The URL key cannot consist only of numbers.","The URL key cannot consist only of numbers."
2
  "URL key already exists.","URL key already exists."
3
  "The URL key contains capital letters or disallowed symbols.","The URL key contains capital letters or disallowed symbols."
4
  "URL key","URL key"
5
+ "The URL key cannot consist only of numbers.","The URL key cannot consist only of numbers."
app/code/community/Ultimate/ModuleCreator/etc/m/app/locale/en_US/Namespace_Module/14_api.csv ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ "List","List"
2
+ "Info","Info"
3
+ "Add","Add"
4
+ "Update","Update"
5
+ "Remove","Remove"
6
+ "Data cannot be null","Data cannot be null"
7
+ "Product does not exist.","Product does not exist."
8
+ "Provided data is invalid.","Provided data is invalid."
app/code/community/Ultimate/ModuleCreator/etc/m/app/locale/en_US/Namespace_Module/15_api_entity.csv ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ "{{EntityLabel}} API","{{EntityLabel}} API"
2
+ "Retrieve list of {{entitiesLabel}}","Retrieve list of {{entitiesLabel}}"
3
+ "Retrieve {{entity}} info","Retrieve {{entity}} info"
4
+ "Add {{entityLabel}}","Add {{entityLabel}}"
5
+ "Update {{entityLabel}}","Update {{entityLabel}}"
6
+ "Remove {{entityLabel}}","Remove {{entityLabel}}"
7
+ "Requested {{entityLabel}} does not exist.","Requested {{entityLabel}} does not exist."
8
+ "Error while saving {{entityLabel}}. Details in error message.","Error while saving {{entityLabel}}. Details in error message."
9
+ "Error while removing {{entityLabel}}. Details in error message.","Error while removing {{entityLabel}}. Details in error message."
10
+ "{{EntityLabel}}","{{EntityLabel}}"
app/code/community/Ultimate/ModuleCreator/etc/m/app/locale/en_US/Namespace_Module/16_api_product_related.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ "Product does not exist.","Product does not exist."
2
+ "Remove product from {{entityLabel}}","Remove product from {{entityLabel}}"
3
+ "Assign product to {{entityLabel}}","Assign product to {{entityLabel}}"
app/code/community/Ultimate/ModuleCreator/etc/m/app/locale/en_US/Namespace_Module/17_api_tree.csv ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ "Retrieve one level of {{entitiesLabel}}","Retrieve one level of {{entitiesLabel}}"
2
+ "Move {{entityLabel}} in tree","Move {{entityLabel}} in tree"
3
+ "Cannot move parent inside {{entityLabel}}","Cannot move parent inside {{entityLabel}}"
4
+ "{{EntityLabel}} not moved. Details in error message.","{{EntityLabel}} not moved. Details in error message."
app/code/community/Ultimate/ModuleCreator/etc/m/app/locale/en_US/Namespace_Module/18_api_sibling.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ "Assign {{siblingLabel}} to {{entityLabel}}","Assign {{siblingLabel}} to {{entityLabel}}"
2
+ "Remove {{siblingLabel}} from {{entityLabel}}","Remove {{siblingLabel}} from {{entityLabel}}"
3
+ "{{SiblingLabel}} does not exist.","{{SiblingLabel}} does not exist."
app/code/community/Ultimate/ModuleCreator/etc/modulecreator.xml CHANGED
@@ -1893,6 +1893,42 @@
1893
  <url_rewrite />
1894
  </depend>
1895
  </file>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1896
  </content>
1897
  </file>
1898
  <file translate="title" module="modulecreator">
@@ -2758,5 +2794,248 @@
2758
  </file>
2759
  </content>
2760
  </file>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2761
  </files>
2762
  </config>
1893
  <url_rewrite />
1894
  </depend>
1895
  </file>
1896
+ <file>
1897
+ <name>14_api.csv</name>
1898
+ <depend>
1899
+ <create_api />
1900
+ </depend>
1901
+ </file>
1902
+ <file>
1903
+ <name>15_api_entity.csv</name>
1904
+ <scope>entity</scope>
1905
+ <depend>
1906
+ <create_api />
1907
+ </depend>
1908
+ </file>
1909
+ <file>
1910
+ <name>16_api_product_related.csv</name>
1911
+ <scope>entity</scope>
1912
+ <depend>
1913
+ <create_api />
1914
+ <link_product />
1915
+ </depend>
1916
+ </file>
1917
+ <file>
1918
+ <name>17_api_tree.csv</name>
1919
+ <scope>entity</scope>
1920
+ <depend>
1921
+ <create_api />
1922
+ <is_tree />
1923
+ </depend>
1924
+ </file>
1925
+ <file>
1926
+ <name>18_api_sibling.csv</name>
1927
+ <scope>siblings</scope>
1928
+ <depend>
1929
+ <entity_has_api />
1930
+ </depend>
1931
+ </file>
1932
  </content>
1933
  </file>
1934
  <file translate="title" module="modulecreator">
2794
  </file>
2795
  </content>
2796
  </file>
2797
+ <file translate="title" module="modulecreator">
2798
+ <title>Api config file</title>
2799
+ <filetype>xml</filetype>
2800
+ <depend>
2801
+ <create_api />
2802
+ </depend>
2803
+ <from>app/code/cp/Ns/Md/etc/api/</from>
2804
+ <to>app/code/{{codepool}}/{{Namespace}}/{{Module}}/etc/api.xml</to>
2805
+ <content>
2806
+ <file>
2807
+ <name>01_top.xml</name>
2808
+ </file>
2809
+ <file>
2810
+ <name>02_entity_api.xml</name>
2811
+ <scope>entity</scope>
2812
+ <depend>
2813
+ <create_api />
2814
+ </depend>
2815
+ </file>
2816
+ <file>
2817
+ <name>03_resource_alias.xml</name>
2818
+ </file>
2819
+ <file>
2820
+ <name>04_entity_resource_alias.xml</name>
2821
+ <scope>entity</scope>
2822
+ <depend>
2823
+ <create_api />
2824
+ </depend>
2825
+ </file>
2826
+ <file>
2827
+ <name>05_v2.xml</name>
2828
+ </file>
2829
+ <file>
2830
+ <name>06_v2_entity.xml</name>
2831
+ <scope>entity</scope>
2832
+ <depend>
2833
+ <create_api />
2834
+ </depend>
2835
+ </file>
2836
+ <file>
2837
+ <name>07_acl.xml</name>
2838
+ </file>
2839
+ <file>
2840
+ <name>08_acl_entity.xml</name>
2841
+ <scope>entity</scope>
2842
+ <depend>
2843
+ <create_api />
2844
+ </depend>
2845
+ </file>
2846
+ <file>
2847
+ <name>09_footer.xml</name>
2848
+ </file>
2849
+ </content>
2850
+ </file>
2851
+ <file translate="title" module="modulecreator">
2852
+ <title>API model</title>
2853
+ <filetype>php</filetype>
2854
+ <scope>entity</scope>
2855
+ <depend>
2856
+ <create_api />
2857
+ </depend>
2858
+ <from>app/code/cp/Ns/Md/Model/Entity/Api/</from>
2859
+ <to>app/code/{{codepool}}/{{Namespace}}/{{Module}}/Model/{{Entity}}/Api.php</to>
2860
+ <content>
2861
+ <file>
2862
+ <name>01_top.php</name>
2863
+ </file>
2864
+ <file>
2865
+ <name>02_product_relation_info.php</name>
2866
+ <depend>
2867
+ <link_product />
2868
+ </depend>
2869
+ </file>
2870
+ <file>
2871
+ <name>03_sibling_info.php</name>
2872
+ <scope>siblings</scope>
2873
+ </file>
2874
+ <file>
2875
+ <name>04_info_footer.php</name>
2876
+ </file>
2877
+ <file>
2878
+ <name>05_tree.php</name>
2879
+ <depend>
2880
+ <is_tree />
2881
+ </depend>
2882
+ </file>
2883
+ <file>
2884
+ <name>06_product_relation.php</name>
2885
+ <depend>
2886
+ <link_product />
2887
+ </depend>
2888
+ </file>
2889
+ <file>
2890
+ <name>07_sibling_relation.php</name>
2891
+ <scope>siblings</scope>
2892
+ </file>
2893
+ <file>
2894
+ <name>08_footer.php</name>
2895
+ </file>
2896
+ </content>
2897
+ </file>
2898
+ <file translate="title" module="modulecreator">
2899
+ <title>API model V2</title>
2900
+ <filetype>php</filetype>
2901
+ <scope>entity</scope>
2902
+ <depend>
2903
+ <create_api />
2904
+ </depend>
2905
+ <from>app/code/cp/Ns/Md/Model/Entity/Api/V2/</from>
2906
+ <to>app/code/{{codepool}}/{{Namespace}}/{{Module}}/Model/{{Entity}}/Api/V2.php</to>
2907
+ <content>
2908
+ <file>
2909
+ <name>01_top.php</name>
2910
+ </file>
2911
+ <file>
2912
+ <name>02_product_relation.php</name>
2913
+ <depend>
2914
+ <link_product />
2915
+ </depend>
2916
+ </file>
2917
+ <file>
2918
+ <name>03_sibling_relation.php</name>
2919
+ <scope>siblings</scope>
2920
+ </file>
2921
+ <file>
2922
+ <name>04_footer.php</name>
2923
+ </file>
2924
+ </content>
2925
+ </file>
2926
+ <file translate="title" module="modulecreator">
2927
+ <title>WSDL file</title>
2928
+ <filetype>xml</filetype>
2929
+ <depend>
2930
+ <create_api />
2931
+ </depend>
2932
+ <from>app/code/cp/Ns/Md/etc/wsdl/</from>
2933
+ <to>app/code/{{codepool}}/{{Namespace}}/{{Module}}/etc/wsdl.xml</to>
2934
+ <content>
2935
+ <file>
2936
+ <name>01_top.xml</name>
2937
+ </file>
2938
+ <file>
2939
+ <name>02_entity_types.xml</name>
2940
+ <scope>entity</scope>
2941
+ <depend>
2942
+ <create_api />
2943
+ </depend>
2944
+ </file>
2945
+ <file>
2946
+ <name>03_schema_footer.xml</name>
2947
+ </file>
2948
+ <file>
2949
+ <name>04_entity_messages.xml</name>
2950
+ <scope>entity</scope>
2951
+ <depend>
2952
+ <create_api />
2953
+ </depend>
2954
+ </file>
2955
+ <file>
2956
+ <name>05_porttype_top.xml</name>
2957
+ </file>
2958
+ <file>
2959
+ <name>06_porttype_entity.xml</name>
2960
+ <scope>entity</scope>
2961
+ <depend>
2962
+ <create_api />
2963
+ </depend>
2964
+ </file>
2965
+ <file>
2966
+ <name>07_porttype_footer.xml</name>
2967
+ </file>
2968
+ <file>
2969
+ <name>08_binding_top.xml</name>
2970
+ </file>
2971
+ <file>
2972
+ <name>09_entity_binding.xml</name>
2973
+ <scope>entity</scope>
2974
+ <depend>
2975
+ <create_api />
2976
+ </depend>
2977
+ </file>
2978
+ <file>
2979
+ <name>10_footer.xml</name>
2980
+ </file>
2981
+ </content>
2982
+ </file>
2983
+ <file translate="title" module="modulecreator">
2984
+ <title>WSI file</title>
2985
+ <filetype>xml</filetype>
2986
+ <depend>
2987
+ <create_api />
2988
+ </depend>
2989
+ <from>app/code/cp/Ns/Md/etc/wsi/</from>
2990
+ <to>app/code/{{codepool}}/{{Namespace}}/{{Module}}/etc/wsi.xml</to>
2991
+ <content>
2992
+ <file>
2993
+ <name>01_top.xml</name>
2994
+ </file>
2995
+ <file>
2996
+ <name>02_entity_types.xml</name>
2997
+ <scope>entity</scope>
2998
+ <depend>
2999
+ <create_api />
3000
+ </depend>
3001
+ </file>
3002
+ <file>
3003
+ <name>03_schema_footer.xml</name>
3004
+ </file>
3005
+ <file>
3006
+ <name>04_entity_messages.xml</name>
3007
+ <scope>entity</scope>
3008
+ <depend>
3009
+ <create_api />
3010
+ </depend>
3011
+ </file>
3012
+ <file>
3013
+ <name>05_porttype_top.xml</name>
3014
+ </file>
3015
+ <file>
3016
+ <name>06_porttype_entity.xml</name>
3017
+ <scope>entity</scope>
3018
+ <depend>
3019
+ <create_api />
3020
+ </depend>
3021
+ </file>
3022
+ <file>
3023
+ <name>07_porttype_footer.xml</name>
3024
+ </file>
3025
+ <file>
3026
+ <name>08_binding_top.xml</name>
3027
+ </file>
3028
+ <file>
3029
+ <name>09_entity_binding.xml</name>
3030
+ <scope>entity</scope>
3031
+ <depend>
3032
+ <create_api />
3033
+ </depend>
3034
+ </file>
3035
+ <file>
3036
+ <name>10_footer.xml</name>
3037
+ </file>
3038
+ </content>
3039
+ </file>
3040
  </files>
3041
  </config>
app/code/community/Ultimate/ModuleCreator/etc/system.xml CHANGED
@@ -191,11 +191,20 @@
191
  <show_in_website>0</show_in_website>
192
  <show_in_store>0</show_in_store>
193
  </add_status>
 
 
 
 
 
 
 
 
 
194
  <rss translate="label" module="modulecreator">
195
  <label>Create RSS feed</label>
196
  <frontend_type>select</frontend_type>
197
  <source_model>adminhtml/system_config_source_yesno</source_model>
198
- <sort_order>110</sort_order>
199
  <show_in_default>1</show_in_default>
200
  <show_in_website>0</show_in_website>
201
  <show_in_store>0</show_in_store>
191
  <show_in_website>0</show_in_website>
192
  <show_in_store>0</show_in_store>
193
  </add_status>
194
+ <add_status translate="label" module="modulecreator">
195
+ <label>Create API</label>
196
+ <frontend_type>select</frontend_type>
197
+ <source_model>adminhtml/system_config_source_yesno</source_model>
198
+ <sort_order>100</sort_order>
199
+ <show_in_default>1</show_in_default>
200
+ <show_in_website>0</show_in_website>
201
+ <show_in_store>0</show_in_store>
202
+ </add_status>
203
  <rss translate="label" module="modulecreator">
204
  <label>Create RSS feed</label>
205
  <frontend_type>select</frontend_type>
206
  <source_model>adminhtml/system_config_source_yesno</source_model>
207
+ <sort_order>105</sort_order>
208
  <show_in_default>1</show_in_default>
209
  <show_in_website>0</show_in_website>
210
  <show_in_store>0</show_in_store>
app/design/adminhtml/default/default/template/ultimate_modulecreator/edit/tab/entities/entity.phtml CHANGED
@@ -75,7 +75,7 @@
75
  </label>
76
  </td>
77
  <td class="value">
78
- <input type="text" class="required-entry input-text name-singular validate-alphanum" id="entity_<?php echo $this->getIncrement();?>_name_singular" name="entity[<?php echo $this->getIncrement();?>][name_singular]" value="<?php echo $_entity->getNameSingular();?>" />
79
  <?php echo Mage::helper('modulecreator/adminhtml')->getTooltipHtml(Mage::helper('modulecreator')->__('Entity name - singular'), Mage::helper('modulecreator')->__('This is the code (singular) of your entity. This is how the variables relating to your entity will be named.'))?>
80
  </td>
81
  </tr>
@@ -86,7 +86,7 @@
86
  </label>
87
  </td>
88
  <td class="value">
89
- <input type="text" class="required-entry input-text validate-alphanum" id="entity_<?php echo $this->getIncrement();?>_name_plural" name="entity[<?php echo $this->getIncrement();?>][name_plural]" value="<?php echo $_entity->getNamePlural();?>" />
90
  <?php echo Mage::helper('modulecreator/adminhtml')->getTooltipHtml(Mage::helper('modulecreator')->__('Entity name - plural'), Mage::helper('modulecreator')->__('This is the code (singular) of your entity. This is how the variables relating to your entities will be named.'))?>
91
  </td>
92
  </tr>
@@ -157,6 +157,17 @@
157
  <?php echo Mage::helper('modulecreator/adminhtml')->getTooltipHtml(Mage::helper('modulecreator')->__('Add to admin global search'), Mage::helper('modulecreator')->__('When using the global admin search Magento searches on products, customers and orders. This can make it search in your entities also.'))?>
158
  </td>
159
  </tr>
 
 
 
 
 
 
 
 
 
 
 
160
  </tbody>
161
  </table>
162
  </div>
75
  </label>
76
  </td>
77
  <td class="value">
78
+ <input type="text" class="required-entry input-text name-singular validate-alphanum validate-code" id="entity_<?php echo $this->getIncrement();?>_name_singular" name="entity[<?php echo $this->getIncrement();?>][name_singular]" value="<?php echo $_entity->getNameSingular();?>" />
79
  <?php echo Mage::helper('modulecreator/adminhtml')->getTooltipHtml(Mage::helper('modulecreator')->__('Entity name - singular'), Mage::helper('modulecreator')->__('This is the code (singular) of your entity. This is how the variables relating to your entity will be named.'))?>
80
  </td>
81
  </tr>
86
  </label>
87
  </td>
88
  <td class="value">
89
+ <input type="text" class="required-entry input-text validate-alphanum validate-code" id="entity_<?php echo $this->getIncrement();?>_name_plural" name="entity[<?php echo $this->getIncrement();?>][name_plural]" value="<?php echo $_entity->getNamePlural();?>" />
90
  <?php echo Mage::helper('modulecreator/adminhtml')->getTooltipHtml(Mage::helper('modulecreator')->__('Entity name - plural'), Mage::helper('modulecreator')->__('This is the code (singular) of your entity. This is how the variables relating to your entities will be named.'))?>
91
  </td>
92
  </tr>
157
  <?php echo Mage::helper('modulecreator/adminhtml')->getTooltipHtml(Mage::helper('modulecreator')->__('Add to admin global search'), Mage::helper('modulecreator')->__('When using the global admin search Magento searches on products, customers and orders. This can make it search in your entities also.'))?>
158
  </td>
159
  </tr>
160
+ <tr>
161
+ <td class="label">
162
+ <label for="entity_<?php echo $this->getIncrement();?>_create_api">
163
+ <?php echo Mage::helper('modulecreator')->__('Create API') ?>
164
+ </label>
165
+ </td>
166
+ <td class="value">
167
+ <?php echo $this->getYesNoSelect('entity'.'_'.$this->getIncrement().'_create_api', 'entity'.'['.$this->getIncrement().'][create_api]', $_entity->getCreateApi());?>
168
+ <?php echo Mage::helper('modulecreator/adminhtml')->getTooltipHtml(Mage::helper('modulecreator')->__('Create API'), Mage::helper('modulecreator')->__('This will create the files needed for the SOAP API for the custom entity.'))?>
169
+ </td>
170
+ </tr>
171
  </tbody>
172
  </table>
173
  </div>
app/locale/en_US/Ultimate_ModuleCreator.csv CHANGED
@@ -51,6 +51,7 @@
51
  "Close","Close","true"
52
  "Code pool","Code pool","false"
53
  "Config xml","Config xml","false"
 
54
  "Create Link/View widget","Create Link/View widget","false"
55
  "Create Module","Create Module","false"
56
  "Create RSS feed","Create RSS feed","false"
@@ -303,6 +304,7 @@
303
  "This will be added as a small comment under the input in the admin add/edit form.","This will be added as a small comment under the input in the admin add/edit form.","false"
304
  "This will create a new attribute for your entity called ""Show in Feed"" and will also create the logic for viewing your entities as RSS feeds.","This will create a new attribute for your entity called ""Show in Feed"" and will also create the logic for viewing your entities as RSS feeds.","false"
305
  "This will create the code that will allow you to include widgets of your entities in the static pages and static blocks.","This will create the code that will allow you to include widgets of your entities in the static pages and static blocks.","false"
 
306
  "This will determine the input type of the attribute.","This will determine the input type of the attribute.","false"
307
  "This will determine the position in the admin add/edit form.","This will determine the position in the admin add/edit form.","false"
308
  "This will display the list of associated entities on the related product page. It may not be displayed if the design is not compatible but can be fixed from the layout xml of the entity.","This will display the list of associated entities on the related product page. It may not be displayed if the design is not compatible but can be fixed from the layout xml of the entity.","false"
51
  "Close","Close","true"
52
  "Code pool","Code pool","false"
53
  "Config xml","Config xml","false"
54
+ "Create API","Create API","false"
55
  "Create Link/View widget","Create Link/View widget","false"
56
  "Create Module","Create Module","false"
57
  "Create RSS feed","Create RSS feed","false"
304
  "This will be added as a small comment under the input in the admin add/edit form.","This will be added as a small comment under the input in the admin add/edit form.","false"
305
  "This will create a new attribute for your entity called ""Show in Feed"" and will also create the logic for viewing your entities as RSS feeds.","This will create a new attribute for your entity called ""Show in Feed"" and will also create the logic for viewing your entities as RSS feeds.","false"
306
  "This will create the code that will allow you to include widgets of your entities in the static pages and static blocks.","This will create the code that will allow you to include widgets of your entities in the static pages and static blocks.","false"
307
+ "This will create the files needed for the SOAP API for the custom entity.","This will create the files needed for the SOAP API for the custom entity.","false"
308
  "This will determine the input type of the attribute.","This will determine the input type of the attribute.","false"
309
  "This will determine the position in the admin add/edit form.","This will determine the position in the admin add/edit form.","false"
310
  "This will display the list of associated entities on the related product page. It may not be displayed if the design is not compatible but can be fixed from the layout xml of the entity.","This will display the list of associated entities on the related product page. It may not be displayed if the design is not compatible but can be fixed from the layout xml of the entity.","false"
modman CHANGED
@@ -3,4 +3,6 @@ app/etc/modules/Ultimate_ModuleCreator.xml app/etc/modules/Ultimate_ModuleCreato
3
  app/code/community/Ultimate/ModuleCreator app/code/community/Ultimate/ModuleCreator
4
  app/locale/en_US/Ultimate_ModuleCreator.csv app/locale/en_US/Ultimate_ModuleCreator.csv
5
  app/design/adminhtml/default/default/layout/ultimate_modulecreator.xml app/design/adminhtml/default/default/layout/ultimate_modulecreator.xml
6
- app/design/adminhtml/default/default/template/ultimate_modulecreator app/design/adminhtml/default/default/template/ultimate_modulecreator
 
 
3
  app/code/community/Ultimate/ModuleCreator app/code/community/Ultimate/ModuleCreator
4
  app/locale/en_US/Ultimate_ModuleCreator.csv app/locale/en_US/Ultimate_ModuleCreator.csv
5
  app/design/adminhtml/default/default/layout/ultimate_modulecreator.xml app/design/adminhtml/default/default/layout/ultimate_modulecreator.xml
6
+ app/design/adminhtml/default/default/template/ultimate_modulecreator app/design/adminhtml/default/default/template/ultimate_modulecreator
7
+ skin/adminhtml/default/default/ultimate_modulecreator.css skin/adminhtml/default/default/ultimate_modulecreator.css
8
+
package.xml CHANGED
@@ -1,27 +1,25 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Ultimate_ModuleCreator</name>
4
- <version>1.4.1</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/MIT">MIT License</license>
7
  <channel>community</channel>
8
  <extends/>
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>Bug fixes:&#xD;
12
- - siblings not listed in the order set in admin.&#xD;
13
- - entity models are missing event prefixes and event objects.&#xD;
14
- Features:&#xD;
15
- - Added 'country' field type&#xD;
16
- - Added log creation for each module with the files that are created.&#xD;
17
- Refactor:&#xD;
18
- - Clean up for image attribute renderers (frontend and backend).&#xD;
19
- - added Mage::logException for admin exceptions&#xD;
20
- - Rafactor image helper (thanks carco).</notes>
21
  <authors><author><name>Marius Strajeru</name><user>tzyganu</user><email>tzyganu@gmail.com</email></author></authors>
22
- <date>2013-03-15</date>
23
- <time>21:46:24</time>
24
- <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="cb4328ae858a31a31d76016e50b56739"/><dir name="Tab"><dir name="Entities"><dir name="Entity"><file name="Attribute.php" hash="daa6787fa3f72150fc86c4350be932da"/></dir><file name="Entity.php" hash="8d5b07f735a5a7107f1abf66bbb482da"/></dir><file name="Entities.php" hash="65602b8daaa8585d9c94d7a4d8d7dcde"/><file name="Help.php" hash="304c68d68e9adf0962817e27877683b6"/><file name="Relation.php" hash="43730e74747b8e6e5985eee259e6db07"/><file name="Settings.php" hash="dee31d423d26a3efbc773530ac847afb"/></dir><file name="Tabs.php" hash="578af9256efb3d516db14db7e396e5e3"/></dir><file name="Edit.php" hash="491948d86e2e3a50fa185a407997c163"/><file name="Grid.php" hash="96ef8fa066b89937712b44991191f4de"/></dir><file name="Modulecreator.php" hash="b2630018b6f103d1a3f9e92ed7de7a54"/></dir></dir><file name="Exception.php" hash="aaef7086ff700d7132418cf68629246f"/><dir name="Helper"><file name="Adminhtml.php" hash="f913d91b1041032b35e4d0ca2fd20205"/><file name="Data.php" hash="15c1fc5975814c656c587da7db416a21"/></dir><dir name="Model"><file name="Abstract.php" hash="33a186edb30b8ff3f54fda6690a90a2c"/><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Source"><file name="Codepool.php" hash="045f0555fc545799148627e081ca8727"/><file name="Install.php" hash="7fb2fd108b5bed63b31ab9cfd0da25f5"/><file name="Layout.php" hash="3d63a2221b3a93926c662b3c10effc2c"/></dir></dir></dir></dir><dir name="Attribute"><dir name="Type"><file name="Abstract.php" hash="983e731730dbc4ee0a8c24ec662c091a"/><file name="Country.php" hash="59211a0da793c9f828caa161688f0d1c"/><file name="Decimal.php" hash="593c993bfba24af511164987a8c11eb3"/><file name="File.php" hash="a8e18228577beb612f202acbe0ddb41a"/><file name="Image.php" hash="80211878524ee9ed71096d30b1c52c42"/><file name="Int.php" hash="7e06c84fa8a3c2940624248c386e2d67"/><file name="Text.php" hash="237217feda93dadf93a63f181ebb8793"/><file name="Textarea.php" hash="04cd8559fbeeb8b81733e6c9a3b7b725"/><file name="Timestamp.php" hash="d18d599090ac5fa824e44edf3fa14486"/><file name="Website.php" hash="0bd68cd56e97013711986bdb3edf06cb"/><file name="Yesno.php" hash="dbb96529e483d587d8d8d99f176afa8b"/></dir></dir><file name="Attribute.php" hash="b6ab929edc78a41829630b0a02d59e5e"/><file name="Entity.php" hash="bd57954f5eb26d276273e9040281b236"/><dir name="Module"><file name="Collection.php" hash="0e413b976cbc9649ec982fe0f4b95dd1"/></dir><file name="Module.php" hash="b34a226d017260e9a2c1edfcaf169fc3"/><file name="Relation.php" hash="aca1db5db2cd807298acd21dc7b24b39"/><file name="Writer.php" hash="b47341646a1882d77e57cf6a5b30ad49"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="ModulecreatorController.php" hash="11ee92957c8099af688993543b9f849e"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="755c04b748c41ced20f41c725acc95c2"/><file name="config.xml" hash="653f667533ebab4952b8448d1443ea11"/><dir name="m"><dir name="app"><dir name="code"><dir name="cp"><dir name="Ns"><dir name="Md"><dir name="Block"><dir name="Adminhtml"><dir name="Catalog"><dir name="Product"><dir name="Edit"><dir name="Tab"><dir name="Entity"><file name="01_content.php" hash="59347ed053e0fe3dc2e25a5c5490ecd4"/><dir name="IsTree"><file name="01_content.php" hash="1eda50311bcf910106a49ad54f1681fd"/></dir></dir></dir></dir></dir></dir><dir name="Entity"><file name="01_content.php" hash="5dfc799aeee50cc5ef32d356c1cc176f"/><dir name="Abstract"><file name="01_content.php" hash="dfe60775e0f319347a8937a17733c751"/></dir><dir name="Edit"><file name="01_content.php" hash="21d1cd84da305a41e516752e39c12404"/><dir name="Form"><file name="01_content.php" hash="39f68c93dba53e650f502776c03caf20"/><dir name="IsTree"><file name="01_top.php" hash="6bf3a72161678690d515deb253fb5f3d"/><file name="02_product_relation.php" hash="adee6754a75247b7d401d8f774d3918b"/><file name="03_entity_relation.php" hash="7f06c1f227ff6e8e1f64606bc1da6d3a"/><file name="04_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir></dir><dir name="IsTree"><file name="01_content.php" hash="6f8ab2c71f28a7618db8b94c311d6f13"/></dir><dir name="Tab"><dir name="Form"><file name="01_top.php" hash="9f6681f6bc3e012a8c711739a0ed6ae1"/><file name="02_image.php" hash="8dbf5010de2c46aabb02cd7a4df6f45e"/><file name="03_file.php" hash="64ede5038fe0edfec08671a5ca521777"/><file name="04_wysiwyg.php" hash="d25a58b233bd88a2e6d1fd5a79398394"/><file name="05_wysiwyg_is_tree.php" hash="6ef452bba45e48bbfc370ea24b61d6e0"/><file name="06_path_tree.php" hash="9991a81df109b0abbc8bd06a26694d1b"/><file name="07_parents.php" hash="476f7ebd1b04a879f3dd51b1913f9a9d"/><file name="08_attributes.php" hash="44c81d580dcf072b2ed9b5cc90fb1fac"/><file name="09_url_rewrite.php" hash="fdcf74d7a3abe5bfa32db1d5f042d8e2"/><file name="10_status.php" hash="ade9e66ee2dd546ebea8c9800b378a88"/><file name="11_rss.php" hash="0a122d46cc4826a0bd62b2f5d52b3fdc"/><file name="12_seo.php" hash="f0cf29478e91ced8dc39170b2574f1f2"/><file name="13_add_values_not_tree.php" hash="dc7ba40ed78eb43b08fc46c235029c8c"/><file name="14_add_values_tree.php" hash="c569ce680f4c5328292d6bb4f4c37e69"/><file name="15_get_entity_tree.php" hash="3d9027f073bf28f89aecd6b224c350ca"/><file name="16_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir><dir name="Product"><file name="01_content.php" hash="e42fb1044c47e7e1ba7c456f057b9558"/></dir><dir name="Sibling"><file name="01_content.php" hash="45cbbc5d065f5e0402a8340e14e5e6b2"/><dir name="IsTree"><file name="01_content.php" hash="0809c980a4d5059bc679e37762853f5e"/></dir></dir></dir><dir name="Tabs"><file name="01_top.php" hash="7cecbd5b68dc09c4e9a14f214b3b70df"/><file name="02_relations_tabs.php" hash="3f1eba9e9a7bf177185364cffc8468ba"/><file name="03_product_relation.php" hash="aee681c7021e9efad07a39bc8f8cf56d"/><file name="04_footer.php" hash="01b6273dfbf342c1f984c1e10b631b65"/><dir name="IsTree"><file name="01_top.php" hash="e48cac6414b02601cbef87e9831846a2"/><file name="02_relations_tabs.php" hash="50d5a9065062cf44f11a8aba92140790"/><file name="03_product_relation.php" hash="c5dc78d7c883af529b3adf72770d3dde"/><file name="04_footer.php" hash="5cad78a0f4dc4a2531cb6195e5e9ea5a"/></dir></dir></dir><dir name="Grid"><file name="01_top.php" hash="1a0c8754c5482692ae460fd6aafcfa6b"/><file name="02_columns_top.php" hash="1d28265e98b06fe61edde000c0d28db6"/><file name="03_parents.php" hash="011f4f2895cbaa33e753168131feedee"/><file name="04_grid_attributes.php" hash="2e7a6d5f6333b44ddf6792898a6e01c1"/><file name="05_url_rewrite.php" hash="b35f254eefea0d714de7ec6bdf5f2c4b"/><file name="06_grid_status.php" hash="f1d657a64ad855219882ac8aa6ead5b5"/><file name="07_created_at.php" hash="15f2bf1aeab4512931cfd13461466dbf"/><file name="08_updated_at.php" hash="b416ed24d9613f8332f4191f0378c1a3"/><file name="09_grid_actions.php" hash="fbc479c06560e193e4c2177358eadc07"/><file name="10_grid_export.php" hash="3da336230cb919e5dd36e39d21ea3f0e"/><file name="11_columns_footer.php" hash="1cdf225b4a61a0036903c4e251484684"/><file name="12_mass_action_top.php" hash="4979fc362c7c0666bcfe39e89f3a88f4"/><file name="13_mass_action_status.php" hash="d504216f92f489be7857bee37cf0771c"/><file name="14_mass_action_flags.php" hash="9b0d9088708f5e84b50e7ac6ee06a632"/><file name="15_mass_action_parents.php" hash="7b36b4b3954e3913e6bdafb822ca6634"/><file name="16_footer.php" hash="0833ff1f2002af6a4db1df3a3cad3385"/></dir><dir name="Helper"><dir name="File"><file name="01_content.php" hash="c00cdcedf171c992bb88a20402bfd70d"/></dir><dir name="Image"><file name="01_content.php" hash="62a55ac8856f4dc555d6dc373c2de7d5"/></dir></dir><dir name="Tree"><file name="01_top.php" hash="8b8eaeea900cceeccb0b12717fe440f7"/><file name="02_status.php" hash="3a0cada5dfb430e3d7b9890e3f6ac2ba"/><file name="03_footer.php" hash="1e7043194d0104f8e39c6418af00a7f4"/></dir><dir name="Widget"><dir name="Chooser"><file name="01_top.php" hash="61b31cd249d7f23aeb456eeff337c9c0"/><file name="02_top_status.php" hash="ae8d09557d6c9aa3a920e148f0cdd7d6"/><file name="03_content.php" hash="8dcbeac6eb2d80f500479a36c5b49c36"/><file name="04_status.php" hash="6fb78962dd9ffb30ee5d750876a26e5d"/><file name="05_footer.php" hash="c6f7967214ca668b51f41dc428cf7145"/><dir name="IsTree"><file name="01_content.php" hash="90138bcf517a4df92825e95e65902a1c"/></dir></dir></dir></dir><dir name="Helper"><dir name="Wysiwyg"><file name="01_content.php" hash="50f63445cbb78d5eb1ff42eed07e76af"/></dir></dir></dir><dir name="Catalog"><dir name="Product"><dir name="List"><dir name="Entity"><file name="01_top.php" hash="e73df46ed0d2f57e185cebe41814ab67"/><file name="02_status.php" hash="716a6a2f8243c5048f90584f0bd7f888"/><file name="03_footer.php" hash="7afa811ee3b39c3717cbb8f484e32405"/></dir></dir></dir></dir><dir name="Entity"><dir name="Catalog"><dir name="Product"><dir name="List"><file name="01_content.php" hash="f9a6ec0ca31b9525357f447b5471256f"/></dir></dir></dir><dir name="Child"><dir name="List"><file name="01_content.php" hash="30ac249d25535c1a522f96bae56a4f75"/></dir></dir><dir name="Children"><file name="01_content.php" hash="e3f2d736896f8b81132ab0ce4735d08a"/></dir><dir name="List"><file name="01_top.php" hash="225b59a84d8bf6cb0d06d62bb5240eb2"/><file name="02_status.php" hash="716a6a2f8243c5048f90584f0bd7f888"/><file name="03_footer.php" hash="369738e4147fd032b12c1df4aa01ed9c"/><dir name="IsTree"><file name="01_top.php" hash="225b59a84d8bf6cb0d06d62bb5240eb2"/><file name="02_status.php" hash="716a6a2f8243c5048f90584f0bd7f888"/><file name="03_center.php" hash="d4bab4d0e7f4741b0288454906b0e428"/><file name="04_status_draw.php" hash="05f41e4fa26f8644069191a7621b6e3f"/><file name="05_children.php" hash="b59bb1c9e92637ceab3196618b8deee7"/><file name="06_active_children.php" hash="1c9785dbb369f8d3818d4644c5f7e232"/><file name="07_active_children_no_status.php" hash="60a6cf3f5643514e5c1b83353cea5ea9"/><file name="08_footer.php" hash="90180c9a604e490752cf905fd3410efd"/></dir></dir><dir name="Rss"><file name="01_top.php" hash="957b89055315fee8ecefa6b34e940efe"/><file name="02_status.php" hash="7a81b20fbd0ca4ac140c263e481a5b06"/><file name="03_content_top.php" hash="6e2c16bd170842cc88610692439c4674"/><file name="04_content.php" hash="f556d8f00acfa61f93bbc9b09da3508b"/><file name="05_footer.php" hash="0514ad15059f8411d3315d111aac5b84"/></dir><dir name="Sibling"><dir name="List"><file name="01_content.php" hash="09e6f490b8b2d73efdbecbb68737c81f"/></dir></dir><dir name="View"><file name="01_content.php" hash="b6824731ad9bb41ef1f84b4359596f67"/></dir><dir name="Widget"><dir name="Link"><file name="01_content.php" hash="2862dcc4937c58fbee284764732e733c"/></dir><dir name="View"><file name="01_top.php" hash="a31bafcf8918811ff55b0a8eaf49c021"/><file name="02_status.php" hash="fd4d2e31a4c04c13bb470ce615550310"/><file name="03_template.php" hash="e6fd0367cfbd0b14996e189ac56b2d3b"/><file name="04_status.php" hash="573160846b9e8693e966c0881103f25e"/><file name="05_footer.php" hash="1009acd5e8f54dbedb651ecffb283df1"/></dir></dir></dir><dir name="Rss"><file name="01_content.php" hash="ea37b93ec747a042dd51e2e4eaeb22ac"/></dir></dir><dir name="Controller"><dir name="Adminhtml"><dir name="Module"><file name="01_content.php" hash="938c09e00f8a7045d70c7e97dd478df8"/></dir></dir><dir name="Router"><file name="01_top.php" hash="c9dd518945d5ab5fb7508084c2206125"/><file name="02_entity.php" hash="8ba8993dd992d580cd5e3b6ced303d38"/><file name="03_footer.php" hash="7ba40f835c0bbca8dfb8e60753142de4"/></dir></dir><dir name="Helper"><dir name="Data"><file name="01_top.php" hash="44aa03c717b24b0086230271b07f195a"/><file name="02_entity.php" hash="378423c2b9ba4ac86328e094d6e60946"/><file name="03_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir><dir name="Entity"><file name="01_top.php" hash="6e37881fbe0898e930a5d7b3d1ce606f"/><file name="02_tree.php" hash="8e6d460e528f4b0e3e74bbbff06336dd"/><file name="03_rss.php" hash="9e9fa595a4a7ec7f159e1d64620119ae"/><file name="04_file.php" hash="44bc7ce84f603100f67dedc1edf3cc0d"/><file name="05_footer.php" hash="2e687c8e025cca2e891ac925406f277c"/><dir name="Image"><file name="01_content.php" hash="e09360ea17dff94a611787004030275b"/></dir></dir><dir name="Image"><dir name="Abstract"><file name="01_content.php" hash="b39acaba6cf4d242689147dfffc8f095"/></dir></dir><dir name="Product"><file name="01_top.php" hash="20709afdafe7e3fd280e7c346a441b0c"/><file name="02_content.php" hash="33fa587ea74ff5caae02e2263bd6092b"/><file name="03_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir></dir><dir name="Model"><dir name="Adminhtml"><dir name="Observer"><file name="01_top.php" hash="abec4c7c295fb57c4086fdf9d22cdf28"/><file name="02_entity.php" hash="6c64bd2314a24f6d2dafa4dedb448b8c"/><file name="03_entity_save.php" hash="6b6db7bcb0cffefc6c3406df406c497a"/><file name="04_entity_save_tree.php" hash="aca15cbb7afc5a832488addb56df157e"/><file name="05_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir><dir name="Search"><dir name="Entity"><file name="01_content.php" hash="824a247bcd2cadb8f1da16ec3034d1c1"/></dir></dir></dir><dir name="Entity"><file name="01_top.php" hash="37daaca4671c58ef2fb2eaa50e0d7a7b"/><file name="02_var_sibling.php" hash="cbbdeeaa7082b22b3a57508dc6bcd4fa"/><file name="03_var_product_relation.php" hash="50cd6433f6617ed2d47c2a9ab9bee4d1"/><file name="04_construct.php" hash="81fb22faf1dc0c05920f5db34061100c"/><file name="05_url.php" hash="6d955735b11308ec8087bfbf2d0c6078"/><file name="06_url_rewrite_not_status.php" hash="514c4998931a817a55e652ec6fa4a322"/><file name="07_url_rewrite_status.php" hash="c5b3cbcffc16a48989a5491e4abd2c4b"/><file name="08_editors.php" hash="615bc07ef7e14bc892bb567e3c22cef7"/><file name="09_after_save_top.php" hash="f456ae82840db694e49d527d6ad23f8f"/><file name="10_after_save_product.php" hash="7e85bbf889a5beededa975831b573d97"/><file name="11_after_save_sibling.php" hash="a7ea726ae5b4b19f78773a563a7196bf"/><file name="12_after_save_footer.php" hash="1af792cf3f94391bbe2b261a0d927a8c"/><file name="13_product_relation.php" hash="890ad6b1cad708779f0e5cb1aa745f1a"/><file name="14_sibling_relation.php" hash="f833e4acb70b198a1cc69da992affc76"/><file name="15_tree.php" hash="c577ef6c4d67da82d5226162345ef896"/><file name="16_tree_status.php" hash="64da48d68c1af82304cea4ee2c21800e"/><file name="17_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/><dir name="Product"><file name="01_content.php" hash="d8dfaa0ac8ba132bf95d3d65452d9795"/></dir><dir name="Sibling"><file name="01_content.php" hash="ef2fc76324ca0afcaabab7f8272bd526"/></dir></dir><dir name="Resource"><dir name="Entity"><file name="01_top.php" hash="8584bb2dba4e8da350ad36ee91ba7094"/><file name="02_tree_var.php" hash="8a673f57e7979c6c0aa2dc38c8f29c38"/><file name="03_constructor.php" hash="1c67d6971268cb3765067a30d6a5ebac"/><file name="04_tree.php" hash="f5f39cd45b72b48079a8bc3c6cee81d2"/><file name="05_tree_before_save_no_url_rewrite.php" hash="721b246ab7c8011faa810f9c509cbc76"/><file name="06_tree_before_save_url_rewrite.php" hash="872a4a6d7b408bf621a52739e5d8438a"/><file name="07_children_no_status.php" hash="41b492cea369e6303ad444b16f016857"/><file name="08_children_status.php" hash="61bfda77779840f9855311137112979e"/><file name="09_content.php" hash="ad6a926a11cf4ca722b896a78bbeadab"/><file name="10_url_rewrite_status.php" hash="1f7413dfcd315965fac22404f7a2808e"/><file name="11_url_rewrite_not_status.php" hash="13b834ba94b4998155668d3c211d2759"/><file name="12_url_rewrite_before_save_not_tree.php" hash="2d51e7bda2f717d22bd17593851f65fa"/><file name="13_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/><dir name="Collection"><file name="01_top.php" hash="7aed912ade7c0e7f779b73d3022772b4"/><file name="02_tree.php" hash="22c1250f162919870d08ec9aa71b949e"/><file name="03_tree_status.php" hash="fe745dc63220b3ddd5f799921077ac51"/><file name="04_product_relation.php" hash="d2f707b97df2ecf2d088aebeeb660822"/><file name="05_sibling_relation.php" hash="4563330e972ef0b0f4b96096b8594727"/><file name="06_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir><dir name="Product"><file name="01_content.php" hash="1545e16c25769395d3d95ec03a8cd4b3"/><dir name="Collection"><file name="01_content.php" hash="401d1dc800ddf76ea155160f3e02d162"/></dir><dir name="IsTree"><file name="01_content.php" hash="0a1b1718dec4ec27dc5310d45b388e2e"/></dir></dir><dir name="Sibling"><file name="01_top.php" hash="e78ca594012a642782fc2292084f81ca"/><file name="02_save_relation.php" hash="43dbb46224c1f8ca4a658a6a5d5077ad"/><file name="03_save_relation_tree.php" hash="1b0b458b7327dd6beaca0455d4268921"/><file name="04_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/><dir name="Collection"><file name="01_content.php" hash="c48de1443823a6ff51517f8a6cab0599"/></dir></dir><dir name="Tree"><file name="01_top.php" hash="d286ac636149b07c3e1993eb4d157529"/><file name="02_status_top.php" hash="f4151c843a394922807dcb59ce6807d8"/><file name="03_content.php" hash="402a0ba7525c552db2e2fa64c79f6473"/><file name="04_not_status.php" hash="d1b54f100c018fe6d5ae965e5aac8dd8"/><file name="05_status.php" hash="df0ef83645e0784f4c33534b976421ee"/><file name="06_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir></dir><dir name="Setup"><file name="01_content.php" hash="335c579a20a627c5a403e3c7ac6156c0"/></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Module"><dir name="Entity"><dir name="Catalog"><dir name="ProductController"><file name="01_content.php" hash="b904ef31283029cf808cc42719208874"/><dir name="IsTree"><file name="01_content.php" hash="989ec00484ec5ef3f04df8f9f0007eee"/></dir></dir></dir><dir name="WidgetController"><file name="01_content.php" hash="8d934e135109f74ac036b84d6939f6c9"/><file name="02_tree.php" hash="41b1fca05f9bd59455c72b1d240cc1e7"/><file name="03_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir></dir><dir name="EntityController"><file name="01_top.php" hash="21cbb6239ec0b4d998b494308af6cf1a"/><file name="02_upload_image.php" hash="c111546b644ffafd26c102f095334f95"/><file name="03_upload_files.php" hash="90fd33445b8889a23e5af035da89c15e"/><file name="04_save_product_relation.php" hash="29b35c54da6069c72edd245c42aa5369"/><file name="05_save_sibling_relation.php" hash="e9fe7f25344280b483db7108cc3ae0b1"/><file name="06_save_sibling_relation_tree.php" hash="ee1dcb0a6924b8c7c074a63ec2331f53"/><file name="07_save.php" hash="11c73c7cfc8c76738fce70c466ba7c63"/><file name="08_exception_upload.php" hash="216185c48b0b0937597939a95026a1c9"/><file name="09_exception.php" hash="b34376b34211a9cc21609ac7438d6d6d"/><file name="10_center.php" hash="bc1d289241de1722abb5685c63352c2e"/><file name="11_mass_status.php" hash="31d3560d9ec69d1e5f190d34ef9f54a2"/><file name="12_mass_update.php" hash="adc4ce198da420c75a45f32f9deb9d8f"/><file name="13_mass_parents.php" hash="2f6af9624a7c790d0995fb445e3b8af5"/><file name="14_product_relation_actions.php" hash="772e8ec1661ca45871bc962bdf1bbbcd"/><file name="15_sibling_actions.php" hash="8833208a9d834e7d5fda272a6b827b53"/><file name="16_sibling_actions_tree.php" hash="2994bf89f5d90bfc90e94a76444a4719"/><file name="17_footer.php" hash="044299b6435f621987f31c7c540f113c"/><dir name="IsTree"><file name="01_top.php" hash="951a6a86fdc5f2b39a6b2cae4c9f6434"/><file name="02_wysiwyg.php" hash="3c2ec4bab3895ca6a43bd0416b827028"/><file name="03_save.php" hash="e22bd734eb73a53a0d365f619cd8f7e6"/><file name="04_upload_image.php" hash="c111546b644ffafd26c102f095334f95"/><file name="05_upload_file.php" hash="90fd33445b8889a23e5af035da89c15e"/><file name="06_save_continue.php" hash="b277fb6a9cdb4a28b43416331154f9b8"/><file name="07_product_data.php" hash="d9050ba8bf3d0780d5077a606184e09c"/><file name="08_sibling_data.php" hash="5edd1b8750aef7c7e4fc0137d038a867"/><file name="09_real_save.php" hash="c59972f30bbca76b52376696013d9f82"/><file name="10_product_relation_action.php" hash="1a9875a99162f151e67b827e695f22a9"/><file name="11_sibling_actions.php" hash="0c165d6714a5a4b6203c9d021cdba223"/><file name="12_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir></dir></dir></dir><dir name="EntityController"><file name="01_top.php" hash="eec876d7b63d893886bb334b09480af4"/><file name="02_list.php" hash="dfcf0e406a5a6548637bd50ce06bb1f6"/><file name="03_list_seo.php" hash="04dedfdc059b8b4b89c7c9ccc403a4b4"/><file name="04_list_footer.php" hash="1d41a3331d006d0a04ff32bb4085210b"/><file name="05_view.php" hash="65c4d2ff246370e5bda69be233e01275"/><file name="06_view_status.php" hash="fd0bc040dc135e3469757569ffcf7899"/><file name="07_view_status_tree.php" hash="2b36e7be800e6c59e12a87b0ef697097"/><file name="08_view2.php" hash="af3fc07f58fa608f8f70f2e0264fe0bd"/><file name="09_breadcrumbs.php" hash="8157b6c12ecd17df9acdf095e7eb75db"/><file name="10_breadcrumbs_tree.php" hash="f2391a45fb1ce3e64de454981973cc23"/><file name="11_breadcrumbs_footer.php" hash="b41efc51d35a4f93a3b00dc5f899e1b5"/><file name="12_view_seo.php" hash="2e56f0ef104d419dee88abf037fe9f18"/><file name="13_view_footer.php" hash="3be2b1b314c50af6fd03c53647f06e56"/><file name="14_rss.php" hash="6e2fc4485e7a2b6c3508d05d7b71748d"/><file name="15_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir></dir><dir name="data"><dir name="namespace_module_setup"><dir name="data-install-0.0.1.php"><file name="01_top.php" hash="d63e4a5fbe4435eadd52abf1534ee829"/><file name="02_entity.php" hash="df6b285616bf2741ae9288e5d9e0758e"/></dir></dir></dir><dir name="etc"><dir name="adminhtml"><file name="01_top.xml" hash="11dee4372e147adfdd6dcf549207d52c"/><file name="02_entity_acl.xml" hash="6afabb39251e5233380992ec92a7a49f"/><file name="03_center.xml" hash="c3daf849d2cc4f2b9bb10319466df7b9"/><file name="04_entity_menu.xml" hash="c940e5491e196974bd81421566bec92d"/><file name="05_footer.xml" hash="567de2825a456f5c8de1c2d3f718b333"/></dir><dir name="config"><file name="01_top.xml" hash="ab60a876013ce736e83c89e6e9be4e25"/><file name="02_tables.xml" hash="07d07c4044d5ee658664c9d3465ea676"/><file name="03_siblings_table.xml" hash="13cdf74c83b7d86d15717b7e31bcc5ed"/><file name="04_relation_table.xml" hash="5e50710deedcd19316110a4db8dbfe5c"/><file name="05_global.xml" hash="9e1870511df355e90da3f86acb7e88cf"/><file name="06_url_rewrite.xml" hash="d7e710748d570d29aca3d15ec4424f2d"/><file name="07_adminhtml.xml" hash="f91e8a152a9e4b7c331df0583e987c7c"/><file name="08_relation_product.xml" hash="de83346f1f657f61a23251f37016bd99"/><file name="09_global_search_top.xml" hash="24e3dddbf6fc52170457a0804c07e060"/><file name="10_global_search_entity.xml" hash="c9e6a985c2292d82c0e648b0fea07837"/><file name="11_global_search_footer.xml" hash="46e34587440f1aa3462eba45aca78be7"/><file name="12_admin.xml" hash="d4c5c6313071ffa54afb69782dbcc21e"/><file name="13_frontend.xml" hash="9617988c4eb5ab502eb57349ab1a2dec"/><file name="14_default_top.xml" hash="a306c05cad3fd6c4c46f5c162e52df68"/><file name="15_default.xml" hash="fc553b2555e09b1ab639b58649b5b4cf"/><file name="16_default_footer.xml" hash="40004610d67a1bcf5ecf317917a1b0ab"/></dir><dir name="system"><file name="01_top.xml" hash="a250611cd158a2b0f9c0adef5b3d8074"/><file name="02_entity.xml" hash="0e789a6caeecd1e7223ab6c44ca1504e"/><file name="03_footer.xml" hash="2ead9ca0742a78448b5db442581d4cd9"/></dir><dir name="widget"><file name="01_top.xml" hash="29a6efa02a0f04ce056cc53d0b4e2272"/><file name="02_entity.xml" hash="102a8cfb8f0a2c330768add309e25e97"/><file name="03_footer.xml" hash="b84026fabe4a09ef682aac220eccf07a"/></dir></dir><dir name="sql"><dir name="namespace_module_setup"><dir name="install-0.0.1"><file name="01_top.php" hash="50cec9cf47ccb1001b16c156bd792210"/><file name="02_entity.php" hash="fdfc8dbe0872a9f346d10925942daad0"/><file name="03_product_relation.php" hash="1be95058703726dc35fc985466d62129"/><file name="04_sibling_relation.php" hash="581b0adc63e3e28ab89dc576a3f2e7d6"/><file name="05_footer.php" hash="7d307239f928e12e9a9b48754777f640"/></dir></dir></dir></dir></dir></dir></dir><dir name="design"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="namespace_module"><file name="01_top.xml" hash="c657e63ddce2df350b7d45c57620e967"/><file name="02_entity_not_tree.xml" hash="4897e318fff890bf377ed3e8091b9986"/><file name="03_relation_product.xml" hash="4ae352696eebe3635e9df76bedaf48d6"/><file name="04_relation_sibling.xml" hash="b9f5a68c69914abeb24c9638a451b157"/><file name="05_entity_tree.xml" hash="e598aa0b93b1e6d5f180bac14f0fc20c"/><file name="06_relation_product_tree.xml" hash="897ddf70ea257a2f553bed07f1e84e3c"/><file name="07_relation_sibling_tree.xml" hash="3ae178a0a81364ec8df9935bf8a3da23"/><file name="08_footer.xml" hash="fd25391f06094530aadcbee222b433fc"/></dir></dir><dir name="template"><dir name="namespace_module"><dir name="catalog"><dir name="product"><dir name="edit"><dir name="tab"><dir name="entity"><file name="01_content.phtml" hash="22515160e08aec47a72e51321949ef9b"/></dir></dir></dir></dir></dir><dir name="entity"><dir name="edit"><file name="01_content.phtml" hash="ce1e8b965823d7880a5acea0de5ba26a"/><dir name="form"><file name="01_top.phtml" hash="99f82b638e08569b4be985af5a77aa26"/><file name="02_product_hidden.phtml" hash="7ef02b97f351681086ccc0f69615cbef"/><file name="03_sibling_hidden.phtml" hash="b0ab3d283c7dd99670034f439f1a7e83"/><file name="04_content.phtml" hash="887287c2135f192c2e050e7d9c2df401"/><file name="05_status.phtml" hash="3f4356540bc8cef1186b62c04e41d305"/><file name="06_content2.phtml" hash="d3d867b32ed5001de64b9d349d4a304f"/><file name="07_product_relation.phtml" hash="95ca5bc339ba49da37e0f9b5714521ea"/><file name="08_sibling_relations.phtml" hash="781a697648d00ec4c824380fae4b67ac"/><file name="09_footer.phtml" hash="5fd8d0c41500e156711c723af13f627f"/></dir><dir name="tab"><dir name="sibling"><file name="01_content.phtml" hash="59bbfec6eb6cee9778872eac55ac74bc"/></dir></dir></dir><dir name="tree"><file name="01_content.phtml" hash="0326fef77a80ddb5d154939783b52b1a"/></dir><dir name="widget"><dir name="tree"><file name="01_content.phtml" hash="e0e24d2640bdc3e4c7234564b263465f"/></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="namespace_module"><file name="01_top.xml" hash="bf6f2b1a2a7bfaec115c381abfa40e02"/><file name="02_default_top.xml" hash="10c0056a19cc82fbf809aa13b879b4ff"/><file name="03_default.xml" hash="e58d9aa36808b39bdd648d51fca7b992"/><file name="04_default_footer.xml" hash="22f72da3c656b5721d355607c891cc9c"/><file name="05_list.xml" hash="d612266dae53939552fb5b0a6fcb6feb"/><file name="06_view.xml" hash="7f3837e6fc2f6325304d5028fcfda532"/><file name="07_entity_rss.xml" hash="f06074f610065fbc6cb9a228402da7a7"/><file name="08_rss_top.xml" hash="54753c3cd7d42667c88c88f0084484f2"/><file name="09_rss.xml" hash="b513533d7cc561ec197ce1662bf54883"/><file name="10_rss_footer.xml" hash="3adf9a1e5301aa4221cede3ff5208785"/><file name="11_relation_product.xml" hash="309965e4062dc6f6f82dd495035e08ec"/><file name="12_footer.xml" hash="fd25391f06094530aadcbee222b433fc"/></dir></dir><dir name="template"><dir name="namespace_module"><dir name="catalog"><dir name="product"><dir name="list"><dir name="entity"><file name="01_top.phtml" hash="bb86f12fc472152437ef1be97280d258"/><file name="02_link_top.phtml" hash="62a65063f9611f31b02a5b3f3b34f524"/><file name="03_name.phtml" hash="fed55ae628836787e7a2ba05b1e695e6"/><file name="04_link_footer.phtml" hash="f01ee0fb040754cbdd4c7ca86dbec387"/><file name="05_footer.phtml" hash="d0bff7b594da78b60141591d6870556b"/></dir></dir></dir></dir><dir name="entity"><dir name="catalog"><dir name="product"><dir name="list"><file name="01_content.phtml" hash="96ec480a53c89ff5b87cfd59dc163f9e"/></dir></dir></dir><dir name="children"><file name="01_content.phtml" hash="129d29d6a49f3e6bbbd0697f55c97740"/></dir><dir name="list"><file name="01_top.phtml" hash="10c541cba8766100d47e8baadb8ce6a5"/><file name="02_rss_link.phtml" hash="cacf7866f6dd54ab37a217d7cb7466c7"/><file name="03_footer.phtml" hash="24d3a1e0224a9e59f5daa0d2660e76b4"/><file name="04_footer_is_tree.phtml" hash="098332bf5a88d8529ea3ef57ed9c75f4"/></dir><dir name="sibling"><dir name="child"><dir name="list"><file name="01_content.phtml" hash="5a1f524b49cf120201a90ee695f90544"/></dir></dir><dir name="list"><file name="01_content.phtml" hash="5a1f524b49cf120201a90ee695f90544"/></dir></dir><dir name="view"><file name="01_content.phtml" hash="205b0b21c650f28ff0e364d6ec8ce552"/></dir><dir name="widget"><dir name="link"><file name="01_content.phtml" hash="11d9e23bd1c2f8cb8a0f857c8bb393d8"/></dir><dir name="view"><file name="01_content.phtml" hash="f89f40babc5af3cd30597cd097ad9ab9"/></dir></dir></dir><dir name="rss"><file name="01_content.phtml" hash="172a345ace9b7ec84ad2e18f51d48257"/></dir></dir></dir></dir></dir></dir></dir><dir name="etc"><dir name="modules"><dir name="Namespace_Module"><file name="01_content.xml" hash="4495317a1b8392281b68f07a546c56c2"/></dir></dir></dir><dir name="locale"><dir name="en_US"><dir name="Namespace_Module"><file name="01_global.csv" hash="133cec10c0a2d55366574bbaa3c98a6f"/><file name="02_entity.csv" hash="97e1a2056ec2f49acc1c5c9598ef10d7"/><file name="03_attribute.csv" hash="0bc9532d35587f2225e398156cc3ef7f"/><file name="04_global_status.csv" hash="507d9e24387e6935b1ee629e8432f842"/><file name="05_global_rss.csv" hash="df495f10c1e7d7d3fb770d8b406b9f9b"/><file name="06_global_seo.csv" hash="5f973fd7dfbb61ce8c21d6f7e8622379"/><file name="07_attribute_yesno.csv" hash="20eaf2d5eaa8224e5fa1c7a63634b1c0"/><file name="08_global_file.csv" hash="8bebcdd48d5ae7b533cc53e789f03ef2"/><file name="09_product_relation.csv" hash="b96f377dfa788f2772f2f8b7f156aebd"/><file name="10_relations.csv" hash="d0f7a10c89d21ade4ba17cd73dbb42fb"/><file name="11_global_tree.csv" hash="279098d455e2c1adcde8668e042541d7"/><file name="12_tree_entity.csv" hash="d41675dbb1bf588d1d59af8f7b255c2d"/><file name="13_url_rewrite.csv" hash="56d63caf8b00b1bc92bece5516b6b27f"/></dir></dir></dir></dir><dir name="skin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="namespace_module"><dir name="tree"><file name="01_content.css" hash="7929b899ed457d539637d5083286bed4"/></dir></dir></dir><dir name="images"><dir name="namespace_module"><dir name="collapsedgif"><file name="01_content.gif" hash="ef74c08289e94b7aae81766fb00d4195"/></dir><dir name="collapsedpng"><file name="01_content.png" hash="0613450d25c762b6a40c51768b02462d"/></dir><dir name="expandedgif"><file name="01_content.gif" hash="3f5512a54f359343273caf7b3787ee8a"/></dir><dir name="expandedpng"><file name="01_content.png" hash="f7f28ae897708c78b28ead22c3692bb8"/></dir><dir name="line1gif"><file name="01_content.gif" hash="65b0c812c8d57ea72b84fc69a077a40a"/></dir><dir name="line1png"><file name="01_content.png" hash="4e01064a2c78b8885f65ff7a40f78c02"/></dir><dir name="line2gif"><file name="01_content.gif" hash="95fc5c58069ece5eb44e198ee53b3fe1"/></dir><dir name="line2png"><file name="01_content.png" hash="6adbb4ca64d943f5ee5528d713757fde"/></dir></dir><dir name="placeholder"><file name="entity.jpg" hash="6361a80d5ca988fcec45ad3767322e5e"/></dir></dir><dir name="js"><dir name="namespace_module"><dir name="tree"><file name="01_content.js" hash="1b8a1e7b1cb23e7a87e05b33a34523a0"/></dir></dir></dir></dir></dir></dir></dir></dir><file name="modulecreator.xml" hash="4f9e48642035eb4b72f529869dc563cc"/><file name="system.xml" hash="5375cca1089787206cfabb41d7aa0614"/></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="f21bb3c8940eb81307817c0491caf300"/></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="586ebc5ca473dfcd1a0a47917c4353e4"/></dir><file name="entity.phtml" hash="f356184e2d8855a13456f52ac7e51d8e"/></dir><file name="entities.phtml" hash="df9179ffd5e72a04cf4740488521f0ce"/><file name="help.phtml" hash="dae530bc9d4ab9445d95d087bfc80fe6"/><file name="relation.phtml" hash="17a41ecbecdf7af519d11c3d026a800b"/></dir></dir><file name="edit.phtml" hash="8d10e82ae89d9e4ede28e6c59c9e724c"/><file name="tooltip.phtml" hash="d3598ad3f978d708b1f7f36feee39560"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Ultimate_ModuleCreator.xml" hash="324d2b364541a7355c9ff4248c0518f2"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Ultimate_ModuleCreator.csv" hash="e8d1c6166a369904c245004c99893f40"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><file name="ultimate_modulecreator.css" hash="781a789d72dc08f660479543ff09b143"/><dir name="images"><dir name="ultimate_modulecreator"><file name="logo.png" hash="9c9ca3b07295cab1cb1503865905ee50"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="."><file name="LICENSE_UMC.txt" hash="1372b858e10f4c6feb2967766a0b7a62"/><file name="readme_UMC.txt" hash="7b8cd5baf640a5078be5c7136b56b5d9"/></dir></target><target name="mageweb"><dir name="."><file name="modman" hash="191dd9a4e001d6f8de5933202daac7d1"/></dir></target></contents>
25
  <compatible/>
26
  <dependencies><required><php><min>5.0.0</min><max>7.0.0</max></php></required></dependencies>
27
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Ultimate_ModuleCreator</name>
4
+ <version>1.5.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/MIT">MIT License</license>
7
  <channel>community</channel>
8
  <extends/>
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>Features:&#xD;
12
+ - Generate API (v1 &amp; v2) files.&#xD;
13
+ - WSI compliance for API &#xD;
14
+ Bug fixes:&#xD;
15
+ - Fixed Generated translation file&#xD;
16
+ - Uppercase letter in entity codes is now restricted&#xD;
17
+ Refactoring:&#xD;
18
+ - Entity Model.</notes>
 
 
19
  <authors><author><name>Marius Strajeru</name><user>tzyganu</user><email>tzyganu@gmail.com</email></author></authors>
20
+ <date>2013-04-08</date>
21
+ <time>20:20:23</time>
22
+ <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="cb4328ae858a31a31d76016e50b56739"/><dir name="Tab"><dir name="Entities"><dir name="Entity"><file name="Attribute.php" hash="daa6787fa3f72150fc86c4350be932da"/></dir><file name="Entity.php" hash="8d5b07f735a5a7107f1abf66bbb482da"/></dir><file name="Entities.php" hash="65602b8daaa8585d9c94d7a4d8d7dcde"/><file name="Help.php" hash="304c68d68e9adf0962817e27877683b6"/><file name="Relation.php" hash="43730e74747b8e6e5985eee259e6db07"/><file name="Settings.php" hash="dee31d423d26a3efbc773530ac847afb"/></dir><file name="Tabs.php" hash="578af9256efb3d516db14db7e396e5e3"/></dir><file name="Edit.php" hash="491948d86e2e3a50fa185a407997c163"/><file name="Grid.php" hash="96ef8fa066b89937712b44991191f4de"/></dir><file name="Modulecreator.php" hash="b2630018b6f103d1a3f9e92ed7de7a54"/></dir></dir><file name="Exception.php" hash="aaef7086ff700d7132418cf68629246f"/><dir name="Helper"><file name="Adminhtml.php" hash="f913d91b1041032b35e4d0ca2fd20205"/><file name="Data.php" hash="15c1fc5975814c656c587da7db416a21"/></dir><dir name="Model"><file name="Abstract.php" hash="33a186edb30b8ff3f54fda6690a90a2c"/><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Source"><file name="Codepool.php" hash="045f0555fc545799148627e081ca8727"/><file name="Install.php" hash="7fb2fd108b5bed63b31ab9cfd0da25f5"/><file name="Layout.php" hash="3d63a2221b3a93926c662b3c10effc2c"/></dir></dir></dir></dir><dir name="Attribute"><dir name="Type"><file name="Abstract.php" hash="983e731730dbc4ee0a8c24ec662c091a"/><file name="Country.php" hash="59211a0da793c9f828caa161688f0d1c"/><file name="Decimal.php" hash="593c993bfba24af511164987a8c11eb3"/><file name="File.php" hash="a8e18228577beb612f202acbe0ddb41a"/><file name="Image.php" hash="80211878524ee9ed71096d30b1c52c42"/><file name="Int.php" hash="7e06c84fa8a3c2940624248c386e2d67"/><file name="Text.php" hash="237217feda93dadf93a63f181ebb8793"/><file name="Textarea.php" hash="04cd8559fbeeb8b81733e6c9a3b7b725"/><file name="Timestamp.php" hash="d18d599090ac5fa824e44edf3fa14486"/><file name="Website.php" hash="0bd68cd56e97013711986bdb3edf06cb"/><file name="Yesno.php" hash="dbb96529e483d587d8d8d99f176afa8b"/></dir></dir><file name="Attribute.php" hash="5232f076d415a7fea7470c210e9937a1"/><file name="Entity.php" hash="c67e2105bb2087ce3a56c739d3b4335b"/><dir name="Module"><file name="Collection.php" hash="0e413b976cbc9649ec982fe0f4b95dd1"/></dir><file name="Module.php" hash="74aa2aacef31c8d7f8c3fad0fa0c97bb"/><file name="Relation.php" hash="d026e9113cf9ad8c65fc4c78bdac5852"/><file name="Writer.php" hash="b47341646a1882d77e57cf6a5b30ad49"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="ModulecreatorController.php" hash="11ee92957c8099af688993543b9f849e"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="755c04b748c41ced20f41c725acc95c2"/><file name="config.xml" hash="7287d029ddff85952cae1f54fc54d370"/><dir name="m"><dir name="app"><dir name="code"><dir name="cp"><dir name="Ns"><dir name="Md"><dir name="Block"><dir name="Adminhtml"><dir name="Catalog"><dir name="Product"><dir name="Edit"><dir name="Tab"><dir name="Entity"><file name="01_content.php" hash="59347ed053e0fe3dc2e25a5c5490ecd4"/><dir name="IsTree"><file name="01_content.php" hash="1eda50311bcf910106a49ad54f1681fd"/></dir></dir></dir></dir></dir></dir><dir name="Entity"><file name="01_content.php" hash="5dfc799aeee50cc5ef32d356c1cc176f"/><dir name="Abstract"><file name="01_content.php" hash="dfe60775e0f319347a8937a17733c751"/></dir><dir name="Edit"><file name="01_content.php" hash="21d1cd84da305a41e516752e39c12404"/><dir name="Form"><file name="01_content.php" hash="39f68c93dba53e650f502776c03caf20"/><dir name="IsTree"><file name="01_top.php" hash="6bf3a72161678690d515deb253fb5f3d"/><file name="02_product_relation.php" hash="adee6754a75247b7d401d8f774d3918b"/><file name="03_entity_relation.php" hash="7f06c1f227ff6e8e1f64606bc1da6d3a"/><file name="04_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir></dir><dir name="IsTree"><file name="01_content.php" hash="6f8ab2c71f28a7618db8b94c311d6f13"/></dir><dir name="Tab"><dir name="Form"><file name="01_top.php" hash="9f6681f6bc3e012a8c711739a0ed6ae1"/><file name="02_image.php" hash="8dbf5010de2c46aabb02cd7a4df6f45e"/><file name="03_file.php" hash="64ede5038fe0edfec08671a5ca521777"/><file name="04_wysiwyg.php" hash="d25a58b233bd88a2e6d1fd5a79398394"/><file name="05_wysiwyg_is_tree.php" hash="6ef452bba45e48bbfc370ea24b61d6e0"/><file name="06_path_tree.php" hash="9991a81df109b0abbc8bd06a26694d1b"/><file name="07_parents.php" hash="476f7ebd1b04a879f3dd51b1913f9a9d"/><file name="08_attributes.php" hash="44c81d580dcf072b2ed9b5cc90fb1fac"/><file name="09_url_rewrite.php" hash="fdcf74d7a3abe5bfa32db1d5f042d8e2"/><file name="10_status.php" hash="ade9e66ee2dd546ebea8c9800b378a88"/><file name="11_rss.php" hash="0a122d46cc4826a0bd62b2f5d52b3fdc"/><file name="12_seo.php" hash="f0cf29478e91ced8dc39170b2574f1f2"/><file name="13_add_values_not_tree.php" hash="dc7ba40ed78eb43b08fc46c235029c8c"/><file name="14_add_values_tree.php" hash="c569ce680f4c5328292d6bb4f4c37e69"/><file name="15_get_entity_tree.php" hash="3d9027f073bf28f89aecd6b224c350ca"/><file name="16_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir><dir name="Product"><file name="01_content.php" hash="e42fb1044c47e7e1ba7c456f057b9558"/></dir><dir name="Sibling"><file name="01_content.php" hash="45cbbc5d065f5e0402a8340e14e5e6b2"/><dir name="IsTree"><file name="01_content.php" hash="0809c980a4d5059bc679e37762853f5e"/></dir></dir></dir><dir name="Tabs"><file name="01_top.php" hash="7cecbd5b68dc09c4e9a14f214b3b70df"/><file name="02_relations_tabs.php" hash="3f1eba9e9a7bf177185364cffc8468ba"/><file name="03_product_relation.php" hash="aee681c7021e9efad07a39bc8f8cf56d"/><file name="04_footer.php" hash="01b6273dfbf342c1f984c1e10b631b65"/><dir name="IsTree"><file name="01_top.php" hash="e48cac6414b02601cbef87e9831846a2"/><file name="02_relations_tabs.php" hash="50d5a9065062cf44f11a8aba92140790"/><file name="03_product_relation.php" hash="c5dc78d7c883af529b3adf72770d3dde"/><file name="04_footer.php" hash="5cad78a0f4dc4a2531cb6195e5e9ea5a"/></dir></dir></dir><dir name="Grid"><file name="01_top.php" hash="1a0c8754c5482692ae460fd6aafcfa6b"/><file name="02_columns_top.php" hash="1d28265e98b06fe61edde000c0d28db6"/><file name="03_parents.php" hash="011f4f2895cbaa33e753168131feedee"/><file name="04_grid_attributes.php" hash="2e7a6d5f6333b44ddf6792898a6e01c1"/><file name="05_url_rewrite.php" hash="b35f254eefea0d714de7ec6bdf5f2c4b"/><file name="06_grid_status.php" hash="f1d657a64ad855219882ac8aa6ead5b5"/><file name="07_created_at.php" hash="15f2bf1aeab4512931cfd13461466dbf"/><file name="08_updated_at.php" hash="b416ed24d9613f8332f4191f0378c1a3"/><file name="09_grid_actions.php" hash="fbc479c06560e193e4c2177358eadc07"/><file name="10_grid_export.php" hash="3da336230cb919e5dd36e39d21ea3f0e"/><file name="11_columns_footer.php" hash="1cdf225b4a61a0036903c4e251484684"/><file name="12_mass_action_top.php" hash="4979fc362c7c0666bcfe39e89f3a88f4"/><file name="13_mass_action_status.php" hash="d504216f92f489be7857bee37cf0771c"/><file name="14_mass_action_flags.php" hash="9b0d9088708f5e84b50e7ac6ee06a632"/><file name="15_mass_action_parents.php" hash="7b36b4b3954e3913e6bdafb822ca6634"/><file name="16_footer.php" hash="0833ff1f2002af6a4db1df3a3cad3385"/></dir><dir name="Helper"><dir name="File"><file name="01_content.php" hash="c00cdcedf171c992bb88a20402bfd70d"/></dir><dir name="Image"><file name="01_content.php" hash="62a55ac8856f4dc555d6dc373c2de7d5"/></dir></dir><dir name="Tree"><file name="01_top.php" hash="8b8eaeea900cceeccb0b12717fe440f7"/><file name="02_status.php" hash="3a0cada5dfb430e3d7b9890e3f6ac2ba"/><file name="03_footer.php" hash="1e7043194d0104f8e39c6418af00a7f4"/></dir><dir name="Widget"><dir name="Chooser"><file name="01_top.php" hash="61b31cd249d7f23aeb456eeff337c9c0"/><file name="02_top_status.php" hash="ae8d09557d6c9aa3a920e148f0cdd7d6"/><file name="03_content.php" hash="8dcbeac6eb2d80f500479a36c5b49c36"/><file name="04_status.php" hash="6fb78962dd9ffb30ee5d750876a26e5d"/><file name="05_footer.php" hash="c6f7967214ca668b51f41dc428cf7145"/><dir name="IsTree"><file name="01_content.php" hash="90138bcf517a4df92825e95e65902a1c"/></dir></dir></dir></dir><dir name="Helper"><dir name="Wysiwyg"><file name="01_content.php" hash="50f63445cbb78d5eb1ff42eed07e76af"/></dir></dir></dir><dir name="Catalog"><dir name="Product"><dir name="List"><dir name="Entity"><file name="01_top.php" hash="e73df46ed0d2f57e185cebe41814ab67"/><file name="02_status.php" hash="716a6a2f8243c5048f90584f0bd7f888"/><file name="03_footer.php" hash="7afa811ee3b39c3717cbb8f484e32405"/></dir></dir></dir></dir><dir name="Entity"><dir name="Catalog"><dir name="Product"><dir name="List"><file name="01_content.php" hash="f9a6ec0ca31b9525357f447b5471256f"/></dir></dir></dir><dir name="Child"><dir name="List"><file name="01_content.php" hash="30ac249d25535c1a522f96bae56a4f75"/></dir></dir><dir name="Children"><file name="01_content.php" hash="e3f2d736896f8b81132ab0ce4735d08a"/></dir><dir name="List"><file name="01_top.php" hash="225b59a84d8bf6cb0d06d62bb5240eb2"/><file name="02_status.php" hash="716a6a2f8243c5048f90584f0bd7f888"/><file name="03_footer.php" hash="369738e4147fd032b12c1df4aa01ed9c"/><dir name="IsTree"><file name="01_top.php" hash="225b59a84d8bf6cb0d06d62bb5240eb2"/><file name="02_status.php" hash="716a6a2f8243c5048f90584f0bd7f888"/><file name="03_center.php" hash="d4bab4d0e7f4741b0288454906b0e428"/><file name="04_status_draw.php" hash="05f41e4fa26f8644069191a7621b6e3f"/><file name="05_children.php" hash="b59bb1c9e92637ceab3196618b8deee7"/><file name="06_active_children.php" hash="1c9785dbb369f8d3818d4644c5f7e232"/><file name="07_active_children_no_status.php" hash="60a6cf3f5643514e5c1b83353cea5ea9"/><file name="08_footer.php" hash="90180c9a604e490752cf905fd3410efd"/></dir></dir><dir name="Rss"><file name="01_top.php" hash="957b89055315fee8ecefa6b34e940efe"/><file name="02_status.php" hash="7a81b20fbd0ca4ac140c263e481a5b06"/><file name="03_content_top.php" hash="6e2c16bd170842cc88610692439c4674"/><file name="04_content.php" hash="f556d8f00acfa61f93bbc9b09da3508b"/><file name="05_footer.php" hash="0514ad15059f8411d3315d111aac5b84"/></dir><dir name="Sibling"><dir name="List"><file name="01_content.php" hash="09e6f490b8b2d73efdbecbb68737c81f"/></dir></dir><dir name="View"><file name="01_content.php" hash="b6824731ad9bb41ef1f84b4359596f67"/></dir><dir name="Widget"><dir name="Link"><file name="01_content.php" hash="2862dcc4937c58fbee284764732e733c"/></dir><dir name="View"><file name="01_top.php" hash="a31bafcf8918811ff55b0a8eaf49c021"/><file name="02_status.php" hash="fd4d2e31a4c04c13bb470ce615550310"/><file name="03_template.php" hash="e6fd0367cfbd0b14996e189ac56b2d3b"/><file name="04_status.php" hash="573160846b9e8693e966c0881103f25e"/><file name="05_footer.php" hash="1009acd5e8f54dbedb651ecffb283df1"/></dir></dir></dir><dir name="Rss"><file name="01_content.php" hash="ea37b93ec747a042dd51e2e4eaeb22ac"/></dir></dir><dir name="Controller"><dir name="Adminhtml"><dir name="Module"><file name="01_content.php" hash="938c09e00f8a7045d70c7e97dd478df8"/></dir></dir><dir name="Router"><file name="01_top.php" hash="c9dd518945d5ab5fb7508084c2206125"/><file name="02_entity.php" hash="8ba8993dd992d580cd5e3b6ced303d38"/><file name="03_footer.php" hash="7ba40f835c0bbca8dfb8e60753142de4"/></dir></dir><dir name="Helper"><dir name="Data"><file name="01_top.php" hash="44aa03c717b24b0086230271b07f195a"/><file name="02_entity.php" hash="378423c2b9ba4ac86328e094d6e60946"/><file name="03_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir><dir name="Entity"><file name="01_top.php" hash="6e37881fbe0898e930a5d7b3d1ce606f"/><file name="02_tree.php" hash="8e6d460e528f4b0e3e74bbbff06336dd"/><file name="03_rss.php" hash="9e9fa595a4a7ec7f159e1d64620119ae"/><file name="04_file.php" hash="44bc7ce84f603100f67dedc1edf3cc0d"/><file name="05_footer.php" hash="2e687c8e025cca2e891ac925406f277c"/><dir name="Image"><file name="01_content.php" hash="e09360ea17dff94a611787004030275b"/></dir></dir><dir name="Image"><dir name="Abstract"><file name="01_content.php" hash="b39acaba6cf4d242689147dfffc8f095"/></dir></dir><dir name="Product"><file name="01_top.php" hash="20709afdafe7e3fd280e7c346a441b0c"/><file name="02_content.php" hash="33fa587ea74ff5caae02e2263bd6092b"/><file name="03_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir></dir><dir name="Model"><dir name="Adminhtml"><dir name="Observer"><file name="01_top.php" hash="abec4c7c295fb57c4086fdf9d22cdf28"/><file name="02_entity.php" hash="6c64bd2314a24f6d2dafa4dedb448b8c"/><file name="03_entity_save.php" hash="6b6db7bcb0cffefc6c3406df406c497a"/><file name="04_entity_save_tree.php" hash="aca15cbb7afc5a832488addb56df157e"/><file name="05_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir><dir name="Search"><dir name="Entity"><file name="01_content.php" hash="824a247bcd2cadb8f1da16ec3034d1c1"/></dir></dir></dir><dir name="Entity"><file name="01_top.php" hash="37daaca4671c58ef2fb2eaa50e0d7a7b"/><file name="02_var_sibling.php" hash="cbbdeeaa7082b22b3a57508dc6bcd4fa"/><file name="03_var_product_relation.php" hash="50cd6433f6617ed2d47c2a9ab9bee4d1"/><file name="04_construct.php" hash="81fb22faf1dc0c05920f5db34061100c"/><file name="05_url.php" hash="6d955735b11308ec8087bfbf2d0c6078"/><file name="06_url_rewrite_not_status.php" hash="514c4998931a817a55e652ec6fa4a322"/><file name="07_url_rewrite_status.php" hash="c5b3cbcffc16a48989a5491e4abd2c4b"/><file name="08_editors.php" hash="615bc07ef7e14bc892bb567e3c22cef7"/><file name="09_after_save_top.php" hash="f456ae82840db694e49d527d6ad23f8f"/><file name="10_after_save_product.php" hash="7e85bbf889a5beededa975831b573d97"/><file name="11_after_save_sibling.php" hash="a7ea726ae5b4b19f78773a563a7196bf"/><file name="12_after_save_footer.php" hash="1af792cf3f94391bbe2b261a0d927a8c"/><file name="13_product_relation.php" hash="890ad6b1cad708779f0e5cb1aa745f1a"/><file name="14_sibling_relation.php" hash="09f99a030f1e9e09864cee3e5f92457c"/><file name="15_tree.php" hash="c577ef6c4d67da82d5226162345ef896"/><file name="16_tree_status.php" hash="64da48d68c1af82304cea4ee2c21800e"/><file name="17_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/><dir name="Api"><file name="01_top.php" hash="c1956fcb05a9cb5130a2b736875deff7"/><file name="02_product_relation_info.php" hash="1c7bc902ac26ce46dfa0d7fc9928550b"/><file name="03_sibling_info.php" hash="e47f87465f7bc8ef58513290f79059a3"/><file name="04_info_footer.php" hash="f86ab31eddfc4e564e856d6e2e7dae19"/><file name="05_tree.php" hash="c7748f2727f04dc6abd56f7857a83fc6"/><file name="06_product_relation.php" hash="e8e82e554b7da081ad41490255233686"/><file name="07_sibling_relation.php" hash="44840138eaed0a057d6435107e9e0bf0"/><file name="08_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/><dir name="V2"><file name="01_top.php" hash="e9b8c7bcd7cc8a16bcd0d88f3f889981"/><file name="02_product_relation.php" hash="cdf0cbb621852613df86f91988463608"/><file name="03_sibling_relation.php" hash="c323564cb482d85f774415585ed2b1df"/><file name="04_footer.php" hash="6a6c4437c80ae02dc771877d93a38b6c"/></dir></dir><dir name="Product"><file name="01_content.php" hash="d8dfaa0ac8ba132bf95d3d65452d9795"/></dir><dir name="Sibling"><file name="01_content.php" hash="ef2fc76324ca0afcaabab7f8272bd526"/></dir></dir><dir name="Resource"><dir name="Entity"><file name="01_top.php" hash="8584bb2dba4e8da350ad36ee91ba7094"/><file name="02_tree_var.php" hash="8a673f57e7979c6c0aa2dc38c8f29c38"/><file name="03_constructor.php" hash="1c67d6971268cb3765067a30d6a5ebac"/><file name="04_tree.php" hash="f5f39cd45b72b48079a8bc3c6cee81d2"/><file name="05_tree_before_save_no_url_rewrite.php" hash="721b246ab7c8011faa810f9c509cbc76"/><file name="06_tree_before_save_url_rewrite.php" hash="872a4a6d7b408bf621a52739e5d8438a"/><file name="07_children_no_status.php" hash="41b492cea369e6303ad444b16f016857"/><file name="08_children_status.php" hash="61bfda77779840f9855311137112979e"/><file name="09_content.php" hash="ad6a926a11cf4ca722b896a78bbeadab"/><file name="10_url_rewrite_status.php" hash="1f7413dfcd315965fac22404f7a2808e"/><file name="11_url_rewrite_not_status.php" hash="13b834ba94b4998155668d3c211d2759"/><file name="12_url_rewrite_before_save_not_tree.php" hash="2d51e7bda2f717d22bd17593851f65fa"/><file name="13_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/><dir name="Collection"><file name="01_top.php" hash="7aed912ade7c0e7f779b73d3022772b4"/><file name="02_tree.php" hash="22c1250f162919870d08ec9aa71b949e"/><file name="03_tree_status.php" hash="fe745dc63220b3ddd5f799921077ac51"/><file name="04_product_relation.php" hash="d2f707b97df2ecf2d088aebeeb660822"/><file name="05_sibling_relation.php" hash="4563330e972ef0b0f4b96096b8594727"/><file name="06_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir><dir name="Product"><file name="01_content.php" hash="1545e16c25769395d3d95ec03a8cd4b3"/><dir name="Collection"><file name="01_content.php" hash="401d1dc800ddf76ea155160f3e02d162"/></dir><dir name="IsTree"><file name="01_content.php" hash="0a1b1718dec4ec27dc5310d45b388e2e"/></dir></dir><dir name="Sibling"><file name="01_top.php" hash="e78ca594012a642782fc2292084f81ca"/><file name="02_save_relation.php" hash="43dbb46224c1f8ca4a658a6a5d5077ad"/><file name="03_save_relation_tree.php" hash="1b0b458b7327dd6beaca0455d4268921"/><file name="04_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/><dir name="Collection"><file name="01_content.php" hash="c48de1443823a6ff51517f8a6cab0599"/></dir></dir><dir name="Tree"><file name="01_top.php" hash="d286ac636149b07c3e1993eb4d157529"/><file name="02_status_top.php" hash="f4151c843a394922807dcb59ce6807d8"/><file name="03_content.php" hash="402a0ba7525c552db2e2fa64c79f6473"/><file name="04_not_status.php" hash="d1b54f100c018fe6d5ae965e5aac8dd8"/><file name="05_status.php" hash="df0ef83645e0784f4c33534b976421ee"/><file name="06_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir></dir><dir name="Setup"><file name="01_content.php" hash="335c579a20a627c5a403e3c7ac6156c0"/></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Module"><dir name="Entity"><dir name="Catalog"><dir name="ProductController"><file name="01_content.php" hash="b904ef31283029cf808cc42719208874"/><dir name="IsTree"><file name="01_content.php" hash="989ec00484ec5ef3f04df8f9f0007eee"/></dir></dir></dir><dir name="WidgetController"><file name="01_content.php" hash="8d934e135109f74ac036b84d6939f6c9"/><file name="02_tree.php" hash="41b1fca05f9bd59455c72b1d240cc1e7"/><file name="03_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir></dir><dir name="EntityController"><file name="01_top.php" hash="21cbb6239ec0b4d998b494308af6cf1a"/><file name="02_upload_image.php" hash="c111546b644ffafd26c102f095334f95"/><file name="03_upload_files.php" hash="90fd33445b8889a23e5af035da89c15e"/><file name="04_save_product_relation.php" hash="29b35c54da6069c72edd245c42aa5369"/><file name="05_save_sibling_relation.php" hash="e9fe7f25344280b483db7108cc3ae0b1"/><file name="06_save_sibling_relation_tree.php" hash="ee1dcb0a6924b8c7c074a63ec2331f53"/><file name="07_save.php" hash="11c73c7cfc8c76738fce70c466ba7c63"/><file name="08_exception_upload.php" hash="216185c48b0b0937597939a95026a1c9"/><file name="09_exception.php" hash="b34376b34211a9cc21609ac7438d6d6d"/><file name="10_center.php" hash="bc1d289241de1722abb5685c63352c2e"/><file name="11_mass_status.php" hash="31d3560d9ec69d1e5f190d34ef9f54a2"/><file name="12_mass_update.php" hash="adc4ce198da420c75a45f32f9deb9d8f"/><file name="13_mass_parents.php" hash="2f6af9624a7c790d0995fb445e3b8af5"/><file name="14_product_relation_actions.php" hash="772e8ec1661ca45871bc962bdf1bbbcd"/><file name="15_sibling_actions.php" hash="8833208a9d834e7d5fda272a6b827b53"/><file name="16_sibling_actions_tree.php" hash="2994bf89f5d90bfc90e94a76444a4719"/><file name="17_footer.php" hash="044299b6435f621987f31c7c540f113c"/><dir name="IsTree"><file name="01_top.php" hash="951a6a86fdc5f2b39a6b2cae4c9f6434"/><file name="02_wysiwyg.php" hash="3c2ec4bab3895ca6a43bd0416b827028"/><file name="03_save.php" hash="e22bd734eb73a53a0d365f619cd8f7e6"/><file name="04_upload_image.php" hash="c111546b644ffafd26c102f095334f95"/><file name="05_upload_file.php" hash="90fd33445b8889a23e5af035da89c15e"/><file name="06_save_continue.php" hash="b277fb6a9cdb4a28b43416331154f9b8"/><file name="07_product_data.php" hash="d9050ba8bf3d0780d5077a606184e09c"/><file name="08_sibling_data.php" hash="5edd1b8750aef7c7e4fc0137d038a867"/><file name="09_real_save.php" hash="c59972f30bbca76b52376696013d9f82"/><file name="10_product_relation_action.php" hash="1a9875a99162f151e67b827e695f22a9"/><file name="11_sibling_actions.php" hash="0c165d6714a5a4b6203c9d021cdba223"/><file name="12_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir></dir></dir></dir><dir name="EntityController"><file name="01_top.php" hash="eec876d7b63d893886bb334b09480af4"/><file name="02_list.php" hash="dfcf0e406a5a6548637bd50ce06bb1f6"/><file name="03_list_seo.php" hash="04dedfdc059b8b4b89c7c9ccc403a4b4"/><file name="04_list_footer.php" hash="1d41a3331d006d0a04ff32bb4085210b"/><file name="05_view.php" hash="65c4d2ff246370e5bda69be233e01275"/><file name="06_view_status.php" hash="fd0bc040dc135e3469757569ffcf7899"/><file name="07_view_status_tree.php" hash="2b36e7be800e6c59e12a87b0ef697097"/><file name="08_view2.php" hash="af3fc07f58fa608f8f70f2e0264fe0bd"/><file name="09_breadcrumbs.php" hash="8157b6c12ecd17df9acdf095e7eb75db"/><file name="10_breadcrumbs_tree.php" hash="f2391a45fb1ce3e64de454981973cc23"/><file name="11_breadcrumbs_footer.php" hash="b41efc51d35a4f93a3b00dc5f899e1b5"/><file name="12_view_seo.php" hash="2e56f0ef104d419dee88abf037fe9f18"/><file name="13_view_footer.php" hash="3be2b1b314c50af6fd03c53647f06e56"/><file name="14_rss.php" hash="6e2fc4485e7a2b6c3508d05d7b71748d"/><file name="15_footer.php" hash="cbb184dd8e05c9709e5dcaedaa0495cf"/></dir></dir><dir name="data"><dir name="namespace_module_setup"><dir name="data-install-0.0.1.php"><file name="01_top.php" hash="d63e4a5fbe4435eadd52abf1534ee829"/><file name="02_entity.php" hash="df6b285616bf2741ae9288e5d9e0758e"/></dir></dir></dir><dir name="etc"><dir name="adminhtml"><file name="01_top.xml" hash="11dee4372e147adfdd6dcf549207d52c"/><file name="02_entity_acl.xml" hash="6afabb39251e5233380992ec92a7a49f"/><file name="03_center.xml" hash="c3daf849d2cc4f2b9bb10319466df7b9"/><file name="04_entity_menu.xml" hash="c940e5491e196974bd81421566bec92d"/><file name="05_footer.xml" hash="567de2825a456f5c8de1c2d3f718b333"/></dir><dir name="api"><file name="01_top.xml" hash="7836cc079929002f49056da0be781555"/><file name="02_entity_api.xml" hash="56522fd929feb8847a9b967cf476b43f"/><file name="03_resource_alias.xml" hash="b5a94f1f1ce1b7cc87fca2c80e98027a"/><file name="04_entity_resource_alias.xml" hash="532ce8db90f811adc74dc024b7024602"/><file name="05_v2.xml" hash="5fbe5be841e5295fbc5ea8d2ae85543b"/><file name="06_v2_entity.xml" hash="0d5d9f9f702c83233a18e38bc3d5c2cb"/><file name="07_acl.xml" hash="f901a483416fdaed90b5777c3bc8a8e2"/><file name="08_acl_entity.xml" hash="6c30398b3df24d454653a2a56f3fe790"/><file name="09_footer.xml" hash="080e838a7ed6930c7bf9cf17e4c6c7e8"/></dir><dir name="config"><file name="01_top.xml" hash="ab60a876013ce736e83c89e6e9be4e25"/><file name="02_tables.xml" hash="07d07c4044d5ee658664c9d3465ea676"/><file name="03_siblings_table.xml" hash="13cdf74c83b7d86d15717b7e31bcc5ed"/><file name="04_relation_table.xml" hash="5e50710deedcd19316110a4db8dbfe5c"/><file name="05_global.xml" hash="9e1870511df355e90da3f86acb7e88cf"/><file name="06_url_rewrite.xml" hash="d7e710748d570d29aca3d15ec4424f2d"/><file name="07_adminhtml.xml" hash="f91e8a152a9e4b7c331df0583e987c7c"/><file name="08_relation_product.xml" hash="de83346f1f657f61a23251f37016bd99"/><file name="09_global_search_top.xml" hash="24e3dddbf6fc52170457a0804c07e060"/><file name="10_global_search_entity.xml" hash="c9e6a985c2292d82c0e648b0fea07837"/><file name="11_global_search_footer.xml" hash="46e34587440f1aa3462eba45aca78be7"/><file name="12_admin.xml" hash="d4c5c6313071ffa54afb69782dbcc21e"/><file name="13_frontend.xml" hash="9617988c4eb5ab502eb57349ab1a2dec"/><file name="14_default_top.xml" hash="a306c05cad3fd6c4c46f5c162e52df68"/><file name="15_default.xml" hash="fc553b2555e09b1ab639b58649b5b4cf"/><file name="16_default_footer.xml" hash="40004610d67a1bcf5ecf317917a1b0ab"/></dir><dir name="system"><file name="01_top.xml" hash="a250611cd158a2b0f9c0adef5b3d8074"/><file name="02_entity.xml" hash="0e789a6caeecd1e7223ab6c44ca1504e"/><file name="03_footer.xml" hash="2ead9ca0742a78448b5db442581d4cd9"/></dir><dir name="widget"><file name="01_top.xml" hash="29a6efa02a0f04ce056cc53d0b4e2272"/><file name="02_entity.xml" hash="102a8cfb8f0a2c330768add309e25e97"/><file name="03_footer.xml" hash="b84026fabe4a09ef682aac220eccf07a"/></dir><dir name="wsdl"><file name="01_top.xml" hash="032cf4d009950a895bcc746d14520c4a"/><file name="02_entity_types.xml" hash="da926f1d401ef0cf6981478e600ce590"/><file name="03_schema_footer.xml" hash="11cdc73afaf5c18317842cfa4bdb18c5"/><file name="04_entity_messages.xml" hash="c6a3c8f421237712c9b6d0c18ffee1b3"/><file name="05_porttype_top.xml" hash="a0f28bf86ea809a274f5ace26c1151a1"/><file name="06_porttype_entity.xml" hash="a12705979c73a95665bfb0acec67020a"/><file name="07_porttype_footer.xml" hash="edd2f81a01c7a7ab53ac219e3858eac1"/><file name="08_binding_top.xml" hash="eb9eb6fbf3658ac82c81c7618452215a"/><file name="09_entity_binding.xml" hash="f8b0190d1667c74d566f01734f99f48e"/><file name="10_footer.xml" hash="2211f6d3fd443d15bcdcc05a5d51688a"/></dir><dir name="wsi"><file name="01_top.xml" hash="1114adc81809072b93634c4ef3f2e4c5"/><file name="02_entity_types.xml" hash="267596c149eaa51cd68289ea18f0ed99"/><file name="03_schema_footer.xml" hash="0f0f2308f6bce8a1913b262bf82b3a27"/><file name="04_entity_messages.xml" hash="fd238b2d37b4e5bc5cd4d40b1c98ce75"/><file name="05_porttype_top.xml" hash="d531a165007b9599c8d5d99217f8d351"/><file name="06_porttype_entity.xml" hash="df8ef427f5d23245e52a001eeaefbcdb"/><file name="07_porttype_footer.xml" hash="edff616a12bdb1606c4e3d29e5f334bc"/><file name="08_binding_top.xml" hash="8634ae067a9a45d2321e46a3e07e856c"/><file name="09_entity_binding.xml" hash="1affab4357607e1b491b502f7789e4c8"/><file name="10_footer.xml" hash="1022e110706ee7f3cb1edfa2d491e31f"/></dir></dir><dir name="sql"><dir name="namespace_module_setup"><dir name="install-0.0.1"><file name="01_top.php" hash="50cec9cf47ccb1001b16c156bd792210"/><file name="02_entity.php" hash="fdfc8dbe0872a9f346d10925942daad0"/><file name="03_product_relation.php" hash="1be95058703726dc35fc985466d62129"/><file name="04_sibling_relation.php" hash="581b0adc63e3e28ab89dc576a3f2e7d6"/><file name="05_footer.php" hash="7d307239f928e12e9a9b48754777f640"/></dir></dir></dir></dir></dir></dir></dir><dir name="design"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="namespace_module"><file name="01_top.xml" hash="c657e63ddce2df350b7d45c57620e967"/><file name="02_entity_not_tree.xml" hash="4897e318fff890bf377ed3e8091b9986"/><file name="03_relation_product.xml" hash="4ae352696eebe3635e9df76bedaf48d6"/><file name="04_relation_sibling.xml" hash="b9f5a68c69914abeb24c9638a451b157"/><file name="05_entity_tree.xml" hash="e598aa0b93b1e6d5f180bac14f0fc20c"/><file name="06_relation_product_tree.xml" hash="897ddf70ea257a2f553bed07f1e84e3c"/><file name="07_relation_sibling_tree.xml" hash="3ae178a0a81364ec8df9935bf8a3da23"/><file name="08_footer.xml" hash="fd25391f06094530aadcbee222b433fc"/></dir></dir><dir name="template"><dir name="namespace_module"><dir name="catalog"><dir name="product"><dir name="edit"><dir name="tab"><dir name="entity"><file name="01_content.phtml" hash="22515160e08aec47a72e51321949ef9b"/></dir></dir></dir></dir></dir><dir name="entity"><dir name="edit"><file name="01_content.phtml" hash="ce1e8b965823d7880a5acea0de5ba26a"/><dir name="form"><file name="01_top.phtml" hash="99f82b638e08569b4be985af5a77aa26"/><file name="02_product_hidden.phtml" hash="7ef02b97f351681086ccc0f69615cbef"/><file name="03_sibling_hidden.phtml" hash="b0ab3d283c7dd99670034f439f1a7e83"/><file name="04_content.phtml" hash="887287c2135f192c2e050e7d9c2df401"/><file name="05_status.phtml" hash="3f4356540bc8cef1186b62c04e41d305"/><file name="06_content2.phtml" hash="d3d867b32ed5001de64b9d349d4a304f"/><file name="07_product_relation.phtml" hash="95ca5bc339ba49da37e0f9b5714521ea"/><file name="08_sibling_relations.phtml" hash="781a697648d00ec4c824380fae4b67ac"/><file name="09_footer.phtml" hash="5fd8d0c41500e156711c723af13f627f"/></dir><dir name="tab"><dir name="sibling"><file name="01_content.phtml" hash="59bbfec6eb6cee9778872eac55ac74bc"/></dir></dir></dir><dir name="tree"><file name="01_content.phtml" hash="0326fef77a80ddb5d154939783b52b1a"/></dir><dir name="widget"><dir name="tree"><file name="01_content.phtml" hash="e0e24d2640bdc3e4c7234564b263465f"/></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="namespace_module"><file name="01_top.xml" hash="bf6f2b1a2a7bfaec115c381abfa40e02"/><file name="02_default_top.xml" hash="10c0056a19cc82fbf809aa13b879b4ff"/><file name="03_default.xml" hash="e58d9aa36808b39bdd648d51fca7b992"/><file name="04_default_footer.xml" hash="22f72da3c656b5721d355607c891cc9c"/><file name="05_list.xml" hash="d612266dae53939552fb5b0a6fcb6feb"/><file name="06_view.xml" hash="7f3837e6fc2f6325304d5028fcfda532"/><file name="07_entity_rss.xml" hash="f06074f610065fbc6cb9a228402da7a7"/><file name="08_rss_top.xml" hash="54753c3cd7d42667c88c88f0084484f2"/><file name="09_rss.xml" hash="b513533d7cc561ec197ce1662bf54883"/><file name="10_rss_footer.xml" hash="3adf9a1e5301aa4221cede3ff5208785"/><file name="11_relation_product.xml" hash="309965e4062dc6f6f82dd495035e08ec"/><file name="12_footer.xml" hash="fd25391f06094530aadcbee222b433fc"/></dir></dir><dir name="template"><dir name="namespace_module"><dir name="catalog"><dir name="product"><dir name="list"><dir name="entity"><file name="01_top.phtml" hash="bb86f12fc472152437ef1be97280d258"/><file name="02_link_top.phtml" hash="62a65063f9611f31b02a5b3f3b34f524"/><file name="03_name.phtml" hash="fed55ae628836787e7a2ba05b1e695e6"/><file name="04_link_footer.phtml" hash="f01ee0fb040754cbdd4c7ca86dbec387"/><file name="05_footer.phtml" hash="d0bff7b594da78b60141591d6870556b"/></dir></dir></dir></dir><dir name="entity"><dir name="catalog"><dir name="product"><dir name="list"><file name="01_content.phtml" hash="96ec480a53c89ff5b87cfd59dc163f9e"/></dir></dir></dir><dir name="children"><file name="01_content.phtml" hash="129d29d6a49f3e6bbbd0697f55c97740"/></dir><dir name="list"><file name="01_top.phtml" hash="10c541cba8766100d47e8baadb8ce6a5"/><file name="02_rss_link.phtml" hash="cacf7866f6dd54ab37a217d7cb7466c7"/><file name="03_footer.phtml" hash="24d3a1e0224a9e59f5daa0d2660e76b4"/><file name="04_footer_is_tree.phtml" hash="098332bf5a88d8529ea3ef57ed9c75f4"/></dir><dir name="sibling"><dir name="child"><dir name="list"><file name="01_content.phtml" hash="5a1f524b49cf120201a90ee695f90544"/></dir></dir><dir name="list"><file name="01_content.phtml" hash="5a1f524b49cf120201a90ee695f90544"/></dir></dir><dir name="view"><file name="01_content.phtml" hash="205b0b21c650f28ff0e364d6ec8ce552"/></dir><dir name="widget"><dir name="link"><file name="01_content.phtml" hash="11d9e23bd1c2f8cb8a0f857c8bb393d8"/></dir><dir name="view"><file name="01_content.phtml" hash="f89f40babc5af3cd30597cd097ad9ab9"/></dir></dir></dir><dir name="rss"><file name="01_content.phtml" hash="172a345ace9b7ec84ad2e18f51d48257"/></dir></dir></dir></dir></dir></dir></dir><dir name="etc"><dir name="modules"><dir name="Namespace_Module"><file name="01_content.xml" hash="4495317a1b8392281b68f07a546c56c2"/></dir></dir></dir><dir name="locale"><dir name="en_US"><dir name="Namespace_Module"><file name="01_global.csv" hash="133cec10c0a2d55366574bbaa3c98a6f"/><file name="02_entity.csv" hash="97e1a2056ec2f49acc1c5c9598ef10d7"/><file name="03_attribute.csv" hash="0bc9532d35587f2225e398156cc3ef7f"/><file name="04_global_status.csv" hash="507d9e24387e6935b1ee629e8432f842"/><file name="05_global_rss.csv" hash="df495f10c1e7d7d3fb770d8b406b9f9b"/><file name="06_global_seo.csv" hash="5f973fd7dfbb61ce8c21d6f7e8622379"/><file name="07_attribute_yesno.csv" hash="20eaf2d5eaa8224e5fa1c7a63634b1c0"/><file name="08_global_file.csv" hash="8bebcdd48d5ae7b533cc53e789f03ef2"/><file name="09_product_relation.csv" hash="b96f377dfa788f2772f2f8b7f156aebd"/><file name="10_relations.csv" hash="d0f7a10c89d21ade4ba17cd73dbb42fb"/><file name="11_global_tree.csv" hash="279098d455e2c1adcde8668e042541d7"/><file name="12_tree_entity.csv" hash="e3465d0427eadb644654d8e614f6a209"/><file name="13_url_rewrite.csv" hash="87e5df1e3e95f0751f362b5acf37ddce"/><file name="14_api.csv" hash="58e27bb8ef0a04a711e20207dce037a4"/><file name="15_api_entity.csv" hash="5f79e38c8a97f2e171eedc2d5246910d"/><file name="16_api_product_related.csv" hash="f6875de876ab6e34595e5513aa35628b"/><file name="17_api_tree.csv" hash="99f44156e5181aa598f1d217b8c1cbc7"/><file name="18_api_sibling.csv" hash="096605fae72bf35317dc4601406a23d0"/></dir></dir></dir></dir><dir name="skin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="namespace_module"><dir name="tree"><file name="01_content.css" hash="7929b899ed457d539637d5083286bed4"/></dir></dir></dir><dir name="images"><dir name="namespace_module"><dir name="collapsedgif"><file name="01_content.gif" hash="ef74c08289e94b7aae81766fb00d4195"/></dir><dir name="collapsedpng"><file name="01_content.png" hash="0613450d25c762b6a40c51768b02462d"/></dir><dir name="expandedgif"><file name="01_content.gif" hash="3f5512a54f359343273caf7b3787ee8a"/></dir><dir name="expandedpng"><file name="01_content.png" hash="f7f28ae897708c78b28ead22c3692bb8"/></dir><dir name="line1gif"><file name="01_content.gif" hash="65b0c812c8d57ea72b84fc69a077a40a"/></dir><dir name="line1png"><file name="01_content.png" hash="4e01064a2c78b8885f65ff7a40f78c02"/></dir><dir name="line2gif"><file name="01_content.gif" hash="95fc5c58069ece5eb44e198ee53b3fe1"/></dir><dir name="line2png"><file name="01_content.png" hash="6adbb4ca64d943f5ee5528d713757fde"/></dir></dir><dir name="placeholder"><file name="entity.jpg" hash="6361a80d5ca988fcec45ad3767322e5e"/></dir></dir><dir name="js"><dir name="namespace_module"><dir name="tree"><file name="01_content.js" hash="1b8a1e7b1cb23e7a87e05b33a34523a0"/></dir></dir></dir></dir></dir></dir></dir></dir><file name="modulecreator.xml" hash="b04acac63e000066b607f12788be6d24"/><file name="system.xml" hash="cd7ac112cc90b7ce4de307800d0ee584"/></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="f21bb3c8940eb81307817c0491caf300"/></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="586ebc5ca473dfcd1a0a47917c4353e4"/></dir><file name="entity.phtml" hash="ca653f56e1ad2fb6c6e54c64a462e9eb"/></dir><file name="entities.phtml" hash="df9179ffd5e72a04cf4740488521f0ce"/><file name="help.phtml" hash="dae530bc9d4ab9445d95d087bfc80fe6"/><file name="relation.phtml" hash="17a41ecbecdf7af519d11c3d026a800b"/></dir></dir><file name="edit.phtml" hash="8d10e82ae89d9e4ede28e6c59c9e724c"/><file name="tooltip.phtml" hash="d3598ad3f978d708b1f7f36feee39560"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Ultimate_ModuleCreator.xml" hash="324d2b364541a7355c9ff4248c0518f2"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Ultimate_ModuleCreator.csv" hash="8938a6c3ad159fe924edb13983acadfb"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><file name="ultimate_modulecreator.css" hash="781a789d72dc08f660479543ff09b143"/><dir name="images"><dir name="ultimate_modulecreator"><file name="logo.png" hash="9c9ca3b07295cab1cb1503865905ee50"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="."><file name="LICENSE_UMC.txt" hash="1372b858e10f4c6feb2967766a0b7a62"/><file name="readme_UMC.txt" hash="7b8cd5baf640a5078be5c7136b56b5d9"/></dir></target><target name="mageweb"><dir name="."><file name="modman" hash="f2259e0ec25ae1812bf192bdddb1fa7a"/></dir></target></contents>
23
  <compatible/>
24
  <dependencies><required><php><min>5.0.0</min><max>7.0.0</max></php></required></dependencies>
25
  </package>