Manufacturer_Model_Number - Version 1.0

Version Notes

The first version. The code is based on YMM extension v 4.4

Download this release

Release Info

Developer Magento Core Team
Extension Manufacturer_Model_Number
Version 1.0
Comparing to
See all releases


Version 1.0

Files changed (31) hide show
  1. app/code/local/Pektsekye/Catalog/Model/Category.php +33 -0
  2. app/code/local/Pektsekye/Catalog/Model/Resource/Eav/Mysql4/Category.php +58 -0
  3. app/code/local/Pektsekye/CatalogSearch/Model/Layer.php +73 -0
  4. app/code/local/Pektsekye/Mmn/Block/Adminhtml/Mmn.php +12 -0
  5. app/code/local/Pektsekye/Mmn/Block/Adminhtml/Mmn/Edit.php +45 -0
  6. app/code/local/Pektsekye/Mmn/Block/Adminhtml/Mmn/Edit/Form.php +18 -0
  7. app/code/local/Pektsekye/Mmn/Block/Adminhtml/Mmn/Edit/Tab/Form.php +45 -0
  8. app/code/local/Pektsekye/Mmn/Block/Adminhtml/Mmn/Edit/Tabs.php +24 -0
  9. app/code/local/Pektsekye/Mmn/Block/Adminhtml/Mmn/Grid.php +91 -0
  10. app/code/local/Pektsekye/Mmn/Block/Adminhtml/Mmn/ImportExport.php +10 -0
  11. app/code/local/Pektsekye/Mmn/Block/Mmn.php +23 -0
  12. app/code/local/Pektsekye/Mmn/Block/Product/Result.php +93 -0
  13. app/code/local/Pektsekye/Mmn/Helper/Data.php +62 -0
  14. app/code/local/Pektsekye/Mmn/Model/Mmn.php +10 -0
  15. app/code/local/Pektsekye/Mmn/Model/Mysql4/Mmn.php +10 -0
  16. app/code/local/Pektsekye/Mmn/Model/Mysql4/Mmn/Collection.php +10 -0
  17. app/code/local/Pektsekye/Mmn/Model/Status.php +15 -0
  18. app/code/local/Pektsekye/Mmn/controllers/Adminhtml/MmnController.php +290 -0
  19. app/code/local/Pektsekye/Mmn/controllers/IndexController.php +10 -0
  20. app/code/local/Pektsekye/Mmn/controllers/ProductController.php +23 -0
  21. app/code/local/Pektsekye/Mmn/etc/config.xml +153 -0
  22. app/code/local/Pektsekye/Mmn/etc/system.xml +37 -0
  23. app/code/local/Pektsekye/Mmn/sql/mmn_setup/mysql4-install-0.1.0.php +19 -0
  24. app/design/adminhtml/default/default/layout/mmn.xml +8 -0
  25. app/design/adminhtml/default/default/template/mmn/importExport.phtml +38 -0
  26. app/design/frontend/default/default/layout/mmn.xml +24 -0
  27. app/design/frontend/default/default/template/mmn/mmn.phtml +185 -0
  28. app/etc/modules/Pektsekye_Catalog.xml +7 -0
  29. app/etc/modules/Pektsekye_CatalogSearch.xml +7 -0
  30. app/etc/modules/Pektsekye_Mmn.xml +9 -0
  31. package.xml +21 -0
