Web4pro_Stockstatus - Version 1.0.2

Version Notes

Version number: 1.0.1
Version number: 1.0.2
- Ability to add custom image at stockstatus

Download this release

Release Info

Developer Sergey Repin
Extension Web4pro_Stockstatus
Version 1.0.2
Comparing to
See all releases


Code changes from version 1.0.1 to 1.0.2

app/code/community/Web4pro/Stockstatus/Block/Adminhtml/Catalog/Product/Attribute/Options.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Web4pro_Stockstatus_Block_Adminhtml_Catalog_Product_Attribute_Options extends Mage_Eav_Block_Adminhtml_Attribute_Edit_Options_Abstract
3
+ {
4
+ public function __construct()
5
+ {
6
+ parent::__construct();
7
+ if (Mage::registry('entity_attribute')->getData('attribute_code') == 'custom_stockstatus') {
8
+ $this->setTemplate('stockstatus/catalog/product/attribute/options.phtml');
9
+ }
10
+ }
11
+
12
+ public function getOptionValues()
13
+ {
14
+ if (Mage::registry('entity_attribute')->getData('attribute_code') != 'custom_stockstatus') {
15
+ return parent::getOptionValues();
16
+ }
17
+
18
+ $attributeType = $this->getAttributeObject()->getFrontendInput();
19
+ $defaultValues = $this->getAttributeObject()->getDefaultValue();
20
+ if ($attributeType == 'select' || $attributeType == 'multiselect') {
21
+ $defaultValues = explode(',', $defaultValues);
22
+ } else {
23
+ $defaultValues = array();
24
+ }
25
+
26
+ switch ($attributeType) {
27
+ case 'select':
28
+ $inputType = 'radio';
29
+ break;
30
+ case 'multiselect':
31
+ $inputType = 'checkbox';
32
+ break;
33
+ default:
34
+ $inputType = '';
35
+ break;
36
+ }
37
+
38
+ $values = $this->getData('option_values');
39
+ if (is_null($values)) {
40
+ $values = array();
41
+ $optionCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
42
+ ->setAttributeFilter($this->getAttributeObject()->getId())
43
+ ->setPositionOrder('desc', true)
44
+ ->load();
45
+
46
+ foreach ($optionCollection as $option) {
47
+ $value = array();
48
+ if (in_array($option->getId(), $defaultValues)) {
49
+ $value['checked'] = 'checked="checked"';
50
+ } else {
51
+ $value['checked'] = '';
52
+ }
53
+
54
+ $value['intype'] = $inputType;
55
+ $value['id'] = $option->getId();
56
+ $value['sort_order'] = $option->getSortOrder();
57
+ $value['image'] = $option->getImage();
58
+ foreach ($this->getStores() as $store) {
59
+ $storeValues = $this->getStoreOptionValues($store->getId());
60
+ if (isset($storeValues[$option->getId()])) {
61
+ $value['store'.$store->getId()] = htmlspecialchars($storeValues[$option->getId()]);
62
+ }
63
+ else {
64
+ $value['store'.$store->getId()] = '';
65
+ }
66
+ }
67
+ $values[] = new Varien_Object($value);
68
+ }
69
+ $this->setData('option_values', $values);
70
+ }
71
+
72
+ return $values;
73
+ }
74
+
75
+ }
app/code/community/Web4pro/Stockstatus/Helper/Cms/Wysiwyg/Images.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WEB4PRO - Creating profitable online stores
4
+ *
5
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
6
+ * @category WEB4PRO
7
+ * @package Web4pro_Stockstatus
8
+ * @copyright Copyright (c) 2015 WEB4PRO (http://www.web4pro.net)
9
+ * @license http://www.web4pro.net/license.txt
10
+ */
11
+ /**
12
+ * Stockstatus images helper
13
+ *
14
+ * @category Web4pro
15
+ * @package Web4pro_Stockstatus
16
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
17
+ */
18
+
19
+ class Web4pro_Stockstatus_Helper_Cms_Wysiwyg_Images extends Mage_Cms_Helper_Wysiwyg_Images
20
+ {
21
+
22
+ /**
23
+ * Check using static urls allowed
24
+ * @return bool
25
+ */
26
+ public function isUsingStaticUrlsAllowed()
27
+ {
28
+ if (Mage::getSingleton('adminhtml/session')->getStaticUrlsAllowed()) {
29
+ return true;
30
+ }
31
+
32
+ return parent::isUsingStaticUrlsAllowed();
33
+ }
34
+ }
app/code/community/Web4pro/Stockstatus/Helper/Data.php CHANGED
@@ -9,7 +9,7 @@
9
  * @license http://www.web4pro.net/license.txt
10
  */
11
  /**
12
- * Attachments default helper
13
  *
14
  * @category Web4pro
15
  * @package Web4pro_Stockstatus
@@ -87,7 +87,7 @@ class Web4pro_Stockstatus_Helper_Data extends Mage_Core_Helper_Abstract
87
  */
88
  public function isCustomStockStatusOnProductListPage()
89
  {
90
- return Mage::getStoreConfig('web4pro_stockstatus/general/display_at_categoty');
91
  }
92
 
93
  /**
@@ -109,7 +109,7 @@ class Web4pro_Stockstatus_Helper_Data extends Mage_Core_Helper_Abstract
109
  }
110
 
111
  /**
112
- * is stock qty displayed
113
  * @return mixed
114
  */
115
  public function isShowStockLevel()
@@ -117,6 +117,25 @@ class Web4pro_Stockstatus_Helper_Data extends Mage_Core_Helper_Abstract
117
  return Mage::getStoreConfig('web4pro_stockstatus/general/showstocklevel');
118
  }
119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  /**
121
  * Is the custom status allowed at page of product view
122
  * @param $product
@@ -130,4 +149,30 @@ class Web4pro_Stockstatus_Helper_Data extends Mage_Core_Helper_Abstract
130
  }
131
  return $result;
132
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  }
9
  * @license http://www.web4pro.net/license.txt
10
  */
11
  /**
12
+ * Stockstatus default helper
13
  *
14
  * @category Web4pro
15
  * @package Web4pro_Stockstatus
87
  */
