Version Notes
added a tip to remove list markers
Download this release
Release Info
Developer | Atol C |
Extension | Atol_Productfeedgenerator |
Version | 1.0.2 |
Comparing to | |
See all releases |
Code changes from version 1.0.1 to 1.0.2
- app/code/local/Atol/Productfeedgenerator/Block/Adminhtml/Productflow/Edit.php +1 -3
- app/code/local/Atol/Productfeedgenerator/Block/Frontdisplay.php +7 -3
- app/code/local/Atol/Productfeedgenerator/Block/Productflow/Rss.php +106 -106
- app/code/local/Atol/Productfeedgenerator/controllers/Adminhtml/ProductflowController.php +32 -29
- app/code/local/Atol/Productfeedgenerator/controllers/ProductflowController.php +43 -43
- app/design/adminhtml/default/default/template/productflow/edit.phtml +4 -26
- app/design/frontend/base/default/layout/productfeedgenerator.xml +85 -0
- package.xml +4 -4
app/code/local/Atol/Productfeedgenerator/Block/Adminhtml/Productflow/Edit.php
CHANGED
@@ -14,9 +14,7 @@ class Atol_Productfeedgenerator_Block_Adminhtml_Productflow_Edit extends Mage_Ad
|
|
14 |
$this->operators = array(
|
15 |
"multiselect" => array('one' => $this->__('at least one of them operator'), 'all' => $this->__('all of them operator')),
|
16 |
"select" => array('eq' => $this->__('equal operator'), 'neq' => $this->__('not equal operator'), 'or' => $this->__('or operator')),
|
17 |
-
"boolean" => array('eq' => $this->__('equal operator'), 'neq' => $this->__('not equal operator'))
|
18 |
-
"text" => array('eq' => $this->__('equal operator'), 'neq' => $this->__('not equal operator'), 'in' => $this->__('in operator'))
|
19 |
-
|
20 |
);
|
21 |
}
|
22 |
|
14 |
$this->operators = array(
|
15 |
"multiselect" => array('one' => $this->__('at least one of them operator'), 'all' => $this->__('all of them operator')),
|
16 |
"select" => array('eq' => $this->__('equal operator'), 'neq' => $this->__('not equal operator'), 'or' => $this->__('or operator')),
|
17 |
+
"boolean" => array('eq' => $this->__('equal operator'), 'neq' => $this->__('not equal operator'))
|
|
|
|
|
18 |
);
|
19 |
}
|
20 |
|
app/code/local/Atol/Productfeedgenerator/Block/Frontdisplay.php
CHANGED
@@ -9,9 +9,13 @@ class Atol_Productfeedgenerator_Block_Frontdisplay
|
|
9 |
$columns = self::getData('columns');
|
10 |
|
11 |
$template = 'catalog/product/list.phtml';
|
12 |
-
/*
|
13 |
-
|
14 |
-
|
|
|
|
|
|
|
|
|
15 |
*/
|
16 |
|
17 |
$this->setColumnCount($columns);
|
9 |
$columns = self::getData('columns');
|
10 |
|
11 |
$template = 'catalog/product/list.phtml';
|
12 |
+
/*
|
13 |
+
To avoid displaying the list marker on product list widget, add the following code to CMS_page/Design/Page Layout/Layout Update XML
|
14 |
+
Pour ne pas avoir le bug des puces apparantes dans la liste de produits, ajouter le code suivant dans Page/Design/Page Layout/Layout Update XML
|
15 |
+
<reference name="content">
|
16 |
+
<remove name="cms.wrapper" />
|
17 |
+
<block type="cms/page" name="cms_page"/>
|
18 |
+
</reference>
|
19 |
*/
|
20 |
|
21 |
$this->setColumnCount($columns);
|
app/code/local/Atol/Productfeedgenerator/Block/Productflow/Rss.php
CHANGED
@@ -1,107 +1,107 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* @category Atol
|
4 |
-
* @package Atol_Productfeedgenerator
|
5 |
-
* @copyright Copyright (c) 2013 Atol C&D (http://www.atolcd.com)
|
6 |
-
*/
|
7 |
-
|
8 |
-
class Atol_Productfeedgenerator_Block_Productflow_Rss extends Mage_Rss_Block_Catalog_New
|
9 |
-
{
|
10 |
-
protected function _construct()
|
11 |
-
{
|
12 |
-
/*
|
13 |
-
* setting cache to save the rss for 10 minutes
|
14 |
-
*/
|
15 |
-
$this->setCacheKey('rss_catalog_new_'.$this->_getStoreId());
|
16 |
-
$this->setCacheLifetime(600);
|
17 |
-
}
|
18 |
-
|
19 |
-
protected function _toHtml()
|
20 |
-
{
|
21 |
-
$productFlow = Mage::registry('product_flow');
|
22 |
-
if($productFlow) {
|
23 |
-
$rssObj = Mage::getModel('rss/rss');
|
24 |
-
$data = array('title' => Mage::helper('productfeedgenerator')->__('Products list from %s',$productFlow->getTitle()),
|
25 |
-
'description' => $productFlow->getNote(),
|
26 |
-
'link' => Mage::getUrl('productfeedgenerator/catalog/products'),
|
27 |
-
'charset' => 'UTF-8',
|
28 |
-
'language' => Mage::getStoreConfig('general/locale/code')
|
29 |
-
);
|
30 |
-
$rssObj->_addHeader($data);
|
31 |
-
|
32 |
-
$products = ($productFlow) ? Mage::helper('productfeedgenerator')->getProductCollectionFromJson($productFlow->getData('json_data')) : null;
|
33 |
-
|
34 |
-
$product = Mage::getModel('catalog/product');
|
35 |
-
|
36 |
-
Mage::getSingleton('core/resource_iterator')->walk(
|
37 |
-
$products->getSelect(),
|
38 |
-
array(array($this, 'addNewItemXmlCallback')),
|
39 |
-
array('rssObj'=> $rssObj, 'product'=> $product)
|
40 |
-
);
|
41 |
-
|
42 |
-
return $rssObj->createRssXml();
|
43 |
-
} else {
|
44 |
-
return '';
|
45 |
-
}
|
46 |
-
}
|
47 |
-
|
48 |
-
/**
|
49 |
-
* Preparing data and adding to rss object
|
50 |
-
*
|
51 |
-
* @param array $args
|
52 |
-
*/
|
53 |
-
public function addNewItemXmlCallback($args)
|
54 |
-
{
|
55 |
-
$_coreHelper = Mage::helper('core');
|
56 |
-
$_taxHelper = Mage::helper('tax');
|
57 |
-
|
58 |
-
$product = $args['product'];
|
59 |
-
$product->setData($args['row']);
|
60 |
-
|
61 |
-
$_price = $_taxHelper->getPrice($product, $product->getPrice());
|
62 |
-
$_finalPrice = $_taxHelper->getPrice($product, $product->getData('product_final_price'));
|
63 |
-
|
64 |
-
$product->setAllowedInRss(true);
|
65 |
-
$product->setAllowedPriceInRss(false);
|
66 |
-
Mage::dispatchEvent('rss_catalog_new_xml_callback', $args);
|
67 |
-
|
68 |
-
if (!$product->getAllowedInRss()) {
|
69 |
-
//Skip adding product to RSS
|
70 |
-
return;
|
71 |
-
}
|
72 |
-
$url = Mage::getUrl('catalog/product/view',array("id" => $product->getId()));
|
73 |
-
$allowedPriceInRss = $product->getAllowedPriceInRss();
|
74 |
-
|
75 |
-
|
76 |
-
$description =
|
77 |
-
'<table>'.
|
78 |
-
'<tr>'.
|
79 |
-
'<td>'.
|
80 |
-
'<a href="'.$url.'">'.
|
81 |
-
'<img src="'. $this->helper('catalog/image')->init($product, 'thumbnail')->resize(75, 75).'" border="0" align="left" height="75" width="75">' .
|
82 |
-
'</a>'.
|
83 |
-
'</td>'.
|
84 |
-
'<td style="text-decoration:none;">'
|
85 |
-
. $product->getDescription() . '<br /><br />'
|
86 |
-
. $this->__('Price : ') . $_coreHelper->currency($_price,true,false) . '<br />'
|
87 |
-
. $this->__('Final price : ') . $_coreHelper->currency($_finalPrice,true,false) ;
|
88 |
-
|
89 |
-
|
90 |
-
if ($allowedPriceInRss) {
|
91 |
-
$description .= $this->getPriceHtml($product,true);
|
92 |
-
}
|
93 |
-
|
94 |
-
$description .=
|
95 |
-
'</td>'.
|
96 |
-
'</tr>'.
|
97 |
-
'</table>';
|
98 |
-
|
99 |
-
$rssObj = $args['rssObj'];
|
100 |
-
$data = array(
|
101 |
-
'title' => $product->getName(),
|
102 |
-
'link' => $url,
|
103 |
-
'description' => $description,
|
104 |
-
);
|
105 |
-
$rssObj->_addEntry($data);
|
106 |
-
}
|
107 |
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @category Atol
|
4 |
+
* @package Atol_Productfeedgenerator
|
5 |
+
* @copyright Copyright (c) 2013 Atol C&D (http://www.atolcd.com)
|
6 |
+
*/
|
7 |
+
|
8 |
+
class Atol_Productfeedgenerator_Block_Productflow_Rss extends Mage_Rss_Block_Catalog_New
|
9 |
+
{
|
10 |
+
protected function _construct()
|
11 |
+
{
|
12 |
+
/*
|
13 |
+
* setting cache to save the rss for 10 minutes
|
14 |
+
*/
|
15 |
+
$this->setCacheKey('rss_catalog_new_'.$this->_getStoreId());
|
16 |
+
$this->setCacheLifetime(600);
|
17 |
+
}
|
18 |
+
|
19 |
+
protected function _toHtml()
|
20 |
+
{
|
21 |
+
$productFlow = Mage::registry('product_flow');
|
22 |
+
if($productFlow) {
|
23 |
+
$rssObj = Mage::getModel('rss/rss');
|
24 |
+
$data = array('title' => Mage::helper('productfeedgenerator')->__('Products list from %s',$productFlow->getTitle()),
|
25 |
+
'description' => $productFlow->getNote(),
|
26 |
+
'link' => Mage::getUrl('productfeedgenerator/catalog/products'),
|
27 |
+
'charset' => 'UTF-8',
|
28 |
+
'language' => Mage::getStoreConfig('general/locale/code')
|
29 |
+
);
|
30 |
+
$rssObj->_addHeader($data);
|
31 |
+
|
32 |
+
$products = ($productFlow) ? Mage::helper('productfeedgenerator')->getProductCollectionFromJson($productFlow->getData('json_data')) : null;
|
33 |
+
|
34 |
+
$product = Mage::getModel('catalog/product');
|
35 |
+
|
36 |
+
Mage::getSingleton('core/resource_iterator')->walk(
|
37 |
+
$products->getSelect(),
|
38 |
+
array(array($this, 'addNewItemXmlCallback')),
|
39 |
+
array('rssObj'=> $rssObj, 'product'=> $product)
|
40 |
+
);
|
41 |
+
|
42 |
+
return $rssObj->createRssXml();
|
43 |
+
} else {
|
44 |
+
return '';
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Preparing data and adding to rss object
|
50 |
+
*
|
51 |
+
* @param array $args
|
52 |
+
*/
|
53 |
+
public function addNewItemXmlCallback($args)
|
54 |
+
{
|
55 |
+
$_coreHelper = Mage::helper('core');
|
56 |
+
$_taxHelper = Mage::helper('tax');
|
57 |
+
|
58 |
+
$product = $args['product'];
|
59 |
+
$product->setData($args['row']);
|
60 |
+
|
61 |
+
$_price = $_taxHelper->getPrice($product, $product->getPrice());
|
62 |
+
$_finalPrice = $_taxHelper->getPrice($product, $product->getData('product_final_price'));
|
63 |
+
|
64 |
+
$product->setAllowedInRss(true);
|
65 |
+
$product->setAllowedPriceInRss(false);
|
66 |
+
Mage::dispatchEvent('rss_catalog_new_xml_callback', $args);
|
67 |
+
|
68 |
+
if (!$product->getAllowedInRss()) {
|
69 |
+
//Skip adding product to RSS
|
70 |
+
return;
|
71 |
+
}
|
72 |
+
$url = Mage::getUrl('catalog/product/view',array("id" => $product->getId()));
|
73 |
+
$allowedPriceInRss = $product->getAllowedPriceInRss();
|
74 |
+
|
75 |
+
|
76 |
+
$description =
|
77 |
+
'<table>'.
|
78 |
+
'<tr>'.
|
79 |
+
'<td>'.
|
80 |
+
'<a href="'.$url.'">'.
|
81 |
+
'<img src="'. $this->helper('catalog/image')->init($product, 'thumbnail')->resize(75, 75).'" border="0" align="left" height="75" width="75">' .
|
82 |
+
'</a>'.
|
83 |
+
'</td>'.
|
84 |
+
'<td style="text-decoration:none;">'
|
85 |
+
. $product->getDescription() . '<br /><br />'
|
86 |
+
. $this->__('Price : ') . $_coreHelper->currency($_price,true,false) . '<br />'
|
87 |
+
. $this->__('Final price : ') . $_coreHelper->currency($_finalPrice,true,false) ;
|
88 |
+
|
89 |
+
|
90 |
+
if ($allowedPriceInRss) {
|
91 |
+
$description .= $this->getPriceHtml($product,true);
|
92 |
+
}
|
93 |
+
|
94 |
+
$description .=
|
95 |
+
'</td>'.
|
96 |
+
'</tr>'.
|
97 |
+
'</table>';
|
98 |
+
|
99 |
+
$rssObj = $args['rssObj'];
|
100 |
+
$data = array(
|
101 |
+
'title' => $product->getName(),
|
102 |
+
'link' => $url,
|
103 |
+
'description' => $description,
|
104 |
+
);
|
105 |
+
$rssObj->_addEntry($data);
|
106 |
+
}
|
107 |
}
|
app/code/local/Atol/Productfeedgenerator/controllers/Adminhtml/ProductflowController.php
CHANGED
@@ -14,13 +14,16 @@ class Atol_Productfeedgenerator_Adminhtml_ProductflowController extends Mage_Adm
|
|
14 |
|
15 |
return $this;
|
16 |
}
|
17 |
-
|
18 |
-
public function indexAction() {
|
|
|
|
|
|
|
19 |
$this->_initAction()
|
20 |
->renderLayout();
|
21 |
}
|
22 |
-
|
23 |
-
public function editAction() {
|
24 |
$id = $this->getRequest()->getParam('id', null);
|
25 |
$model = Mage::getModel('productfeedgenerator/productflow');
|
26 |
if ($id) {
|
@@ -31,16 +34,16 @@ class Atol_Productfeedgenerator_Adminhtml_ProductflowController extends Mage_Adm
|
|
31 |
}
|
32 |
}
|
33 |
Mage::register('productflow_data', $model);
|
34 |
-
|
35 |
$this->loadLayout();
|
36 |
$this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
|
37 |
$this->renderLayout();
|
38 |
}
|
39 |
-
|
40 |
public function newAction() {
|
41 |
$this->_forward('edit');
|
42 |
}
|
43 |
-
|
44 |
public function saveAction() {
|
45 |
if ($this->getRequest()->isPost() && $this->getRequest()->isXmlHttpRequest()) {
|
46 |
$request = $this->getRequest();
|
@@ -48,29 +51,29 @@ class Atol_Productfeedgenerator_Adminhtml_ProductflowController extends Mage_Adm
|
|
48 |
$name = Mage::helper('core')->escapeHtml($request->getPost('name'));
|
49 |
$comment = Mage::helper('core')->escapeHtml($request->getPost('comment'));
|
50 |
$data = Mage::helper('core')->jsonDecode($request->getPost('data'));
|
51 |
-
|
52 |
-
|
53 |
-
if($name && $data && isset($data['attributes']) && isset($data['categories']) && isset($data['filters']) && isset($data['others'])) {
|
54 |
-
try {
|
55 |
-
$now = date('Y-M-d H:i:s');
|
56 |
$productFlow = Mage::getModel('productfeedgenerator/productflow');
|
57 |
if($id) {
|
58 |
$productFlow = $productFlow->load($id);
|
59 |
} else {
|
60 |
$productFlow->setData('created_at', $now);
|
61 |
-
}
|
62 |
$productFlow->setData('title', $name);
|
63 |
$productFlow->setData('note', $comment);
|
64 |
$productFlow->setData('json_data', $request->getPost('data'));
|
65 |
$productFlow->setData('updated_at', $now);
|
66 |
-
|
67 |
-
$productFlow->save();
|
68 |
-
|
69 |
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('productfeedgenerator')->__('The product flow was successfully updated'));
|
70 |
return $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array("success" => Mage::helper('productfeedgenerator')->__('The product flow was successfully updated'))));
|
71 |
-
} catch(Exception $e) {
|
72 |
-
return $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array("error" => $e->getMessage())));
|
73 |
-
}
|
74 |
} else {
|
75 |
return $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array("error" => Mage::helper('productfeedgenerator')->__('Invalid data'))));
|
76 |
}
|
@@ -78,20 +81,20 @@ class Atol_Productfeedgenerator_Adminhtml_ProductflowController extends Mage_Adm
|
|
78 |
return $this->getResponse()->setHeader('HTTP/1.1','404 Not Found');
|
79 |
}
|
80 |
}
|
81 |
-
|
82 |
public function deleteAction() {
|
83 |
if ($this->getRequest()->isPost() && $this->getRequest()->isXmlHttpRequest()) {
|
84 |
$id = $this->getRequest()->getPost('id');
|
85 |
if( $id > 0 ) {
|
86 |
try {
|
87 |
$productFlow = Mage::getModel('productfeedgenerator/productflow')->load($id);
|
88 |
-
|
89 |
$now = date('Y-M-d H:i:s');
|
90 |
$productFlow->setData('deleted_at', $now);
|
91 |
$productFlow->setData('updated_at', $now);
|
92 |
-
|
93 |
$productFlow->save();
|
94 |
-
|
95 |
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('productfeedgenerator')->__('The product flow was successfully deleted'));
|
96 |
return $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array("success" => Mage::helper('productfeedgenerator')->__('The product flow was successfully deleted'))));
|
97 |
} catch(Exception $e) {
|
@@ -104,13 +107,13 @@ class Atol_Productfeedgenerator_Adminhtml_ProductflowController extends Mage_Adm
|
|
104 |
return $this->getResponse()->setHeader('HTTP/1.1','404 Not Found');
|
105 |
}
|
106 |
}
|
107 |
-
|
108 |
public function testAction() {
|
109 |
if ($this->getRequest()->isPost() && $this->getRequest()->isXmlHttpRequest()) {
|
110 |
$request = $this->getRequest();
|
111 |
$collection = Mage::helper('productfeedgenerator')->getProductCollectionFromJson($request->getPost('data'));
|
112 |
-
|
113 |
-
if($collection) {
|
114 |
return $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array('count' => $collection->count())));
|
115 |
} else {
|
116 |
return $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array('error' => Mage::helper('productfeedgenerator')->__('Invalid data'))));
|
@@ -119,7 +122,7 @@ class Atol_Productfeedgenerator_Adminhtml_ProductflowController extends Mage_Adm
|
|
119 |
return $this->getResponse()->setHeader('HTTP/1.1','404 Not Found');
|
120 |
}
|
121 |
}
|
122 |
-
|
123 |
/**
|
124 |
* Initialize requested category and put it into registry.
|
125 |
* Root category can be returned, if inappropriate store/category is specified
|
@@ -164,12 +167,12 @@ class Atol_Productfeedgenerator_Adminhtml_ProductflowController extends Mage_Adm
|
|
164 |
Mage::getSingleton('cms/wysiwyg_config')->setStoreId($this->getRequest()->getParam('store'));
|
165 |
return $category;
|
166 |
}
|
167 |
-
|
168 |
/**
|
169 |
* Get tree node (Ajax version)
|
170 |
*/
|
171 |
public function categoriesJsonAction()
|
172 |
-
{
|
173 |
$productFlowId = (int) $this->getRequest()->getPost('productflow',false);
|
174 |
if($productFlowId) {
|
175 |
$productFlow = Mage::getModel('productfeedgenerator/productflow')->load($productFlowId);
|
14 |
|
15 |
return $this;
|
16 |
}
|
17 |
+
|
18 |
+
public function indexAction() {
|
19 |
+
if(Mage::getStoreConfig('rss/active') != 1) {
|
20 |
+
Mage::getSingleton('adminhtml/session')->addWarning('Please enable rss in System/Configuration/Catalog/RSS Feeds');
|
21 |
+
}
|
22 |
$this->_initAction()
|
23 |
->renderLayout();
|
24 |
}
|
25 |
+
|
26 |
+
public function editAction() {
|
27 |
$id = $this->getRequest()->getParam('id', null);
|
28 |
$model = Mage::getModel('productfeedgenerator/productflow');
|
29 |
if ($id) {
|
34 |
}
|
35 |
}
|
36 |
Mage::register('productflow_data', $model);
|
37 |
+
|
38 |
$this->loadLayout();
|
39 |
$this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
|
40 |
$this->renderLayout();
|
41 |
}
|
42 |
+
|
43 |
public function newAction() {
|
44 |
$this->_forward('edit');
|
45 |
}
|
46 |
+
|
47 |
public function saveAction() {
|
48 |
if ($this->getRequest()->isPost() && $this->getRequest()->isXmlHttpRequest()) {
|
49 |
$request = $this->getRequest();
|
51 |
$name = Mage::helper('core')->escapeHtml($request->getPost('name'));
|
52 |
$comment = Mage::helper('core')->escapeHtml($request->getPost('comment'));
|
53 |
$data = Mage::helper('core')->jsonDecode($request->getPost('data'));
|
54 |
+
|
55 |
+
|
56 |
+
if($name && $data && isset($data['attributes']) && isset($data['categories']) && isset($data['filters']) && isset($data['others'])) {
|
57 |
+
try {
|
58 |
+
$now = date('Y-M-d H:i:s');
|
59 |
$productFlow = Mage::getModel('productfeedgenerator/productflow');
|
60 |
if($id) {
|
61 |
$productFlow = $productFlow->load($id);
|
62 |
} else {
|
63 |
$productFlow->setData('created_at', $now);
|
64 |
+
}
|
65 |
$productFlow->setData('title', $name);
|
66 |
$productFlow->setData('note', $comment);
|
67 |
$productFlow->setData('json_data', $request->getPost('data'));
|
68 |
$productFlow->setData('updated_at', $now);
|
69 |
+
|
70 |
+
$productFlow->save();
|
71 |
+
|
72 |
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('productfeedgenerator')->__('The product flow was successfully updated'));
|
73 |
return $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array("success" => Mage::helper('productfeedgenerator')->__('The product flow was successfully updated'))));
|
74 |
+
} catch(Exception $e) {
|
75 |
+
return $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array("error" => $e->getMessage())));
|
76 |
+
}
|
77 |
} else {
|
78 |
return $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array("error" => Mage::helper('productfeedgenerator')->__('Invalid data'))));
|
79 |
}
|
81 |
return $this->getResponse()->setHeader('HTTP/1.1','404 Not Found');
|
82 |
}
|
83 |
}
|
84 |
+
|
85 |
public function deleteAction() {
|
86 |
if ($this->getRequest()->isPost() && $this->getRequest()->isXmlHttpRequest()) {
|
87 |
$id = $this->getRequest()->getPost('id');
|
88 |
if( $id > 0 ) {
|
89 |
try {
|
90 |
$productFlow = Mage::getModel('productfeedgenerator/productflow')->load($id);
|
91 |
+
|
92 |
$now = date('Y-M-d H:i:s');
|
93 |
$productFlow->setData('deleted_at', $now);
|
94 |
$productFlow->setData('updated_at', $now);
|
95 |
+
|
96 |
$productFlow->save();
|
97 |
+
|
98 |
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('productfeedgenerator')->__('The product flow was successfully deleted'));
|
99 |
return $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array("success" => Mage::helper('productfeedgenerator')->__('The product flow was successfully deleted'))));
|
100 |
} catch(Exception $e) {
|
107 |
return $this->getResponse()->setHeader('HTTP/1.1','404 Not Found');
|
108 |
}
|
109 |
}
|
110 |
+
|
111 |
public function testAction() {
|
112 |
if ($this->getRequest()->isPost() && $this->getRequest()->isXmlHttpRequest()) {
|
113 |
$request = $this->getRequest();
|
114 |
$collection = Mage::helper('productfeedgenerator')->getProductCollectionFromJson($request->getPost('data'));
|
115 |
+
|
116 |
+
if($collection) {
|
117 |
return $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array('count' => $collection->count())));
|
118 |
} else {
|
119 |
return $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array('error' => Mage::helper('productfeedgenerator')->__('Invalid data'))));
|
122 |
return $this->getResponse()->setHeader('HTTP/1.1','404 Not Found');
|
123 |
}
|
124 |
}
|
125 |
+
|
126 |
/**
|
127 |
* Initialize requested category and put it into registry.
|
128 |
* Root category can be returned, if inappropriate store/category is specified
|
167 |
Mage::getSingleton('cms/wysiwyg_config')->setStoreId($this->getRequest()->getParam('store'));
|
168 |
return $category;
|
169 |
}
|
170 |
+
|
171 |
/**
|
172 |
* Get tree node (Ajax version)
|
173 |
*/
|
174 |
public function categoriesJsonAction()
|
175 |
+
{
|
176 |
$productFlowId = (int) $this->getRequest()->getPost('productflow',false);
|
177 |
if($productFlowId) {
|
178 |
$productFlow = Mage::getModel('productfeedgenerator/productflow')->load($productFlowId);
|
app/code/local/Atol/Productfeedgenerator/controllers/ProductflowController.php
CHANGED
@@ -1,43 +1,43 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* @category Atol
|
4 |
-
* @package Atol_Productfeedgenerator
|
5 |
-
* @copyright Copyright (c) 2013 Atol C&D (http://www.atolcd.com)
|
6 |
-
*/
|
7 |
-
|
8 |
-
class Atol_Productfeedgenerator_ProductflowController extends Mage_Core_Controller_Front_Action {
|
9 |
-
|
10 |
-
protected function isFeedEnable()
|
11 |
-
{
|
12 |
-
return Mage::getStoreConfig('rss/productfeedgenerator/active');
|
13 |
-
}
|
14 |
-
|
15 |
-
protected function checkFeedEnable()
|
16 |
-
{
|
17 |
-
if ($this->isFeedEnable()) {
|
18 |
-
$this->getResponse()->setHeader('Content-type', 'text/xml; charset=UTF-8');
|
19 |
-
return true;
|
20 |
-
} else {
|
21 |
-
return $this->getResponse()->setHeader('HTTP/1.1','403 Forbidden');
|
22 |
-
}
|
23 |
-
}
|
24 |
-
|
25 |
-
public function rssAction() {
|
26 |
-
$productFlowId = (int) $this->getRequest()->getParam('id',false);
|
27 |
-
if($productFlowId) {
|
28 |
-
$productFlow = Mage::getModel('productfeedgenerator/productflow')->load($productFlowId);
|
29 |
-
|
30 |
-
if($productFlow && $productFlow->getData('flow_id') && !$productFlow->getData('deleted_at')) {
|
31 |
-
Mage::register('product_flow', $productFlow);
|
32 |
-
$this->checkFeedEnable();
|
33 |
-
//$this->checkSecurity();
|
34 |
-
$this->loadLayout(false);
|
35 |
-
$this->renderLayout();
|
36 |
-
} else {
|
37 |
-
return $this->getResponse()->setHeader('HTTP/1.1','404 Not Found');
|
38 |
-
}
|
39 |
-
} else {
|
40 |
-
return $this->getResponse()->setHeader('HTTP/1.1','404 Not Found');
|
41 |
-
}
|
42 |
-
}
|
43 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @category Atol
|
4 |
+
* @package Atol_Productfeedgenerator
|
5 |
+
* @copyright Copyright (c) 2013 Atol C&D (http://www.atolcd.com)
|
6 |
+
*/
|
7 |
+
|
8 |
+
class Atol_Productfeedgenerator_ProductflowController extends Mage_Core_Controller_Front_Action {
|
9 |
+
|
10 |
+
protected function isFeedEnable()
|
11 |
+
{
|
12 |
+
return Mage::getStoreConfig('rss/productfeedgenerator/active');
|
13 |
+
}
|
14 |
+
|
15 |
+
protected function checkFeedEnable()
|
16 |
+
{
|
17 |
+
if ($this->isFeedEnable()) {
|
18 |
+
$this->getResponse()->setHeader('Content-type', 'text/xml; charset=UTF-8');
|
19 |
+
return true;
|
20 |
+
} else {
|
21 |
+
return $this->getResponse()->setHeader('HTTP/1.1','403 Forbidden');
|
22 |
+
}
|
23 |
+
}
|
24 |
+
|
25 |
+
public function rssAction() {
|
26 |
+
$productFlowId = (int) $this->getRequest()->getParam('id',false);
|
27 |
+
if($productFlowId) {
|
28 |
+
$productFlow = Mage::getModel('productfeedgenerator/productflow')->load($productFlowId);
|
29 |
+
|
30 |
+
if($productFlow && $productFlow->getData('flow_id') && !$productFlow->getData('deleted_at')) {
|
31 |
+
Mage::register('product_flow', $productFlow);
|
32 |
+
$this->checkFeedEnable();
|
33 |
+
//$this->checkSecurity();
|
34 |
+
$this->loadLayout(false);
|
35 |
+
$this->renderLayout();
|
36 |
+
} else {
|
37 |
+
return $this->getResponse()->setHeader('HTTP/1.1','404 Not Found');
|
38 |
+
}
|
39 |
+
} else {
|
40 |
+
return $this->getResponse()->setHeader('HTTP/1.1','404 Not Found');
|
41 |
+
}
|
42 |
+
}
|
43 |
+
}
|
app/design/adminhtml/default/default/template/productflow/edit.phtml
CHANGED
@@ -71,7 +71,7 @@
|
|
71 |
<fieldset>
|
72 |
<?php foreach($attributes as $attribute) : ?>
|
73 |
<?php $frontendInput = $attribute->getData('frontend_input'); ?>
|
74 |
-
<?php if(in_array($attribute->getData('frontend_input'), array('select', 'multiselect', 'boolean'
|
75 |
<div class="attribute_item <?php echo $frontendInput; ?> <?php echo (isset($attributesList[$attribute->getData('attribute_id')]) ? 'filtered' : ''); ?>" <?php echo (isset($attributesList[$attribute->getData('attribute_id')]) ? '' : 'style="display:none;"'); ?> data-attribute-id="<?php echo $attribute->getData('attribute_id'); ?>" data-attribute-type="<?php echo $frontendInput; ?>">
|
76 |
<label for="productflow_attribute[<?php echo $attribute->getData('attribute_id'); ?>]['operator']"><?php echo $attribute->getData('frontend_label'); ?></label>
|
77 |
<select id="productflow_attribute[<?php echo $attribute->getData('attribute_id'); ?>]['operator']" class="operator">
|
@@ -101,8 +101,6 @@
|
|
101 |
<option value="true" <?php echo ((isset($attributesList[$attribute->getData('attribute_id')]) && in_array(true, $attributesList[$attribute->getData('attribute_id')]['values'])) ? 'selected="selected"' : ''); ?>><?php echo $this->__('yes'); ?></option>
|
102 |
<option value="false" <?php echo ((isset($attributesList[$attribute->getData('attribute_id')]) && in_array(false, $attributesList[$attribute->getData('attribute_id')]['values'])) ? 'selected="selected"' : ''); ?>><?php echo $this->__('no'); ?></option>
|
103 |
</select>
|
104 |
-
<?php elseif($frontendInput === 'text') : ?>
|
105 |
-
<input type="text" id="productflow_attribute[<?php echo $attribute->getData('attribute_id'); ?>]['value']" name="productflow['attributes']" class="value" style="width:50%" value="<?php echo $attributesList[$attribute->getData('attribute_id')]['values'][0] ?>"/>
|
106 |
<?php endif; ?>
|
107 |
<button class="btn_drop_attribute" data-attribute-id="<?php echo $attribute->getData('attribute_id'); ?>" ><?php echo $this->__('Drop'); ?></button>
|
108 |
</div>
|
@@ -113,7 +111,7 @@
|
|
113 |
<label for="add_attribute_select"><?php echo $this->__('Add an attribute to filter'); ?></label>
|
114 |
<select id="add_attribute_select">
|
115 |
<?php foreach($attributes as $attribute) : ?>
|
116 |
-
<option value="<?php echo $attribute->getData('attribute_id'); ?>" class="<?php echo (isset($attributesList[$attribute->getData('attribute_id')]) ? 'filtered' : ''); ?>" ><?php echo $attribute->getData('
|
117 |
<?php endforeach; ?>
|
118 |
</select>
|
119 |
<button class="btn_add_attribute"><?php echo $this->__('Add'); ?></button>
|
@@ -194,8 +192,8 @@
|
|
194 |
var attributeType = jQuery(this).attr('data-attribute-type');
|
195 |
return {
|
196 |
"id" : jQuery(this).attr('data-attribute-id'),
|
197 |
-
"operator" : jQuery(this).children('select.operator').val(),
|
198 |
-
"values" : jQuery(this).find('select.value option:selected
|
199 |
return (attributeType == 'boolean') ? (jQuery(this).val() == "true") : jQuery(this).val();
|
200 |
}).get()
|
201 |
};
|
@@ -267,26 +265,6 @@
|
|
267 |
}
|
268 |
});
|
269 |
|
270 |
-
/*jQuery('#btn_test, #btn_test span').live('click', function() {
|
271 |
-
var flow = formToJson();
|
272 |
-
|
273 |
-
jQuery.ajax({
|
274 |
-
type : "POST",
|
275 |
-
url : "<?php echo Mage::getUrl('adminhtml/productflow/test'); ?>",
|
276 |
-
data : {
|
277 |
-
"data" : Object.toJSON(flow),
|
278 |
-
"form_key" : FORM_KEY
|
279 |
-
},
|
280 |
-
dataType : "json",
|
281 |
-
success : function(data) {
|
282 |
-
jQuery('#messages .messages').html('<li class="info-msg">' + data.count + ' <?php echo $this->__('products given by the current query') ?></li>');
|
283 |
-
},
|
284 |
-
error : function(data) {
|
285 |
-
jQuery('#messages .messages').html('<li class="error-msg"><?php echo $this->__('Server error'); ?></li>');
|
286 |
-
}
|
287 |
-
});
|
288 |
-
});*/
|
289 |
-
|
290 |
jQuery('#btn_save, #btn_save span').live('click', function() {
|
291 |
var flow = formToJson();
|
292 |
|
71 |
<fieldset>
|
72 |
<?php foreach($attributes as $attribute) : ?>
|
73 |
<?php $frontendInput = $attribute->getData('frontend_input'); ?>
|
74 |
+
<?php if(in_array($attribute->getData('frontend_input'), array('select', 'multiselect', 'boolean'))) : ?>
|
75 |
<div class="attribute_item <?php echo $frontendInput; ?> <?php echo (isset($attributesList[$attribute->getData('attribute_id')]) ? 'filtered' : ''); ?>" <?php echo (isset($attributesList[$attribute->getData('attribute_id')]) ? '' : 'style="display:none;"'); ?> data-attribute-id="<?php echo $attribute->getData('attribute_id'); ?>" data-attribute-type="<?php echo $frontendInput; ?>">
|
76 |
<label for="productflow_attribute[<?php echo $attribute->getData('attribute_id'); ?>]['operator']"><?php echo $attribute->getData('frontend_label'); ?></label>
|
77 |
<select id="productflow_attribute[<?php echo $attribute->getData('attribute_id'); ?>]['operator']" class="operator">
|
101 |
<option value="true" <?php echo ((isset($attributesList[$attribute->getData('attribute_id')]) && in_array(true, $attributesList[$attribute->getData('attribute_id')]['values'])) ? 'selected="selected"' : ''); ?>><?php echo $this->__('yes'); ?></option>
|
102 |
<option value="false" <?php echo ((isset($attributesList[$attribute->getData('attribute_id')]) && in_array(false, $attributesList[$attribute->getData('attribute_id')]['values'])) ? 'selected="selected"' : ''); ?>><?php echo $this->__('no'); ?></option>
|
103 |
</select>
|
|
|
|
|
104 |
<?php endif; ?>
|
105 |
<button class="btn_drop_attribute" data-attribute-id="<?php echo $attribute->getData('attribute_id'); ?>" ><?php echo $this->__('Drop'); ?></button>
|
106 |
</div>
|
111 |
<label for="add_attribute_select"><?php echo $this->__('Add an attribute to filter'); ?></label>
|
112 |
<select id="add_attribute_select">
|
113 |
<?php foreach($attributes as $attribute) : ?>
|
114 |
+
<option value="<?php echo $attribute->getData('attribute_id'); ?>" class="<?php echo (isset($attributesList[$attribute->getData('attribute_id')]) ? 'filtered' : ''); ?>" ><?php echo $attribute->getData('frontend_label'); ?></option>
|
115 |
<?php endforeach; ?>
|
116 |
</select>
|
117 |
<button class="btn_add_attribute"><?php echo $this->__('Add'); ?></button>
|
192 |
var attributeType = jQuery(this).attr('data-attribute-type');
|
193 |
return {
|
194 |
"id" : jQuery(this).attr('data-attribute-id'),
|
195 |
+
"operator" : jQuery(this).children('select.operator').val(),
|
196 |
+
"values" : jQuery(this).find('select.value option:selected').map(function() {
|
197 |
return (attributeType == 'boolean') ? (jQuery(this).val() == "true") : jQuery(this).val();
|
198 |
}).get()
|
199 |
};
|
265 |
}
|
266 |
});
|
267 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
268 |
jQuery('#btn_save, #btn_save span').live('click', function() {
|
269 |
var flow = formToJson();
|
270 |
|
app/design/frontend/base/default/layout/productfeedgenerator.xml
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/afl-3.0.php
|
12 |
+
* If you did not receive a copy of the license and are unable to
|
13 |
+
* obtain it through the world-wide-web, please send an email
|
14 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
15 |
+
*
|
16 |
+
* DISCLAIMER
|
17 |
+
*
|
18 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
19 |
+
* versions in the future. If you wish to customize Magento for your
|
20 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
21 |
+
*
|
22 |
+
* @category design
|
23 |
+
* @package base_default
|
24 |
+
* @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
|
25 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
26 |
+
*/
|
27 |
+
-->
|
28 |
+
<layout version="0.1.0">
|
29 |
+
<default>
|
30 |
+
<block type="rss/list" name="head_rss" ifconfig="rss/config/active" />
|
31 |
+
</default>
|
32 |
+
<productfeedgenerator_index_index>
|
33 |
+
<!-- Set title -->
|
34 |
+
<reference name="head">
|
35 |
+
<action method="setTitle">
|
36 |
+
<title>PFG Productlist</title>
|
37 |
+
</action>
|
38 |
+
</reference>
|
39 |
+
<reference name="root">
|
40 |
+
<action method="setTemplate">
|
41 |
+
<template>page/1column.phtml</template>
|
42 |
+
</action>
|
43 |
+
</reference>
|
44 |
+
<reference name="content">
|
45 |
+
<!-- Add product list to content -->
|
46 |
+
<block type="catalog/product_list" name="product_list" template="catalog/product/list.phtml">
|
47 |
+
<!-- Add toolbar to product list -->
|
48 |
+
<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
|
49 |
+
<!-- Add pager to toolbar -->
|
50 |
+
<block type="page/html_pager" name="product_list_toolbar_pager"/>
|
51 |
+
</block>
|
52 |
+
|
53 |
+
<!-- Specify toolbar block name -->
|
54 |
+
<action method="setToolbarBlockName">
|
55 |
+
<name>product_list_toolbar</name>
|
56 |
+
</action>
|
57 |
+
|
58 |
+
<!-- Use custom product collection -->
|
59 |
+
<action method="setCollection">
|
60 |
+
<value helper="productfeedgenerator/getProductCollectionFromId"/>
|
61 |
+
</action>
|
62 |
+
|
63 |
+
<!-- Set the default sort by order -->
|
64 |
+
<action method="setSortBy">
|
65 |
+
<value>price</value>
|
66 |
+
</action>
|
67 |
+
|
68 |
+
<!-- Set default direction to ascending -->
|
69 |
+
<action method="setDefaultDirection">
|
70 |
+
<value>asc</value>
|
71 |
+
</action>
|
72 |
+
|
73 |
+
<action method="setColumnCount">
|
74 |
+
<coulumn>5</coulumn>
|
75 |
+
</action>
|
76 |
+
</block>
|
77 |
+
</reference>
|
78 |
+
</productfeedgenerator_index_index>
|
79 |
+
|
80 |
+
<productfeedgenerator_productflow_rss>
|
81 |
+
<block type="productfeedgenerator/productflow_rss" output="toHtml" name="productfeedgenerator.productflow.rss">
|
82 |
+
<action method="addPriceBlockType"><type>msrp_rss</type><block>catalog/product_price</block><template>catalog/product/price_msrp_rss.phtml</template></action>
|
83 |
+
</block>
|
84 |
+
</productfeedgenerator_productflow_rss>
|
85 |
+
</layout>
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Atol_Productfeedgenerator</name>
|
4 |
-
<version>1.0.
|
5 |
<stability>stable</stability>
|
6 |
<license>GNU General Public License (GPL)</license>
|
7 |
<channel>community</channel>
|
@@ -43,11 +43,11 @@ L'utilisation du système de widget vous permet d'ajouter facilement votre f
|
|
43 |
Pour en savoir plus sur notre société, n'hésitez pas à consulter <a href="http://www.atolcd.com">www.atolcd.com</a>
|
44 |

|
45 |
</description>
|
46 |
-
<notes>
|
47 |
<authors><author><name>AtolCD</name><user>AtolCD</user><email>magento@atolcd.com</email></author><author><name>Antoine Trapet</name><user>atr</user><email>atr@atolcd.com</email></author><author><name>Aurélien Ponçon</name><user>apo</user><email>apo@atolcd.com</email></author><author><name>Antoine Chevaldonné</name><user>ach</user><email>ach@atolcd.com</email></author></authors>
|
48 |
<date>2016-03-14</date>
|
49 |
-
<time>08:
|
50 |
-
<contents><target name="magelocal"><dir name="Atol"><dir name="Productfeedgenerator"><dir name="Block"><dir name="Adminhtml"><dir name="Productflow"><dir name="Edit"><file name="Categories.php" hash="1dab18a40a30827f9b1ab3001f04d13a"/></dir><file name="Edit.php" hash="
|
51 |
<compatible/>
|
52 |
<dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
|
53 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Atol_Productfeedgenerator</name>
|
4 |
+
<version>1.0.2</version>
|
5 |
<stability>stable</stability>
|
6 |
<license>GNU General Public License (GPL)</license>
|
7 |
<channel>community</channel>
|
43 |
Pour en savoir plus sur notre société, n'hésitez pas à consulter <a href="http://www.atolcd.com">www.atolcd.com</a>
|
44 |

|
45 |
</description>
|
46 |
+
<notes>added a tip to remove list markers</notes>
|
47 |
<authors><author><name>AtolCD</name><user>AtolCD</user><email>magento@atolcd.com</email></author><author><name>Antoine Trapet</name><user>atr</user><email>atr@atolcd.com</email></author><author><name>Aurélien Ponçon</name><user>apo</user><email>apo@atolcd.com</email></author><author><name>Antoine Chevaldonné</name><user>ach</user><email>ach@atolcd.com</email></author></authors>
|
48 |
<date>2016-03-14</date>
|
49 |
+
<time>13:08:25</time>
|
50 |
+
<contents><target name="magelocal"><dir name="Atol"><dir name="Productfeedgenerator"><dir name="Block"><dir name="Adminhtml"><dir name="Productflow"><dir name="Edit"><file name="Categories.php" hash="1dab18a40a30827f9b1ab3001f04d13a"/></dir><file name="Edit.php" hash="443b9996fc526536e092a79618bda545"/><file name="Grid.php" hash="cc7def146fe698de4249b252eeb3c63e"/><dir name="Renderer"><file name="Linkscolumn.php" hash="d831799203369be2586698559aabf161"/></dir></dir><file name="Productflow.php" hash="827fd19128b6f6b03febbbb5387be50f"/></dir><file name="Frontdisplay.php" hash="d81c6c6702612b86be759ba83a4348f0"/><dir name="Productflow"><file name="Rss.php" hash="c6bfb5c695f4b69af40f3b6f4a2c2020"/></dir></dir><dir name="Helper"><file name="Data.php" hash="7795364cf1483083b9594d95c34bc660"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Productflow"><file name="Collection.php" hash="0d8056368d6c4599a00e3b3dd4f69722"/></dir><file name="Productflow.php" hash="e68259670802fa7f84571b19b0a030cb"/></dir><file name="Productflow.php" hash="aa0fb13c57acb92c3b3855dd6b115e1c"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Orderbytype.php" hash="1a390fda30c5c9d1ca9f5a8c2bf1bb6f"/><file name="Productflowtype.php" hash="967ca8318947473e696612ceb8b9f2c6"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="ProductflowController.php" hash="6d313417ca90343355443bfdda645d70"/></dir><file name="IndexController.php" hash="39e2e2cf9354c35b32e5a738840b6d87"/><file name="ProductflowController.php" hash="a831dbd6d913689dabf8ff1204e406c6"/></dir><dir name="etc"><file name="adminhtml.xml" hash="c8d2bb91591aae5a80941ef44e19dcc9"/><file name="config.xml" hash="8c2136b71a9c5e306fbf815455a5b443"/><file name="system.xml" hash="511c6ea6cbd55527dfc278b83a44eccb"/><file name="widget.xml" hash="b29e594a7912a2244c1d6fd01912d1c0"/></dir><dir name="sql"><dir name="productfeedgenerator_setup"><file name="mysql4-install-0.1.0.php" hash="178841fb1c45d4fd7e70abc5054ad0ce"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="productfeedgenerator.xml" hash="0f25d168848eb5ffc1e124544fd22b52"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="productfeedgenerator.xml" hash="2819062aab01040c428185362050432e"/></dir><dir name="template"><dir name="productflow"><dir><dir name="edit"><file name="categories.phtml" hash="e88f45634328726e01768916cfe407d5"/></dir></dir><file name="edit.phtml" hash="da258eef7da6988bc828b67f0d6a8a56"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Atol_Productfeedgenerator.xml" hash="21350607b70c31828328ba4e41f8bd04"/></dir></target><target name="magelocale"><dir name="fr_FR"><file name="Atol_Productfeedgenerator.csv" hash="9e1bfbad6d620a09811cdbd9c1a5abfb"/></dir></target><target name="mageweb"><dir name="js"><dir name="jquery"><file name="jquery-1.4.4.min.js" hash="eef9a6a171184899b08ebd61f1a03425"/></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="css"><dir name="productfeedgenerator"><file name="styles.css" hash="8a550d9db1fcf37915a96e67919de9da"/></dir></dir></dir></dir></dir></target></contents>
|
51 |
<compatible/>
|
52 |
<dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
|
53 |
</package>
|