app/code/local/Pektsekye/Catalog/Model/Category.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Catalog_Model_Category extends Mage_Catalog_Model_Category
4
+ {
5
+
6
+ /** Override core magento function
7
+ * Get category products collection
8
+ *
9
+ * @return Varien_Data_Collection_Db
10
+ */
11
+ public function getProductCollection()
12
+ {
13
+
14
+ $ids = Mage::helper('mmn')->getProductIds();
15
+
16
+ if($ids){
17
+
18
+ $collection = Mage::getResourceModel('catalog/product_collection')
19
+ ->setStoreId($this->getStoreId())
20
+ ->addCategoryFilter($this)
21
+ ->addIdFilter($ids);
22
+
23
+ } else {
24
+
25
+ $collection = Mage::getResourceModel('catalog/product_collection')
26
+ ->setStoreId($this->getStoreId())
27
+ ->addCategoryFilter($this);
28
+ }
29
+
30
+ return $collection;
31
+ }
32
+
33
+ }
app/code/local/Pektsekye/Catalog/Model/Resource/Eav/Mysql4/Category.php ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Catalog_Model_Resource_Eav_Mysql4_Category extends Mage_Catalog_Model_Resource_Eav_Mysql4_Category
4
+ {
5
+
6
+
7
+ /**Override core magento class
8
+ * Retrieve categories
9
+ *
10
+ * @param integer $parent
11
+ * @param integer $recursionLevel
12
+ * @param boolean|string $sorted
13
+ * @param boolean $asCollection
14
+ * @param boolean $toLoad
15
+ * @return Varien_Data_Tree_Node_Collection|Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection
16
+ */
17
+ public function getCategories($parent, $recursionLevel = 0, $sorted=false, $asCollection=false, $toLoad=true)
18
+ {
19
+ $tree = Mage::getResourceModel('catalog/category_tree');
20
+ /** @var $tree Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Tree */
21
+
22
+ if(Mage::getStoreConfig('catalog/navigation/filtering', Mage::app()->getStore()->getStoreId())){
23
+
24
+ $ids = Mage::helper('mmn')->getProductIds();
25
+
26
+ if($ids){
27
+
28
+ $pids = implode(',',$ids);
29
+ $resource = Mage::getSingleton('core/resource');
30
+ $read= $resource->getConnection('core_read');
31
+ $categoryTable = $resource->getTableName('catalog_category_entity');
32
+ $category_productTable = $resource->getTableName('catalog/category_product_index');
33
+ $rows = $read->fetchAll("SELECT entity_id FROM $categoryTable WHERE entity_id NOT IN (SELECT DISTINCT category_id FROM $category_productTable WHERE product_id in ($pids)) ");
34
+
35
+ if(count($rows)>0)
36
+ foreach ($rows as $r)
37
+ $ids [] = $r['entity_id'];
38
+
39
+ $tree->addInactiveCategoryIds($ids);
40
+
41
+ }
42
+
43
+ }
44
+
45
+ $nodes = $tree->loadNode($parent)
46
+ ->loadChildren($recursionLevel)
47
+ ->getChildren();
48
+
49
+ $tree->addCollectionData(null, $sorted, $parent, $toLoad, true);
50
+
51
+ if ($asCollection) {
52
+ return $tree->getCollection();
53
+ }
54
+ return $nodes;
55
+ }
56
+
57
+
58
+ }
app/code/local/Pektsekye/CatalogSearch/Model/Layer.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ class Pektsekye_CatalogSearch_Model_Layer extends Mage_CatalogSearch_Model_Layer
5
+ {
6
+
7
+ /**Override core magento method
8
+ * Get current layer product collection
9
+ *
10
+ * @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection
11
+ */
12
+ public function getProductCollection()
13
+ {
14
+ if (isset($this->_productCollections[$this->getCurrentCategory()->getId()])) {
15
+ $collection = $this->_productCollections[$this->getCurrentCategory()->getId()];
16
+ }
17
+ else {
18
+
19
+ $ids = Mage::helper('mmn')->getProductIds();
20
+
21
+ if($ids){
22
+
23
+ if(Mage::helper('catalogSearch')->getEscapedQueryText() && Mage::getStoreConfig('catalog/search/filtering', Mage::app()->getStore()->getStoreId())){
24
+ $collection = Mage::getResourceModel('catalogsearch/fulltext_collection')
25
+ ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
26
+ ->addSearchFilter(Mage::helper('catalogSearch')->getEscapedQueryText())
27
+ ->addIdFilter($ids)
28
+ ->setStore(Mage::app()->getStore())
29
+ ->addMinimalPrice()
30
+ ->addFinalPrice()
31
+ ->addTaxPercents()
32
+ ->addStoreFilter()
33
+ ->addUrlRewrite();
34
+
35
+ Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
36
+ Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
37
+
38
+ } elseif (!Mage::helper('catalogSearch')->getEscapedQueryText()){
39
+
40
+ $collection = Mage::getResourceModel('catalog/product_collection')
41
+ ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
42
+ ->addIdFilter($ids)
43
+ ->setStore(Mage::app()->getStore())
44
+ ->addMinimalPrice()
45
+ ->addFinalPrice()
46
+ ->addTaxPercents()
47
+ ->addStoreFilter()
48
+ ->addUrlRewrite();
49
+
50
+ Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
51
+ Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
52
+
53
+ } else {
54
+
55
+ $collection = Mage::getResourceModel('catalogsearch/fulltext_collection');
56
+ $this->prepareProductCollection($collection);
57
+
58
+ }
59
+
60
+
61
+ } else {
62
+
63
+ $collection = Mage::getResourceModel('catalogsearch/fulltext_collection');
64
+ $this->prepareProductCollection($collection);
65
+ }
66
+
67
+ $this->_productCollections[$this->getCurrentCategory()->getId()] = $collection;
68
+ }
69
+
70
+ return $collection;
71
+ }
72
+
73
+ }
app/code/local/Pektsekye/Mmn/Block/Adminhtml/Mmn.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Pektsekye_Mmn_Block_Adminhtml_Mmn extends Mage_Adminhtml_Block_Widget_Grid_Container
3
+ {
4
+ public function __construct()
5
+ {
6
+ $this->_controller = 'adminhtml_mmn';
7
+ $this->_blockGroup = 'mmn';
8
+ $this->_headerText = Mage::helper('mmn')->__('Item Manager');
9
+ $this->_addButtonLabel = Mage::helper('mmn')->__('Add Item');
10
+ parent::__construct();
11
+ }
12
+ }
app/code/local/Pektsekye/Mmn/Block/Adminhtml/Mmn/Edit.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Mmn_Block_Adminhtml_Mmn_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
4
+ {
5
+ public function __construct()
6
+ {
7
+ parent::__construct();
8
+
9
+ $this->_objectId = 'id';
10
+ $this->_blockGroup = 'mmn';
11
+ $this->_controller = 'adminhtml_mmn';
12
+
13
+ $this->_updateButton('save', 'label', Mage::helper('mmn')->__('Save Item'));
14
+ $this->_updateButton('delete', 'label', Mage::helper('mmn')->__('Delete Item'));
15
+
16
+ $this->_addButton('saveandcontinue', array(
17
+ 'label' => Mage::helper('adminhtml')->__('Save And Continue Edit'),
18
+ 'onclick' => 'saveAndContinueEdit()',
19
+ 'class' => 'save',
20
+ ), -100);
21
+
22
+ $this->_formScripts[] = "
23
+ function toggleEditor() {
24
+ if (tinyMCE.getInstanceById('mmn_content') == null) {
25
+ tinyMCE.execCommand('mceAddControl', false, 'mmn_content');
26
+ } else {
27
+ tinyMCE.execCommand('mceRemoveControl', false, 'mmn_content');
28
+ }
29
+ }
30
+
31
+ function saveAndContinueEdit(){
32
+ editForm.submit($('edit_form').action+'back/edit/');
33
+ }
34
+ ";
35
+ }
36
+
37
+ public function getHeaderText()
38
+ {
39
+ if( Mage::registry('mmn_data') && Mage::registry('mmn_data')->getId() ) {
40
+ return Mage::helper('mmn')->__('Edit Item');
41
+ } else {
42
+ return Mage::helper('mmn')->__('Add Item');
43
+ }
44
+ }
45
+ }
app/code/local/Pektsekye/Mmn/Block/Adminhtml/Mmn/Edit/Form.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Mmn_Block_Adminhtml_Mmn_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
4
+ {
5
+ protected function _prepareForm()
6
+ {
7
+ $form = new Varien_Data_Form(array(
8
+ 'id' => 'edit_form',
9
+ 'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
10
+ 'method' => 'post'
11
+ )
12
+ );
13
+
14
+ $form->setUseContainer(true);
15
+ $this->setForm($form);
16
+ return parent::_prepareForm();
17
+ }
18
+ }
app/code/local/Pektsekye/Mmn/Block/Adminhtml/Mmn/Edit/Tab/Form.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Mmn_Block_Adminhtml_Mmn_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form
4
+ {
5
+ protected function _prepareForm()
6
+ {
7
+ $form = new Varien_Data_Form();
8
+ $this->setForm($form);
9
+ $fieldset = $form->addFieldset('mmn_form', array('legend'=>Mage::helper('mmn')->__('Item information')));
10
+
11
+ $fieldset->addField('entity_id', 'text', array(
12
+ 'label' => Mage::helper('mmn')->__('Products ID'),
13
+ 'required' => true,
14
+ 'name' => 'entity_id',
15
+ ));
16
+
17
+ $fieldset->addField('manufacturer', 'text', array(
18
+ 'label' => Mage::helper('mmn')->__('Printer Manufacturer'),
19
+ 'required' => true,
20
+ 'name' => 'manufacturer',
21
+ ));
22
+
23
+ $fieldset->addField('model', 'text', array(
24
+ 'label' => Mage::helper('mmn')->__('Printer Model'),
25
+ 'required' => false,
26
+ 'name' => 'model',
27
+ ));
28
+
29
+ $fieldset->addField('number', 'text', array(
30
+ 'label' => Mage::helper('mmn')->__('Printer Number'),
31
+ 'required' => false,
32
+ 'name' => 'number',
33
+ ));
34
+
35
+
36
+ if ( Mage::getSingleton('adminhtml/session')->getMmnData() )
37
+ {
38
+ $form->setValues(Mage::getSingleton('adminhtml/session')->getMmnData());
39
+ Mage::getSingleton('adminhtml/session')->setMmnData(null);
40
+ } elseif ( Mage::registry('mmn_data') ) {
41
+ $form->setValues(Mage::registry('mmn_data')->getData());
42
+ }
43
+ return parent::_prepareForm();
44
+ }
45
+ }
app/code/local/Pektsekye/Mmn/Block/Adminhtml/Mmn/Edit/Tabs.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Mmn_Block_Adminhtml_Mmn_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs
4
+ {
5
+
6
+ public function __construct()
7
+ {
8
+ parent::__construct();
9
+ $this->setId('mmn_tabs');
10
+ $this->setDestElementId('edit_form');
11
+ $this->setTitle(Mage::helper('mmn')->__('Item Information'));
12
+ }
13
+
14
+ protected function _beforeToHtml()
15
+ {
16
+ $this->addTab('form_section', array(
17
+ 'label' => Mage::helper('mmn')->__('Item Information'),
18
+ 'title' => Mage::helper('mmn')->__('Item Information'),
19
+ 'content' => $this->getLayout()->createBlock('mmn/adminhtml_mmn_edit_tab_form')->toHtml(),
20
+ ));
21
+
22
+ return parent::_beforeToHtml();
23
+ }
24
+ }
app/code/local/Pektsekye/Mmn/Block/Adminhtml/Mmn/Grid.php ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Mmn_Block_Adminhtml_Mmn_Grid extends Mage_Adminhtml_Block_Widget_Grid
4
+ {
5
+ public function __construct()
6
+ {
7
+ parent::__construct();
8
+ $this->setId('mmnGrid');
9
+ $this->setDefaultSort('mmn_id');
10
+ $this->setDefaultDir('ASC');
11
+ $this->setSaveParametersInSession(true);
12
+ }
13
+
14
+ protected function _prepareCollection()
15
+ {
16
+ $collection = Mage::getModel('mmn/mmn')->getCollection();
17
+ $this->setCollection($collection);
18
+ return parent::_prepareCollection();
19
+ }
20
+
21
+ protected function _prepareColumns()
22
+ {
23
+
24
+ $this->addColumn('entity_id', array(
25
+ 'header' => Mage::helper('mmn')->__('Products ID'),
26
+ 'align' =>'left',
27
+ 'index' => 'entity_id',
28
+ ));
29
+
30
+ $this->addColumn('manufacturer', array(
31
+ 'header' => Mage::helper('mmn')->__('Printer Manufacturer'),
32
+ 'align' =>'left',
33
+ 'index' => 'manufacturer',
34
+ ));
35
+
36
+ $this->addColumn('model', array(
37
+ 'header' => Mage::helper('mmn')->__('Printer Model'),
38
+ 'align' =>'left',
39
+ 'index' => 'model',
40
+ ));
41
+
42
+ $this->addColumn('number', array(
43
+ 'header' => Mage::helper('mmn')->__('Printer Number'),
44
+ 'align' =>'left',
45
+ 'index' => 'number',
46
+ ));
47
+
48
+
49
+ $this->addColumn('action',
50
+ array(
51
+ 'header' => Mage::helper('mmn')->__('Action'),
52
+ 'width' => '100',
53
+ 'type' => 'action',
54
+ 'getter' => 'getId',
55
+ 'actions' => array(
56
+ array(
57
+ 'caption' => Mage::helper('mmn')->__('Edit'),
58
+ 'url' => array('base'=> '*/*/edit'),
59
+ 'field' => 'id'
60
+ )
61
+ ),
62
+ 'filter' => false,
63
+ 'sortable' => false,
64
+ 'index' => 'stores',
65
+ 'is_system' => true,
66
+ ));
67
+
68
+
69
+ return parent::_prepareColumns();
70
+ }
71
+
72
+ protected function _prepareMassaction()
73
+ {
74
+ $this->setMassactionIdField('mmn_id');
75
+ $this->getMassactionBlock()->setFormFieldName('mmn');
76
+
77
+ $this->getMassactionBlock()->addItem('delete', array(
78
+ 'label' => Mage::helper('mmn')->__('Delete'),
79
+ 'url' => $this->getUrl('*/*/massDelete'),
80
+ 'confirm' => Mage::helper('mmn')->__('Are you sure?')
81
+ ));
82
+
83
+ return $this;
84
+ }
85
+
86
+ public function getRowUrl($row)
87
+ {
88
+ return $this->getUrl('*/*/edit', array('id' => $row->getId()));
89
+ }
90
+
91
+ }
app/code/local/Pektsekye/Mmn/Block/Adminhtml/Mmn/ImportExport.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Mmn_Block_Adminhtml_Mmn_importExport extends Mage_Adminhtml_Block_Widget
4
+ {
5
+ public function __construct()
6
+ {
7
+ parent::__construct();
8
+ $this->setTemplate('mmn/importExport.phtml');
9
+ }
10
+ }
app/code/local/Pektsekye/Mmn/Block/Mmn.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Pektsekye_Mmn_Block_Mmn extends Mage_Core_Block_Template
3
+ {
4
+
5
+ public function _prepareLayout()
6
+ {
7
+ if(Mage::getStoreConfig('catalog/navigation/filtering', Mage::app()->getStore()->getStoreId())){
8
+ Mage::app()->cleanCache(array(Mage_Catalog_Model_Category::CACHE_TAG));
9
+ }
10
+
11
+ return parent::_prepareLayout();
12
+ }
13
+
14
+ public function getMmn()
15
+ {
16
+ if (!$this->hasData('mmn')) {
17
+ $this->setData('mmn', Mage::registry('mmn'));
18
+ }
19
+ return $this->getData('mmn');
20
+
21
+ }
22
+
23
+ }
app/code/local/Pektsekye/Mmn/Block/Product/Result.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ class Pektsekye_Mmn_Block_Product_Result extends Mage_Catalog_Block_Product_Abstract
5
+ {
6
+ protected $_productCollection;
7
+
8
+ protected function _prepareLayout()
9
+ {
10
+ $title = $this->getHeaderText();
11
+ $this->getLayout()->getBlock('head')->setTitle($title);
12
+ $this->getLayout()->getBlock('root')->setHeaderTitle($title);
13
+ return parent::_prepareLayout();
14
+ }
15
+
16
+ public function setListOrders() {
17
+ $this->getChild('search_result_list')
18
+ ->setAvailableOrders(array(
19
+ 'name' => Mage::helper('mmn')->__('Name'),
20
+ 'price'=>Mage::helper('mmn')->__('Price'))
21
+ );
22
+ }
23
+
24
+ public function setListModes() {
25
+ $this->getChild('search_result_list')
26
+ ->setModes(array(
27
+ 'grid' => Mage::helper('mmn')->__('Grid'),
28
+ 'list' => Mage::helper('mmn')->__('List'))
29
+ );
30
+ }
31
+
32
+ public function setListCollection() {
33
+ $this->getChild('search_result_list')
34
+ ->setCollection($this->_getProductCollection());
35
+ }
36
+
37
+ public function getProductListHtml()
38
+ {
39
+ return $this->getChildHtml('search_result_list');
40
+ }
41
+
42
+ protected function _getProductCollection()
43
+ {
44
+
45
+ if (is_null($this->_productCollection)) {
46
+ $this->_productCollection = Mage::getSingleton('catalogsearch/layer')->getProductCollection();
47
+ }
48
+
49
+ return $this->_productCollection;
50
+ }
51
+
52
+ public function getResultCount()
53
+ {
54
+ if (!$this->getData('result_count')) {
55
+ $size = $this->_getProductCollection()->getSize();
56
+ $this->setResultCount($size);
57
+ }
58
+ return $this->getData('result_count');
59
+ }
60
+
61
+ public function getHeaderText()
62
+ {
63
+
64
+ $manufacturer = $this->getRequest()->getParam('Manufacturer');
65
+ $model = $this->getRequest()->getParam('Model');
66
+ $number = $this->getRequest()->getParam('Number');
67
+
68
+ if($manufacturer && $manufacturer != 'all') {
69
+ $manufacturer = $this->getRequest()->getParam('Manufacturer');
70
+
71
+ if($model == 'all')
72
+ $model = '';
73
+
74
+ if($number == 0)
75
+ $number = '';
76
+
77
+ return Mage::helper('mmn')->__("Products for %s", $this->htmlEscape("$manufacturer $model $number"));
78
+
79
+ } else {
80
+ return false;
81
+ }
82
+ }
83
+
84
+ public function getSubheaderText()
85
+ {
86
+ return false;
87
+ }
88
+
89
+ public function getNoResultText()
90
+ {
91
+ return Mage::helper('mmn')->__('No matches found.');
92
+ }
93
+ }
app/code/local/Pektsekye/Mmn/Helper/Data.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Mmn_Helper_Data extends Mage_Core_Helper_Abstract
4
+ {
5
+
6
+ public function getProductIds()
7
+ {
8
+ $where = '';
9
+
10
+ if (isset($_GET['Manufacturer'])){
11
+ if ($_GET['Manufacturer'] != 'all')
12
+ $Manufacturer_selected_var = $_GET['Manufacturer'];
13
+ } elseif (isset($_COOKIE['Manufacturer_selected']) && $_COOKIE['Manufacturer_selected'] != 'all')
14
+ $Manufacturer_selected_var = $_COOKIE['Manufacturer_selected'];
15
+
16
+ if (isset($_GET['Model'])){
17
+ if ($_GET['Model'] != 'all')
18
+ $Model_selected_var = $_GET['Model'];
19
+ } elseif (isset($_COOKIE['Model_selected']) && $_COOKIE['Model_selected'] != 'all')
20
+ $Model_selected_var = $_COOKIE['Model_selected'];
21
+
22
+ if (isset($_GET['Number'])){
23
+ if ($_GET['Number'] != 'all')
24
+ $Number_selected_var = $_GET['Number'];
25
+ } elseif (isset($_COOKIE['Number_selected']) && $_COOKIE['Number_selected'] != 'all')
26
+ $Number_selected_var = $_COOKIE['Number_selected'];
27
+
28
+
29
+ if (isset($Manufacturer_selected_var))
30
+ $where .= " (manufacturer='".$Manufacturer_selected_var."' or manufacturer='') ";
31
+
32
+ if (isset($Model_selected_var))
33
+ $where .= ($where != '' ? ' and ' : '') . " (model='".$Model_selected_var."' or model='') ";
34
+
35
+ if (isset($Number_selected_var))
36
+ $where .= ($where != '' ? ' and ' : '') . " (number='".$Number_selected_var."' or number='') ";
37
+
38
+
39
+
40
+ if ($where != ''){
41
+
42
+ $resource = Mage::getSingleton('core/resource');
43
+ $read= $resource->getConnection('core_read');
44
+ $productTable = $resource->getTableName('catalog_product_entity');
45
+ $mmnTable = $resource->getTableName('mmn');
46
+ $rows = $read->fetchAll("SELECT entity_id FROM $productTable LEFT JOIN $mmnTable USING (entity_id) WHERE $where");//mmn_id IS NULL OR
47
+
48
+ if(count($rows)>0){
49
+ foreach ($rows as $r)
50
+ $ids [] = $r['entity_id'];
51
+
52
+ return $ids;
53
+
54
+ } else return false;
55
+
56
+ }
57
+
58
+ return false;
59
+
60
+ }
61
+
62
+ }
app/code/local/Pektsekye/Mmn/Model/Mmn.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Mmn_Model_Mmn extends Mage_Core_Model_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ parent::_construct();
8
+ $this->_init('mmn/mmn');
9
+ }
10
+ }
app/code/local/Pektsekye/Mmn/Model/Mysql4/Mmn.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Mmn_Model_Mysql4_Mmn extends Mage_Core_Model_Mysql4_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ // Note that the mmn_id refers to the key field in your database table.
8
+ $this->_init('mmn/mmn', 'mmn_id');
9
+ }
10
+ }
app/code/local/Pektsekye/Mmn/Model/Mysql4/Mmn/Collection.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Mmn_Model_Mysql4_Mmn_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ parent::_construct();
8
+ $this->_init('mmn/mmn');
9
+ }
10
+ }
app/code/local/Pektsekye/Mmn/Model/Status.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Mmn_Model_Status extends Varien_Object
4
+ {
5
+ const STATUS_ENABLED = 1;
6
+ const STATUS_DISABLED = 2;
7
+
8
+ static public function getOptionArray()
9
+ {
10
+ return array(
11
+ self::STATUS_ENABLED => Mage::helper('mmn')->__('Enabled'),
12
+ self::STATUS_DISABLED => Mage::helper('mmn')->__('Disabled')
13
+ );
14
+ }
15
+ }
app/code/local/Pektsekye/Mmn/controllers/Adminhtml/MmnController.php ADDED
@@ -0,0 +1,290 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Mmn_Adminhtml_MmnController extends Mage_Adminhtml_Controller_action
4
+ {
5
+
6
+ protected function _initAction() {
7
+ $this->loadLayout()
8
+ ->_setActiveMenu('mmn/items')
9
+ ->_addBreadcrumb(Mage::helper('adminhtml')->__('Items Manager'), Mage::helper('adminhtml')->__('Item Manager'));
10
+
11
+ return $this;
12
+ }
13
+
14
+ public function indexAction() {
15
+ $this->_initAction()
16
+ ->renderLayout();
17
+ }
18
+
19
+ public function editAction() {
20
+ $id = $this->getRequest()->getParam('id');
21
+ $model = Mage::getModel('mmn/mmn')->load($id);
22
+
23
+ if ($model->getId() || $id == 0) {
24
+ $data = Mage::getSingleton('adminhtml/session')->getFormData(true);
25
+ if (!empty($data)) {
26
+ $model->setData($data);
27
+ }
28
+
29
+ Mage::register('mmn_data', $model);
30
+
31
+ $this->loadLayout();
32
+ $this->_setActiveMenu('mmn/items');
33
+
34
+ $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager'));
35
+
36
+ $this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
37
+
38
+ $this->_addContent($this->getLayout()->createBlock('mmn/adminhtml_mmn_edit'))
39
+ ->_addLeft($this->getLayout()->createBlock('mmn/adminhtml_mmn_edit_tabs'));
40
+
41
+ $this->renderLayout();
42
+ } else {
43
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('mmn')->__('Item does not exist'));
44
+ $this->_redirect('*/*/');
45
+ }
46
+ }
47
+
48
+ public function newAction() {
49
+ $this->_forward('edit');
50
+ }
51
+
52
+ public function saveAction() {
53
+ if ($data = $this->getRequest()->getPost()) {
54
+
55
+ $data ['entity_id'] = (int) $data ['entity_id'];
56
+ $data ['manufacturer'] = trim(preg_replace('/[^\w\s-]/','',$data ['manufacturer']));
57
+ $data ['model'] = trim(preg_replace('/[^\w\s-]/','',$data ['model']));
58
+ $data ['number'] = trim(preg_replace('/[^\w\s-]/','',$data ['number']));
59
+
60
+ $model = Mage::getModel('mmn/mmn');
61
+ $model->setData($data)
62
+ ->setId($this->getRequest()->getParam('id'));
63
+
64
+ try {
65
+
66
+ $model->save();
67
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('mmn')->__('Item was successfully saved'));
68
+ Mage::getSingleton('adminhtml/session')->setFormData(false);
69
+
70
+ if ($this->getRequest()->getParam('back')) {
71
+ $this->_redirect('*/*/edit', array('id' => $model->getId()));
72
+ return;
73
+ }
74
+ $this->_redirect('*/*/');
75
+ return;
76
+ } catch (Exception $e) {
77
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
78
+ Mage::getSingleton('adminhtml/session')->setFormData($data);
79
+ $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
80
+ return;
81
+ }
82
+ }
83
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('mmn')->__('Unable to find item to save'));
84
+ $this->_redirect('*/*/');
85
+ }
86
+
87
+ public function deleteAction() {
88
+ if( $this->getRequest()->getParam('id') > 0 ) {
89
+ try {
90
+ $model = Mage::getModel('mmn/mmn');
91
+
92
+ $model->setId($this->getRequest()->getParam('id'))
93
+ ->delete();
94
+
95
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item was successfully deleted'));
96
+ $this->_redirect('*/*/');
97
+ } catch (Exception $e) {
98
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
99
+ $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
100
+ }
101
+ }
102
+ $this->_redirect('*/*/');
103
+ }
104
+
105
+ public function massDeleteAction() {
106
+ $mmnIds = $this->getRequest()->getParam('mmn');
107
+ if(!is_array($mmnIds)) {
108
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
109
+ } else {
110
+ try {
111
+ foreach ($mmnIds as $mmnId) {
112
+ $mmn = Mage::getModel('mmn/mmn')->load($mmnId);
113
+ $mmn->delete();
114
+ }
115
+ Mage::getSingleton('adminhtml/session')->addSuccess(
116
+ Mage::helper('adminhtml')->__(
117
+ 'Total of %d record(s) were successfully deleted', count($mmnIds)
118
+ )
119
+ );
120
+ } catch (Exception $e) {
121
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
122
+ }
123
+ }
124
+ $this->_redirect('*/*/index');
125
+ }
126
+
127
+ public function massStatusAction()
128
+ {
129
+ $mmnIds = $this->getRequest()->getParam('mmn');
130
+ if(!is_array($mmnIds)) {
131
+ Mage::getSingleton('adminhtml/session')->addError($this->__('Please select item(s)'));
132
+ } else {
133
+ try {
134
+ foreach ($mmnIds as $mmnId) {
135
+ $mmn = Mage::getSingleton('mmn/mmn')
136
+ ->load($mmnId)
137
+ ->setStatus($this->getRequest()->getParam('status'))
138
+ ->setIsMassupdate(true)
139
+ ->save();
140
+ }
141
+ $this->_getSession()->addSuccess(
142
+ $this->__('Total of %d record(s) were successfully updated', count($mmnIds))
143
+ );
144
+ } catch (Exception $e) {
145
+ $this->_getSession()->addError($e->getMessage());
146
+ }
147
+ }
148
+ $this->_redirect('*/*/index');
149
+ }
150
+
151
+
152
+ protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream')
153
+ {
154
+ $response = $this->getResponse();
155
+ $response->setHeader('HTTP/1.1 200 OK','');
156
+ $response->setHeader('Pragma', 'public', true);
157
+ $response->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true);
158
+ $response->setHeader('Content-Disposition', 'attachment; filename='.$fileName);
159
+ $response->setHeader('Last-Modified', date('r'));
160
+ $response->setHeader('Accept-Ranges', 'bytes');
161
+ $response->setHeader('Content-Length', strlen($content));
162
+ $response->setHeader('Content-type', $contentType);
163
+ $response->setBody($content);
164
+ $response->sendResponse();
165
+ die;
166
+ }
167
+
168
+
169
+ /**
170
+ * Import and export Page
171
+ *
172
+ */
173
+ public function importExportAction()
174
+ {
175
+ $this->loadLayout()
176
+ ->_setActiveMenu('mmn/import')
177
+ ->_addContent($this->getLayout()->createBlock('mmn/adminhtml_mmn_importExport'))
178
+ ->renderLayout();
179
+ }
180
+
181
+ /**
182
+ * import action from import/export mmn
183
+ *
184
+ */
185
+ public function importPostAction()
186
+ {
187
+ if ($this->getRequest()->isPost() && !empty($_FILES['import_mmn_file']['tmp_name'])) {
188
+ try {
189
+ $number = $this->_importMmn();
190
+
191
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('mmn')->__('%d new item(s) were imported',$number));
192
+ }
193
+ catch (Mage_Core_Exception $e) {
194
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
195
+ }
196
+ catch (Exception $e) {
197
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('mmn')->__('Invalid file upload attempt'));
198
+ }
199
+ }
200
+ else {
201
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('mmn')->__('Invalid file upload attempt'));
202
+ }
203
+ $this->_redirect('*/*/importExport');
204
+ }
205
+
206
+ protected function _importMmn()
207
+ {
208
+ $fileName = $_FILES['import_mmn_file']['tmp_name'];
209
+ $csvObject = new Varien_File_Csv();
210
+ $csvData = $csvObject->getData($fileName);
211
+ $number = 0;
212
+ /** checks columns */
213
+ $csvFields = array(
214
+ 0 => Mage::helper('mmn')->__('Products ID'),
215
+ 1 => Mage::helper('mmn')->__('Printer Manufacturer'),
216
+ 2 => Mage::helper('mmn')->__('Printer Model'),
217
+ 3 => Mage::helper('mmn')->__('Printer Number')
218
+ );
219
+
220
+ if ($csvData[0] == $csvFields) {
221
+ foreach ($csvData as $k => $v) {
222
+ if ($k == 0) {
223
+ continue;
224
+ }
225
+
226
+ //end of file has more then one empty lines
227
+ if (count($v) <= 1 && !strlen($v[0])) {
228
+ continue;
229
+ }
230
+
231
+ if (count($csvFields) != count($v)) {
232
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('mmn')->__('Invalid file upload attempt'));
233
+ }
234
+
235
+ if (!empty($v[0]) && is_numeric($v[0]) && !empty($v[1])) {
236
+
237
+ $v[1] = trim(preg_replace('/[^\w\s-]/','',$v[1]));
238
+ $v[2] = trim(preg_replace('/[^\w\s-]/','',$v[2]));
239
+ $v[3] = trim(preg_replace('/[^\w\s-]/','',$v[3]));
240
+
241
+ $resource = Mage::getSingleton('core/resource');
242
+ $read= $resource->getConnection('core_read');
243
+ $mmnTable = $resource->getTableName('mmn');
244
+ $select = $read->select()
245
+ ->from($mmnTable,array('mmn_id'))
246
+ ->where("entity_id=?",(int)$v[0])
247
+ ->where("manufacturer=?",$v[1])
248
+ ->where("model=?",$v[2])
249
+ ->where("number=?",$v[3])
250
+ ->limit(1);
251
+
252
+ if($read->fetchOne($select)){
253
+ continue;
254
+ }
255
+
256
+ $data = array(
257
+ 'entity_id'=>$v[0],
258
+ 'manufacturer' => $v[1],
259
+ 'model' => $v[2],
260
+ 'number' => $v[3]
261
+ );
262
+
263
+ $model = Mage::getModel('mmn/mmn');
264
+ $model->setData($data);
265
+ $model->save();
266
+ $number++;
267
+ }
268
+ }
269
+ }
270
+ else {
271
+ Mage::throwException(Mage::helper('mmn')->__('Invalid file format upload attempt'));
272
+ }
273
+
274
+ return $number;
275
+ }
276
+
277
+ /**
278
+ * export action from import/export tax
279
+ *
280
+ */
281
+ public function exportPostAction()
282
+ {
283
+ $fileName = 'mmn.csv';
284
+ $content = $this->getLayout()->createBlock('mmn/adminhtml_mmn_grid')
285
+ ->getCsv();
286
+
287
+ $this->_sendUploadResponse($fileName, $content);
288
+ }
289
+
290
+ }
app/code/local/Pektsekye/Mmn/controllers/IndexController.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Mmn_IndexController extends Mage_Core_Controller_Front_Action
4
+ {
5
+ public function indexAction()
6
+ {
7
+ $this->loadLayout();
8
+ $this->renderLayout();
9
+ }
10
+ }
app/code/local/Pektsekye/Mmn/controllers/ProductController.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Pektsekye_Mmn_ProductController extends Mage_Core_Controller_Front_Action
4
+ {
5
+
6
+ public function listAction()
7
+ {
8
+ if(!$this->getRequest()->getParam('Manufacturer') || $this->getRequest()->getParam('Manufacturer') == 'all') {
9
+ $this->getResponse()->setRedirect(Mage::getBaseUrl());
10
+ return;
11
+ }
12
+
13
+ if(!Mage::helper('mmn')->getProductIds()){
14
+ $this->getResponse()->setRedirect(Mage::getBaseUrl());
15
+ return;
16
+ }
17
+
18
+ $this->loadLayout();
19
+ $this->_initLayoutMessages('checkout/session');
20
+ $this->_initLayoutMessages('tag/session');
21
+ $this->renderLayout();
22
+ }
23
+ }
app/code/local/Pektsekye/Mmn/etc/config.xml ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Pektsekye_Mmn>
5
+ <version>0.1.0</version>
6
+ </Pektsekye_Mmn>
7
+ </modules>
8
+ <frontend>
9
+ <routers>
10
+ <mmn>
11
+ <use>standard</use>
12
+ <args>
13
+ <module>Pektsekye_Mmn</module>
14
+ <frontName>mmn</frontName>
15
+ </args>
16
+ </mmn>
17
+ </routers>
18
+ <layout>
19
+ <updates>
20
+ <mmn>
21
+ <file>mmn.xml</file>
22
+ </mmn>
23
+ </updates>
24
+ </layout>
25
+ </frontend>
26
+ <admin>
27
+ <routers>
28
+ <mmn>
29
+ <use>admin</use>
30
+ <args>
31
+ <module>Pektsekye_Mmn</module>
32
+ <frontName>mmn</frontName>
33
+ </args>
34
+ </mmn>
35
+ </routers>
36
+ </admin>
37
+ <adminhtml>
38
+ <menu>
39
+ <mmn module="mmn">
40
+ <title>Mmn</title>
41
+ <sort_order>71</sort_order>
42
+ <children>
43
+ <items module="mmn">
44
+ <title>Manage Items</title>
45
+ <sort_order>0</sort_order>
46
+ <action>mmn/adminhtml_mmn</action>
47
+ </items>
48
+ <import module="mmn">
49
+ <title>Import / Export</title>
50
+ <sort_order>1</sort_order>
51
+ <action>mmn/adminhtml_mmn/importExport</action>
52
+ </import>
53
+ </children>
54
+ </mmn>
55
+ </menu>
56
+ <acl>
57
+ <resources>
58
+ <all>
59
+ <title>Allow Everything</title>
60
+ </all>
61
+ <admin>
62
+ <children>
63
+ <Pektsekye_Mmn>
64
+ <title>Mmn Module</title>
65
+ <sort_order>10</sort_order>
66
+ </Pektsekye_Mmn>
67
+ </children>
68
+ </admin>
69
+ </resources>
70
+ </acl>
71
+ <layout>
72
+ <updates>
73
+ <mmn>
74
+ <file>mmn.xml</file>
75
+ </mmn>
76
+ </updates>
77
+ </layout>
78
+ </adminhtml>
79
+ <global>
80
+ <models>
81
+ <catalog>
82
+ <rewrite>
83
+ <category>Pektsekye_Catalog_Model_Category</category>
84
+ </rewrite>
85
+ </catalog>
86
+ <catalog_resource_eav_mysql4>
87
+ <rewrite>
88
+ <category>Pektsekye_Catalog_Model_Resource_Eav_Mysql4_Category</category>
89
+ </rewrite>
90
+ </catalog_resource_eav_mysql4>
91
+ <catalogsearch>
92
+ <rewrite>
93
+ <layer>Pektsekye_CatalogSearch_Model_Layer</layer>
94
+ </rewrite>
95
+ </catalogsearch>
96
+ <mmn>
97
+ <class>Pektsekye_Mmn_Model</class>
98
+ <resourceModel>mmn_mysql4</resourceModel>
99
+ </mmn>
100
+ <mmn_mysql4>
101
+ <class>Pektsekye_Mmn_Model_Mysql4</class>
102
+ <entities>
103
+ <mmn>
104
+ <table>mmn</table>
105
+ </mmn>
106
+ </entities>
107
+ </mmn_mysql4>
108
+ </models>
109
+ <resources>
110
+
111
+ <mmn_setup>
112
+ <setup>
113
+ <module>Pektsekye_Mmn</module>
114
+ </setup>
115
+ <connection>
116
+ <use>core_setup</use>
117
+ </connection>
118
+ </mmn_setup>
119
+ <mmn_write>
120
+ <connection>
121
+ <use>core_write</use>
122
+ </connection>
123
+ </mmn_write>
124
+ <mmn_read>
125
+ <connection>
126
+ <use>core_read</use>
127
+ </connection>
128
+ </mmn_read>
129
+ </resources>
130
+ <blocks>
131
+ <mmn>
132
+ <class>Pektsekye_Mmn_Block</class>
133
+ </mmn>
134
+ </blocks>
135
+ <helpers>
136
+ <mmn>
137
+ <class>Pektsekye_Mmn_Helper</class>
138
+ </mmn>
139
+ </helpers>
140
+ </global>
141
+
142
+ <default>
143
+ <catalog>
144
+ <navigation>
145
+ <filtering>1</filtering>
146
+ </navigation>
147
+ <search>
148
+ <filtering>1</filtering>
149
+ </search>
150
+ </catalog>
151
+ </default>
152
+
153
+ </config>
app/code/local/Pektsekye/Mmn/etc/system.xml ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+
3
+ <config>
4
+ <sections>
5
+ <catalog translate="label" module="catalog">
6
+ <groups>
7
+ <navigation translate="label">
8
+ <fields>
9
+ <filtering translate="label">
10
+ <label>Enable MMN Filtering</label>
11
+ <frontend_type>select</frontend_type>
12
+ <source_model>adminhtml/system_config_source_yesno</source_model>
13
+ <sort_order>2</sort_order>
14
+ <show_in_default>1</show_in_default>
15
+ <show_in_website>1</show_in_website>
16
+ <show_in_store>1</show_in_store>
17
+ <comment>cache refresh needed</comment>
18
+ </filtering>
19
+ </fields>
20
+ </navigation>
21
+ <search translate="label">
22
+ <fields>
23
+ <filtering translate="label">
24
+ <label>Enable MMN Filtering</label>
25
+ <frontend_type>select</frontend_type>
26
+ <source_model>adminhtml/system_config_source_yesno</source_model>
27
+ <sort_order>6</sort_order>
28
+ <show_in_default>1</show_in_default>
29
+ <show_in_website>1</show_in_website>
30
+ <show_in_store>1</show_in_store>
31
+ </filtering>
32
+ </fields>
33
+ </search>
34
+ </groups>
35
+ </catalog>
36
+ </sections>
37
+ </config>
app/code/local/Pektsekye/Mmn/sql/mmn_setup/mysql4-install-0.1.0.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ //core_resource table
3
+ $installer = $this;
4
+
5
+ $installer->startSetup();
6
+
7
+ $installer->run("
8
+ DROP TABLE IF EXISTS {$this->getTable('mmn')};
9
+ CREATE TABLE {$this->getTable('mmn')} (
10
+ `mmn_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
11
+ `entity_id` INT NOT NULL ,
12
+ `manufacturer` VARCHAR( 100 ) NOT NULL ,
13
+ `model` VARCHAR( 100 ) NOT NULL ,
14
+ `number` VARCHAR( 100 ) NOT NULL
15
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
16
+
17
+ ");
18
+
19
+ $installer->endSetup();
app/design/adminhtml/default/default/layout/mmn.xml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout version="0.1.0">
3
+ <mmn_adminhtml_mmn_index>
4
+ <reference name="content">
5
+ <block type="mmn/adminhtml_mmn" name="mmn" />
6
+ </reference>
7
+ </mmn_adminhtml_mmn_index>
8
+ </layout>
app/design/adminhtml/default/default/template/mmn/importExport.phtml ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="content-header">
2
+ <table cellspacing="0">
3
+ <tr>
4
+ <td><h3 class="icon-head head-tax-rate-importExport"><?php echo Mage::helper('mmn')->__('Import / Export') ?></h3></td>
5
+ </tr>
6
+ </table>
7
+ </div>
8
+ <div class="entry-edit">
9
+ <div class="box-left">
10
+ <form id="import_form" action="<?php echo $this->getUrl('*/*/importPost') ?>" method="post" enctype="multipart/form-data">
11
+ <?php echo $this->getBlockHtml('formkey')?>
12
+ <div class="entry-edit-head">
13
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('mmn')->__('Import MMN items') ?></h4>
14
+ </div>
15
+ <fieldset>
16
+ <legend><?php echo Mage::helper('mmn')->__('Import MMN items') ?></legend>
17
+ <input type="file" name="import_mmn_file" class="input-file required-entry"/>
18
+ <?php echo $this->getButtonHtml('Import MMN items', "this.form.submit()") ?>
19
+ </fieldset>
20
+ </form>
21
+ <script type="text/javascript">
22
+ var importForm = new varienForm('import_form');
23
+ </script>
24
+ </div>
25
+ <div class="box-right">
26
+ <form id="export_form" action="<?php echo $this->getUrl('*/*/exportPost') ?>" method="post" enctype="multipart/form-data">
27
+ <?php echo $this->getBlockHtml('formkey')?>
28
+ <div class="entry-edit-head">
29
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('mmn')->__('Export MMN items') ?></h4>
30
+ </div>
31
+ <fieldset>
32
+ <legend><?php echo Mage::helper('mmn')->__('Export MMN items') ?></legend>
33
+ <?php echo $this->getButtonHtml('Export MMN items', "this.form.submit()") ?>
34
+ </fieldset>
35
+ </form>
36
+ </div>
37
+ <div class="clear"></div>
38
+ </div>
app/design/frontend/default/default/layout/mmn.xml ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout version="0.1.0">
3
+
4
+ <default>
5
+ <reference name="right">
6
+ <block type="mmn/mmn" name="mmn" before="-" template="mmn/mmn.phtml"/>
7
+ </reference>
8
+ </default>
9
+
10
+ <mmn_product_list>
11
+ <reference name="right">
12
+ <block type="catalogsearch/layer" name="catalogsearch.leftnav" after="mmn" template="catalog/layer/view.phtml"/>
13
+ </reference>
14
+ <reference name="content">
15
+ <block type="mmn/product_result" name="mmn_products" template="catalogsearch/result.phtml">
16
+ <block type="catalog/product_list" name="search_result_list" template="catalog/product/list.phtml"></block>
17
+ <action method="setListOrders"/>
18
+ <action method="setListModes"/>
19
+ <action method="setListCollection"/>
20
+ </block>
21
+ </reference>
22
+ </mmn_product_list>
23
+
24
+ </layout>
app/design/frontend/default/default/template/mmn/mmn.phtml ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $request = $this->getRequest();
4
+ $module = $request->getModuleName() .'_'. $request->getControllerName() .'_'. $request->getActionName();
5
+ $resource = Mage::getSingleton('core/resource');
6
+ $read= $resource->getConnection('core_read');
7
+ $mmnTable = $resource->getTableName('mmn');
8
+
9
+ $select = $read->select()
10
+ ->distinct()
11
+ ->from($mmnTable,array('manufacturer','model','number'))
12
+ ->where('manufacturer != ?','')
13
+ ->where('model != ?','')
14
+ ->where('model != ?','')
15
+ ->order(array('manufacturer', 'model', 'number')) ;
16
+
17
+ $rows = $read->fetchAll($select);
18
+
19
+ if (count($rows) > 0) {
20
+
21
+ $Manufacturer_array[] = array('id' => 'all', 'text' => 'Choose Manufacturer');
22
+ $Model_array[] = array('id' => 'all', 'text' => 'Choose Model');
23
+ $Number_array[] = array('id' => 'all', 'text' => 'Choose Number');
24
+
25
+ $javascript = '<script language="javascript" type="text/javascript">
26
+ var a = new Array();
27
+ var b = new Array();
28
+ var c = new Array();';
29
+
30
+ $M_a = array();
31
+
32
+ foreach ($rows as $r) {
33
+
34
+ if (!isset($M_a [$r['manufacturer']]))
35
+ $Manufacturer_array[] = array('id' => $r['manufacturer'], 'text' => $r['manufacturer']);
36
+
37
+ $M_a [$r['manufacturer']][$r['model']][$r['number']] = 1;
38
+ }
39
+
40
+
41
+ $i = 0;
42
+ foreach ($M_a as $k =>$v){
43
+ $javascript .= 'a['.$i.']="'.$k.'";b['.$i.']=new Array(';
44
+ $ii = 0;
45
+ $s = '';
46
+ foreach ($M_a[$k] as $kk =>$vv){
47
+ $javascript .= ($ii != 0 ? ',' : '').'"'.$kk.'"';
48
+ $ss = '';
49
+ $iii = 0;
50
+ foreach ($M_a[$k][$kk] as $kkk => $vvv){
51
+ $ss .= ($iii != 0 ? ',' : '').'"'.$kkk.'"';
52
+ $iii++;
53
+ }
54
+ $s .= 'c['.$i.']['.$ii.']=new Array('.$ss.');';
55
+ $ii++;
56
+ }
57
+ $javascript .= ');c['.$i.']=new Array();'.$s;
58
+ $i++;
59
+ }
60
+
61
+ $javascript .= '
62
+ function pop_model(){
63
+
64
+ var o ="<select name=\"Model\" onChange=\"pop_number();\" style=\"width: 100%\"><option value=\"all\">Choose Model</option>";
65
+ var sv = document.manufacturer_model_number.Manufacturer.value;
66
+ if(sv != "all"){
67
+ var v = a.length;
68
+ while(v--) if(sv == a[v]) break;
69
+ for(var i = 0; i < b[v].length; i++)
70
+ o+="<option value=\""+b[v][i]+"\">"+b[v][i]+"</option>";
71
+ }
72
+ o+="</select>";
73
+ document.getElementById("model_select").innerHTML= o;
74
+ document.getElementById("number_select").innerHTML= "<select name=\"Number\" style=\"width: 100%\"><option value=\"all\">Choose Number</option></select>";
75
+ }
76
+ function pop_number(){
77
+
78
+ var o ="<select name=\"Number\" style=\"width: 100%\" onChange=\"document.manufacturer_model_number.submit();\"><option value=\"all\">Choose Number</option>";
79
+ var sv = document.manufacturer_model_number.Manufacturer.value;
80
+ if(sv != "all"){
81
+ var v = a.length;
82
+ while(v--) if(sv == a[v]) break;
83
+ var sv2 = document.manufacturer_model_number.Model.value;
84
+ if(sv2 != "all"){
85
+ var v2 = b[v].length;
86
+ while(v2--) if(sv2 == b[v][v2]) break;
87
+ for(var i = 0; i < c[v][v2].length; i++)
88
+ o+="<option value=\""+c[v][v2][i]+"\">"+c[v][v2][i]+"</option>";
89
+ }
90
+ }
91
+ o+="</select>";
92
+ document.getElementById("number_select").innerHTML= o;
93
+ }
94
+ </script>';
95
+
96
+ $expire = time()+60*60*24*90;
97
+
98
+ if (isset($_GET['Manufacturer'])){
99
+ setcookie("Manufacturer_selected", $_GET['Manufacturer'], $expire,'/');
100
+ if ($_GET['Manufacturer'] != 'all')
101
+ $Manufacturer_selected_var = $_GET['Manufacturer'];
102
+ } elseif (isset($_COOKIE['Manufacturer_selected']) && $_COOKIE['Manufacturer_selected'] != 'all')
103
+ $Manufacturer_selected_var = $_COOKIE['Manufacturer_selected'];
104
+
105
+ if (isset($_GET['Model'])){
106
+ setcookie("Model_selected", $_GET['Model'], $expire,'/');
107
+ if ($_GET['Model'] != 'all')
108
+ $Model_selected_var = $_GET['Model'];
109
+ } elseif (isset($_COOKIE['Model_selected']) && $_COOKIE['Model_selected'] != 'all')
110
+ $Model_selected_var = $_COOKIE['Model_selected'];
111
+
112
+ if (isset($_GET['Number'])){
113
+ setcookie("Number_selected", $_GET['Number'], $expire,'/');
114
+ if ($_GET['Number'] != 'all')
115
+ $Number_selected_var = $_GET['Number'];
116
+ } elseif (isset($_COOKIE['Number_selected']) && $_COOKIE['Number_selected'] != 'all')
117
+ $Number_selected_var = $_COOKIE['Number_selected'];
118
+
119
+ if (isset($Manufacturer_selected_var) && isset($M_a[$Manufacturer_selected_var]))
120
+ foreach ($M_a[$Manufacturer_selected_var] as $k => $v)
121
+ $Model_array[] = array('id' => $k, 'text' => $k);
122
+ if (isset($Manufacturer_selected_var) && isset($Model_selected_var) && isset($M_a[$Manufacturer_selected_var][$Model_selected_var]))
123
+ foreach ($M_a[$Manufacturer_selected_var][$Model_selected_var] as $k => $v)
124
+ $Number_array[] = array('id' => $k, 'text' => $k);
125
+
126
+ echo $javascript;
127
+
128
+ ?>
129
+ <div class="box base-mini mini-poll">
130
+ <div class="head">
131
+ <h4><span><?php echo $this->__('Select Printer') ?></span></h4>
132
+ </div>
133
+ <form name="manufacturer_model_number" action="<?php
134
+ $hidden = '';
135
+ if($module == 'catalog_category_view'){
136
+ echo '';
137
+ } elseif ($module == 'catalogsearch_result_index' && Mage::getStoreConfig('catalog/search/filtering', Mage::app()->getStore()->getStoreId())){
138
+ $hidden = '<input type="hidden" name="q" value="' . $request->getParam('q') . '">';
139
+ } else {
140
+ echo Mage::getUrl('mmn/product/list');
141
+ }
142
+
143
+ ?>" method="get">
144
+ <?php echo $hidden; ?>
145
+ <div class="content">
146
+ <select name="Manufacturer" onChange="pop_model();" style="width: 100%">
147
+ <?php
148
+ foreach($Manufacturer_array as $option)
149
+ echo '<option value="'.$option['id'].'" '.(isset($Manufacturer_selected_var) && $Manufacturer_selected_var == $option['id'] ? 'SELECTED' : '').'>'.$option['text'].'</option>';
150
+ ?>
151
+ </select><br><br>
152
+ <span id="model_select">
153
+ <select name="Model" onChange="pop_number();" style="width: 100%">
154
+ <?php
155
+ foreach($Model_array as $option)
156
+ echo '<option value="'.$option['id'].'" '.(isset($Model_selected_var) && $Model_selected_var == $option['id'] ? 'SELECTED' : '').'>'.$option['text'].'</option>';
157
+ ?>
158
+ </select></span><br><br>
159
+ <span id="number_select">
160
+ <select name="Number" onChange="document.manufacturer_model_number.submit();" style="width: 100%">
161
+ <?php
162
+ foreach($Number_array as $option)
163
+ echo '<option value="'.$option['id'].'" '.(isset($Number_selected_var) && $Number_selected_var == $option['id'] ? 'SELECTED' : '').'>'.$option['text'].'</option>';
164
+ ?>
165
+ </select></span><br><br>
166
+ </div>
167
+ <div class="actions">
168
+ <button class="form-button-alt right" type="submit"><span><?php echo $this->__('Go') ?></span></button>
169
+ <?php if(isset($Manufacturer_selected_var)): ?>
170
+ <a href="<?php
171
+ if($module == 'catalog_category_view'){
172
+ echo '?';
173
+ } elseif ($module == 'catalogsearch_result_index' && Mage::getStoreConfig('catalog/search/filtering', Mage::app()->getStore()->getStoreId())){
174
+ echo '?q=' . $request->getParam('q') . '&';
175
+ } else {
176
+ echo Mage::getBaseUrl() . '?';
177
+ }
178
+ ?>Manufacturer=all&Model=all&Number=all">Clear Printer</a>&nbsp;&nbsp;&nbsp;&nbsp;
179
+ <?php endif ?>
180
+ </div>
181
+ </form>
182
+ </div>
183
+ <?php
184
+ }
185
+ ?>
app/etc/modules/Pektsekye_Catalog.xml ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <Pektsekye_Catalog>
4
+ <active>true</active>
5
+ <codePool>local</codePool>
6
+ </Pektsekye_Catalog>
7
+ </config>
app/etc/modules/Pektsekye_CatalogSearch.xml ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <Pektsekye_CatalogSearch>
4
+ <active>true</active>
5
+ <codePool>local</codePool>
6
+ </Pektsekye_CatalogSearch>
7
+ </config>
app/etc/modules/Pektsekye_Mmn.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Pektsekye_Mmn>
5
+ <active>true</active>
6
+ <codePool>local</codePool>
7
+ </Pektsekye_Mmn>
8
+ </modules>
9
+ </config>
package.xml ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Manufacturer_Model_Number</name>
4
+ <version>1.0</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>Manufacturer Model Number (MMN) "Select Printer" filter box for Printer Cartridges web sites</summary>
10
+ <description>This small extension makes it impossible for a customer to filter products by Printer manufacturer, model and number.
11
+
12
+ HOW TO USE:
13
+ Go to your Magento admin panel -&gt;Mmn -&gt; Manage Items and add MMN items to all your products.</description>
14
+ <notes>The first version. The code is based on YMM extension v 4.4</notes>
15
+ <authors><author><name>Stanislav</name><user>auto-converted</user><email>pektsekye@gmail.com</email></author></authors>
16
+ <date>2009-08-08</date>
17
+ <time>18:00:19</time>
18
+ <contents><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="mmn.xml" hash="ccce6ec54f314a5cba835ed503aab154"/></dir><dir name="template"><dir name="mmn"><file name="importExport.phtml" hash="23a7b58d473f29f66b943f5ca678dd8f"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><file name="mmn.xml" hash="8252b14ca06d69664202ed9cbdd7a41b"/></dir><dir name="template"><dir name="mmn"><file name="mmn.phtml" hash="cde2986d19c003210757ac97d1049b30"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Pektsekye_Catalog.xml" hash="89e3ec6056b4ba53d06df1370b347d42"/><file name="Pektsekye_CatalogSearch.xml" hash="c1152b8350ae4906db9736369c8e5edf"/><file name="Pektsekye_Mmn.xml" hash="44dbf66ea36b134b159edb1d51878a2a"/></dir></target><target name="magelocal"><dir name="Pektsekye"><dir name="Catalog"><dir name="Model"><dir name="Resource"><dir name="Eav"><dir name="Mysql4"><file name="Category.php" hash="581fafac71ce0965cb48543bc8b26d80"/></dir></dir></dir><file name="Category.php" hash="418df457636d063fbcbc0e7266b2cf0b"/></dir></dir><dir name="CatalogSearch"><dir name="Model"><file name="Layer.php" hash="92da80a8187107d6eeebd25eaa718655"/></dir></dir><dir name="Mmn"><dir name="Block"><dir name="Adminhtml"><dir name="Mmn"><dir name="Edit"><dir name="Tab"><file name="Form.php" hash="c43285bb92566f85d1451297cb83f81a"/></dir><file name="Form.php" hash="3e2719346ecd021383a091efa5621611"/><file name="Tabs.php" hash="566c0485654104d853ccc55c78336cc4"/></dir><file name="Edit.php" hash="75610373c3eb5e335a3ff344716a1ea3"/><file name="Grid.php" hash="f0c4dbcbc1272a417780865d959da86f"/><file name="ImportExport.php" hash="a475879ab7f6c831aa01fc9927fda212"/></dir><file name="Mmn.php" hash="6ff0685d30001b1d32511bc0cd091c02"/></dir><dir name="Product"><file name="Result.php" hash="00641875e34a3bc2851f6785a9975f81"/></dir><file name="Mmn.php" hash="9c6bc640466ef349fc9fac3023f9f332"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="MmnController.php" hash="23e03d59bdf2065d3d6bd9b3e6edd36b"/></dir><file name="IndexController.php" hash="aa43963369f7166820a20bec5c2d1c8b"/><file name="ProductController.php" hash="6f36953551c101f2d0e890b2569b8444"/></dir><dir name="etc"><file name="config.xml" hash="c4ebca715b08af7a55f5a96fb9e1d73f"/><file name="system.xml" hash="9d2b000bba821307bde419a4e2b2fb13"/></dir><dir name="Helper"><file name="Data.php" hash="8b54f296fe7c06784a9fba900f9b0c35"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Mmn"><file name="Collection.php" hash="7a9240e2cef54b5e1796fb12d2d9369f"/></dir><file name="Mmn.php" hash="c67333dbda050636e9a85e7cfd963bdb"/></dir><file name="Mmn.php" hash="cef143b02735b99c273a8188efee3a38"/><file name="Status.php" hash="7706d422d80badeac80e81985fc2fe79"/></dir><dir name="sql"><dir name="mmn_setup"><file name="mysql4-install-0.1.0.php" hash="e0b1a7ec159b3ff8aa0d16cc4c3d32a0"/></dir></dir></dir></dir></target></contents>
19
+ <compatible/>
20
+ <dependencies/>
21
+ </package>