88
  public function isCustomStockStatusOnProductListPage()
89
  {
90
+ return Mage::getStoreConfig('web4pro_stockstatus/general/display_at_category');
91
  }
92
 
93
  /**
109
  }
110
 
111
  /**
112
+ * Is stock qty displayed
113
  * @return mixed
114
  */
115
  public function isShowStockLevel()
117
  return Mage::getStoreConfig('web4pro_stockstatus/general/showstocklevel');
118
  }
119
 
120
+
121
+ /**
122
+ * Is show icon
123
+ * @return mixed
124
+ */
125
+ public function isShowStockImage()
126
+ {
127
+ return Mage::getStoreConfig('web4pro_stockstatus/general/showimage');
128
+ }
129
+
130
+ /**
131
+ * Is show icon only
132
+ * @return mixed
133
+ */
134
+ public function isShowStockImageOnly()
135
+ {
136
+ return Mage::getStoreConfig('web4pro_stockstatus/general/showimageonly');
137
+ }
138
+
139
  /**
140
  * Is the custom status allowed at page of product view
141
  * @param $product
149
  }
150
  return $result;
151
  }
152
+
153
+
154
+ /**
155
+ * Generate image url
156
+ * @param $optionId
157
+ * @return string
158
+ */
159
+ public function getAttributeOptionImage($optionId)
160
+ {
161
+ $images = $this->getAttributeOptionImages();
162
+ $image = array_key_exists($optionId, $images) ? $images[$optionId] : '';
163
+ if ($image && (strpos($image, 'http') !== 0)) {
164
+ $image = Mage::getDesign()->getSkinUrl($image);
165
+ }
166
+ return $image;
167
+ }
168
+
169
+
170
+ /**
171
+ * @return mixed
172
+ */
173
+ public function getAttributeOptionImages()
174
+ {
175
+ $images = Mage::getResourceModel('eav/entity_attribute_option')->getAttributeOptionImages();
176
+ return $images;
177
+ }
178
  }
