Version Notes
Add functionallity for store selection
Download this release
Release Info
| Developer | Alex |
| Extension | Web4pro_Googlemerchants |
| Version | 1.0.3 |
| Comparing to | |
| See all releases | |
Code changes from version 1.0.2 to 1.0.3
- app/code/community/Web4pro/Googlemerchants/Block/Adminhtml/Editfeed/Edit/Form.php +24 -4
- app/code/community/Web4pro/Googlemerchants/Block/Adminhtml/Googlecategory/Edit/Form.php +7 -8
- app/code/community/Web4pro/Googlemerchants/Block/Adminhtml/Googlecategory/Tree.php +1 -0
- app/code/community/Web4pro/Googlemerchants/Block/Adminhtml/System/Instruction.php +2 -1
- app/code/community/Web4pro/Googlemerchants/Block/Adminhtml/Upload/Link/Renderer.php +1 -1
- app/code/community/Web4pro/Googlemerchants/Helper/Data.php +7 -0
- app/code/community/Web4pro/Googlemerchants/Model/Googlefeed.php +107 -43
- app/code/community/Web4pro/Googlemerchants/controllers/Adminhtml/GooglemerchantsController.php +11 -4
- app/code/community/Web4pro/Googlemerchants/etc/adminhtml.xml +2 -2
- app/code/community/Web4pro/Googlemerchants/etc/system.xml +13 -4
- app/design/adminhtml/default/default/layout/googlemerchants.xml +5 -1
- app/design/adminhtml/default/default/template/web4pro_googlemerchants/feed/form.phtml +20 -6
- app/design/adminhtml/default/default/template/web4pro_googlemerchants/googlecategory/edit.phtml +40 -5
- app/design/adminhtml/default/default/template/web4pro_googlemerchants/googlecategory/tree.phtml +4 -2
- app/etc/modules/Web4pro_Googlemerchants.xml +11 -0
- package.xml +4 -4
- skin/adminhtml/default/default/web4pro_googlemerchants/googlemerchants.css +6 -0
app/code/community/Web4pro/Googlemerchants/Block/Adminhtml/Editfeed/Edit/Form.php
CHANGED
|
@@ -41,7 +41,7 @@ class Web4pro_Googlemerchants_Block_Adminhtml_Editfeed_Edit_Form extends Mage_Ad
|
|
| 41 |
|
| 42 |
public function getSelectHtml($nameIndex = 0, $selectedVal = '')
|
| 43 |
{
|
| 44 |
-
$retStr = '<select class="required-entry select" name="attribute-select[' . $nameIndex . ']">';
|
| 45 |
$retStr .= $this->getOptionsHtml($selectedVal);
|
| 46 |
$retStr .= '</select>';
|
| 47 |
return $retStr;
|
|
@@ -78,12 +78,15 @@ class Web4pro_Googlemerchants_Block_Adminhtml_Editfeed_Edit_Form extends Mage_Ad
|
|
| 78 |
$index = 0;
|
| 79 |
$resStr = '';
|
| 80 |
foreach ($data as $val) {
|
| 81 |
-
|
|
|
|
| 82 |
continue;
|
| 83 |
}
|
| 84 |
-
$resStr .= '<tr id="table-row-' . $index . '">';
|
| 85 |
$resStr .= '<td><input class="required-entry" name="feed-col-name[' . $index . ']" value="' . $val['value'] . '"/></td>';
|
| 86 |
-
$resStr .= '<td
|
|
|
|
|
|
|
| 87 |
$resStr .= '<td>' . $this->getRemoveRowButtonHtml($index) . '</td>';
|
| 88 |
$resStr .= '</tr>';
|
| 89 |
$index++;
|
|
@@ -91,6 +94,23 @@ class Web4pro_Googlemerchants_Block_Adminhtml_Editfeed_Edit_Form extends Mage_Ad
|
|
| 91 |
return $resStr;
|
| 92 |
}
|
| 93 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 94 |
/**
|
| 95 |
* @param int $nameIndex
|
| 96 |
* @return string
|
| 41 |
|
| 42 |
public function getSelectHtml($nameIndex = 0, $selectedVal = '')
|
| 43 |
{
|
| 44 |
+
$retStr = '<select class="required-entry select select-googlefeed" name="attribute-select[' . $nameIndex . ']">';
|
| 45 |
$retStr .= $this->getOptionsHtml($selectedVal);
|
| 46 |
$retStr .= '</select>';
|
| 47 |
return $retStr;
|
| 78 |
$index = 0;
|
| 79 |
$resStr = '';
|
| 80 |
foreach ($data as $val) {
|
| 81 |
+
$attributeExists = $this->_isAttributeExists($val['selected']['value']);
|
| 82 |
+
if (!isset($val['value']) || !isset($val['selected']) || !$attributeExists) {
|
| 83 |
continue;
|
| 84 |
}
|
| 85 |
+
$resStr .= '<tr id="table-row-' . $index . '" class="table-row-googlefeed">';
|
| 86 |
$resStr .= '<td><input class="required-entry" name="feed-col-name[' . $index . ']" value="' . $val['value'] . '"/></td>';
|
| 87 |
+
$resStr .= '<td><input name="feed-pref-name[' . $index . ']" value="' . $val['selected']['pref'] . '" class="prefix-postfix-input-field"/></td>';
|
| 88 |
+
$resStr .= '<td>' . $this->getSelectHtml($index, $val['selected']['value']) . '</td>';
|
| 89 |
+
$resStr .= '<td><input name="feed-postf-name[' . $index . ']" value="' . $val['selected']['postf'] . '" class="prefix-postfix-input-field"/></td>';
|
| 90 |
$resStr .= '<td>' . $this->getRemoveRowButtonHtml($index) . '</td>';
|
| 91 |
$resStr .= '</tr>';
|
| 92 |
$index++;
|
| 94 |
return $resStr;
|
| 95 |
}
|
| 96 |
|
| 97 |
+
/**
|
| 98 |
+
* Check if attribute exists
|
| 99 |
+
* @param $attributeCode
|
| 100 |
+
*/
|
| 101 |
+
|
| 102 |
+
protected function _isAttributeExists($attributeCode)
|
| 103 |
+
{
|
| 104 |
+
$entity = 'catalog_product';
|
| 105 |
+
$attr = Mage::getResourceModel('catalog/eav_attribute')
|
| 106 |
+
->loadByCode($entity,$attributeCode);
|
| 107 |
+
$isDefaultAttr = Mage::getModel('googlemerchants/googlefeed')->isDefaultAttributeCode($attributeCode);
|
| 108 |
+
if($attr->getId() || $isDefaultAttr){
|
| 109 |
+
return true;
|
| 110 |
+
}
|
| 111 |
+
return false;
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
/**
|
| 115 |
* @param int $nameIndex
|
| 116 |
* @return string
|
app/code/community/Web4pro/Googlemerchants/Block/Adminhtml/Googlecategory/Edit/Form.php
CHANGED
|
@@ -28,8 +28,8 @@ class Web4pro_Googlemerchants_Block_Adminhtml_Googlecategory_Edit_Form extends M
|
|
| 28 |
$form->setUseAjax(true);
|
| 29 |
$form->setUseContainer(true);
|
| 30 |
$this->setForm($form);
|
| 31 |
-
$fieldset = $form->addFieldset('googlemerchants_form', array('legend' => Mage::helper('googlemerchants')->__('Related store category')));
|
| 32 |
|
|
|
|
| 33 |
$fieldset->addField('category_to_linking', 'select', array(
|
| 34 |
'label' => Mage::helper('googlemerchants')->__('Select store category'),
|
| 35 |
'required' => false,
|
|
@@ -38,11 +38,8 @@ class Web4pro_Googlemerchants_Block_Adminhtml_Googlecategory_Edit_Form extends M
|
|
| 38 |
'disabled' => true,
|
| 39 |
));
|
| 40 |
|
| 41 |
-
$fieldset->addField('category_to_linking_submit', '
|
| 42 |
-
'
|
| 43 |
-
'value' => 'Save',
|
| 44 |
-
'onclick' => 'saveGCategoryLink()',
|
| 45 |
-
'disabled' => true,
|
| 46 |
));
|
| 47 |
return parent::_prepareForm();
|
| 48 |
}
|
|
@@ -52,9 +49,11 @@ class Web4pro_Googlemerchants_Block_Adminhtml_Googlecategory_Edit_Form extends M
|
|
| 52 |
*/
|
| 53 |
protected function _getStoreCategoriesOptions()
|
| 54 |
{
|
| 55 |
-
$
|
|
|
|
| 56 |
$categoriesCollection = Mage::getSingleton('catalog/category')->getCollection()
|
| 57 |
->addAttributeToSelect('*')
|
|
|
|
| 58 |
->addIsActiveFilter();
|
| 59 |
$retArray = array();
|
| 60 |
$retArray[0] = '';
|
|
@@ -64,7 +63,7 @@ class Web4pro_Googlemerchants_Block_Adminhtml_Googlecategory_Edit_Form extends M
|
|
| 64 |
if (in_array($catId, $rootCatIds)) {
|
| 65 |
continue;
|
| 66 |
}
|
| 67 |
-
$retArray[$catId] = $catName;
|
| 68 |
}
|
| 69 |
return $retArray;
|
| 70 |
}
|
| 28 |
$form->setUseAjax(true);
|
| 29 |
$form->setUseContainer(true);
|
| 30 |
$this->setForm($form);
|
|
|
|
| 31 |
|
| 32 |
+
$fieldset = $form->addFieldset('googlemerchants_form', array('legend' => Mage::helper('googlemerchants')->__('Related store category')));
|
| 33 |
$fieldset->addField('category_to_linking', 'select', array(
|
| 34 |
'label' => Mage::helper('googlemerchants')->__('Select store category'),
|
| 35 |
'required' => false,
|
| 38 |
'disabled' => true,
|
| 39 |
));
|
| 40 |
|
| 41 |
+
$fieldset->addField('category_to_linking_submit', 'label', array(
|
| 42 |
+
'after_element_html' => "<button id=\"category_to_linking_submit\" disabled type=\"button\" class=\"scalable save\" onclick=\"saveGCategoryLink(); return false;\" type=\"button\" title=\"Save\">Save</button>",
|
|
|
|
|
|
|
|
|
|
| 43 |
));
|
| 44 |
return parent::_prepareForm();
|
| 45 |
}
|
| 49 |
*/
|
| 50 |
protected function _getStoreCategoriesOptions()
|
| 51 |
{
|
| 52 |
+
$helper = Mage::helper('googlemerchants');
|
| 53 |
+
$rootCatIds = $helper->getRootCategoriesIds();
|
| 54 |
$categoriesCollection = Mage::getSingleton('catalog/category')->getCollection()
|
| 55 |
->addAttributeToSelect('*')
|
| 56 |
+
->setOrder('name','ASC')
|
| 57 |
->addIsActiveFilter();
|
| 58 |
$retArray = array();
|
| 59 |
$retArray[0] = '';
|
| 63 |
if (in_array($catId, $rootCatIds)) {
|
| 64 |
continue;
|
| 65 |
}
|
| 66 |
+
$retArray[$catId] = $catName." (".$helper->__("Category")." ID: ".$catId.")";
|
| 67 |
}
|
| 68 |
return $retArray;
|
| 69 |
}
|
app/code/community/Web4pro/Googlemerchants/Block/Adminhtml/Googlecategory/Tree.php
CHANGED
|
@@ -129,4 +129,5 @@ class Web4pro_Googlemerchants_Block_Adminhtml_Googlecategory_Tree extends Mage_A
|
|
| 129 |
return Mage::helper("adminhtml")->getUrl('googlemerchants/googlemerchants/edit');
|
| 130 |
}
|
| 131 |
|
|
|
|
| 132 |
}
|
| 129 |
return Mage::helper("adminhtml")->getUrl('googlemerchants/googlemerchants/edit');
|
| 130 |
}
|
| 131 |
|
| 132 |
+
|
| 133 |
}
|
app/code/community/Web4pro/Googlemerchants/Block/Adminhtml/System/Instruction.php
CHANGED
|
@@ -20,7 +20,8 @@ class Web4pro_Googlemerchants_Block_Adminhtml_System_Instruction extends Mage_Ad
|
|
| 20 |
<li><p>And the last step is setting up feed. You need to choose necessary attributes, which you would like to import.</p>
|
| 21 |
<p>Go to <a href="' . $this->_getFeedSettingsUrl() . '">Web4pro → Manage Google Merchants settings → Configure Feed settings </a>:
|
| 22 |
and setup all necessary attributes according to <a href="https://support.google.com/merchants/answer/188494" target="_blank">feed specification</a>:</p>
|
| 23 |
-
<
|
|
|
|
| 24 |
</li>
|
| 25 |
|
| 26 |
<li>Set up necessary settings of importing products (Web4pro → Manage Google Merchants settings → Manage Google Merchants settings -> Manage Google Feed settings) ↓ :
|
| 20 |
<li><p>And the last step is setting up feed. You need to choose necessary attributes, which you would like to import.</p>
|
| 21 |
<p>Go to <a href="' . $this->_getFeedSettingsUrl() . '">Web4pro → Manage Google Merchants settings → Configure Feed settings </a>:
|
| 22 |
and setup all necessary attributes according to <a href="https://support.google.com/merchants/answer/188494" target="_blank">feed specification</a>:</p>
|
| 23 |
+
<p><b>Please Note:</b> some fields in google feen need the postfix or the prefix to be setted.</p>
|
| 24 |
+
<img src="https://docs.google.com/drawings/d/1ZDkUUOBwtkLoFHrifmgSgzM87wln1qNlAuwJ6M5vzJw/pub?w=854&h=615" alt="Set up feed settings" width="650">
|
| 25 |
</li>
|
| 26 |
|
| 27 |
<li>Set up necessary settings of importing products (Web4pro → Manage Google Merchants settings → Manage Google Merchants settings -> Manage Google Feed settings) ↓ :
|
app/code/community/Web4pro/Googlemerchants/Block/Adminhtml/Upload/Link/Renderer.php
CHANGED
|
@@ -28,7 +28,7 @@ class Web4pro_Googlemerchants_Block_Adminhtml_Upload_Link_Renderer extends Varie
|
|
| 28 |
$html = '<div>
|
| 29 |
<h3>Import google categories in two easy steps:</h3>
|
| 30 |
<ul style="list-style-type: circle;">
|
| 31 |
-
<li><p>1. Download file with google merchants categories <a href="https://support.google.com/merchants/answer/160081">here:</a></p>
|
| 32 |
<div id="upload-hint-image">
|
| 33 |
<img src="https://docs.google.com/drawings/d/1WB73TBx5S7Q9gfRzzh98BR_qLaHWGn8zJ-1KrKXhcvA/pub?w=749&h=462" alt="Download file with categories">
|
| 34 |
</div>
|
| 28 |
$html = '<div>
|
| 29 |
<h3>Import google categories in two easy steps:</h3>
|
| 30 |
<ul style="list-style-type: circle;">
|
| 31 |
+
<li><p>1. Download file with google merchants categories <a href="https://support.google.com/merchants/answer/160081" target="_blank">here:</a></p>
|
| 32 |
<div id="upload-hint-image">
|
| 33 |
<img src="https://docs.google.com/drawings/d/1WB73TBx5S7Q9gfRzzh98BR_qLaHWGn8zJ-1KrKXhcvA/pub?w=749&h=462" alt="Download file with categories">
|
| 34 |
</div>
|
app/code/community/Web4pro/Googlemerchants/Helper/Data.php
CHANGED
|
@@ -238,4 +238,11 @@ class Web4pro_Googlemerchants_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 238 |
return $postParam;
|
| 239 |
}
|
| 240 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 241 |
}
|
| 238 |
return $postParam;
|
| 239 |
}
|
| 240 |
|
| 241 |
+
public function getCurrentStoreId()
|
| 242 |
+
{
|
| 243 |
+
$storeId = Mage::app()->getRequest()->getParam('store');
|
| 244 |
+
return $storeId;
|
| 245 |
+
}
|
| 246 |
+
|
| 247 |
+
|
| 248 |
}
|
app/code/community/Web4pro/Googlemerchants/Model/Googlefeed.php
CHANGED
|
@@ -12,26 +12,12 @@
|
|
| 12 |
*/
|
| 13 |
class Web4pro_Googlemerchants_Model_Googlefeed extends Mage_Core_Model_Abstract
|
| 14 |
{
|
| 15 |
-
protected $_attributesArray = NULL, $_productCollection = NULL, $_helper = NULL, $_byCron = false,
|
| 16 |
$_path = 'googlemerchants_options/general/google_feed_prameters',
|
| 17 |
$_notAttachedCategoriesExists = false, $_attributesCollection,
|
| 18 |
-
$_defaultParameters = array(
|
| 19 |
-
array('value' => 'id', 'selected' => 'product_id'),
|
| 20 |
-
array('value' => 'title', 'selected' => 'name'),
|
| 21 |
-
array('value' => 'description', 'selected' => 'description'),
|
| 22 |
-
array('value' => 'price', 'selected' => 'price'),
|
| 23 |
-
array('value' => 'condition', 'selected' => 'condition_google'),
|
| 24 |
-
array('value' => 'image link', 'selected' => 'image'),
|
| 25 |
-
array('value' => 'gtin', 'selected' => 'gtin_google'),
|
| 26 |
-
array('value' => 'color', 'selected' => 'color'),
|
| 27 |
-
array('value' => 'size', 'selected' => 'size'),
|
| 28 |
-
array('value' => 'mpn', 'selected' => 'mpn_google'),
|
| 29 |
-
array('value' => 'category', 'selected' => 'google_category'),
|
| 30 |
-
array('value' => 'tax', 'selected' => 'google_tax'),
|
| 31 |
-
array('value' => 'link', 'selected' => 'google_product_link'),
|
| 32 |
-
array('value' => 'availability', 'selected' => 'google_availability')),
|
| 33 |
|
| 34 |
-
$_defaultOptionValues = array(
|
| 35 |
array('code' => 'product_id', 'label' => 'Product ID'),
|
| 36 |
array('code' => 'google_category', 'label' => 'Google Category'),
|
| 37 |
array('code' => 'shipping_cost', 'label' => 'Shipping Cost'),
|
|
@@ -49,6 +35,37 @@ class Web4pro_Googlemerchants_Model_Googlefeed extends Mage_Core_Model_Abstract
|
|
| 49 |
$this->_helper = Mage::helper('googlemerchants');
|
| 50 |
$this->_setProductsCollection();
|
| 51 |
$this->_appendStoreFilter();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 52 |
}
|
| 53 |
|
| 54 |
/**
|
|
@@ -58,12 +75,35 @@ class Web4pro_Googlemerchants_Model_Googlefeed extends Mage_Core_Model_Abstract
|
|
| 58 |
{
|
| 59 |
if ($this->_productCollection === NULL) {
|
| 60 |
$collection = Mage::getResourceModel('catalog/product_collection')->addAttributeToFilter('visibility', array('in' => array(1, 2, 3, 4)))->addAttributeToSelect('*');
|
| 61 |
-
//$collection->setStoreId();
|
| 62 |
$this->_productCollection = $collection;
|
| 63 |
}
|
| 64 |
$this->_setCollectionConfigConditions();
|
| 65 |
}
|
| 66 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 67 |
/**
|
| 68 |
* @return null
|
| 69 |
*/
|
|
@@ -110,21 +150,24 @@ class Web4pro_Googlemerchants_Model_Googlefeed extends Mage_Core_Model_Abstract
|
|
| 110 |
foreach ($this->_productCollection as $product) {
|
| 111 |
$productArray = array();
|
| 112 |
foreach ($attributes as $attribute) {
|
| 113 |
-
$attributeCode = $attribute['selected'];
|
|
|
|
|
|
|
| 114 |
switch ($attributeCode) {
|
| 115 |
case 'product_id' :
|
| 116 |
$attributeCode = 'entity_id';
|
| 117 |
-
$
|
|
|
|
| 118 |
break;
|
| 119 |
case 'google_category' :
|
| 120 |
$categoriesStr = $googleCategoriesModel->getCategoriesStr($product->getCategoryIds());
|
| 121 |
if (empty($categoriesStr)) {
|
| 122 |
$this->_notAttachedCategoriesExists = true;
|
| 123 |
}
|
| 124 |
-
$productArray [] = $categoriesStr;
|
| 125 |
break;
|
| 126 |
case 'shipping_cost' :
|
| 127 |
-
$productArray [] = $googleShippingModel->getShippingCost($product);
|
| 128 |
break;
|
| 129 |
case 'image' :
|
| 130 |
$image = '';
|
|
@@ -137,26 +180,30 @@ class Web4pro_Googlemerchants_Model_Googlefeed extends Mage_Core_Model_Abstract
|
|
| 137 |
Mage::logException($e);
|
| 138 |
}
|
| 139 |
if(is_string($image)) {
|
| 140 |
-
$productArray [] = $image;
|
| 141 |
}
|
| 142 |
else {
|
| 143 |
-
$productArray [] = '';
|
| 144 |
}
|
| 145 |
break;
|
| 146 |
case 'parent_name' :
|
| 147 |
-
$
|
|
|
|
| 148 |
break;
|
| 149 |
case 'google_tax' :
|
| 150 |
-
$
|
|
|
|
| 151 |
break;
|
| 152 |
case 'google_product_link':
|
| 153 |
-
$
|
|
|
|
| 154 |
break;
|
| 155 |
case 'none':
|
| 156 |
-
$productArray [] = '';
|
| 157 |
break;
|
| 158 |
case 'price':
|
| 159 |
-
$
|
|
|
|
| 160 |
break;
|
| 161 |
case 'google_availability':
|
| 162 |
|
|
@@ -166,12 +213,14 @@ class Web4pro_Googlemerchants_Model_Googlefeed extends Mage_Core_Model_Abstract
|
|
| 166 |
} else {
|
| 167 |
$stockStatus = 'out of stock';
|
| 168 |
}
|
| 169 |
-
$productArray [] = $stockStatus;
|
| 170 |
break;
|
| 171 |
default :
|
| 172 |
$attribute = $product->getResource()->getAttribute($attributeCode);
|
| 173 |
if ($attribute instanceof Mage_Catalog_Model_Resource_Eav_Attribute) {
|
| 174 |
-
$
|
|
|
|
|
|
|
| 175 |
}
|
| 176 |
break;
|
| 177 |
}
|
|
@@ -189,6 +238,22 @@ class Web4pro_Googlemerchants_Model_Googlefeed extends Mage_Core_Model_Abstract
|
|
| 189 |
fclose($file);
|
| 190 |
}
|
| 191 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 192 |
/**
|
| 193 |
* @param $path
|
| 194 |
* @return mixed
|
|
@@ -216,13 +281,11 @@ class Web4pro_Googlemerchants_Model_Googlefeed extends Mage_Core_Model_Abstract
|
|
| 216 |
{
|
| 217 |
$selectionStore = $this->_helper->getSelectedStore();
|
| 218 |
$feedConfig = Mage::getStoreConfig('googlemerchants_options/general/google_feed_prameters', $selectionStore);
|
|
|
|
| 219 |
$feedConfig = unserialize($feedConfig);
|
| 220 |
if (empty($feedConfig)) {
|
| 221 |
return $this->_defaultParameters;
|
| 222 |
}
|
| 223 |
-
if (empty($feedConfig)) {
|
| 224 |
-
return $this->_defaultParameters;
|
| 225 |
-
}
|
| 226 |
$resArr = array();
|
| 227 |
foreach ($feedConfig as $key => $field) {
|
| 228 |
$resArr [] = array('value' => $key, 'selected' => $field);
|
|
@@ -254,19 +317,18 @@ class Web4pro_Googlemerchants_Model_Googlefeed extends Mage_Core_Model_Abstract
|
|
| 254 |
*/
|
| 255 |
protected function _setCollectionConfigConditions()
|
| 256 |
{
|
| 257 |
-
$
|
| 258 |
-
$
|
| 259 |
$unvisibleCondition = Mage::getStoreConfig('googlemerchants_options/general/google_feed_export_unvisible');
|
| 260 |
-
if ($
|
| 261 |
$this->_productCollection->addAttributeToFilter('status', array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED));
|
| 262 |
}
|
| 263 |
-
if ($
|
| 264 |
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($this->_productCollection);
|
| 265 |
}
|
| 266 |
if ($unvisibleCondition != 1) {
|
| 267 |
$this->_productCollection->addAttributeToFilter('visibility', 4);
|
| 268 |
}
|
| 269 |
-
|
| 270 |
}
|
| 271 |
|
| 272 |
/**
|
|
@@ -292,7 +354,9 @@ class Web4pro_Googlemerchants_Model_Googlefeed extends Mage_Core_Model_Abstract
|
|
| 292 |
public function generateFeedByCron()
|
| 293 |
{
|
| 294 |
$this->_byCron = true;
|
| 295 |
-
$this->
|
|
|
|
|
|
|
| 296 |
}
|
| 297 |
|
| 298 |
/**
|
|
@@ -303,7 +367,9 @@ class Web4pro_Googlemerchants_Model_Googlefeed extends Mage_Core_Model_Abstract
|
|
| 303 |
if ($this->_attributesCollection === NULL)
|
| 304 |
$this->_attributesCollection = Mage::getResourceModel('eav/entity_attribute_collection')
|
| 305 |
->setItemObjectClass('catalog/resource_eav_attribute')
|
| 306 |
-
->setEntityTypeFilter(Mage::getResourceModel('catalog/product')->getTypeId())
|
|
|
|
|
|
|
| 307 |
return $this->_attributesCollection;
|
| 308 |
}
|
| 309 |
|
|
@@ -317,8 +383,6 @@ class Web4pro_Googlemerchants_Model_Googlefeed extends Mage_Core_Model_Abstract
|
|
| 317 |
$selectedStore = Mage::getModel("core/store")->load($storeCode);
|
| 318 |
}
|
| 319 |
$this->_productCollection->setStore($selectedStore->getId());
|
| 320 |
-
$this->_productCollection->setPageSize(20)
|
| 321 |
-
->setCurPage(1);
|
| 322 |
}
|
| 323 |
|
| 324 |
}
|
| 12 |
*/
|
| 13 |
class Web4pro_Googlemerchants_Model_Googlefeed extends Mage_Core_Model_Abstract
|
| 14 |
{
|
| 15 |
+
protected $_attributesArray = NULL, $_productCollection = NULL, $_helper = NULL, $_shouldGenerateFeedByCron = false, $_byCron = false,
|
| 16 |
$_path = 'googlemerchants_options/general/google_feed_prameters',
|
| 17 |
$_notAttachedCategoriesExists = false, $_attributesCollection,
|
| 18 |
+
$_defaultParameters = array();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
|
| 20 |
+
protected $_defaultOptionValues = array(
|
| 21 |
array('code' => 'product_id', 'label' => 'Product ID'),
|
| 22 |
array('code' => 'google_category', 'label' => 'Google Category'),
|
| 23 |
array('code' => 'shipping_cost', 'label' => 'Shipping Cost'),
|
| 35 |
$this->_helper = Mage::helper('googlemerchants');
|
| 36 |
$this->_setProductsCollection();
|
| 37 |
$this->_appendStoreFilter();
|
| 38 |
+
$this->_shouldGenerateFeedByCron = Mage::getStoreConfig('googlemerchants_options/general/google_generate_feed_by_cron');
|
| 39 |
+
$countryPref = $this->_getCountryPrefix();
|
| 40 |
+
$this->_defaultParameters = array(
|
| 41 |
+
array('value' => 'id', 'selected' => array('value' => 'product_id', 'pref' => '', 'postf' => '')),
|
| 42 |
+
array('value' => 'title', 'selected' => array('value' => 'name', 'pref' => '', 'postf' => '')),
|
| 43 |
+
array('value' => 'description', 'selected' => array('value' => 'description', 'pref' => '', 'postf' => '')),
|
| 44 |
+
array('value' => 'price', 'selected' => array('value' => 'price', 'pref' => '', 'postf' => '')),
|
| 45 |
+
array('value' => 'condition', 'selected' => array('value' => 'condition_google', 'pref' => '', 'postf' => '')),
|
| 46 |
+
array('value' => 'image link', 'selected' => array('value' => 'image', 'pref' => '', 'postf' => '')),
|
| 47 |
+
array('value' => 'gtin', 'selected' => array('value' => 'gtin_google', 'pref' => '', 'postf' => '')),
|
| 48 |
+
array('value' => 'color', 'selected' => array('value' => 'color', 'pref' => '', 'postf' => '')),
|
| 49 |
+
array('value' => 'size', 'selected' => array('value' => 'size', 'pref' => '', 'postf' => '')),
|
| 50 |
+
array('value' => 'mpn', 'selected' => array('value' => 'mpn_google', 'pref' => '', 'postf' => '')),
|
| 51 |
+
array('value' => 'category', 'selected' => array('value' => 'google_category', 'pref' => '', 'postf' => '')),
|
| 52 |
+
array('value' => 'tax', 'selected' => array('value' => 'google_tax', 'pref' => $countryPref, 'postf' => '')),
|
| 53 |
+
array('value' => 'link', 'selected' => array('value' => 'google_product_link', 'pref' => '', 'postf' => '')),
|
| 54 |
+
array('value' => 'availability', 'selected' => array('value' => 'google_availability', 'pref' => '', 'postf' => '')),
|
| 55 |
+
array('value' => 'shipping', 'selected' => array('value' => 'shipping_cost', 'pref' => $countryPref, 'postf' => '')));
|
| 56 |
+
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
/**
|
| 60 |
+
* Getting default country code
|
| 61 |
+
* @return string
|
| 62 |
+
*/
|
| 63 |
+
|
| 64 |
+
protected function _getCountryPrefix()
|
| 65 |
+
{
|
| 66 |
+
$storeId = $this->_helper->getCurrentStoreId();
|
| 67 |
+
$countryCode = Mage::getStoreConfig('general/country/default', $storeId);
|
| 68 |
+
return $countryCode.'::';
|
| 69 |
}
|
| 70 |
|
| 71 |
/**
|
| 75 |
{
|
| 76 |
if ($this->_productCollection === NULL) {
|
| 77 |
$collection = Mage::getResourceModel('catalog/product_collection')->addAttributeToFilter('visibility', array('in' => array(1, 2, 3, 4)))->addAttributeToSelect('*');
|
|
|
|
| 78 |
$this->_productCollection = $collection;
|
| 79 |
}
|
| 80 |
$this->_setCollectionConfigConditions();
|
| 81 |
}
|
| 82 |
|
| 83 |
+
/**
|
| 84 |
+
* Checking if attribute is default
|
| 85 |
+
* @param $attributeCode
|
| 86 |
+
* @return bool
|
| 87 |
+
*/
|
| 88 |
+
|
| 89 |
+
public function isDefaultAttributeCode($attributeCode)
|
| 90 |
+
{
|
| 91 |
+
$isDefaultOptionValue = false;
|
| 92 |
+
$isDefaultParameter = false;
|
| 93 |
+
foreach($this->_defaultOptionValues as $val){
|
| 94 |
+
if($val['code'] == $attributeCode){
|
| 95 |
+
$isDefaultOptionValue = true;
|
| 96 |
+
}
|
| 97 |
+
}
|
| 98 |
+
|
| 99 |
+
foreach($this->_defaultParameters as $param){
|
| 100 |
+
if($param['selected'] == $attributeCode){
|
| 101 |
+
$isDefaultParameter = true;
|
| 102 |
+
}
|
| 103 |
+
}
|
| 104 |
+
return ($isDefaultParameter || $isDefaultOptionValue);
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
/**
|
| 108 |
* @return null
|
| 109 |
*/
|
| 150 |
foreach ($this->_productCollection as $product) {
|
| 151 |
$productArray = array();
|
| 152 |
foreach ($attributes as $attribute) {
|
| 153 |
+
$attributeCode = $attribute['selected']['value'];
|
| 154 |
+
$pref = $attribute['selected']['pref'];
|
| 155 |
+
$postf = $attribute['selected']['postf'];
|
| 156 |
switch ($attributeCode) {
|
| 157 |
case 'product_id' :
|
| 158 |
$attributeCode = 'entity_id';
|
| 159 |
+
$entityId = $product->getData($attributeCode);
|
| 160 |
+
$productArray [] = $this->_appendPrefPostf($pref, $postf, $entityId);
|
| 161 |
break;
|
| 162 |
case 'google_category' :
|
| 163 |
$categoriesStr = $googleCategoriesModel->getCategoriesStr($product->getCategoryIds());
|
| 164 |
if (empty($categoriesStr)) {
|
| 165 |
$this->_notAttachedCategoriesExists = true;
|
| 166 |
}
|
| 167 |
+
$productArray [] = $this->_appendPrefPostf($pref, $postf,$categoriesStr);
|
| 168 |
break;
|
| 169 |
case 'shipping_cost' :
|
| 170 |
+
$productArray [] = $this->_appendPrefPostf($pref, $postf, $googleShippingModel->getShippingCost($product));
|
| 171 |
break;
|
| 172 |
case 'image' :
|
| 173 |
$image = '';
|
| 180 |
Mage::logException($e);
|
| 181 |
}
|
| 182 |
if(is_string($image)) {
|
| 183 |
+
$productArray [] = $this->_appendPrefPostf($pref, $postf, $image);
|
| 184 |
}
|
| 185 |
else {
|
| 186 |
+
$productArray [] = $this->_appendPrefPostf($pref, $postf, '');
|
| 187 |
}
|
| 188 |
break;
|
| 189 |
case 'parent_name' :
|
| 190 |
+
$parentName = $this->_helper->getParentName($product);
|
| 191 |
+
$productArray [] = $this->_appendPrefPostf($pref, $postf, $parentName);
|
| 192 |
break;
|
| 193 |
case 'google_tax' :
|
| 194 |
+
$taxValue = Mage::getModel('googlemerchants/googletax')->getTaxValue($product);
|
| 195 |
+
$productArray [] = $this->_appendPrefPostf($pref, $postf, $taxValue);
|
| 196 |
break;
|
| 197 |
case 'google_product_link':
|
| 198 |
+
$productUrl = $this->_helper->getProductUrl($product);
|
| 199 |
+
$productArray [] = $this->_appendPrefPostf($pref, $postf, $productUrl);
|
| 200 |
break;
|
| 201 |
case 'none':
|
| 202 |
+
$productArray [] = $this->_appendPrefPostf($pref, $postf, '');
|
| 203 |
break;
|
| 204 |
case 'price':
|
| 205 |
+
$minPrice = $this->_helper->getMinPrice($product);
|
| 206 |
+
$productArray [] = $this->_appendPrefPostf($pref, $postf, $minPrice);
|
| 207 |
break;
|
| 208 |
case 'google_availability':
|
| 209 |
|
| 213 |
} else {
|
| 214 |
$stockStatus = 'out of stock';
|
| 215 |
}
|
| 216 |
+
$productArray [] = $this->_appendPrefPostf($pref, $postf, $stockStatus);
|
| 217 |
break;
|
| 218 |
default :
|
| 219 |
$attribute = $product->getResource()->getAttribute($attributeCode);
|
| 220 |
if ($attribute instanceof Mage_Catalog_Model_Resource_Eav_Attribute) {
|
| 221 |
+
$attributeValue = $attribute->getFrontend()->getValue($product);
|
| 222 |
+
$value = $this->_appendPrefPostf($pref, $postf, $attributeValue);
|
| 223 |
+
$productArray [] = $value;
|
| 224 |
}
|
| 225 |
break;
|
| 226 |
}
|
| 238 |
fclose($file);
|
| 239 |
}
|
| 240 |
|
| 241 |
+
/**
|
| 242 |
+
*
|
| 243 |
+
* @param $prefix
|
| 244 |
+
* @param $postfix
|
| 245 |
+
* @param $value
|
| 246 |
+
* @return string
|
| 247 |
+
*/
|
| 248 |
+
|
| 249 |
+
protected function _appendPrefPostf($prefix, $postfix, $value)
|
| 250 |
+
{
|
| 251 |
+
if(is_array($value)){
|
| 252 |
+
$value = implode('',$value);
|
| 253 |
+
}
|
| 254 |
+
return $prefix.$value.$postfix;
|
| 255 |
+
}
|
| 256 |
+
|
| 257 |
/**
|
| 258 |
* @param $path
|
| 259 |
* @return mixed
|
| 281 |
{
|
| 282 |
$selectionStore = $this->_helper->getSelectedStore();
|
| 283 |
$feedConfig = Mage::getStoreConfig('googlemerchants_options/general/google_feed_prameters', $selectionStore);
|
| 284 |
+
$feedConfig = trim($feedConfig);
|
| 285 |
$feedConfig = unserialize($feedConfig);
|
| 286 |
if (empty($feedConfig)) {
|
| 287 |
return $this->_defaultParameters;
|
| 288 |
}
|
|
|
|
|
|
|
|
|
|
| 289 |
$resArr = array();
|
| 290 |
foreach ($feedConfig as $key => $field) {
|
| 291 |
$resArr [] = array('value' => $key, 'selected' => $field);
|
| 317 |
*/
|
| 318 |
protected function _setCollectionConfigConditions()
|
| 319 |
{
|
| 320 |
+
$onlyInStockCondition = Mage::getStoreConfig('googlemerchants_options/general/google_feed_export_outofstock');
|
| 321 |
+
$onlyEabledCondition = Mage::getStoreConfig('googlemerchants_options/general/google_feed_export_disabled');
|
| 322 |
$unvisibleCondition = Mage::getStoreConfig('googlemerchants_options/general/google_feed_export_unvisible');
|
| 323 |
+
if ($onlyEabledCondition == 0) {
|
| 324 |
$this->_productCollection->addAttributeToFilter('status', array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED));
|
| 325 |
}
|
| 326 |
+
if ($onlyInStockCondition == 0) {
|
| 327 |
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($this->_productCollection);
|
| 328 |
}
|
| 329 |
if ($unvisibleCondition != 1) {
|
| 330 |
$this->_productCollection->addAttributeToFilter('visibility', 4);
|
| 331 |
}
|
|
|
|
| 332 |
}
|
| 333 |
|
| 334 |
/**
|
| 354 |
public function generateFeedByCron()
|
| 355 |
{
|
| 356 |
$this->_byCron = true;
|
| 357 |
+
if($this->_shouldGenerateFeedByCron){
|
| 358 |
+
$this->generateFeed();
|
| 359 |
+
}
|
| 360 |
}
|
| 361 |
|
| 362 |
/**
|
| 367 |
if ($this->_attributesCollection === NULL)
|
| 368 |
$this->_attributesCollection = Mage::getResourceModel('eav/entity_attribute_collection')
|
| 369 |
->setItemObjectClass('catalog/resource_eav_attribute')
|
| 370 |
+
->setEntityTypeFilter(Mage::getResourceModel('catalog/product')->getTypeId())
|
| 371 |
+
->setOrder('frontend_label','ASC');
|
| 372 |
+
|
| 373 |
return $this->_attributesCollection;
|
| 374 |
}
|
| 375 |
|
| 383 |
$selectedStore = Mage::getModel("core/store")->load($storeCode);
|
| 384 |
}
|
| 385 |
$this->_productCollection->setStore($selectedStore->getId());
|
|
|
|
|
|
|
| 386 |
}
|
| 387 |
|
| 388 |
}
|
app/code/community/Web4pro/Googlemerchants/controllers/Adminhtml/GooglemerchantsController.php
CHANGED
|
@@ -40,6 +40,7 @@ class Web4pro_Googlemerchants_Adminhtml_GooglemerchantsController extends Mage_A
|
|
| 40 |
}
|
| 41 |
$this->_redirect('adminhtml/googlemerchants/downloadtxt');
|
| 42 |
}
|
|
|
|
| 43 |
$this->_initAction();
|
| 44 |
$this->renderLayout();
|
| 45 |
|
|
@@ -136,11 +137,12 @@ class Web4pro_Googlemerchants_Adminhtml_GooglemerchantsController extends Mage_A
|
|
| 136 |
$googleCategory = $model->load($post['google_category_id']);
|
| 137 |
$googleCategoryName = $googleCategory->getTitle();
|
| 138 |
$googleCategory->setStoreCatId($post['store_category_id']);
|
|
|
|
| 139 |
$storeCategory = Mage::getModel('catalog/category')->load($post['store_category_id']);
|
| 140 |
$storeCategoryName = $storeCategory->getName();
|
| 141 |
$googleCategory->save();
|
| 142 |
-
$this->
|
| 143 |
-
Mage::
|
| 144 |
}
|
| 145 |
}
|
| 146 |
} else {
|
|
@@ -171,6 +173,7 @@ class Web4pro_Googlemerchants_Adminhtml_GooglemerchantsController extends Mage_A
|
|
| 171 |
$responce['store_category_id'] = $storeCatId;
|
| 172 |
$responce['is_root'] = false;
|
| 173 |
}
|
|
|
|
| 174 |
}
|
| 175 |
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($responce));
|
| 176 |
} else {
|
|
@@ -213,8 +216,10 @@ class Web4pro_Googlemerchants_Adminhtml_GooglemerchantsController extends Mage_A
|
|
| 213 |
$valuesToSave = array();
|
| 214 |
$names = $post['feed-col-name'];
|
| 215 |
$values = $post['attribute-select'];
|
|
|
|
|
|
|
| 216 |
foreach ($names as $key => $value) {
|
| 217 |
-
$valuesToSave [$value] = $values[$key];
|
| 218 |
}
|
| 219 |
Mage::getModel('googlemerchants/googlefeed')->setFeedConfig($valuesToSave, $storeCode);
|
| 220 |
$result['error'] = false;
|
|
@@ -227,7 +232,7 @@ class Web4pro_Googlemerchants_Adminhtml_GooglemerchantsController extends Mage_A
|
|
| 227 |
if ($this->getRequest()->isAjax()) {
|
| 228 |
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
|
| 229 |
} else {
|
| 230 |
-
$this->_redirect('adminhtml/googlemerchants/feed');
|
| 231 |
if(!$result['error'])
|
| 232 |
{
|
| 233 |
Mage::getSingleton('core/session')->addSuccess('Feed configuration has been saved.');
|
|
@@ -273,6 +278,8 @@ class Web4pro_Googlemerchants_Adminhtml_GooglemerchantsController extends Mage_A
|
|
| 273 |
|
| 274 |
public function clearGoogleCategoriesAction()
|
| 275 |
{
|
|
|
|
|
|
|
| 276 |
Mage::getModel('googlemerchants/googlecategory')->truncateCategoriesTable();
|
| 277 |
$this->_redirect('adminhtml/googlemerchants/downloadtxt');
|
| 278 |
}
|
| 40 |
}
|
| 41 |
$this->_redirect('adminhtml/googlemerchants/downloadtxt');
|
| 42 |
}
|
| 43 |
+
Mage::getSingleton('core/session')->addNotice('Please append all store categories to google categories.');
|
| 44 |
$this->_initAction();
|
| 45 |
$this->renderLayout();
|
| 46 |
|
| 137 |
$googleCategory = $model->load($post['google_category_id']);
|
| 138 |
$googleCategoryName = $googleCategory->getTitle();
|
| 139 |
$googleCategory->setStoreCatId($post['store_category_id']);
|
| 140 |
+
|
| 141 |
$storeCategory = Mage::getModel('catalog/category')->load($post['store_category_id']);
|
| 142 |
$storeCategoryName = $storeCategory->getName();
|
| 143 |
$googleCategory->save();
|
| 144 |
+
$messageBlockHtml = $this->getLayout()->createBlock('core/messages')->addSuccess('Google category "' . $googleCategoryName . '" has been attached to store category "' . $storeCategoryName . '."')->toHtml();
|
| 145 |
+
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array('error' => 'false', 'message_block_html' => '<div class="ajax-msg">'.$messageBlockHtml.'</div>')));
|
| 146 |
}
|
| 147 |
}
|
| 148 |
} else {
|
| 173 |
$responce['store_category_id'] = $storeCatId;
|
| 174 |
$responce['is_root'] = false;
|
| 175 |
}
|
| 176 |
+
|
| 177 |
}
|
| 178 |
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($responce));
|
| 179 |
} else {
|
| 216 |
$valuesToSave = array();
|
| 217 |
$names = $post['feed-col-name'];
|
| 218 |
$values = $post['attribute-select'];
|
| 219 |
+
$prefixes = $post['feed-pref-name'];
|
| 220 |
+
$postfixes = $post['feed-postf-name'];
|
| 221 |
foreach ($names as $key => $value) {
|
| 222 |
+
$valuesToSave [$value] = array('value' => $values[$key], 'pref' => $prefixes[$key], 'postf' => $postfixes[$key]);
|
| 223 |
}
|
| 224 |
Mage::getModel('googlemerchants/googlefeed')->setFeedConfig($valuesToSave, $storeCode);
|
| 225 |
$result['error'] = false;
|
| 232 |
if ($this->getRequest()->isAjax()) {
|
| 233 |
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
|
| 234 |
} else {
|
| 235 |
+
$this->_redirect('adminhtml/googlemerchants/feed/store/'.$storeCode);
|
| 236 |
if(!$result['error'])
|
| 237 |
{
|
| 238 |
Mage::getSingleton('core/session')->addSuccess('Feed configuration has been saved.');
|
| 278 |
|
| 279 |
public function clearGoogleCategoriesAction()
|
| 280 |
{
|
| 281 |
+
Mage::getSingleton('adminhtml/session')->setLatestSelectedGoogleCategoryId(NULL);
|
| 282 |
+
Mage::getSingleton('adminhtml/session')->setLatestSelectedStoreCategoryId(NULL);
|
| 283 |
Mage::getModel('googlemerchants/googlecategory')->truncateCategoriesTable();
|
| 284 |
$this->_redirect('adminhtml/googlemerchants/downloadtxt');
|
| 285 |
}
|
app/code/community/Web4pro/Googlemerchants/etc/adminhtml.xml
CHANGED
|
@@ -13,7 +13,7 @@
|
|
| 13 |
-->
|
| 14 |
<config>
|
| 15 |
<menu>
|
| 16 |
-
<web4pro_attachments
|
| 17 |
<title>Web4pro</title>
|
| 18 |
<sort_order>71</sort_order>
|
| 19 |
<children>
|
|
@@ -27,7 +27,7 @@
|
|
| 27 |
<action>adminhtml/googlemerchants/index</action>
|
| 28 |
</googlecategories>
|
| 29 |
<googleshipping>
|
| 30 |
-
<title>
|
| 31 |
<sort_order>1</sort_order>
|
| 32 |
<action>adminhtml/system_config/edit/section/googlemerchants_options</action>
|
| 33 |
</googleshipping>
|
| 13 |
-->
|
| 14 |
<config>
|
| 15 |
<menu>
|
| 16 |
+
<web4pro_attachments>
|
| 17 |
<title>Web4pro</title>
|
| 18 |
<sort_order>71</sort_order>
|
| 19 |
<children>
|
| 27 |
<action>adminhtml/googlemerchants/index</action>
|
| 28 |
</googlecategories>
|
| 29 |
<googleshipping>
|
| 30 |
+
<title>Google merchant options</title>
|
| 31 |
<sort_order>1</sort_order>
|
| 32 |
<action>adminhtml/system_config/edit/section/googlemerchants_options</action>
|
| 33 |
</googleshipping>
|
app/code/community/Web4pro/Googlemerchants/etc/system.xml
CHANGED
|
@@ -96,15 +96,24 @@
|
|
| 96 |
<show_in_website>1</show_in_website>
|
| 97 |
<show_in_store>1</show_in_store>
|
| 98 |
</google_feed_export_unvisible>
|
| 99 |
-
<
|
| 100 |
-
<label>
|
|
|
|
| 101 |
<frontend_type>select</frontend_type>
|
| 102 |
-
<source_model>googlemerchants/storefeedconfig</source_model>
|
| 103 |
<sort_order>6</sort_order>
|
| 104 |
<show_in_default>1</show_in_default>
|
| 105 |
<show_in_website>1</show_in_website>
|
| 106 |
<show_in_store>1</show_in_store>
|
| 107 |
-
</
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 108 |
|
| 109 |
<google_shiping_html_notes translate="label">
|
| 110 |
<comment>
|
| 96 |
<show_in_website>1</show_in_website>
|
| 97 |
<show_in_store>1</show_in_store>
|
| 98 |
</google_feed_export_unvisible>
|
| 99 |
+
<google_feed_export_unvisible translate="label">
|
| 100 |
+
<label>Generate feed by cron</label>
|
| 101 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 102 |
<frontend_type>select</frontend_type>
|
|
|
|
| 103 |
<sort_order>6</sort_order>
|
| 104 |
<show_in_default>1</show_in_default>
|
| 105 |
<show_in_website>1</show_in_website>
|
| 106 |
<show_in_store>1</show_in_store>
|
| 107 |
+
</google_feed_export_unvisible>
|
| 108 |
+
<google_generate_feed_by_cron>
|
| 109 |
+
<label>Select store for feed generation by cron</label>
|
| 110 |
+
<frontend_type>select</frontend_type>
|
| 111 |
+
<source_model>googlemerchants/storefeedconfig</source_model>
|
| 112 |
+
<sort_order>7</sort_order>
|
| 113 |
+
<show_in_default>1</show_in_default>
|
| 114 |
+
<show_in_website>1</show_in_website>
|
| 115 |
+
<show_in_store>1</show_in_store>
|
| 116 |
+
</google_generate_feed_by_cron>
|
| 117 |
|
| 118 |
<google_shiping_html_notes translate="label">
|
| 119 |
<comment>
|
app/design/adminhtml/default/default/layout/googlemerchants.xml
CHANGED
|
@@ -2,6 +2,7 @@
|
|
| 2 |
<layout>
|
| 3 |
<adminhtml_googlemerchants_index>
|
| 4 |
<reference name="head">
|
|
|
|
| 5 |
<action method="addItem">
|
| 6 |
<type>js</type>
|
| 7 |
<name>extjs/ext-tree.js</name>
|
|
@@ -48,8 +49,11 @@
|
|
| 48 |
</reference>
|
| 49 |
</adminhtml_googlemerchants_downloadtxt>
|
| 50 |
<adminhtml_googlemerchants_feed>
|
|
|
|
|
|
|
|
|
|
| 51 |
<reference name="left">
|
| 52 |
-
<block type="adminhtml/
|
| 53 |
</reference>
|
| 54 |
<reference name="content">
|
| 55 |
<block type="googlemerchants/adminhtml_editfeed">
|
| 2 |
<layout>
|
| 3 |
<adminhtml_googlemerchants_index>
|
| 4 |
<reference name="head">
|
| 5 |
+
<action method="addCss"><name>web4pro_googlemerchants/googlemerchants.css</name></action>
|
| 6 |
<action method="addItem">
|
| 7 |
<type>js</type>
|
| 8 |
<name>extjs/ext-tree.js</name>
|
| 49 |
</reference>
|
| 50 |
</adminhtml_googlemerchants_downloadtxt>
|
| 51 |
<adminhtml_googlemerchants_feed>
|
| 52 |
+
<reference name="head">
|
| 53 |
+
<action method="addCss"><name>web4pro_googlemerchants/googlemerchants.css</name></action>
|
| 54 |
+
</reference>
|
| 55 |
<reference name="left">
|
| 56 |
+
<block type="adminhtml/store_switcher" name="store_switcher" as="store_switcher" />
|
| 57 |
</reference>
|
| 58 |
<reference name="content">
|
| 59 |
<block type="googlemerchants/adminhtml_editfeed">
|
app/design/adminhtml/default/default/template/web4pro_googlemerchants/feed/form.phtml
CHANGED
|
@@ -22,16 +22,18 @@
|
|
| 22 |
</select>
|
| 23 |
</div>
|
| 24 |
*/ ?>
|
| 25 |
-
<table cellspacing="0" cellpadding="0" class="dynamic-grid" style="width:
|
| 26 |
<thead>
|
| 27 |
<tr class="headings">
|
| 28 |
<th style="width:160px;"><?php echo $this->__('Field Name')?></th>
|
| 29 |
-
<th width="40%"><?php echo $this->__('
|
|
|
|
|
|
|
| 30 |
<th style="width:40%;"><?php echo $this->__('Action')?></th>
|
| 31 |
</tr>
|
| 32 |
</thead>
|
| 33 |
<tbody id="mapping-table-body">
|
| 34 |
-
|
| 35 |
</tbody>
|
| 36 |
</table>
|
| 37 |
</br>
|
|
@@ -47,17 +49,29 @@
|
|
| 47 |
|
| 48 |
function removeRow(index) {
|
| 49 |
var currentRow = $('table-row-' + index);
|
| 50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
lastIndex = getLastIndex();
|
| 52 |
}
|
| 53 |
|
| 54 |
function addRow()
|
| 55 |
{
|
| 56 |
var indexTAppend = lastIndex + 1;
|
| 57 |
-
var rowHtml = '<tr id="table-row-' + indexTAppend + '"><td><input name="feed-col-name[' + indexTAppend + ']"/></td>';
|
| 58 |
-
rowHtml += '<td><
|
|
|
|
| 59 |
rowHtml += '<?php echo $this->getOptionsHtml()?>';
|
| 60 |
rowHtml += '</select></td>';
|
|
|
|
| 61 |
rowHtml += '<td><button type="button" onclick="removeRow(' + indexTAppend + ');" class="delete delete-option">Remove</button></td>';
|
| 62 |
var lastRowId = "table-row-" + lastIndex;
|
| 63 |
var elementToAppend = $(lastRowId);
|
| 22 |
</select>
|
| 23 |
</div>
|
| 24 |
*/ ?>
|
| 25 |
+
<table cellspacing="0" cellpadding="0" class="dynamic-grid" style="width:100%;" align="center">
|
| 26 |
<thead>
|
| 27 |
<tr class="headings">
|
| 28 |
<th style="width:160px;"><?php echo $this->__('Field Name')?></th>
|
| 29 |
+
<th width="40%"><?php echo $this->__('Prefix')?></th>
|
| 30 |
+
<th width="40%"><?php echo $this->__('Value for Google Feed')?></th>
|
| 31 |
+
<th width="40%"><?php echo $this->__('Postfix')?></th>
|
| 32 |
<th style="width:40%;"><?php echo $this->__('Action')?></th>
|
| 33 |
</tr>
|
| 34 |
</thead>
|
| 35 |
<tbody id="mapping-table-body">
|
| 36 |
+
<?php echo $this->getTableBodyHtml() ?>
|
| 37 |
</tbody>
|
| 38 |
</table>
|
| 39 |
</br>
|
| 49 |
|
| 50 |
function removeRow(index) {
|
| 51 |
var currentRow = $('table-row-' + index);
|
| 52 |
+
var currentSelects = $$('#table-row-' + index + ' .required-entry');
|
| 53 |
+
for(i = 0; i < currentSelects.length; i ++){
|
| 54 |
+
currentSelects[i].setAttribute('disabled', 'disabled');
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
var currentPrefixInputs = $$('#table-row-' + index + ' .prefix-postfix-input-field');
|
| 58 |
+
for(i = 0; i < currentPrefixInputs.length; i ++){
|
| 59 |
+
currentPrefixInputs[i].setAttribute('disabled', 'disabled');
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
currentRow.hide();
|
| 63 |
lastIndex = getLastIndex();
|
| 64 |
}
|
| 65 |
|
| 66 |
function addRow()
|
| 67 |
{
|
| 68 |
var indexTAppend = lastIndex + 1;
|
| 69 |
+
var rowHtml = '<tr id="table-row-' + indexTAppend + '" class="table-row-googlefeed"><td><input name="feed-col-name[' + indexTAppend + ']" class="required-entry"/></td>';
|
| 70 |
+
rowHtml += '<td><input name="feed-pref-name[' + indexTAppend + ']" class="prefix-postfix-input-field"/></td>';
|
| 71 |
+
rowHtml += '<td><select name="attribute-select[' + indexTAppend + ']" class="required-entry select select-googlefeed">';
|
| 72 |
rowHtml += '<?php echo $this->getOptionsHtml()?>';
|
| 73 |
rowHtml += '</select></td>';
|
| 74 |
+
rowHtml += '<td><input name="feed-postf-name[' + indexTAppend + ']" class="prefix-postfix-input-field"/></td>';
|
| 75 |
rowHtml += '<td><button type="button" onclick="removeRow(' + indexTAppend + ');" class="delete delete-option">Remove</button></td>';
|
| 76 |
var lastRowId = "table-row-" + lastIndex;
|
| 77 |
var elementToAppend = $(lastRowId);
|
app/design/adminhtml/default/default/template/web4pro_googlemerchants/googlecategory/edit.phtml
CHANGED
|
@@ -20,20 +20,43 @@
|
|
| 20 |
location.href = url;
|
| 21 |
}
|
| 22 |
}
|
| 23 |
-
function saveGCategoryLink() {
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
var googleCatId = tree.currentNodeId;
|
| 25 |
-
var storeCatId = $('category_to_linking').
|
| 26 |
var url = '<?php echo $this->getSaveStoreCategoryLinkUrl()?>';
|
| 27 |
var params = {google_category_id: googleCatId, store_category_id: storeCatId};
|
|
|
|
| 28 |
new Ajax.Request(url + (url.match(new RegExp('\\?')) ? '&isAjax=true' : '?isAjax=true' ), {
|
| 29 |
parameters: params,
|
| 30 |
onComplete: function (responce) {
|
| 31 |
-
if
|
|
|
|
|
|
|
|
|
|
| 32 |
window.location.reload();
|
| 33 |
}
|
| 34 |
}
|
| 35 |
});
|
| 36 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
|
| 38 |
function updateContent(url, params, refreshTree) {
|
| 39 |
if (!params) {
|
|
@@ -79,14 +102,15 @@
|
|
| 79 |
if (transport.responseText.length > 0) {
|
| 80 |
var respObj = transport.responseText.evalJSON();
|
| 81 |
if (respObj.store_category_id != null) {
|
| 82 |
-
$('category_to_linking').
|
| 83 |
}
|
| 84 |
else {
|
| 85 |
-
$('category_to_linking').
|
| 86 |
}
|
| 87 |
if (respObj.is_root) {
|
| 88 |
$('category_to_linking_submit').setAttribute('disabled', 'disabled');
|
| 89 |
$('category_to_linking').setAttribute('disabled', 'disabled');
|
|
|
|
| 90 |
}
|
| 91 |
else {
|
| 92 |
$('category_to_linking_submit').removeAttribute('disabled');
|
|
@@ -101,6 +125,17 @@
|
|
| 101 |
});
|
| 102 |
}
|
| 103 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
/**
|
| 105 |
* Refresh tree nodes after saving or deleting a category
|
| 106 |
*/
|
| 20 |
location.href = url;
|
| 21 |
}
|
| 22 |
}
|
| 23 |
+
function saveGCategoryLink(needReload) {
|
| 24 |
+
clearAllMessages();
|
| 25 |
+
if(needReload == undefined){
|
| 26 |
+
needReload = false;
|
| 27 |
+
}
|
| 28 |
var googleCatId = tree.currentNodeId;
|
| 29 |
+
var storeCatId = $('category_to_linking').value;
|
| 30 |
var url = '<?php echo $this->getSaveStoreCategoryLinkUrl()?>';
|
| 31 |
var params = {google_category_id: googleCatId, store_category_id: storeCatId};
|
| 32 |
+
|
| 33 |
new Ajax.Request(url + (url.match(new RegExp('\\?')) ? '&isAjax=true' : '?isAjax=true' ), {
|
| 34 |
parameters: params,
|
| 35 |
onComplete: function (responce) {
|
| 36 |
+
if(responce.responseJSON.message_block_html){
|
| 37 |
+
showResponceMessage(responce.responseJSON.message_block_html);
|
| 38 |
+
}
|
| 39 |
+
if (responce.responseJSON.error && needReload) {
|
| 40 |
window.location.reload();
|
| 41 |
}
|
| 42 |
}
|
| 43 |
});
|
| 44 |
}
|
| 45 |
+
function showResponceMessage(responceHtml)
|
| 46 |
+
{
|
| 47 |
+
//getting existing message block
|
| 48 |
+
var existingMessageBlock = $('messages');
|
| 49 |
+
existingMessageBlock.innerHTML += responceHtml;
|
| 50 |
+
|
| 51 |
+
}
|
| 52 |
+
|
| 53 |
+
function clearAllMessages()
|
| 54 |
+
{
|
| 55 |
+
var existingMessageBlock = $$('div[class="ajax-msg"]');
|
| 56 |
+
existingMessageBlock.each(function(el){
|
| 57 |
+
el.remove();
|
| 58 |
+
});
|
| 59 |
+
}
|
| 60 |
|
| 61 |
function updateContent(url, params, refreshTree) {
|
| 62 |
if (!params) {
|
| 102 |
if (transport.responseText.length > 0) {
|
| 103 |
var respObj = transport.responseText.evalJSON();
|
| 104 |
if (respObj.store_category_id != null) {
|
| 105 |
+
$('category_to_linking').value = respObj.store_category_id;
|
| 106 |
}
|
| 107 |
else {
|
| 108 |
+
$('category_to_linking').value = 0;
|
| 109 |
}
|
| 110 |
if (respObj.is_root) {
|
| 111 |
$('category_to_linking_submit').setAttribute('disabled', 'disabled');
|
| 112 |
$('category_to_linking').setAttribute('disabled', 'disabled');
|
| 113 |
+
showRootCategoryMessage();
|
| 114 |
}
|
| 115 |
else {
|
| 116 |
$('category_to_linking_submit').removeAttribute('disabled');
|
| 125 |
});
|
| 126 |
}
|
| 127 |
|
| 128 |
+
/**
|
| 129 |
+
*
|
| 130 |
+
* Shows message if selected category is root.
|
| 131 |
+
* */
|
| 132 |
+
function showRootCategoryMessage()
|
| 133 |
+
{
|
| 134 |
+
var messageText = 'Please select different from root category!';
|
| 135 |
+
alert(messageText);
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
+
|
| 139 |
/**
|
| 140 |
* Refresh tree nodes after saving or deleting a category
|
| 141 |
*/
|
app/design/adminhtml/default/default/template/web4pro_googlemerchants/googlecategory/tree.phtml
CHANGED
|
@@ -1,7 +1,6 @@
|
|
| 1 |
<?php
|
| 2 |
/* @var $this Web4pro_Googlemerchants_Block_Adminhtml_Googlecategory_Tree */
|
| 3 |
?>
|
| 4 |
-
|
| 5 |
<?php if ($this->treeCanShow()): ?>
|
| 6 |
<div class="categories-side-col">
|
| 7 |
<div class="content-header">
|
|
@@ -22,6 +21,7 @@
|
|
| 22 |
</div>
|
| 23 |
</div>
|
| 24 |
<script type="text/javascript">
|
|
|
|
| 25 |
//<![CDATA[
|
| 26 |
var tree;
|
| 27 |
|
|
@@ -74,6 +74,7 @@
|
|
| 74 |
this.currentNodeId = parameters['category_id'];
|
| 75 |
}
|
| 76 |
this.selectCurrentNode();
|
|
|
|
| 77 |
},
|
| 78 |
|
| 79 |
request: function (url, params) {
|
|
@@ -147,6 +148,7 @@
|
|
| 147 |
}
|
| 148 |
var categoryToLinkId = $('category_to_linking').value;
|
| 149 |
var params = {google_category_id: node.id, store_category_to_link: categoryToLinkId};
|
|
|
|
| 150 |
updateContent(url, params);
|
| 151 |
}
|
| 152 |
});
|
|
@@ -216,6 +218,7 @@
|
|
| 216 |
// try to select current category
|
| 217 |
var selectedNode = tree.getNodeById(config.parameters.category_id);
|
| 218 |
if (selectedNode) {
|
|
|
|
| 219 |
tree.currentNodeId = config.parameters.category_id;
|
| 220 |
}
|
| 221 |
tree.selectCurrentNode();
|
|
@@ -342,7 +345,6 @@
|
|
| 342 |
},
|
| 343 |
data: <?php echo $this->getTreeJson() ?>
|
| 344 |
};
|
| 345 |
-
|
| 346 |
reRenderTree();
|
| 347 |
});
|
| 348 |
|
| 1 |
<?php
|
| 2 |
/* @var $this Web4pro_Googlemerchants_Block_Adminhtml_Googlecategory_Tree */
|
| 3 |
?>
|
|
|
|
| 4 |
<?php if ($this->treeCanShow()): ?>
|
| 5 |
<div class="categories-side-col">
|
| 6 |
<div class="content-header">
|
| 21 |
</div>
|
| 22 |
</div>
|
| 23 |
<script type="text/javascript">
|
| 24 |
+
|
| 25 |
//<![CDATA[
|
| 26 |
var tree;
|
| 27 |
|
| 74 |
this.currentNodeId = parameters['category_id'];
|
| 75 |
}
|
| 76 |
this.selectCurrentNode();
|
| 77 |
+
|
| 78 |
},
|
| 79 |
|
| 80 |
request: function (url, params) {
|
| 148 |
}
|
| 149 |
var categoryToLinkId = $('category_to_linking').value;
|
| 150 |
var params = {google_category_id: node.id, store_category_to_link: categoryToLinkId};
|
| 151 |
+
clearAllMessages();
|
| 152 |
updateContent(url, params);
|
| 153 |
}
|
| 154 |
});
|
| 218 |
// try to select current category
|
| 219 |
var selectedNode = tree.getNodeById(config.parameters.category_id);
|
| 220 |
if (selectedNode) {
|
| 221 |
+
tree.categoryClick(selectedNode, null);
|
| 222 |
tree.currentNodeId = config.parameters.category_id;
|
| 223 |
}
|
| 224 |
tree.selectCurrentNode();
|
| 345 |
},
|
| 346 |
data: <?php echo $this->getTreeJson() ?>
|
| 347 |
};
|
|
|
|
| 348 |
reRenderTree();
|
| 349 |
});
|
| 350 |
|
app/etc/modules/Web4pro_Googlemerchants.xml
CHANGED
|
@@ -1,4 +1,15 @@
|
|
| 1 |
<?xml version="1.0"?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
<config>
|
| 3 |
<modules>
|
| 4 |
<Web4pro_Googlemerchants>
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* WEB4PRO - Creating profitable online stores
|
| 5 |
+
*
|
| 6 |
+
* @author WEB4PRO <achernyshev@corp.web4pro.com.ua>
|
| 7 |
+
* @category WEB4PRO
|
| 8 |
+
* @package Web4pro_Stockstatus
|
| 9 |
+
* @copyright Copyright (c) 2015 WEB4PRO (http://www.web4pro.net)
|
| 10 |
+
* @license http://www.web4pro.net/license.txt
|
| 11 |
+
*/
|
| 12 |
+
-->
|
| 13 |
<config>
|
| 14 |
<modules>
|
| 15 |
<Web4pro_Googlemerchants>
|
package.xml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>Web4pro_Googlemerchants</name>
|
| 4 |
-
<version>1.0.
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="http://opensource.org/licenses/OSL-3.0">OSL v.3</license>
|
| 7 |
<channel>community</channel>
|
|
@@ -10,9 +10,9 @@
|
|
| 10 |
<description>Google merchants service allows you to improve sales by better indexing of your store products, as well as the availability of goods in the google search results.</description>
|
| 11 |
<notes>Add functionallity for store selection</notes>
|
| 12 |
<authors><author><name>Alex</name><user>achernyshev</user><email>achernyshev@corp.web4pro.com.ua</email></author></authors>
|
| 13 |
-
<date>2015-
|
| 14 |
-
<time>13:
|
| 15 |
-
<contents><target name="magecommunity"><dir name="Web4pro"><dir name="Googlemerchants"><dir name="Block"><dir name="Adminhtml"><dir name="Editfeed"><dir name="Edit"><file name="Form.php" hash="
|
| 16 |
<compatible/>
|
| 17 |
<dependencies><required><php><min>5.3.0</min><max>5.6.0</max></php></required></dependencies>
|
| 18 |
</package>
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>Web4pro_Googlemerchants</name>
|
| 4 |
+
<version>1.0.3</version>
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="http://opensource.org/licenses/OSL-3.0">OSL v.3</license>
|
| 7 |
<channel>community</channel>
|
| 10 |
<description>Google merchants service allows you to improve sales by better indexing of your store products, as well as the availability of goods in the google search results.</description>
|
| 11 |
<notes>Add functionallity for store selection</notes>
|
| 12 |
<authors><author><name>Alex</name><user>achernyshev</user><email>achernyshev@corp.web4pro.com.ua</email></author></authors>
|
| 13 |
+
<date>2015-09-24</date>
|
| 14 |
+
<time>07:13:33</time>
|
| 15 |
+
<contents><target name="magecommunity"><dir name="Web4pro"><dir name="Googlemerchants"><dir name="Block"><dir name="Adminhtml"><dir name="Editfeed"><dir name="Edit"><file name="Form.php" hash="963fef9a2d97bde0e270ef5e0370581f"/></dir></dir><file name="Editfeed.php" hash="7d7eba9ef562402d40ad86a288771c51"/><dir name="Googlecategory"><dir name="Edit"><file name="Form.php" hash="4f7a0608d53ba140043295b1e4175cd7"/></dir><file name="Edit.php" hash="35cc7d98dc229a4a02a38a837a499c09"/><file name="Tree.php" hash="b712e33fc9a8de6c395c5fcf91ab8458"/></dir><dir name="System"><file name="Instruction.php" hash="d5a1ec0f8ef3b7a0838a1b97a8bccb90"/></dir><dir name="Upload"><file name="File.php" hash="0d40ad6ce19b1ee072c5cf2114057d2e"/><dir name="Form"><file name="Container.php" hash="e1a4e0128a8c7399c6137bbf22415372"/></dir><dir name="Link"><file name="Renderer.php" hash="cdd7b23b4d5303e9281931293923f64f"/></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="8d886bb08f0209495724f84fef622ab2"/></dir><dir name="Model"><file name="Googlecategory.php" hash="9332b02d2d38315f769fd6a693287af2"/><file name="Googlefeed.php" hash="120cb396b966ff2d1d715e264afe6c7d"/><file name="Googleshipping.php" hash="1fd02059b0bdb80c31c815f3cb75e937"/><file name="Googletax.php" hash="4535e853784f82d4a99315c721ad10a9"/><dir name="Mysql4"><dir name="Googlecategory"><file name="Collection.php" hash="0520040012ab2f78bb1728e8ab81eb42"/></dir><file name="Googlecategory.php" hash="b306fdb04cb24eb03a66c39ffa9c3325"/><file name="Googlefeed.php" hash="b19462cd7eda2437d28efb1198e53453"/></dir><file name="Storefeedconfig.php" hash="0b838449a979e05a4a863430ceab0188"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="GooglemerchantsController.php" hash="52b53045c8e2a8aa276199279b0398de"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="02e13dc55c49f47eba97569483c41aa7"/><file name="config.xml" hash="76b6483a3e63fbda9c71cfcf76a3be49"/><file name="system.xml" hash="5492385c8d7677d2b0d26fdfa2bd41b2"/></dir><dir name="sql"><dir name="googlemerchants_setup"><file name="install-1.0.0.0.php" hash="62d572474a1e3673c66b9d7c1252ec09"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Web4pro_Googlemerchants.xml" hash="7df85d7a3fb5bd602ec4c3fc045298b9"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="googlemerchants.xml" hash="3d837244c46bac42162f864c9f1dad02"/></dir><dir name="template"><dir name="web4pro_googlemerchants"><dir name="feed"><file name="form.phtml" hash="430ad2308bdf7952265579e0328e4fc6"/></dir><dir name="googlecategory"><file name="edit.phtml" hash="e6b23d9681c2cdb61ddf94f0f4992252"/><file name="tree.phtml" hash="04232fa6dc36c3e4f97c43ec3ea9b601"/></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="web4pro_googlemerchants"><file name="googlemerchants.css" hash="650eb84495947d3cc371c566781dc97b"/><file name="googlemerchants.css" hash="650eb84495947d3cc371c566781dc97b"/></dir></dir></dir></dir></target></contents>
|
| 16 |
<compatible/>
|
| 17 |
<dependencies><required><php><min>5.3.0</min><max>5.6.0</max></php></required></dependencies>
|
| 18 |
</package>
|
skin/adminhtml/default/default/web4pro_googlemerchants/googlemerchants.css
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.table-row-googlefeed{
|
| 2 |
+
width: 100%;
|
| 3 |
+
}
|
| 4 |
+
.select-googlefeed{
|
| 5 |
+
width: 100%;
|
| 6 |
+
}
|