app/code/community/Web4pro/Stockstatus/Model/Catalog/Resource/Eav/Mysql4/Attribute.php ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WEB4PRO - Creating profitable online stores
4
+ *
5
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
6
+ * @category WEB4PRO
7
+ * @package Web4pro_Stockstatus
8
+ * @copyright Copyright (c) 2015 WEB4PRO (http://www.web4pro.net)
9
+ * @license http://www.web4pro.net/license.txt
10
+ */
11
+
12
+ /**
13
+ * Catalog resource model
14
+ *
15
+ * @category Web4pro
16
+ * @package Web4pro_Stockstatus
17
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
18
+ */
19
+
20
+ class Web4pro_Stockstatus_Model_Catalog_Resource_Eav_Mysql4_Attribute extends Mage_Catalog_Model_Resource_Eav_Mysql4_Attribute
21
+ {
22
+ protected function _saveOption(Mage_Core_Model_Abstract $object)
23
+ {
24
+ $option = $object->getOption();
25
+ if (is_array($option)) {
26
+ $write = $this->_getWriteAdapter();
27
+ $optionTable = $this->getTable('attribute_option');
28
+ $optionValueTable = $this->getTable('attribute_option_value');
29
+ $stores = Mage::getModel('core/store')
30
+ ->getResourceCollection()
31
+ ->setLoadDefault(true)
32
+ ->load();
33
+
34
+ if (isset($option['value'])) {
35
+ $attributeDefaultValue = array();
36
+ if (!is_array($object->getDefault())) {
37
+ $object->setDefault(array());
38
+ }
39
+
40
+ foreach ($option['value'] as $optionId => $values) {
41
+ $intOptionId = (int) $optionId;
42
+ if (!empty($option['delete'][$optionId])) {
43
+ if ($intOptionId) {
44
+ $condition = $write->quoteInto('option_id=?', $intOptionId);
45
+ $write->delete($optionTable, $condition);
46
+ }
47
+
48
+ continue;
49
+ }
50
+
51
+ if (!$intOptionId) {
52
+ $data = array(
53
+ 'attribute_id' => $object->getId(),
54
+ 'sort_order' => isset($option['order'][$optionId]) ? $option['order'][$optionId] : 0,
55
+ 'image' => isset($option['image'][$optionId]) ? $option['image'][$optionId] : '',
56
+ );
57
+ $write->insert($optionTable, $data);
58
+ $intOptionId = $write->lastInsertId();
59
+ }
60
+ else {
61
+ $data = array(
62
+ 'sort_order' => isset($option['order'][$optionId]) ? $option['order'][$optionId] : 0,
63
+ 'image' => isset($option['image'][$optionId]) ? $option['image'][$optionId] : '',
64
+ );
65
+ $write->update($optionTable, $data, $write->quoteInto('option_id=?', $intOptionId));
66
+ }
67
+
68
+ if (in_array($optionId, $object->getDefault())) {
69
+ if ($object->getFrontendInput() == 'multiselect') {
70
+ $attributeDefaultValue[] = $intOptionId;
71
+ } else if ($object->getFrontendInput() == 'select') {
72
+ $attributeDefaultValue = array($intOptionId);
73
+ }
74
+ }
75
+
76
+ // Default value
77
+ if (!isset($values[0])) {
78
+ Mage::throwException(Mage::helper('eav')->__('Default option value is not defined.'));
79
+ }
80
+
81
+ $write->delete($optionValueTable, $write->quoteInto('option_id=?', $intOptionId));
82
+ foreach ($stores as $store) {
83
+ if (isset($values[$store->getId()]) && (!empty($values[$store->getId()]) || $values[$store->getId()] == "0")) {
84
+ $data = array(
85
+ 'option_id' => $intOptionId,
86
+ 'store_id' => $store->getId(),
87
+ 'value' => $values[$store->getId()],
88
+ );
89
+ $write->insert($optionValueTable, $data);
90
+ }
91
+ }
92
+ }
93
+
94
+ $write->update($this->getMainTable(), array(
95
+ 'default_value' => implode(',', $attributeDefaultValue)
96
+ ), $write->quoteInto($this->getIdFieldName() . '=?', $object->getId()));
97
+ }
98
+ }
99
+ return $this;
100
+ }
101
+ }
app/code/community/Web4pro/Stockstatus/Model/Eav/Entity/Attribute/Source/Table.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WEB4PRO - Creating profitable online stores
4
+ *
5
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
6
+ * @category WEB4PRO
7
+ * @package Web4pro_Stockstatus
8
+ * @copyright Copyright (c) 2015 WEB4PRO (http://www.web4pro.net)
9
+ * @license http://www.web4pro.net/license.txt
10
+ */
11
+
12
+ /**
13
+ * Stockstatus eav source model
14
+ *
15
+ * @category Web4pro
16
+ * @package Web4pro_Stockstatus
17
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
18
+ */
19
+ class Web4pro_Stockstatus_Model_Eav_Entity_Attribute_Source_Table extends Mage_Eav_Model_Entity_Attribute_Source_Table
20
+ {
21
+ public function getOptionImage($value)
22
+ {
23
+ $options = Mage::getResourceModel('eav/entity_attribute_option_collection')
24
+ ->setPositionOrder('asc')
25
+ ->setAttributeFilter($this->getAttribute()->getId())
26
+ ->setStoreFilter($this->getAttribute()->getStoreId())
27
+ ->load()
28
+ ->toArray();
29
+ foreach ($options['items'] as $item) {
30
+ if ($item['option_id'] == $value) {
31
+ return $item['image'];
32
+ }
33
+ }
34
+ return false;
35
+ }
36
+ }
app/code/community/Web4pro/Stockstatus/Model/Eav/Mysql4/Entity/Attribute/Option.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WEB4PRO - Creating profitable online stores
4
+ *
5
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
6
+ * @category WEB4PRO
7
+ * @package Web4pro_Stockstatus
8
+ * @copyright Copyright (c) 2015 WEB4PRO (http://www.web4pro.net)
9
+ * @license http://www.web4pro.net/license.txt
10
+ */
11
+
12
+ /**
13
+ * Stockstatus resource model
14
+ *
15
+ * @category Web4pro
16
+ * @package Web4pro_Stockstatus
17
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
18
+ */
19
+
20
+ class Web4pro_Stockstatus_Model_Eav_Mysql4_Entity_Attribute_Option extends Mage_Eav_Model_Mysql4_Entity_Attribute_Option
21
+ {
22
+ public function getAttributeOptionImages()
23
+ {
24
+ $select = $this->getReadConnection()
25
+ ->select()
26
+ ->from($this->getTable('eav/attribute_option'), array('option_id', 'image'));
27
+
28
+ return $this->getReadConnection()->fetchPairs($select);
29
+ }
30
+ }
app/code/community/Web4pro/Stockstatus/Model/Observer.php CHANGED
@@ -75,7 +75,8 @@ class Web4pro_Stockstatus_Model_Observer
75
  Mage::getSingleton('cataloginventory/stock')->addItemsToProducts($collection);
76
  if ($this->_helper->isCustomStockStatusOnProductListPage()){
77
  foreach ($block->getLoadedProductCollection() as $item){
78
- $stockstatuses[] = $this->_helper->getNewStockStatus($item);
 
79
  }
80
  }
81
  break;
@@ -104,4 +105,54 @@ class Web4pro_Stockstatus_Model_Observer
104
  $quoteItem->setCustomStockstatus($product->getCustomStockstatus());
105
  $quoteItem->setHideDefaultStockstatus($product->getHideDefaultStockstatus());
106
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  }
75
  Mage::getSingleton('cataloginventory/stock')->addItemsToProducts($collection);
76
  if ($this->_helper->isCustomStockStatusOnProductListPage()){
77
  foreach ($block->getLoadedProductCollection() as $item){
78
+ $img = $this->getStockStatusImage($item);
79
+ $stockstatuses[] = ($this->_helper->isShowStockImageOnly()) ? $img : $img . $this->_helper->getNewStockStatus($item);
80
  }
81
  }
82
  break;
105
  $quoteItem->setCustomStockstatus($product->getCustomStockstatus());
106
  $quoteItem->setHideDefaultStockstatus($product->getHideDefaultStockstatus());
107
  }
108
+
109
+
110
+ /**
111
+ * Get product custom stockstatus image
112
+ * @param $product
113
+ * @return string
114
+ * @access public
115
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
116
+ */
117
+ public function getStockStatusImage($product)
118
+ {
119
+ $helper = Mage::helper('web4pro_stockstatus');
120
+ if (!$helper->isShowStockImage()){
121
+ return false;
122
+ }
123
+ $img = '';
124
+ $custom_stockstatus = $product->getData('custom_stockstatus');
125
+ if($custom_stockstatus){
126
+ $src = $helper->getAttributeOptionImage($custom_stockstatus);
127
+ $img = "<img style='display:inline;' align='top' height=20px src='" . $src . "'> ";
128
+ }
129
+ return $img;
130
+ }
131
+
132
+ /**
133
+ * Add uploader for attribute
134
+ * @param $observer
135
+ * @access public
136
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
137
+ */
138
+ public function updateLayout($observer)
139
+ {
140
+ $action = $observer->getEvent()->getAction();
141
+ if ($action instanceof Mage_Adminhtml_Catalog_Product_AttributeController && $action->getRequest()->getActionName() == 'edit') {
142
+ if (Mage::registry('entity_attribute')->getData('attribute_code') !='custom_stockstatus'){
143
+ return false;
144
+ }
145
+ $observer->getLayout()->getBlock('head')
146
+ ->setCanLoadExtJs(true)
147
+ ->addJs('mage/adminhtml/variables.js')
148
+ ->addJs('mage/adminhtml/wysiwyg/widget.js')
149
+ ->addJs('lib/flex.js')
150
+ ->addJs('lib/FABridge.js')
151
+ ->addJs('mage/adminhtml/flexuploader.js')
152
+ ->addJs('mage/adminhtml/browser.js')
153
+ ->addJs('prototype/window.js')
154
+ ->addItem('js_css', 'prototype/windows/themes/default.css')
155
+ ->addItem('skin_css', 'lib/prototype/windows/themes/magento.css');
156
+ }
157
+ }
158
  }
app/code/community/Web4pro/Stockstatus/controllers/Cms/Wysiwyg/ImagesController.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WEB4PRO - Creating profitable online stores
4
+ *
5
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
6
+ * @category WEB4PRO
7
+ * @package Web4pro_Stockstatus
8
+ * @copyright Copyright (c) 2015 WEB4PRO (http://www.web4pro.net)
9
+ * @license http://www.web4pro.net/license.txt
10
+ */
11
+ /**
12
+ * Images admin controller
13
+ *
14
+ * @category Web4pro
15
+ * @package Web4pro_Stockstatus
16
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
17
+ */
18
+ require_once 'Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php';
19
+
20
+ class Web4pro_Stockstatus_Cms_Wysiwyg_ImagesController extends Mage_Adminhtml_Cms_Wysiwyg_ImagesController
21
+ {
22
+ public function indexAction()
23
+ {
24
+ if ($this->getRequest()->getParam('static_urls_allowed')) {
25
+ $this->_getSession()->setStaticUrlsAllowed(true);
26
+ }
27
+ parent::indexAction();
28
+ }
29
+
30
+ public function onInsertAction()
31
+ {
32
+ parent::onInsertAction();
33
+ $this->_getSession()->setStaticUrlsAllowed();
34
+ }
35
+ }
app/code/community/Web4pro/Stockstatus/etc/config.xml CHANGED
@@ -13,7 +13,7 @@
13
  <config>
14
  <modules>
15
  <Web4pro_Stockstatus>
16
- <version>1.0.0</version>
17
  </Web4pro_Stockstatus>
18
  </modules>
19
  <global>
@@ -21,13 +21,38 @@
21
  <web4pro_stockstatus>
22
  <class>Web4pro_Stockstatus_Helper</class>
23
  </web4pro_stockstatus>
 
 
 
 
 
24
  </helpers>
25
  <models>
26
  <web4pro_stockstatus>
27
  <class>Web4pro_Stockstatus_Model</class>
28
  </web4pro_stockstatus>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  </models>
30
  <blocks>
 
 
 
 
 
31
  <web4pro_stockstatus>
32
  <class>Web4pro_Stockstatus_Block</class>
33
  </web4pro_stockstatus>
@@ -49,6 +74,7 @@
49
  <web4pro_stockstatus_setup>
50
  <setup>
51
  <module>Web4pro_Stockstatus</module>
 
52
  </setup>
53
  <connection>
54
  <use>core_setup</use>
@@ -86,6 +112,17 @@
86
  </sales_quote_item_set_product>
87
  </events>
88
  </global>
 
 
 
 
 
 
 
 
 
 
 
89
  <frontend>
90
  <routers>
91
  <web4pro_stockstatus>
@@ -131,6 +168,16 @@
131
  </web4pro_stockstatus>
132
  </updates>
133
  </layout>
 
 
 
 
 
 
 
 
 
 
134
  <translate>
135
  <modules>
136
  <Web4pro_Stockstatus>
13
  <config>
14
  <modules>
15
  <Web4pro_Stockstatus>
16
+ <version>1.0.2</version>
17
  </Web4pro_Stockstatus>
18
  </modules>
19
  <global>
21
  <web4pro_stockstatus>
22
  <class>Web4pro_Stockstatus_Helper</class>
23
  </web4pro_stockstatus>
24
+ <cms>
25
+ <rewrite>
26
+ <wysiwyg_images>Web4pro_Stockstatus_Helper_Cms_Wysiwyg_Images</wysiwyg_images>
27
+ </rewrite>
28
+ </cms>
29
  </helpers>
30
  <models>
31
  <web4pro_stockstatus>
32
  <class>Web4pro_Stockstatus_Model</class>
33
  </web4pro_stockstatus>
34
+ <catalog_resource_eav_mysql4>
35
+ <rewrite>
36
+ <attribute>Web4pro_Stockstatus_Model_Catalog_Resource_Eav_Mysql4_Attribute</attribute>
37
+ </rewrite>
38
+ </catalog_resource_eav_mysql4>
39
+ <eav>
40
+ <rewrite>
41
+ <entity_attribute_source_table>Web4pro_Stockstatus_Model_Eav_Entity_Attribute_Source_Table</entity_attribute_source_table>
42
+ </rewrite>
43
+ </eav>
44
+ <eav_mysql4>
45
+ <rewrite>
46
+ <entity_attribute_option>Web4pro_Stockstatus_Model_Eav_Mysql4_Entity_Attribute_Option</entity_attribute_option>
47
+ </rewrite>
48
+ </eav_mysql4>
49
  </models>
50
  <blocks>
51
+ <adminhtml>
52
+ <rewrite>
53
+ <catalog_product_attribute_edit_tab_options>Web4pro_Stockstatus_Block_Adminhtml_Catalog_Product_Attribute_Options</catalog_product_attribute_edit_tab_options>
54
+ </rewrite>
55
+ </adminhtml>
56
  <web4pro_stockstatus>
57
  <class>Web4pro_Stockstatus_Block</class>
58
  </web4pro_stockstatus>
74
  <web4pro_stockstatus_setup>
75
  <setup>
76
  <module>Web4pro_Stockstatus</module>
77
+ <class>Mage_Eav_Model_Entity_Setup</class>
78
  </setup>
79
  <connection>
80
  <use>core_setup</use>
112
  </sales_quote_item_set_product>
113
  </events>
114
  </global>
115
+ <admin>
116
+ <routers>
117
+ <adminhtml>
118
+ <args>
119
+ <modules>
120
+ <Web4pro_Stockstatus before="Mage_Adminhtml">Web4pro_Stockstatus</Web4pro_Stockstatus>
121
+ </modules>
122
+ </args>
123
+ </adminhtml>
124
+ </routers>
125
+ </admin>
126
  <frontend>
127
  <routers>
128
  <web4pro_stockstatus>
168
  </web4pro_stockstatus>
169
  </updates>
170
  </layout>
171
+ <events>
172
+ <controller_action_layout_generate_blocks_after>>
173
+ <observers>
174
+ <update_layout>
175
+ <class>web4pro_stockstatus/observer</class>
176
+ <method>updateLayout</method>
177
+ </update_layout>
178
+ </observers>
179
+ </controller_action_layout_generate_blocks_after>
180
+ </events>
181
  <translate>
182
  <modules>
183
  <Web4pro_Stockstatus>
app/code/community/Web4pro/Stockstatus/etc/system.xml CHANGED
@@ -41,27 +41,27 @@
41
  <label>Show Stock Status When Out Of Stock?</label>
42
  <frontend_type>select</frontend_type>
43
  <source_model>adminhtml/system_config_source_yesno</source_model>
44
- <sort_order>1</sort_order>
45
  <show_in_default>1</show_in_default>
46
  <show_in_website>1</show_in_website>
47
  <show_in_store>1</show_in_store>
48
  <comment>Do you want to show custom stock status instead of 'Out of stock' when product is not in stock?</comment>
49
  </outofstock>
50
- <display_at_categoty translate="label">
51
  <label>Display Custom Stock Status On Product List Page</label>
52
  <frontend_type>select</frontend_type>
53
  <source_model>adminhtml/system_config_source_yesno</source_model>
54
- <sort_order>15</sort_order>
55
  <show_in_default>1</show_in_default>
56
  <show_in_website>1</show_in_website>
57
  <show_in_store>1</show_in_store>
58
- </display_at_categoty>
59
  <display_in_cart translate="label">
60
  <label>Display Custom Stock Status in Shopping Cart</label>
61
  <comment>Will display custom stock status for items in shopping cart.</comment>
62
  <frontend_type>select</frontend_type>
63
  <source_model>adminhtml/system_config_source_yesno</source_model>
64
- <sort_order>20</sort_order>
65
  <show_in_default>1</show_in_default>
66
  <show_in_website>1</show_in_website>
67
  <show_in_store>1</show_in_store>
@@ -70,12 +70,32 @@
70
  <label>Show Stock Level?</label>
71
  <frontend_type>select</frontend_type>
72
  <source_model>adminhtml/system_config_source_yesno</source_model>
73
- <sort_order>1</sort_order>
74
  <show_in_default>1</show_in_default>
75
  <show_in_website>1</show_in_website>
76
  <show_in_store>1</show_in_store>
77
  <comment>Show the actual quantity in stock?</comment>
78
  </showstocklevel>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  </fields>
80
  </general>
81
  </groups>
41
  <label>Show Stock Status When Out Of Stock?</label>
42
  <frontend_type>select</frontend_type>
43
  <source_model>adminhtml/system_config_source_yesno</source_model>
44
+ <sort_order>3</sort_order>
45
  <show_in_default>1</show_in_default>
46
  <show_in_website>1</show_in_website>
47
  <show_in_store>1</show_in_store>
48
  <comment>Do you want to show custom stock status instead of 'Out of stock' when product is not in stock?</comment>
49
  </outofstock>
50
+ <display_at_category translate="label">
51
  <label>Display Custom Stock Status On Product List Page</label>
52
  <frontend_type>select</frontend_type>
53
  <source_model>adminhtml/system_config_source_yesno</source_model>
54
+ <sort_order>1</sort_order>
55
  <show_in_default>1</show_in_default>
56
  <show_in_website>1</show_in_website>
57
  <show_in_store>1</show_in_store>
58
+ </display_at_category>
59
  <display_in_cart translate="label">
60
  <label>Display Custom Stock Status in Shopping Cart</label>
61
  <comment>Will display custom stock status for items in shopping cart.</comment>
62
  <frontend_type>select</frontend_type>
63
  <source_model>adminhtml/system_config_source_yesno</source_model>
64
+ <sort_order>2</sort_order>
65
  <show_in_default>1</show_in_default>
66
  <show_in_website>1</show_in_website>
67
  <show_in_store>1</show_in_store>
70
  <label>Show Stock Level?</label>
71
  <frontend_type>select</frontend_type>
72
  <source_model>adminhtml/system_config_source_yesno</source_model>
73
+ <sort_order>4</sort_order>
74
  <show_in_default>1</show_in_default>
75
  <show_in_website>1</show_in_website>
76
  <show_in_store>1</show_in_store>
77
  <comment>Show the actual quantity in stock?</comment>
78
  </showstocklevel>
79
+ <showimage translate="label">
80
+ <label>Show Icons?</label>
81
+ <frontend_type>select</frontend_type>
82
+ <source_model>adminhtml/system_config_source_yesno</source_model>
83
+ <sort_order>5</sort_order>
84
+ <show_in_default>1</show_in_default>
85
+ <show_in_website>1</show_in_website>
86
+ <show_in_store>1</show_in_store>
87
+ <comment>Show icon for stock status?</comment>
88
+ </showimage>
89
+ <showimageonly translate="label">
90
+ <label>Show Only Icons?</label>
91
+ <frontend_type>select</frontend_type>
92
+ <source_model>adminhtml/system_config_source_yesno</source_model>
93
+ <sort_order>6</sort_order>
94
+ <show_in_default>1</show_in_default>
95
+ <show_in_website>1</show_in_website>
96
+ <show_in_store>1</show_in_store>
97
+ <comment>Show only icon for stock status?</comment>
98
+ </showimageonly>
99
  </fields>
100
  </general>
101
  </groups>
app/code/community/Web4pro/Stockstatus/sql/web4pro_stockstatus_setup/install-1.0.0.php CHANGED
@@ -16,7 +16,7 @@
16
  * @author WEB4PRO <srepin@corp.web4pro.com.ua>
17
  */
18
  $this->startSetup();
19
- $setup = new Mage_Eav_Model_Entity_Setup('core_setup');
20
 
21
  $setup->addAttribute('catalog_product', 'custom_stockstatus', array(
22
  'group' => 'Custom Stock Status',
16
  * @author WEB4PRO <srepin@corp.web4pro.com.ua>
17
  */
18
  $this->startSetup();
19
+ $setup = new Mage_Catalog_Model_Resource_Eav_Mysql4_Setup('core_setup');
20
 
21
  $setup->addAttribute('catalog_product', 'custom_stockstatus', array(
22
  'group' => 'Custom Stock Status',
app/code/community/Web4pro/Stockstatus/sql/web4pro_stockstatus_setup/upgrade-1.0.0-1.0.2.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WEB4PRO - Creating profitable online stores
4
+ *
5
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
6
+ * @category WEB4PRO
7
+ * @package Web4pro_Stockstatus
8
+ * @copyright Copyright (c) 2015 WEB4PRO (http://www.web4pro.net)
9
+ * @license http://www.web4pro.net/license.txt
10
+ */
11
+ /**
12
+ * Stockstatus module install script add image attribute to option
13
+ *
14
+ * @category Web4pro
15
+ * @package Web4pro_Stockstatus
16
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
17
+ */
18
+
19
+ $installer = $this;
20
+ $installer->getConnection()->addColumn(
21
+ $installer->getTable('eav_attribute_option'),
22
+ 'image',
23
+ 'TEXT NULL'
24
+ );
25
+ $installer->endSetup();
app/design/adminhtml/default/default/template/stockstatus/catalog/product/attribute/options.phtml ADDED
@@ -0,0 +1,199 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WEB4PRO - Creating profitable online stores
4
+ *
5
+ * @author WEB4PRO <srepin@corp.web4pro.com.ua>
6
+ * @category WEB4PRO
7
+ * @package Web4pro_Stockstatus
8
+ * @copyright Copyright (c) 2015 WEB4PRO (http://www.web4pro.net)
9
+ * @license http://www.web4pro.net/license.txt
10
+ */
11
+ ?>
12
+ <?php
13
+ /**
14
+ * Attribute otions control
15
+ *
16
+ * @see Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Options
17
+ */
18
+ ?>
19
+ <div>
20
+ <ul class="messages">
21
+ <li class="notice-msg">
22
+ <ul>
23
+ <li><?php echo Mage::helper('catalog')->__('If you do not specify an option value for a specific store view then the default (Admin) value will be used.') ?></li>
24
+ </ul>
25
+ </li>
26
+ </ul>
27
+ </div>
28
+
29
+ <div class="entity-edit">
30
+ <div class="entry-edit-head">
31
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('catalog')->__('Manage Titles (Size, Color, etc.)') ?></h4>
32
+ </div>
33
+ <div class="box">
34
+ <div class="hor-scroll">
35
+ <table class="dynamic-grid" cellspacing="0" id="attribute-labels-table">
36
+ <tr>
37
+ <?php foreach ($this->getStores() as $_store): ?>
38
+ <th><?php echo $_store->getName() ?></th>
39
+ <?php endforeach; ?>
40
+ </tr>
41
+ <tr>
42
+ <?php $_labels = $this->getLabelValues() ?>
43
+ <?php foreach ($this->getStores() as $_store): ?>
44
+ <td>
45
+ <input class="input-text<?php if($_store->getId()==0): ?> required-option<?php endif; ?>" type="text" name="frontend_label[<?php echo $_store->getId() ?>]" value="<?php echo $this->htmlEscape($_labels[$_store->getId()]) ?>"<?php if ($this->getReadOnly()):?> disabled="disabled"<?php endif;?>/>
46
+ </td>
47
+ <?php endforeach; ?>
48
+ </tr>
49
+ </table>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ <br/>
54
+ <div class="entity-edit" id="matage-options-panel">
55
+ <div class="entry-edit-head">
56
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('catalog')->__('Manage Options (values of your attribute)') ?></h4>
57
+ </div>
58
+ <div class="box">
59
+ <div class="hor-scroll">
60
+ <table class="dynamic-grid" cellspacing="0" cellpadding="0">
61
+ <tr id="attribute-options-table">
62
+ <?php foreach ($this->getStores() as $_store): ?>
63
+ <th><?php echo $_store->getName() ?></th>
64
+ <?php endforeach; ?>
65
+ <th><?php echo Mage::helper('catalog')->__('Position') ?></th>
66
+ <th class="nobr a-center"><?php echo Mage::helper('catalog')->__('Is Default') ?></th>
67
+ <th class="nobr"><?php echo Mage::helper('catalog')->__('Image') ?></th>
68
+ <th>
69
+ <?php if (!$this->getReadOnly()):?>
70
+ <?php echo $this->getAddNewButtonHtml() ?>
71
+ <?php endif;?>
72
+ </th>
73
+ </tr>
74
+ <tr class="no-display template" id="row-template">
75
+ <?php foreach ($this->getStores() as $_store): ?>
76
+ <td><input name="option[value][{{id}}][<?php echo $_store->getId() ?>]" value="{{store<?php echo $_store->getId() ?>}}" class="input-text<?php if($_store->getId()==0): ?> required-option<?php endif; ?>" type="text" <?php if ($this->getReadOnly()):?> disabled="disabled"<?php endif;?>/></td>
77
+ <?php endforeach; ?>
78
+ <td class="a-center"><input class="input-text" type="text" name="option[order][{{id}}]" value="{{sort_order}}" <?php if ($this->getReadOnly()):?> disabled="disabled"<?php endif;?>/></td>
79
+ <td><input class="input-radio" type="radio" name="default[]" value="{{id}}" <?php if ($this->getReadOnly()):?> disabled="disabled"<?php endif;?>/></td>
80
+ <td class="a-left">
81
+ <input type="hidden" class="delete-flag" name="option[delete][{{id}}]" value="" />
82
+ <?php if (!$this->getReadOnly()):?>
83
+ <?php echo $this->getDeleteButtonHtml() ?>
84
+ <?php endif;?>
85
+ </td>
86
+ </tr>
87
+ </table>
88
+ </div>
89
+ <input type="hidden" id="option-count-check" value="" />
90
+ </div>
91
+ </div>
92
+ <script type="text/javascript">
93
+ //<![CDATA[
94
+ var optionDefaultInputType = 'radio';
95
+
96
+ // IE removes quotes from element.innerHTML whenever it thinks they're not needed, which breaks html.
97
+ var templateText =
98
+ '<tr class="option-row">'+
99
+ <?php foreach ($this->getStores() as $_store): ?>
100
+ '<td><input name="option[value][{{id}}][<?php echo $_store->getId() ?>]" value="{{store<?php echo $_store->getId() ?>}}" class="input-text<?php if($_store->getId()==0): ?> required-option<?php endif; ?>" type="text" <?php if ($this->getReadOnly()):?> disabled="disabled"<?php endif;?>/><\/td>'+
101
+ <?php endforeach; ?>
102
+ '<td><input class="input-text" type="text" name="option[order][{{id}}]" value="{{sort_order}}" <?php if ($this->getReadOnly()):?> disabled="disabled"<?php endif;?>/><\/td>'+
103
+ '<td class="a-center"><input class="input-radio" type="{{intype}}" name="default[]" value="{{id}}" {{checked}} <?php if ($this->getReadOnly()):?> disabled="disabled"<?php endif;?>/><\/td>'+
104
+ '<td class="nobr"><input id="option_image_{{id}}" type="text" name="option[image][{{id}}]" value="{{image}}" class="attribute_option_image" style="width:300px;" /><button id="add_image_{{id}}" class="scalable" type="button" onclick="MediabrowserUtility.openDialog(\'<?php echo Mage::getSingleton('adminhtml/url')->getUrl('*/cms_wysiwyg_images/index', array('static_urls_allowed' => 1)) ?>target_element_id/option_image_{{id}}/\');"><span>...</span></button></td>'+
105
+ '<td class="a-left">'+
106
+ '<input type="hidden" class="delete-flag" name="option[delete][{{id}}]" value="" />'+
107
+ <?php if (!$this->getReadOnly()):?>
108
+ '<?php echo $this->getDeleteButtonHtml() ?>'+
109
+ <?php endif;?>
110
+ '<\/td>'+
111
+ '<\/tr>';
112
+
113
+ var attributeOption = {
114
+ table : $('attribute-options-table'),
115
+ templateSyntax : /(^|.|\r|\n)({{(\w+)}})/,
116
+ templateText : templateText,
117
+ itemCount : 0,
118
+ totalItems : 0,
119
+ add : function(data) {
120
+ this.template = new Template(this.templateText, this.templateSyntax);
121
+ if(!data.id){
122
+ data = {};
123
+ data.id = 'option_'+this.itemCount;
124
+ }
125
+ if (!data.intype)
126
+ data.intype = optionDefaultInputType;
127
+
128
+ Element.insert(this.table, {after: this.template.evaluate(data)});
129
+ this.bindRemoveButtons();
130
+ this.itemCount++;
131
+ this.totalItems++;
132
+ this.updateItemsCountField();
133
+ },
134
+ remove : function(event){
135
+ var element = $(Event.findElement(event, 'tr')); // !!! Button already
136
+ // have table parent in safari
137
+ // Safari workaround
138
+ element.ancestors().each(function(parentItem){
139
+ if (parentItem.hasClassName('option-row')) {
140
+ element = parentItem;
141
+ throw $break;
142
+ } else if (parentItem.hasClassName('box')) {
143
+ throw $break;
144
+ }
145
+ });
146
+
147
+
148
+ if(element){
149
+ var elementFlags = element.getElementsByClassName('delete-flag');
150
+ if(elementFlags[0]){
151
+ elementFlags[0].value=1;
152
+ }
153
+
154
+ element.addClassName('no-display');
155
+ element.addClassName('template');
156
+ element.hide();
157
+ this.totalItems--;
158
+ this.updateItemsCountField();
159
+ }
160
+ },
161
+ updateItemsCountField: function() {
162
+ if (this.totalItems > 0) {
163
+ $('option-count-check').value = '1';
164
+ } else {
165
+ $('option-count-check').value = '';
166
+ }
167
+ },
168
+ bindRemoveButtons : function(){
169
+ var buttons = $$('.delete-option');
170
+ for(var i=0;i<buttons.length;i++){
171
+ if(!$(buttons[i]).binded){
172
+ $(buttons[i]).binded = true;
173
+ Event.observe(buttons[i], 'click', this.remove.bind(this));
174
+ }
175
+ }
176
+ }
177
+
178
+ }
179
+ if($('row-template')){
180
+ $('row-template').remove();
181
+ }
182
+ attributeOption.bindRemoveButtons();
183
+
184
+ if($('add_new_option_button')){
185
+ Event.observe('add_new_option_button', 'click', attributeOption.add.bind(attributeOption));
186
+ }
187
+ Validation.addAllThese([
188
+ ['required-option', '<?php echo Mage::helper('catalog')->__('Failed') ?>', function(v) {
189
+ return !Validation.get('IsEmpty').test(v);
190
+ }]]);
191
+ Validation.addAllThese([
192
+ ['required-options-count', '<?php echo Mage::helper('catalog')->__('Options is required') ?>', function(v) {
193
+ return !Validation.get('IsEmpty').test(v);
194
+ }]]);
195
+ <?php foreach ($this->getOptionValues() as $_value): ?>
196
+ attributeOption.add(<?php echo $_value->toJson() ?>);
197
+ <?php endforeach; ?>
198
+ //]]>
199
+ </script>
package.xml CHANGED
@@ -1,18 +1,20 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Web4pro_Stockstatus</name>
4
- <version>1.0.1</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.web4pro.net/license.txt">GPL</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Replace default stock statuses with text or configure the number of products available in stock. </summary>
10
  <description>With this module you are able to set a custom "stock status" in the products edit page for each and every simple product.</description>
11
- <notes>Version number: 1.0.1</notes>
 
 
12
  <authors><author><name>Sergey Repin</name><user>srepin</user><email>srepin@corp.web4pro.com.ua</email></author></authors>
13
- <date>2015-04-08</date>
14
- <time>13:42:03</time>
15
- <contents><target name="magecommunity"><dir name="Web4pro"><dir name="Stockstatus"><dir name="Block"><dir name="Catalog"><dir name="Product"><dir name="View"><dir name="Type"><dir name="Bundle"><dir name="Option"><file name="Checkbox.php" hash="c4099a200a945441d73bd05b6e2a380d"/><file name="Multi.php" hash="3833051ccc5e2fa8d0d889370c7e7e88"/><file name="Radio.php" hash="a84228b8ebcc1762c7ae5c10ffb2b7cb"/><file name="Select.php" hash="aa9ead2a4caca487e6a5ac8c057a2964"/></dir><file name="Option.php" hash="6f89953e7e34a048211d99b2fa935471"/></dir><file name="Configurable.php" hash="571a10f0b1daae80b058d0c187687bd9"/></dir></dir></dir></dir><file name="Stockstatus.php" hash="617ab7df4874c3e1c84bb7f7f4d40ab8"/></dir><dir name="Helper"><file name="Data.php" hash="94d3a5028f64be9f5f4f4a50aafb9711"/></dir><dir name="Model"><file name="Observer.php" hash="d6307b6e09b2c1624880eae27d193ca9"/></dir><dir name="etc"><file name="adminhtml.xml" hash="4483da36b754d5ffd4bcef726bff7ef1"/><file name="config.xml" hash="d034c1a039e9ba089c268c65681a55ca"/><file name="system.xml" hash="cf601c69310e26834d58d48afadfcb9d"/></dir><dir name="sql"><dir name="web4pro_stockstatus_setup"><file name="install-1.0.0.php" hash="18a87188f782107b5d99a334444cbfbf"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="web4pro_stockstatus.xml" hash="73954398b61e7bb2fd93a998b43b5a77"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Web4pro_Stockstatus.xml" hash="c7a0ae32162bb27eed946ae5e00f6b4d"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Web4pro_Stockstatus.csv" hash="ef575ef3b7764b8e9d4ef163b248e9b5"/></dir></target><target name="mage"><dir name="js"><dir name="web4pro"><dir name="stockstatus"><file name="stockstatus.js" hash="45816dd271c1bf2fdb4ac9159062c645"/></dir></dir></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.3.0</min><max>5.6.7</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Web4pro_Stockstatus</name>
4
+ <version>1.0.2</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.web4pro.net/license.txt">GPL</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Replace default stock statuses with text or configure the number of products available in stock. </summary>
10
  <description>With this module you are able to set a custom "stock status" in the products edit page for each and every simple product.</description>
11
+ <notes>Version number: 1.0.1&#xD;
12
+ Version number: 1.0.2&#xD;
13
+ - Ability to add custom image at stockstatus</notes>
14
  <authors><author><name>Sergey Repin</name><user>srepin</user><email>srepin@corp.web4pro.com.ua</email></author></authors>
15
+ <date>2015-04-23</date>
16
+ <time>14:20:01</time>
17
+ <contents><target name="magecommunity"><dir name="Web4pro"><dir name="Stockstatus"><dir name="Block"><dir name="Adminhtml"><dir name="Catalog"><dir name="Product"><dir name="Attribute"><file name="Options.php" hash="5b77963e42a4a0ada2c52dbd7cd75192"/></dir></dir></dir></dir><dir name="Catalog"><dir name="Product"><dir name="View"><dir name="Type"><dir name="Bundle"><dir name="Option"><file name="Checkbox.php" hash="c4099a200a945441d73bd05b6e2a380d"/><file name="Multi.php" hash="3833051ccc5e2fa8d0d889370c7e7e88"/><file name="Radio.php" hash="a84228b8ebcc1762c7ae5c10ffb2b7cb"/><file name="Select.php" hash="aa9ead2a4caca487e6a5ac8c057a2964"/></dir><file name="Option.php" hash="6f89953e7e34a048211d99b2fa935471"/></dir><file name="Configurable.php" hash="571a10f0b1daae80b058d0c187687bd9"/></dir></dir></dir></dir><file name="Stockstatus.php" hash="617ab7df4874c3e1c84bb7f7f4d40ab8"/></dir><dir name="Helper"><dir name="Cms"><dir name="Wysiwyg"><file name="Images.php" hash="dd697899de675ecc64422a24cd611e2e"/></dir></dir><file name="Data.php" hash="b1b82c341804cd1dd7a36be5d9e0ec51"/></dir><dir name="Model"><dir name="Catalog"><dir name="Resource"><dir name="Eav"><dir name="Mysql4"><file name="Attribute.php" hash="209ad55952709f7627705d2d8c963e28"/></dir></dir></dir></dir><dir name="Eav"><dir name="Entity"><dir name="Attribute"><dir name="Source"><file name="Table.php" hash="f74b63a10fc14cd49ae98bf611ca2f1e"/></dir></dir></dir><dir name="Mysql4"><dir name="Entity"><dir name="Attribute"><file name="Option.php" hash="9bdf04d8a73cd4302f698d9554446682"/></dir></dir></dir></dir><file name="Observer.php" hash="361c2927d62aafa81dc5f11adb511e9e"/></dir><dir name="controllers"><dir name="Cms"><dir name="Wysiwyg"><file name="ImagesController.php" hash="1c1ee0b19ba290f0e617f8f1d79499ee"/></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="4483da36b754d5ffd4bcef726bff7ef1"/><file name="config.xml" hash="3e8eb8f7201f32dc045a66effbf7a1fd"/><file name="system.xml" hash="20fb3cafa4fe2aa5f113af2fbe151a89"/></dir><dir name="sql"><dir name="web4pro_stockstatus_setup"><file name="install-1.0.0.php" hash="e3188e776007cf300b4d0b0961c17d7e"/><file name="upgrade-1.0.0-1.0.2.php" hash="edca71ac39d408c1a812cc82331ff495"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="web4pro_stockstatus.xml" hash="73954398b61e7bb2fd93a998b43b5a77"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="stockstatus"><dir name="catalog"><dir name="product"><dir name="attribute"><file name="options.phtml" hash="66ebd7097587518e65c24ee043bee466"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Web4pro_Stockstatus.xml" hash="c7a0ae32162bb27eed946ae5e00f6b4d"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Web4pro_Stockstatus.csv" hash="ef575ef3b7764b8e9d4ef163b248e9b5"/></dir></target><target name="mage"><dir name="js"><dir name="web4pro"><dir name="stockstatus"><file name="stockstatus.js" hash="45816dd271c1bf2fdb4ac9159062c645"/></dir></dir></dir></target></contents>
18
  <compatible/>
19
  <dependencies><required><php><min>5.3.0</min><max>5.6.7</max></php></required></dependencies>
20
  </package>