Futurenext_Zakeke - Version 1.0.0.8

Version Notes

Bug fixing release

Download this release

Release Info

Developer Futurenext
Extension Futurenext_Zakeke
Version 1.0.0.8
Comparing to
See all releases


Code changes from version 1.0.0.7 to 1.0.0.8

Files changed (26) hide show
  1. app/code/community/Futurenext/Zakeke/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Downloadable.php +0 -36
  2. app/code/community/Futurenext/Zakeke/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable.php +0 -168
  3. app/code/community/Futurenext/Zakeke/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Links.php +0 -302
  4. app/code/community/Futurenext/Zakeke/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Samples.php +0 -210
  5. app/code/community/Futurenext/Zakeke/Block/Adminhtml/Sales/Items/Column/Zakeke/Name.php +16 -20
  6. app/code/community/Futurenext/Zakeke/Block/CartItemRenderer.php +10 -25
  7. app/code/community/Futurenext/Zakeke/Block/CheckoutItemRenderer.php +14 -22
  8. app/code/community/Futurenext/Zakeke/Block/Sales/Order/Email/Items/Order/Default.php +0 -37
  9. app/code/community/Futurenext/Zakeke/Block/SalesItemRenderer.php +9 -16
  10. app/code/community/Futurenext/Zakeke/Block/View.php +3 -11
  11. app/code/community/Futurenext/Zakeke/Helper/Data.php +23 -7
  12. app/code/community/Futurenext/Zakeke/Helper/ZakekeApi.php +340 -457
  13. app/code/community/Futurenext/Zakeke/Model/Observer.php +78 -137
  14. app/code/community/Futurenext/Zakeke/controllers/CustomizeController.php +6 -11
  15. app/code/community/Futurenext/Zakeke/etc/config.xml +11 -6
  16. app/code/community/Futurenext/Zakeke/etc/system.xml +2 -12
  17. app/design/adminhtml/default/default/template/zakeke/sales/items/column/zakeke/name.phtml +1 -1
  18. app/design/adminhtml/default/default/template/zakeke/sales/order/invoice/create/items/renderer/zakeke.phtml +0 -26
  19. app/design/adminhtml/default/default/template/zakeke/sales/order/invoice/view/items/renderer/zakeke.phtml +0 -26
  20. app/design/frontend/base/default/layout/zakeke.xml +0 -41
  21. app/design/frontend/base/default/template/zakeke/checkout/onepage/review/item.phtml +0 -237
  22. app/design/frontend/base/default/template/zakeke/sales/order/items/renderer/zakeke.phtml +0 -349
  23. app/locale/it_IT/Futurenext_Zakeke.csv +2 -1
  24. package.xml +4 -4
  25. skin/frontend/base/default/css/zakeke/productview.css +0 -0
  26. skin/frontend/base/default/js/zakeke/preview.js +0 -45
app/code/community/Futurenext/Zakeke/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Downloadable.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magento.com so we can send you a copy immediately.
14
- *
15
- * DISCLAIMER
16
- *
17
- * Do not edit or add to this file if you wish to upgrade Magento to newer
18
- * versions in the future. If you wish to customize Magento for your
19
- * needs please refer to http://www.magento.com for more information.
20
- *
21
- * @category Mage
22
- * @package Mage_Downloadable
23
- * @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
24
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
- */
26
-
27
- /**
28
- * Adminhtml block for fieldset of downloadable product
29
- *
30
- * @category Mage
31
- * @package Mage_Adminhtml
32
- * @author Magento Core Team <core@magentocommerce.com>
33
- */
34
- class Mage_Downloadable_Block_Adminhtml_Catalog_Product_Composite_Fieldset_Downloadable extends Mage_Downloadable_Block_Catalog_Product_Links
35
- {
36
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Futurenext/Zakeke/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable.php DELETED
@@ -1,168 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magento.com so we can send you a copy immediately.
14
- *
15
- * DISCLAIMER
16
- *
17
- * Do not edit or add to this file if you wish to upgrade Magento to newer
18
- * versions in the future. If you wish to customize Magento for your
19
- * needs please refer to http://www.magento.com for more information.
20
- *
21
- * @category Mage
22
- * @package Mage_Downloadable
23
- * @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
24
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
- */
26
-
27
- /**
28
- * Adminhtml catalog product downloadable items tab and form
29
- *
30
- * @category Mage
31
- * @package Mage_Downloadable
32
- * @author Magento Core Team <core@magentocommerce.com>
33
- */
34
- class Mage_Downloadable_Block_Adminhtml_Catalog_Product_Edit_Tab_Downloadable
35
- extends Mage_Adminhtml_Block_Widget implements Mage_Adminhtml_Block_Widget_Tab_Interface
36
- {
37
-
38
- /**
39
- * Reference to product objects that is being edited
40
- *
41
- * @var Mage_Catalog_Model_Product
42
- */
43
- protected $_product = null;
44
-
45
- protected $_config = null;
46
-
47
- /**
48
- * Class constructor
49
- *
50
- */
51
- public function __construct()
52
- {
53
- parent::__construct();
54
- // $this->setSkipGenerateContent(true);
55
- $this->setTemplate('downloadable/product/edit/downloadable.phtml');
56
- }
57
-
58
- /**
59
- * Get tab URL
60
- *
61
- * @return string
62
- */
63
- // public function getTabUrl()
64
- // {
65
- // return $this->getUrl('downloadable/product_edit/form', array('_current' => true));
66
- // }
67
-
68
- /**
69
- * Get tab class
70
- *
71
- * @return string
72
- */
73
- // public function getTabClass()
74
- // {
75
- // return 'ajax';
76
- // }
77
-
78
- /**
79
- * Check is readonly block
80
- *
81
- * @return boolean
82
- */
83
- public function isReadonly()
84
- {
85
- return $this->getProduct()->getDownloadableReadonly();
86
- }
87
-
88
- /**
89
- * Retrieve product
90
- *
91
- * @return Mage_Catalog_Model_Product
92
- */
93
- public function getProduct()
94
- {
95
- return Mage::registry('current_product');
96
- }
97
-
98
- /**
99
- * Get tab label
100
- *
101
- * @return string
102
- */
103
- public function getTabLabel()
104
- {
105
- return Mage::helper('downloadable')->__('Downloadable Information');
106
- }
107
-
108
- /**
109
- * Get tab title
110
- *
111
- * @return string
112
- */
113
- public function getTabTitle()
114
- {
115
- return Mage::helper('downloadable')->__('Downloadable Information');
116
- }
117
-
118
- /**
119
- * Check if tab can be displayed
120
- *
121
- * @return boolean
122
- */
123
- public function canShowTab()
124
- {
125
- return true;
126
- }
127
-
128
- /**
129
- * Check if tab is hidden
130
- *
131
- * @return boolean
132
- */
133
- public function isHidden()
134
- {
135
- return false;
136
- }
137
-
138
- /**
139
- * Render block HTML
140
- *
141
- * @return string
142
- */
143
- protected function _toHtml()
144
- {
145
- $accordion = $this->getLayout()->createBlock('adminhtml/widget_accordion')
146
- ->setId('downloadableInfo');
147
-
148
- $accordion->addItem('samples', array(
149
- 'title' => Mage::helper('adminhtml')->__('Samples'),
150
- 'content' => $this->getLayout()
151
- ->createBlock('downloadable/adminhtml_catalog_product_edit_tab_downloadable_samples')->toHtml(),
152
- 'open' => false,
153
- ));
154
-
155
- $accordion->addItem('links', array(
156
- 'title' => Mage::helper('adminhtml')->__('Links'),
157
- 'content' => $this->getLayout()->createBlock(
158
- 'downloadable/adminhtml_catalog_product_edit_tab_downloadable_links',
159
- 'catalog.product.edit.tab.downloadable.links')->toHtml(),
160
- 'open' => true,
161
- ));
162
-
163
- $this->setChild('accordion', $accordion);
164
-
165
- return parent::_toHtml();
166
- }
167
-
168
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Futurenext/Zakeke/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Links.php DELETED
@@ -1,302 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magento.com so we can send you a copy immediately.
14
- *
15
- * DISCLAIMER
16
- *
17
- * Do not edit or add to this file if you wish to upgrade Magento to newer
18
- * versions in the future. If you wish to customize Magento for your
19
- * needs please refer to http://www.magento.com for more information.
20
- *
21
- * @category Mage
22
- * @package Mage_Downloadable
23
- * @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
24
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
- */
26
-
27
- /**
28
- * Adminhtml catalog product downloadable items tab links section
29
- *
30
- * @category Mage
31
- * @package Mage_Downloadable
32
- * @author Magento Core Team <core@magentocommerce.com>
33
- */
34
- class Mage_Downloadable_Block_Adminhtml_Catalog_Product_Edit_Tab_Downloadable_Links
35
- extends Mage_Adminhtml_Block_Template
36
- {
37
- /**
38
- * Purchased Separately Attribute cache
39
- *
40
- * @var Mage_Catalog_Model_Resource_Eav_Attribute
41
- */
42
- protected $_purchasedSeparatelyAttribute = null;
43
-
44
- /**
45
- * Class constructor
46
- *
47
- */
48
- public function __construct()
49
- {
50
- parent::__construct();
51
- $this->setTemplate('downloadable/product/edit/downloadable/links.phtml');
52
- $this->setCanEditPrice(true);
53
- $this->setCanReadPrice(true);
54
- }
55
-
56
- /**
57
- * Get product that is being edited
58
- *
59
- * @return Mage_Catalog_Model_Product
60
- */
61
- public function getProduct()
62
- {
63
- return Mage::registry('product');
64
- }
65
-
66
- /**
67
- * Retrieve Purchased Separately Attribute object
68
- *
69
- * @return Mage_Catalog_Model_Resource_Eav_Attribute
70
- */
71
- public function getPurchasedSeparatelyAttribute()
72
- {
73
- if (is_null($this->_purchasedSeparatelyAttribute)) {
74
- $_attributeCode = 'links_purchased_separately';
75
-
76
- $this->_purchasedSeparatelyAttribute = Mage::getModel('eav/entity_attribute')
77
- ->loadByCode(Mage_Catalog_Model_Product::ENTITY, $_attributeCode);
78
- }
79
-
80
- return $this->_purchasedSeparatelyAttribute;
81
- }
82
-
83
- /**
84
- * Retrieve Purchased Separately HTML select
85
- *
86
- * @return string
87
- */
88
- public function getPurchasedSeparatelySelect()
89
- {
90
- $select = $this->getLayout()->createBlock('adminhtml/html_select')
91
- ->setName('product[links_purchased_separately]')
92
- ->setId('downloadable_link_purchase_type')
93
- ->setOptions(Mage::getSingleton('adminhtml/system_config_source_yesno')->toOptionArray())
94
- ->setValue($this->getProduct()->getLinksPurchasedSeparately());
95
-
96
- return $select->getHtml();
97
- }
98
-
99
- /**
100
- * Retrieve Add button HTML
101
- *
102
- * @return string
103
- */
104
- public function getAddButtonHtml()
105
- {
106
- $addButton = $this->getLayout()->createBlock('adminhtml/widget_button')
107
- ->setData(array(
108
- 'label' => Mage::helper('downloadable')->__('Add New Row'),
109
- 'id' => 'add_link_item',
110
- 'class' => 'add'
111
- ));
112
- return $addButton->toHtml();
113
- }
114
-
115
- /**
116
- * Retrieve default links title
117
- *
118
- * @return string
119
- */
120
- public function getLinksTitle()
121
- {
122
- return Mage::getStoreConfig(Mage_Downloadable_Model_Link::XML_PATH_LINKS_TITLE);
123
- }
124
-
125
- /**
126
- * Check exists defined links title
127
- *
128
- * @return bool
129
- */
130
- public function getUsedDefault()
131
- {
132
- return $this->getProduct()->getAttributeDefaultValue('links_title') === false;
133
- }
134
-
135
- /**
136
- * Return true if price in website scope
137
- *
138
- * @deprecated since 1.14.2.0
139
- * @return bool
140
- */
141
- public function getIsPriceWebsiteScope()
142
- {
143
- return Mage::helper('downloadable')->getIsPriceWebsiteScope();
144
- }
145
-
146
- /**
147
- * Return array of links
148
- *
149
- * @return array
150
- */
151
- public function getLinkData()
152
- {
153
- $linkArr = array();
154
- $links = $this->getProduct()->getTypeInstance(true)->getLinks($this->getProduct());
155
- $priceWebsiteScope = Mage::helper('downloadable')->getIsPriceWebsiteScope();
156
- foreach ($links as $item) {
157
- $tmpLinkItem = array(
158
- 'link_id' => $item->getId(),
159
- 'title' => $this->escapeHtml($item->getTitle()),
160
- 'price' => $this->getCanReadPrice() ? $this->getPriceValue($item->getPrice()) : '',
161
- 'number_of_downloads' => $item->getNumberOfDownloads(),
162
- 'is_shareable' => $item->getIsShareable(),
163
- 'link_url' => $item->getLinkUrl(),
164
- 'link_type' => $item->getLinkType(),
165
- 'sample_file' => $item->getSampleFile(),
166
- 'sample_url' => $item->getSampleUrl(),
167
- 'sample_type' => $item->getSampleType(),
168
- 'sort_order' => $item->getSortOrder(),
169
- );
170
- $file = Mage::helper('downloadable/file')->getFilePath(
171
- Mage_Downloadable_Model_Link::getBasePath(), $item->getLinkFile()
172
- );
173
-
174
- if ($item->getLinkFile() && !is_file($file)) {
175
- Mage::helper('core/file_storage_database')->saveFileToFilesystem($file);
176
- }
177
-
178
- if ($item->getLinkFile() && is_file($file)) {
179
- $name = '<a href="'
180
- . $this->getUrl('*/downloadable_product_edit/link', array(
181
- 'id' => $item->getId(),
182
- '_secure' => true
183
- )) . '">' . Mage::helper('downloadable/file')->getFileFromPathFile($item->getLinkFile()) . '</a>';
184
- $tmpLinkItem['file_save'] = array(
185
- array(
186
- 'file' => $item->getLinkFile(),
187
- 'name' => $name,
188
- 'size' => filesize($file),
189
- 'status' => 'old'
190
- ));
191
- }
192
- $sampleFile = Mage::helper('downloadable/file')->getFilePath(
193
- Mage_Downloadable_Model_Link::getBaseSamplePath(), $item->getSampleFile()
194
- );
195
- if ($item->getSampleFile() && is_file($sampleFile)) {
196
- $tmpLinkItem['sample_file_save'] = array(
197
- array(
198
- 'file' => $item->getSampleFile(),
199
- 'name' => Mage::helper('downloadable/file')->getFileFromPathFile($item->getSampleFile()),
200
- 'size' => filesize($sampleFile),
201
- 'status' => 'old'
202
- ));
203
- }
204
- if ($item->getNumberOfDownloads() == '0') {
205
- $tmpLinkItem['is_unlimited'] = ' checked="checked"';
206
- }
207
- if ($this->getProduct()->getStoreId() && $item->getStoreTitle()) {
208
- $tmpLinkItem['store_title'] = $item->getStoreTitle();
209
- }
210
- if ($this->getProduct()->getStoreId() && $priceWebsiteScope) {
211
- $tmpLinkItem['website_price'] = $item->getWebsitePrice();
212
- }
213
- $linkArr[] = new Varien_Object($tmpLinkItem);
214
- }
215
- return $linkArr;
216
- }
217
-
218
- /**
219
- * Return formated price with two digits after decimal point
220
- *
221
- * @param decimal $value
222
- * @return decimal
223
- */
224
- public function getPriceValue($value)
225
- {
226
- return number_format($value, 2, null, '');
227
- }
228
-
229
- /**
230
- * Retrieve max downloads value from config
231
- *
232
- * @return int
233
- */
234
- public function getConfigMaxDownloads()
235
- {
236
- return Mage::getStoreConfig(Mage_Downloadable_Model_Link::XML_PATH_DEFAULT_DOWNLOADS_NUMBER);
237
- }
238
-
239
- /**
240
- * Prepare block Layout
241
- *
242
- */
243
- protected function _prepareLayout()
244
- {
245
- $this->setChild(
246
- 'upload_button',
247
- $this->getLayout()->createBlock('adminhtml/widget_button')->addData(array(
248
- 'id' => '',
249
- 'label' => Mage::helper('adminhtml')->__('Upload Files'),
250
- 'type' => 'button',
251
- 'onclick' => 'Downloadable.massUploadByType(\'links\');Downloadable.massUploadByType(\'linkssample\')'
252
- ))
253
- );
254
- }
255
-
256
- /**
257
- * Retrieve Upload button HTML
258
- *
259
- * @return string
260
- */
261
- public function getUploadButtonHtml()
262
- {
263
- return $this->getChild('upload_button')->toHtml();
264
- }
265
-
266
- /**
267
- * Retrive config json
268
- *
269
- * @return string
270
- */
271
- public function getConfigJson($type='links')
272
- {
273
- $this->getConfig()->setUrl(Mage::getModel('adminhtml/url')->addSessionParam()
274
- ->getUrl('*/downloadable_file/upload', array('type' => $type, '_secure' => true)));
275
- $this->getConfig()->setParams(array('form_key' => $this->getFormKey()));
276
- $this->getConfig()->setFileField($type);
277
- $this->getConfig()->setFilters(array(
278
- 'all' => array(
279
- 'label' => Mage::helper('adminhtml')->__('All Files'),
280
- 'files' => array('*.*')
281
- )
282
- ));
283
- $this->getConfig()->setReplaceBrowseWithRemove(true);
284
- $this->getConfig()->setWidth('32');
285
- $this->getConfig()->setHideUploadButton(true);
286
- return Mage::helper('core')->jsonEncode($this->getConfig()->getData());
287
- }
288
-
289
- /**
290
- * Retrive config object
291
- *
292
- * @return Varien_Config
293
- */
294
- public function getConfig()
295
- {
296
- if(is_null($this->_config)) {
297
- $this->_config = new Varien_Object();
298
- }
299
-
300
- return $this->_config;
301
- }
302
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Futurenext/Zakeke/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Samples.php DELETED
@@ -1,210 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magento.com so we can send you a copy immediately.
14
- *
15
- * DISCLAIMER
16
- *
17
- * Do not edit or add to this file if you wish to upgrade Magento to newer
18
- * versions in the future. If you wish to customize Magento for your
19
- * needs please refer to http://www.magento.com for more information.
20
- *
21
- * @category Mage
22
- * @package Mage_Downloadable
23
- * @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
24
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
- */
26
-
27
- /**
28
- * Adminhtml catalog product downloadable items tab links section
29
- *
30
- * @category Mage
31
- * @package Mage_Downloadable
32
- * @author Magento Core Team <core@magentocommerce.com>
33
- */
34
- class Mage_Downloadable_Block_Adminhtml_Catalog_Product_Edit_Tab_Downloadable_Samples
35
- extends Mage_Adminhtml_Block_Widget
36
- {
37
- /**
38
- * Class constructor
39
- *
40
- */
41
- public function __construct()
42
- {
43
- parent::__construct();
44
- $this->setTemplate('downloadable/product/edit/downloadable/samples.phtml');
45
- }
46
-
47
- /**
48
- * Get model of the product that is being edited
49
- *
50
- * @return Mage_Catalog_Model_Product
51
- */
52
- public function getProduct()
53
- {
54
- return Mage::registry('current_product');
55
- }
56
-
57
- /**
58
- * Check block is readonly
59
- *
60
- * @return boolean
61
- */
62
- public function isReadonly()
63
- {
64
- return $this->getProduct()->getDownloadableReadonly();
65
- }
66
-
67
-
68
- /**
69
- * Retrieve Add Button HTML
70
- *
71
- * @return string
72
- */
73
- public function getAddButtonHtml()
74
- {
75
- $addButton = $this->getLayout()->createBlock('adminhtml/widget_button')
76
- ->setData(array(
77
- 'label' => Mage::helper('downloadable')->__('Add New Row'),
78
- 'id' => 'add_sample_item',
79
- 'class' => 'add',
80
- ));
81
- return $addButton->toHtml();
82
- }
83
-
84
- /**
85
- * Retrieve samples array
86
- *
87
- * @return array
88
- */
89
- public function getSampleData()
90
- {
91
- $samplesArr = array();
92
- $samples = $this->getProduct()->getTypeInstance(true)->getSamples($this->getProduct());
93
- foreach ($samples as $item) {
94
- $tmpSampleItem = array(
95
- 'sample_id' => $item->getId(),
96
- 'title' => $this->escapeHtml($item->getTitle()),
97
- 'sample_url' => $item->getSampleUrl(),
98
- 'sample_type' => $item->getSampleType(),
99
- 'sort_order' => $item->getSortOrder(),
100
- );
101
- $file = Mage::helper('downloadable/file')->getFilePath(
102
- Mage_Downloadable_Model_Sample::getBasePath(), $item->getSampleFile()
103
- );
104
- if ($item->getSampleFile() && !is_file($file)) {
105
- Mage::helper('core/file_storage_database')->saveFileToFilesystem($file);
106
- }
107
- if ($item->getSampleFile() && is_file($file)) {
108
- $tmpSampleItem['file_save'] = array(
109
- array(
110
- 'file' => $item->getSampleFile(),
111
- 'name' => Mage::helper('downloadable/file')->getFileFromPathFile($item->getSampleFile()),
112
- 'size' => filesize($file),
113
- 'status' => 'old'
114
- ));
115
- }
116
- if ($this->getProduct() && $item->getStoreTitle()) {
117
- $tmpSampleItem['store_title'] = $item->getStoreTitle();
118
- }
119
- $samplesArr[] = new Varien_Object($tmpSampleItem);
120
- }
121
-
122
- return $samplesArr;
123
- }
124
-
125
- /**
126
- * Check exists defined samples title
127
- *
128
- * @return bool
129
- */
130
- public function getUsedDefault()
131
- {
132
- return $this->getProduct()->getAttributeDefaultValue('samples_title') === false;
133
- }
134
-
135
- /**
136
- * Retrieve Default samples title
137
- *
138
- * @return string
139
- */
140
- public function getSamplesTitle()
141
- {
142
- return Mage::getStoreConfig(Mage_Downloadable_Model_Sample::XML_PATH_SAMPLES_TITLE);
143
- }
144
-
145
- /**
146
- * Prepare layout
147
- *
148
- */
149
- protected function _prepareLayout()
150
- {
151
- $this->setChild(
152
- 'upload_button',
153
- $this->getLayout()->createBlock('adminhtml/widget_button')
154
- ->addData(array(
155
- 'id' => '',
156
- 'label' => Mage::helper('adminhtml')->__('Upload Files'),
157
- 'type' => 'button',
158
- 'onclick' => 'Downloadable.massUploadByType(\'samples\')'
159
- ))
160
- );
161
- }
162
-
163
- /**
164
- * Retrieve Upload button HTML
165
- *
166
- * @return string
167
- */
168
- public function getUploadButtonHtml()
169
- {
170
- return $this->getChild('upload_button')->toHtml();
171
- }
172
-
173
- /**
174
- * Retrive config json
175
- *
176
- * @return string
177
- */
178
- public function getConfigJson()
179
- {
180
- $this->getConfig()->setUrl(Mage::getModel('adminhtml/url')
181
- ->addSessionParam()
182
- ->getUrl('*/downloadable_file/upload', array('type' => 'samples', '_secure' => true)));
183
- $this->getConfig()->setParams(array('form_key' => $this->getFormKey()));
184
- $this->getConfig()->setFileField('samples');
185
- $this->getConfig()->setFilters(array(
186
- 'all' => array(
187
- 'label' => Mage::helper('adminhtml')->__('All Files'),
188
- 'files' => array('*.*')
189
- )
190
- ));
191
- $this->getConfig()->setReplaceBrowseWithRemove(true);
192
- $this->getConfig()->setWidth('32');
193
- $this->getConfig()->setHideUploadButton(true);
194
- return Mage::helper('core')->jsonEncode($this->getConfig()->getData());
195
- }
196
-
197
- /**
198
- * Retrive config object
199
- *
200
- * @return Varien_Config
201
- */
202
- public function getConfig()
203
- {
204
- if(is_null($this->_config)) {
205
- $this->_config = new Varien_Object();
206
- }
207
-
208
- return $this->_config;
209
- }
210
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Futurenext/Zakeke/Block/Adminhtml/Sales/Items/Column/Zakeke/Name.php CHANGED
@@ -26,20 +26,11 @@ class Futurenext_Zakeke_Block_Adminhtml_Sales_Items_Column_Zakeke_Name extends M
26
  * @throws Exception
27
  */
28
  try {
29
- $additionalOptions = $this->getItem()->getProductOptionByCode('additional_options');
30
- if (!$additionalOptions) {
31
  return false;
32
  }
33
-
34
- foreach ($additionalOptions as $option) {
35
- if (!isset($option['is_zakeke'])) {
36
- continue;
37
- }
38
-
39
- return $option;
40
- }
41
-
42
- return false;
43
  } catch (Exception $e) {
44
  Mage::logException($e);
45
  throw $e;
@@ -94,15 +85,16 @@ class Futurenext_Zakeke_Block_Adminhtml_Sales_Items_Column_Zakeke_Name extends M
94
  return false;
95
  }
96
 
97
- $previews = $zakekeApi->getPreview($zakekeDesignId);
98
- if (!$previews) {
 
99
  $zakekeOption = $this->getZakekeOption();
100
  if (isset($zakekeOption['previews'])) {
101
- $previews = $zakekeOption['previews'];
102
  }
103
- }
104
 
105
- return $previews;
 
106
  } catch (Exception $e) {
107
  Mage::logException($e);
108
  throw $e;
@@ -112,7 +104,7 @@ class Futurenext_Zakeke_Block_Adminhtml_Sales_Items_Column_Zakeke_Name extends M
112
  /**
113
  * Get the Zakeke design output zip url
114
  *
115
- * @return array|false
116
  * @throws Exception
117
  */
118
  public function getZakekeOutputZip()
@@ -125,8 +117,12 @@ class Futurenext_Zakeke_Block_Adminhtml_Sales_Items_Column_Zakeke_Name extends M
125
  if (!$zakekeDesignId) {
126
  return false;
127
  }
128
- $zipUrl = $zakekeApi->getZakekeOutputZip($zakekeDesignId);
129
- return $zipUrl;
 
 
 
 
130
  } catch (Exception $e) {
131
  Mage::logException($e);
132
  throw $e;
26
  * @throws Exception
27
  */
28
  try {
29
+ $options = $this->getItem()->getProductOptionByCode('additional_options');
30
+ if (!$options) {
31
  return false;
32
  }
33
+ return Futurenext_Zakeke_Helper_Data::getZakekeOption($options);
 
 
 
 
 
 
 
 
 
34
  } catch (Exception $e) {
35
  Mage::logException($e);
36
  throw $e;
85
  return false;
86
  }
87
 
88
+ try {
89
+ return $zakekeApi->getPreview($zakekeDesignId);
90
+ } catch (Exception $e) {
91
  $zakekeOption = $this->getZakekeOption();
92
  if (isset($zakekeOption['previews'])) {
93
+ return $zakekeOption['previews'];
94
  }
 
95
 
96
+ return false;
97
+ }
98
  } catch (Exception $e) {
99
  Mage::logException($e);
100
  throw $e;
104
  /**
105
  * Get the Zakeke design output zip url
106
  *
107
+ * @return string|false
108
  * @throws Exception
109
  */
110
  public function getZakekeOutputZip()
117
  if (!$zakekeDesignId) {
118
  return false;
119
  }
120
+ try {
121
+ $zipUrl = $zakekeApi->getZakekeOutputZip($zakekeDesignId);
122
+ return $zipUrl;
123
+ } catch (Exception $e) {
124
+ return false;
125
+ }
126
  } catch (Exception $e) {
127
  Mage::logException($e);
128
  throw $e;
app/code/community/Futurenext/Zakeke/Block/CartItemRenderer.php CHANGED
@@ -17,23 +17,11 @@
17
  */
18
  class Futurenext_Zakeke_Block_CartItemRenderer extends Mage_Checkout_Block_Cart_Item_Renderer
19
  {
20
- /**
21
- * Get access to the Zakeke API
22
- *
23
- * @return Futurenext_Zakeke_Helper_ZakekeApi
24
- */
25
- protected function getZakekeApi()
26
- {
27
- /** @var Futurenext_Zakeke_Helper_ZakekeApi $zakekeApi */
28
- $zakekeApi = Mage::helper('futurenext_zakeke/zakekeApi');
29
- return $zakekeApi;
30
- }
31
-
32
  /**
33
  * Get the Zakeke design previews
34
  *
35
- * @return array|false
36
  * @throws Exception
 
37
  */
38
  public function getZakekePreviews()
39
  {
@@ -45,24 +33,21 @@ class Futurenext_Zakeke_Block_CartItemRenderer extends Mage_Checkout_Block_Cart_
45
  return false;
46
  }
47
 
48
- $additionalOptions = (array)unserialize($additionalOption->getValue());
49
-
50
- foreach ($additionalOptions as $option) {
51
- if (!isset($option['is_zakeke'])) {
52
- continue;
53
- }
54
 
55
- $previews = array();
56
- if (isset($option['previews'])) {
57
- $previews = $option['previews'];
58
- }
59
- return $previews;
60
  }
 
61
  } catch (Exception $e) {
62
  Mage::logException($e);
63
  throw $e;
64
  }
65
- return false;
66
  }
67
 
68
  /**
17
  */
18
  class Futurenext_Zakeke_Block_CartItemRenderer extends Mage_Checkout_Block_Cart_Item_Renderer
19
  {
 
 
 
 
 
 
 
 
 
 
 
 
20
  /**
21
  * Get the Zakeke design previews
22
  *
 
23
  * @throws Exception
24
+ * @return array|false
25
  */
26
  public function getZakekePreviews()
27
  {
33
  return false;
34
  }
35
 
36
+ $options = (array)unserialize($additionalOption->getValue());
37
+ $option = Futurenext_Zakeke_Helper_Data::getZakekeOption($options);
38
+ if (!$option) {
39
+ return false;
40
+ }
 
41
 
42
+ $previews = array();
43
+ if (isset($option['previews'])) {
44
+ $previews = $option['previews'];
 
 
45
  }
46
+ return $previews;
47
  } catch (Exception $e) {
48
  Mage::logException($e);
49
  throw $e;
50
  }
 
51
  }
52
 
53
  /**
app/code/community/Futurenext/Zakeke/Block/CheckoutItemRenderer.php CHANGED
@@ -42,8 +42,8 @@ class Futurenext_Zakeke_Block_CheckoutItemRenderer extends Mage_Checkout_Block_C
42
  /**
43
  * Get the Zakeke design preview files
44
  *
45
- * @return int|false
46
  * @throws Exception
 
47
  */
48
  public function getZakekeDesignId()
49
  {
@@ -54,16 +54,12 @@ class Futurenext_Zakeke_Block_CheckoutItemRenderer extends Mage_Checkout_Block_C
54
  }
55
 
56
  $options = (array)unserialize($additionalOptions->getValue());
57
-
58
- foreach ($options as $option) {
59
- if (!isset($option['is_zakeke'])) {
60
- continue;
61
- }
62
-
63
- return $option['design'];
64
  }
65
 
66
- return false;
67
  } catch (Exception $e) {
68
  Mage::logException($e);
69
  throw $e;
@@ -73,8 +69,8 @@ class Futurenext_Zakeke_Block_CheckoutItemRenderer extends Mage_Checkout_Block_C
73
  /**
74
  * Get the Zakeke design preview files
75
  *
76
- * @return array|false
77
  * @throws Exception
 
78
  */
79
  public function getZakekePreviews()
80
  {
@@ -85,20 +81,16 @@ class Futurenext_Zakeke_Block_CheckoutItemRenderer extends Mage_Checkout_Block_C
85
  }
86
 
87
  $options = (array)unserialize($additionalOptions->getValue());
88
-
89
- foreach ($options as $option) {
90
- if (!isset($option['is_zakeke'])) {
91
- continue;
92
- }
93
-
94
- $previews = array();
95
- if (isset($option['previews'])) {
96
- $previews = $option['previews'];
97
- }
98
- return $previews;
99
  }
100
 
101
- return false;
 
 
 
 
102
  } catch (Exception $e) {
103
  Mage::logException($e);
104
  throw $e;
42
  /**
43
  * Get the Zakeke design preview files
44
  *
 
45
  * @throws Exception
46
+ * @return int|false
47
  */
48
  public function getZakekeDesignId()
49
  {
54
  }
55
 
56
  $options = (array)unserialize($additionalOptions->getValue());
57
+ $option = Futurenext_Zakeke_Helper_Data::getZakekeOption($options);
58
+ if ($option === false) {
59
+ return false;
 
 
 
 
60
  }
61
 
62
+ return $option['design'];
63
  } catch (Exception $e) {
64
  Mage::logException($e);
65
  throw $e;
69
  /**
70
  * Get the Zakeke design preview files
71
  *
 
72
  * @throws Exception
73
+ * @return array|false
74
  */
75
  public function getZakekePreviews()
76
  {
81
  }
82
 
83
  $options = (array)unserialize($additionalOptions->getValue());
84
+ $option = Futurenext_Zakeke_Helper_Data::getZakekeOption($options);
85
+ if ($option === false) {
86
+ return false;
 
 
 
 
 
 
 
 
87
  }
88
 
89
+ $previews = array();
90
+ if (isset($option['previews'])) {
91
+ $previews = $option['previews'];
92
+ }
93
+ return $previews;
94
  } catch (Exception $e) {
95
  Mage::logException($e);
96
  throw $e;
app/code/community/Futurenext/Zakeke/Block/Sales/Order/Email/Items/Order/Default.php DELETED
@@ -1,37 +0,0 @@
1
- <?php
2
- /*******************************************************
3
- * Copyright (C) 2016 FutureNext SRL
4
- *
5
- * This file is part of Zakeke.
6
- *
7
- * Zakeke can not be copied and/or distributed without the express
8
- * permission of FutureNext SRL
9
- *******************************************************/
10
-
11
-
12
- /**
13
- * Zakeke rewrite for sales email
14
- *
15
- * @category Futurenext
16
- * @package Futurenext_Zakeke
17
- */
18
- class Futurenext_Zakeke_Block_Sales_Order_Email_Items_Order_Default extends Mage_Sales_Block_Order_Email_Items_Order_Default
19
- {
20
- public function getItemOptions()
21
- {
22
- $result = parent::getItemOptions();
23
- foreach ($result as $key => $value) {
24
- if (!isset($value['is_zakeke'])) {
25
- continue;
26
- }
27
-
28
- /** @var Futurenext_Zakeke_Helper_Data $zakekeData */
29
- $zakekeData = Mage::helper('futurenext_zakeke');
30
-
31
- $result[$key]['value'] = $zakekeData->emailHtmlView($value['previews']);
32
- break;
33
- }
34
-
35
- return $result;
36
- }
37
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Futurenext/Zakeke/Block/SalesItemRenderer.php CHANGED
@@ -20,8 +20,8 @@ class Futurenext_Zakeke_Block_SalesItemRenderer extends Mage_Sales_Block_Order_I
20
  /**
21
  * Get the Zakeke design preview files
22
  *
23
- * @return int|false
24
  * @throws Exception
 
25
  */
26
  public function getZakekeDesignId()
27
  {
@@ -47,31 +47,24 @@ class Futurenext_Zakeke_Block_SalesItemRenderer extends Mage_Sales_Block_Order_I
47
  /**
48
  * Get the Zakeke design preview files
49
  *
50
- * @return array|false
51
  * @throws Exception
 
52
  */
53
  public function getZakekePreviews()
54
  {
55
  try {
 
56
  /** @var array $options */
57
  $options = $this->getItem()->getProductOptions();
58
- if (!($options && isset($options['additional_options']))) {
59
- return false;
60
- }
61
-
62
- $additionalOptions = $options['additional_options'];
63
-
64
- foreach ($additionalOptions as $additionalOption) {
65
- if (!isset($additionalOption['is_zakeke'])) {
66
- continue;
67
- }
68
-
69
- if (isset($additionalOption['previews'])) {
70
- return $additionalOption['previews'];
71
  }
72
  }
73
 
74
- return [];
75
  } catch (Exception $e) {
76
  Mage::logException($e);
77
  throw $e;
20
  /**
21
  * Get the Zakeke design preview files
22
  *
 
23
  * @throws Exception
24
+ * @return int|false
25
  */
26
  public function getZakekeDesignId()
27
  {
47
  /**
48
  * Get the Zakeke design preview files
49
  *
 
50
  * @throws Exception
51
+ * @return array
52
  */
53
  public function getZakekePreviews()
54
  {
55
  try {
56
+ $previews = [];
57
  /** @var array $options */
58
  $options = $this->getItem()->getProductOptions();
59
+ if ($options && isset($options['additional_options'])) {
60
+ $options = $options['additional_options'];
61
+ $option = Futurenext_Zakeke_Helper_Data::getZakekeOption($options);
62
+ if ($option !== false || isset($option['previews'])) {
63
+ $previews = $option['previews'];
 
 
 
 
 
 
 
 
64
  }
65
  }
66
 
67
+ return $previews;
68
  } catch (Exception $e) {
69
  Mage::logException($e);
70
  throw $e;
app/code/community/Futurenext/Zakeke/Block/View.php CHANGED
@@ -36,18 +36,10 @@ class Futurenext_Zakeke_Block_View extends Mage_Core_Block_Template
36
  public function isProductCustomizable()
37
  {
38
  $product = $this->getProduct();
39
- $sku = null;
40
- if ($product->getTypeId() == Mage_Catalog_Model_Product_Type_Configurable::TYPE_CODE) {
41
- $sku = $product->getData('sku');
42
- } else {
43
- $sku = $product->getSku();
44
- }
45
 
46
- /** @var Futurenext_Zakeke_Model_ZakekeEnabled $zakekeEnabled */
47
- $zakekeEnabled = Mage::getModel('futurenext_zakeke/zakekeEnabled');
48
- $zakekeEnabledId = $zakekeEnabled->getIdFromSku($sku);
49
- Mage::log('Zakeke product with the sku ' . $sku . ' has $zakekeEnabledId ' . $zakekeEnabledId);
50
- return (bool) $zakekeEnabledId;
51
  }
52
 
53
  /**
36
  public function isProductCustomizable()
37
  {
38
  $product = $this->getProduct();
 
 
 
 
 
 
39
 
40
+ /** @var Futurenext_Zakeke_Helper_Data $zakekeHelper */
41
+ $zakekeHelper = Mage::helper('futurenext_zakeke');
42
+ return $zakekeHelper->isProductCustomizable($product);
 
 
43
  }
44
 
45
  /**
app/code/community/Futurenext/Zakeke/Helper/Data.php CHANGED
@@ -52,32 +52,48 @@ class Futurenext_Zakeke_Helper_Data extends Mage_Core_Helper_Abstract
52
  return (bool) $zakekeEnabledId;
53
  }
54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  /**
56
  * Get the HTML view for the option
57
  *
58
  * @param array $previews
59
  * @return string
60
  */
61
- public function htmlView($previews)
62
  {
63
  $output = '<div class="zakeke-preview"><div style="display: flex">';
64
  foreach ($previews as $preview) {
65
- $output .= '<div onclick="zakekeShowPreview(this)" data-zakeke-label="' . $this->quoteEscape($preview->label) . '" style="position: relative; cursor: pointer; margin: 0px;"><img src="' . $this->quoteEscape($preview->url) . '" style="width: 80px"></div>';
66
  }
67
-
68
  $output .= '</div></div>';
69
  return $output;
70
  }
71
 
72
  /**
73
- * Get the HTML view for the option
74
  *
75
  * @param array $previews
76
  * @return string
77
  */
78
- public function emailHtmlView($previews)
79
  {
80
- $output = '<img src="' . $this->quoteEscape($previews[0]->url) . '" width="150" height="150" />';
81
- return $output;
82
  }
83
  }
52
  return (bool) $zakekeEnabledId;
53
  }
54
 
55
+ /**
56
+ * Get the Zakeke option or false if the product is not customized
57
+ *
58
+ * @param array $options
59
+ * @return array|false
60
+ */
61
+ public static function getZakekeOption($options) {
62
+ foreach ($options as $option) {
63
+ if (!isset($option['is_zakeke'])) {
64
+ continue;
65
+ }
66
+
67
+ return $option;
68
+ }
69
+
70
+ return false;
71
+ }
72
+
73
  /**
74
  * Get the HTML view for the option
75
  *
76
  * @param array $previews
77
  * @return string
78
  */
79
+ public function adminhtmlView($previews)
80
  {
81
  $output = '<div class="zakeke-preview"><div style="display: flex">';
82
  foreach ($previews as $preview) {
83
+ $output .= '<div onclick="zakekeShowPreview(this)" data-zakeke-label="' . $this->quoteEscape($preview->label). '" style="position: relative; cursor: pointer; margin: 0;"><img src="' . $this->quoteEscape($preview->url) . '" style="width: 80px"></div>';
84
  }
 
85
  $output .= '</div></div>';
86
  return $output;
87
  }
88
 
89
  /**
90
+ * Get the HTML view for the option that is also email friendly.
91
  *
92
  * @param array $previews
93
  * @return string
94
  */
95
+ public function htmlView($previews)
96
  {
97
+ return '<img src="' . $this->quoteEscape($previews[0]->url) . '" width="150" height="150" />';
 
98
  }
99
  }
app/code/community/Futurenext/Zakeke/Helper/ZakekeApi.php CHANGED
@@ -15,461 +15,344 @@
15
  * @category Futurenext
16
  * @package Futurenext_Zakeke
17
  */
18
- class Futurenext_Zakeke_Helper_ZakekeApi extends Mage_Core_Helper_Abstract {
19
- private $options = array(
20
- CURLOPT_RETURNTRANSFER => true, // return web page
21
- CURLOPT_HEADER => false, // don't return headers
22
- CURLOPT_FOLLOWLOCATION => true, // follow redirects
23
- CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
24
- CURLOPT_ENCODING => '', // handle compressed
25
- CURLOPT_AUTOREFERER => true, // set referrer on redirect
26
- CURLOPT_CONNECTTIMEOUT => 120, // time-out on connect
27
- CURLOPT_TIMEOUT => 120, // time-out on response
28
- );
29
-
30
- /**
31
- * Get the needed data for adding a product to the cart
32
- *
33
- * @param int $designId
34
- *
35
- * @return object|false
36
- */
37
- public function getCartInfo( $designId ) {
38
- $data = $this->getMinimalData();
39
-
40
- $url = Futurenext_Zakeke_Helper_Data::ZAKEKE_API_URL
41
- . '/api/designdocs/' . $designId . '/cartinfo'
42
- . '?' . http_build_query( $data );
43
-
44
- $ch = curl_init();
45
- curl_setopt_array( $ch, $this->options );
46
- curl_setopt( $ch, CURLOPT_URL, $url );
47
- $res = curl_exec( $ch );
48
-
49
- if ( $res === false ) {
50
- Mage::log(
51
- 'Zakeke: failed to get ' . $url . ' ' . curl_error( $ch ) . ' ' . $res,
52
- Zend_Log::ERR
53
- );
54
-
55
- return false;
56
- }
57
-
58
- $json = json_decode( $res );
59
- if ( $json === null ) {
60
- Mage::log(
61
- 'Zakeke: failed to parse ' . $url . ' ' . $res,
62
- Zend_Log::ERR
63
- );
64
-
65
- return false;
66
- }
67
-
68
- $res = new stdClass();
69
- $res->pricing = $json->pricing;
70
-
71
- $principalAvailable = false;
72
- $previews = [];
73
- foreach ( $json->previewFiles as $preview ) {
74
- if ( $preview->format == 'SVG' || $preview->isOutput ) {
75
- continue;
76
- }
77
-
78
- $previewObj = new stdClass();
79
- $previewObj->url = $preview->url;
80
- $previewObj->label = $preview->sideName;
81
-
82
- if ( $preview->sideIsDefault ) {
83
- $principalAvailable = true;
84
- if ( $previews ) {
85
- $previews[] = $previews[0];
86
- $previews[0] = $previewObj;
87
- } else {
88
- $previews[] = $previewObj;
89
- }
90
- }
91
-
92
- $previews[] = $previewObj;
93
- }
94
-
95
- if ( ! $principalAvailable ) {
96
- $previewObj = new stdClass();
97
- $previewObj->url = $json->tempPreviewUrl;
98
- $previewObj->label = '';
99
-
100
- if ( $previews ) {
101
- $previews[] = $previews[0];
102
- $previews[0] = $previewObj;
103
- } else {
104
- $previews[] = $previewObj;
105
- }
106
- }
107
-
108
- $res->previews = $previews;
109
-
110
- return $res;
111
- }
112
-
113
- /**
114
- * Get the Zakeke authentication token
115
- *
116
- * @param array $data - Data to pass as query string.
117
- *
118
- * @return string|false
119
- */
120
- public function getToken( $data ) {
121
- $registryKey = Futurenext_Zakeke_Helper_Data::ZAKEKE_REGISTRY_TOKEN . http_build_query( $data );
122
- $token = Mage::registry( $registryKey );
123
- if ( ! is_null( $token ) ) {
124
- return $token;
125
- }
126
-
127
- $data = array_merge( $data, $this->getMinimalData() );
128
-
129
- $query = http_build_query( $data );
130
- $url = Futurenext_Zakeke_Helper_Data::ZAKEKE_API_URL . '/api/Login?' . $query;
131
-
132
- $ch = curl_init( $url );
133
- curl_setopt_array( $ch, $this->options );
134
- $res = curl_exec( $ch );
135
-
136
- if ( $res === false ) {
137
- $this->log(
138
- 'Api getToken error for ' . $url . ' ' . curl_error( $ch ) . ' ' . $res,
139
- Zend_Log::ERR
140
- );
141
-
142
- return false;
143
- }
144
-
145
- $json = json_decode( $res );
146
- if ( $json === null ) {
147
- $this->log(
148
- 'Api getToken invalid json ' . $url . ' ' . $res,
149
- Zend_Log::ERR
150
- );
151
-
152
- return false;
153
- }
154
-
155
- if ( ! isset( $json->token ) ) {
156
- Mage::log(
157
- 'Zakeke: failed to get token ' . $url . ' ' . $res,
158
- Zend_Log::ERR
159
- );
160
-
161
- return false;
162
- }
163
-
164
- $token = $json->token;
165
- Mage::register( $registryKey, $token );
166
-
167
- return $token;
168
- }
169
-
170
- /**
171
- * Get the minimal data required to get an authentication token
172
- *
173
- * @return array
174
- */
175
- protected function getMinimalData() {
176
- $zakekeUsername = Mage::getStoreConfig( 'futurenext_zakeke/settings/zakekeUsername' );
177
- $zakekePassword = Mage::helper( 'core' )->decrypt(
178
- Mage::getStoreConfig( 'futurenext_zakeke/settings/zakekePassword' )
179
- );
180
-
181
- return array(
182
- 'user' => $zakekeUsername,
183
- 'pwd' => $zakekePassword
184
- );
185
- }
186
-
187
- /**
188
- * Get the raw response from a Zakeke api
189
- *
190
- * @param string $url
191
- *
192
- * @return \stdClass|\stdClass[]|false
193
- */
194
- protected function getRawRequest( $url ) {
195
- $token = $this->getToken( $this->getMinimalData() );
196
- if ( $token === false ) {
197
- return false;
198
- }
199
-
200
- $url = Futurenext_Zakeke_Helper_Data::ZAKEKE_API_URL . $url;
201
-
202
- $ch = curl_init( $url );
203
- curl_setopt_array( $ch, $this->options );
204
- curl_setopt( $ch, CURLOPT_HTTPHEADER, [
205
- 'X-Auth-Token: ' . $token,
206
- ] );
207
- $res = curl_exec( $ch );
208
- if ( $res === false ) {
209
- $this->log(
210
- 'Api getRawRequest error for ' . $url . ' ' . curl_error( $ch ) . ' ' . $res,
211
- Zend_Log::ERR
212
- );
213
-
214
- return false;
215
- }
216
-
217
- $this->log( 'Api getRawRequest for ' . $url . ' response ' . $res );
218
-
219
- $json = json_decode( $res );
220
- if ( $json === null ) {
221
- $this->log(
222
- 'Api getRawRequest invalid json ' . $url . ' ' . $res,
223
- Zend_Log::ERR
224
- );
225
-
226
- return false;
227
- }
228
-
229
- return $json;
230
- }
231
-
232
- /**
233
- * Get the Zakeke design price
234
- *
235
- * @param string $designId - Zakeke design identifier
236
- *
237
- * @return array|false
238
- */
239
- public function getDesignPricing( $designId ) {
240
- return $this->getRawRequest( '/api/designs/' . $designId . '/pricing' );
241
- }
242
-
243
- /**
244
- * Get the Zakeke design preview files
245
- *
246
- * @param string $designId - Zakeke design identifier
247
- *
248
- * @return array|false
249
- */
250
- public function getPreview( $designId ) {
251
- $data = array(
252
- 'docid' => $designId
253
- );
254
- $json = $this->getRawRequest( '/api/designs/0/previewfiles?' . http_build_query( $data ) );
255
- if ( $json === false ) {
256
- return false;
257
- }
258
-
259
- $previews = array();
260
- foreach ( $json as $preview ) {
261
- if ( $preview->format == 'SVG' ) {
262
- continue;
263
- }
264
-
265
- $previewObj = new stdClass();
266
- $previewObj->url = $preview->url;
267
- $previewObj->label = $preview->sideName;
268
- $previews[] = $previewObj;
269
- }
270
-
271
- return $previews;
272
- }
273
-
274
- /**
275
- * Get the Zakeke design output zip
276
- *
277
- * @param string $designId - Zakeke design identifier
278
- *
279
- * @return string|false
280
- */
281
- public function getZakekeOutputZip( $designId ) {
282
- $data = array(
283
- 'docid' => $designId
284
- );
285
- $json = $this->getRawRequest( '/api/designs/0/outputfiles/zip?' . http_build_query( $data ) );
286
-
287
- if ( $json === false ) {
288
- return false;
289
- }
290
-
291
- return $json->url;
292
- }
293
-
294
- /**
295
- * Associate the guest with a customer
296
- *
297
- * @param string $guestCode - Guest identifier
298
- * @param string $customerId - Customer identifier
299
- *
300
- * @return void
301
- */
302
- public function associateGuest( $guestCode, $customerId ) {
303
- $data = $this->getMinimalData();
304
- $data['vc'] = $guestCode;
305
- $data['cc'] = $customerId;
306
-
307
- $this->getToken( $data );
308
- }
309
-
310
- /**
311
- * Order containing Zakeke customized products placed
312
- *
313
- * @param array $data - data of the order
314
- *
315
- * @return bool
316
- */
317
- public function placeOrder( $data ) {
318
- $this->log( 'Api placeOrder called with ' . json_encode( $data ) );
319
-
320
- $ch = curl_init();
321
- curl_setopt_array( $ch, $this->options );
322
-
323
- $tokenData = $this->getMinimalData();
324
- if ( isset( $data['customerID'] ) ) {
325
- $tokenData['cc'] = $data['customerID'];
326
- } elseif ( isset( $data['visitorID'] ) ) {
327
- $tokenData['vc'] = $data['visitorID'];
328
- }
329
-
330
- $query = http_build_query( $tokenData );
331
- $url = Futurenext_Zakeke_Helper_Data::ZAKEKE_API_URL . '/api/Login?' . $query;
332
- $this->log( $url );
333
- curl_setopt( $ch, CURLOPT_URL, $url );
334
- $res = curl_exec( $ch );
335
-
336
- if ( $res === false ) {
337
- Mage::log(
338
- 'Zakeke: failed to get ' . $url . ' ' . curl_error( $ch ) . ' ' . $res,
339
- Zend_Log::ERR
340
- );
341
-
342
- return false;
343
- }
344
-
345
- $json = json_decode( $res );
346
- if ( $json === null ) {
347
- Mage::log(
348
- 'Zakeke: failed to parse ' . $url . ' ' . $res,
349
- Zend_Log::ERR
350
- );
351
-
352
- return false;
353
- }
354
-
355
- $token = $json->token;
356
- $this->log( $token );
357
- curl_setopt( $ch, CURLOPT_HTTPHEADER, array(
358
- 'X-Auth-Token: ' . $token,
359
- 'Connection: Keep-Alive',
360
- 'Keep-Alive: 300'
361
- ) );
362
-
363
- $placeOrderData = array(
364
- 'orderCode' => $data['orderCode'],
365
- 'sessionID' => $data['sessionID'],
366
- 'total' => $data['total'],
367
- 'orderStatusID' => $data['orderStatusID'],
368
- 'details' => $data['details'],
369
- 'marketplaceID' => '1'
370
- );
371
- $encodedData = http_build_query( $placeOrderData );
372
-
373
- $url = Futurenext_Zakeke_Helper_Data::ZAKEKE_API_URL . '/api/orderdocs';
374
- curl_setopt( $ch, CURLOPT_URL, $url );
375
- curl_setopt( $ch, CURLOPT_POST, 1 );
376
- curl_setopt( $ch, CURLOPT_POSTFIELDS, $encodedData );
377
- $res = curl_exec( $ch );
378
-
379
- if ( $res === false ) {
380
- Mage::log(
381
- 'Zakeke: failed to get ' . $url . ' ' . curl_error( $ch ) . ' ' . $res,
382
- Zend_Log::ERR
383
- );
384
-
385
- return false;
386
- }
387
-
388
- return true;
389
- }
390
-
391
- /**
392
- * Cancel an order containing Zakeke customized products placed.
393
- *
394
- * @param string $orderId
395
- *
396
- * @return void
397
- */
398
- public function cancelOrder( $orderId ) {
399
- }
400
-
401
- /**
402
- * Return an array of incompatible modules with hints how to solve the problem
403
- *
404
- * @param array $moduleList
405
- *
406
- * @return array|false
407
- */
408
- public function moduleChecker( $moduleList ) {
409
- $incompatibleModules = array();
410
-
411
- $json = $this->getRawRequest( '/api/IncompatiblePlugins' );
412
- if ( $json === false ) {
413
- return false;
414
- }
415
-
416
- foreach ( $moduleList as $module ) {
417
- foreach ( $json as $incompatibleModule ) {
418
- if ( $module['name'] !== $incompatibleModule->name ) {
419
- continue;
420
- }
421
-
422
- if ( $module['setup_version'] >= $incompatibleModule->fromVersion
423
- || $module['setup_version'] <= $incompatibleModule->toVersion
424
- ) {
425
- $moduleInfo = new Varien_Object();
426
- $moduleInfo->setName( $module['name'] );
427
- $moduleInfo->setSetupVersion( $module['setup_version'] );
428
- $moduleInfo->setHowToFixHtml( $incompatibleModule->fix );
429
-
430
- $incompatibleModules[] = $moduleInfo;
431
- }
432
- }
433
- }
434
-
435
- return $incompatibleModules;
436
- }
437
-
438
- /**
439
- * Check if Zakeke is reachable from the shop server
440
- *
441
- * @return bool
442
- */
443
- public function isReachable() {
444
- $ch = curl_init( Futurenext_Zakeke_Helper_Data::ZAKEKE_BASE_URL );
445
- curl_setopt( $ch, CURLOPT_NOBODY, true );
446
- curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
447
- curl_setopt( $ch, CURLOPT_TIMEOUT, 5 );
448
- curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
449
- curl_setopt( $ch, CURLOPT_VERBOSE, false );
450
- curl_exec( $ch );
451
- $httpCode = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
452
- curl_close( $ch );
453
-
454
- return $httpCode >= 200 && $httpCode < 300;
455
- }
456
-
457
- /**
458
- * Log event to Zakeke server
459
- *
460
- * @param string $message
461
- * @param int $level
462
- *
463
- * @return void
464
- */
465
- public function log( $message, $level = null ) {
466
- $level = is_null( $level ) ? Zend_Log::DEBUG : $level;
467
-
468
- Mage::log(
469
- $message,
470
- $level,
471
- Futurenext_Zakeke_Helper_Data::ZAKEKE_LOG_FILE,
472
- true
473
- );
474
- }
475
  }
15
  * @category Futurenext
16
  * @package Futurenext_Zakeke
17
  */
18
+ class Futurenext_Zakeke_Helper_ZakekeApi extends Mage_Core_Helper_Abstract
19
+ {
20
+ /**
21
+ * Get the needed data for adding a product to the cart
22
+ *
23
+ * @param int $designId
24
+ * @throws Exception
25
+ * @return object
26
+ */
27
+ public function getCartInfo($designId)
28
+ {
29
+ $data = $this->getMinimalData();
30
+ $url = '/api/designdocs/' . $designId . '/cartinfo'
31
+ . '?' . http_build_query($data);
32
+ $json = $this->getRawRequest($url, null);
33
+
34
+ $res = new stdClass();
35
+
36
+ $res->pricing = $json['pricing'];
37
+
38
+ $preview = new stdClass();
39
+ $preview->url = $json['tempPreviewUrl'];
40
+ $preview->label = '';
41
+
42
+ $res->previews = array($preview);
43
+
44
+ return $res;
45
+ }
46
+
47
+ /**
48
+ * Get the Zakeke authentication token
49
+ *
50
+ * @param array $data - Data to pass as query string.
51
+ * @throws Exception
52
+ * @return string
53
+ */
54
+ public function getToken($data)
55
+ {
56
+ $registryKey = Futurenext_Zakeke_Helper_Data::ZAKEKE_REGISTRY_TOKEN . http_build_query($data);
57
+ $token = Mage::registry($registryKey);
58
+ if ($token !== null) {
59
+ return $token;
60
+ }
61
+
62
+ $data = array_merge($data, $this->getMinimalData());
63
+
64
+ $query = http_build_query($data);
65
+ $url = Futurenext_Zakeke_Helper_Data::ZAKEKE_API_URL . '/api/Login?' . $query;
66
+
67
+ $httpClient = new Varien_Http_Client($url);
68
+ $request = $httpClient->request(Varien_Http_Client::GET);
69
+ $res = $request->getBody();
70
+ if ($request->getStatus() !== 200) {
71
+ $this->doError($url, $request->getStatus(), $res);
72
+ }
73
+
74
+ /** @var Mage_Core_Helper_Data $helper */
75
+ $helper = Mage::helper('core');
76
+ /** @var array $json */
77
+ $json = $helper->jsonDecode($res);
78
+
79
+ if (!isset($json['token'])) {
80
+ $this->doError($url, $request->getStatus(), $res);
81
+ }
82
+
83
+ Mage::register($registryKey, $json['token']);
84
+ return $json['token'];
85
+ }
86
+
87
+ /**
88
+ * Get the minimal data required to get an authentication token
89
+ *
90
+ * @return array
91
+ */
92
+ protected function getMinimalData()
93
+ {
94
+ $zakekeUsername = Mage::getStoreConfig('futurenext_zakeke/settings/zakekeUsername');
95
+ $zakekePassword = Mage::helper('core')->decrypt(
96
+ Mage::getStoreConfig('futurenext_zakeke/settings/zakekePassword')
97
+ );
98
+
99
+ return array(
100
+ 'user' => $zakekeUsername,
101
+ 'pwd' => $zakekePassword
102
+ );
103
+ }
104
+
105
+ /**
106
+ * GET request to a Zakeke resource.
107
+ *
108
+ * @param string $url
109
+ * @param array $authData - Authentication credentials.
110
+ * @throws Exception
111
+ * @return array
112
+ */
113
+ protected function getRawRequest($url, $authData)
114
+ {
115
+ $url = Futurenext_Zakeke_Helper_Data::ZAKEKE_API_URL . $url;
116
+
117
+ $httpClient = new Varien_Http_Client($url);
118
+ if ($authData !== null) {
119
+ $token = $this->getToken($authData);
120
+ $httpClient->setHeaders(array(
121
+ 'X-Auth-Token' => $token
122
+ ));
123
+ }
124
+
125
+ $request = $httpClient->request(Varien_Http_Client::GET);
126
+ $res = $request->getBody();
127
+ if ($request->getStatus() !== 200) {
128
+ $this->doError($url, $request->getStatus(), $res);
129
+ }
130
+
131
+ /** @var Mage_Core_Helper_Data $helper */
132
+ $helper = Mage::helper('core');
133
+ return $helper->jsonDecode($res);
134
+ }
135
+
136
+ /**
137
+ * POST request to a Zakeke resource.
138
+ *
139
+ * @param string $url
140
+ * @param array $postData
141
+ * @param array $authData - Authentication credentials.
142
+ * @throws Exception
143
+ * @return array
144
+ */
145
+ protected function postRequest($url, $postData, $authData)
146
+ {
147
+ $url = Futurenext_Zakeke_Helper_Data::ZAKEKE_API_URL . $url;
148
+
149
+ $httpClient = new Varien_Http_Client($url);
150
+
151
+ if ($authData !== null) {
152
+ $token = $this->getToken($authData);
153
+ $httpClient->setHeaders('X-Auth-Token', $token);
154
+ }
155
+
156
+ /** @var Mage_Core_Helper_Data $helper */
157
+ $helper = Mage::helper('core');
158
+
159
+ $jsonData = $helper->jsonEncode($postData);
160
+ $httpClient->setHeaders('Content-type', 'application/json');
161
+ $httpClient->setRawData($jsonData);
162
+ $request = $httpClient->request(Varien_Http_Client::POST);
163
+ $res = $request->getBody();
164
+ if ($request->getStatus() !== 200) {
165
+ $this->doError($url, $request->getStatus(), $res);
166
+ }
167
+
168
+ return $helper->jsonDecode($res);
169
+ }
170
+
171
+ /**
172
+ * Get the Zakeke design price
173
+ *
174
+ * @param string $designId - Zakeke design identifier
175
+ * @throws Exception
176
+ * @return array
177
+ */
178
+ public function getDesignPricing($designId)
179
+ {
180
+ return $this->getRawRequest('/api/designs/' . $designId . '/pricing', $this->getMinimalData());
181
+ }
182
+
183
+ /**
184
+ * Get the Zakeke design preview files
185
+ *
186
+ * @param string $designId - Zakeke design identifier
187
+ * @throws Exception
188
+ * @return array
189
+ */
190
+ public function getPreview($designId)
191
+ {
192
+ $data = array(
193
+ 'docid' => $designId
194
+ );
195
+ $json = $this->getRawRequest('/api/designs/0/previewfiles?' . http_build_query($data),
196
+ $this->getMinimalData());
197
+
198
+ $previews = array();
199
+ /** @var array $preview */
200
+ foreach ($json as $preview) {
201
+ if ($preview['format'] == 'SVG') {
202
+ continue;
203
+ }
204
+
205
+ $previewObj = new stdClass();
206
+ $previewObj->url = $preview['url'];
207
+ $previewObj->label = $preview['sideName'];
208
+ $previews[] = $previewObj;
209
+ }
210
+
211
+ return $previews;
212
+ }
213
+
214
+ /**
215
+ * Get the Zakeke design output zip
216
+ *
217
+ * @param string $designId - Zakeke design identifier
218
+ * @throws Exception
219
+ * @return string
220
+ */
221
+ public function getZakekeOutputZip($designId)
222
+ {
223
+ $data = array(
224
+ 'docid' => $designId
225
+ );
226
+ $json = $this->getRawRequest('/api/designs/0/outputfiles/zip?' . http_build_query($data),
227
+ $this->getMinimalData());
228
+ return $json['url'];
229
+ }
230
+
231
+ /**
232
+ * Associate the guest with a customer
233
+ *
234
+ * @param string $guestCode - Guest identifier
235
+ * @param string $customerId - Customer identifier
236
+ * @throws Exception
237
+ * @return void
238
+ */
239
+ public function associateGuest($guestCode, $customerId)
240
+ {
241
+ $data = $this->getMinimalData();
242
+ $data['vc'] = $guestCode;
243
+ $data['cc'] = $customerId;
244
+
245
+ $this->getToken($data);
246
+ }
247
+
248
+ /**
249
+ * Order containing Zakeke customized products placed
250
+ *
251
+ * @param array $data - data of the order
252
+ * @throws Exception
253
+ * @return void
254
+ */
255
+ public function placeOrder($data)
256
+ {
257
+ $authData = $this->getMinimalData();
258
+ if (isset($data['customerID'])) {
259
+ $authData['cc'] = $data['customerID'];
260
+ } elseif (isset($data['visitorID'])) {
261
+ $authData['vc'] = $data['visitorID'];
262
+ }
263
+
264
+ $orderData = array(
265
+ 'orderCode' => $data['orderCode'],
266
+ 'sessionID' => $data['sessionID'],
267
+ 'total' => $data['total'],
268
+ 'orderStatusID' => $data['orderStatusID'],
269
+ 'details' => $data['details'],
270
+ 'marketplaceID' => '1'
271
+ );
272
+ $this->postRequest('/api/orderdocs', $orderData, $authData);
273
+ }
274
+
275
+ /**
276
+ * Return an array of incompatible modules with hints how to solve the problem
277
+ *
278
+ * @param array $moduleList
279
+ * @throws Exception
280
+ * @return array
281
+ */
282
+ public function moduleChecker($moduleList)
283
+ {
284
+ $incompatibleModules = array();
285
+
286
+ $json = $this->getRawRequest('/api/IncompatiblePlugins', $this->getMinimalData());
287
+
288
+ foreach ($moduleList as $module) {
289
+ /** @var array $incompatibleModule */
290
+ foreach ($json as $incompatibleModule) {
291
+ if ($module['name'] !== $incompatibleModule['name']) {
292
+ continue;
293
+ }
294
+
295
+ if ($module['setup_version'] >= $incompatibleModule['fromVersion']
296
+ || $module['setup_version'] <= $incompatibleModule['toVersion']
297
+ ) {
298
+ $moduleInfo = new Varien_Object();
299
+ $moduleInfo->setName($module['name']);
300
+ $moduleInfo->setSetupVersion($module['setup_version']);
301
+ $moduleInfo->setHowToFixHtml($incompatibleModule['fix']);
302
+
303
+ $incompatibleModules[] = $moduleInfo;
304
+ }
305
+ }
306
+ }
307
+
308
+ return $incompatibleModules;
309
+ }
310
+
311
+ /**
312
+ * Check if Zakeke is reachable from the shop server
313
+ *
314
+ * @return bool
315
+ */
316
+ public function isReachable()
317
+ {
318
+ try {
319
+ $httpClient = new Varien_Http_Client(Futurenext_Zakeke_Helper_Data::ZAKEKE_BASE_URL);
320
+ $request = $httpClient->request(Varien_Http_Client::GET);
321
+ return $request->getStatus() >= 200 && $request->getStatus() < 400;
322
+ } catch (Exception $e) {
323
+ return false;
324
+ }
325
+ }
326
+
327
+ /**
328
+ * @param string $url
329
+ * @param int $status
330
+ * @param string $body
331
+ * @throws \Exception
332
+ */
333
+ protected function doError($url, $status, $body) {
334
+ $msg = 'Failed to get ' . $url . ' ' . $status . ' ' . $body;
335
+ $this->log($msg, Zend_Log::ERR);
336
+ throw new Exception($msg);
337
+ }
338
+
339
+ /**
340
+ * Log event to Zakeke server
341
+ *
342
+ * @param string $message
343
+ * @param int $level
344
+ *
345
+ * @return void
346
+ */
347
+ public function log($message, $level = null)
348
+ {
349
+ $level = $level === null ? Zend_Log::DEBUG : $level;
350
+
351
+ Mage::log(
352
+ $message,
353
+ $level,
354
+ Futurenext_Zakeke_Helper_Data::ZAKEKE_LOG_FILE,
355
+ true
356
+ );
357
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
358
  }
app/code/community/Futurenext/Zakeke/Model/Observer.php CHANGED
@@ -26,13 +26,16 @@ class Futurenext_Zakeke_Model_Observer
26
  */
27
  public function productLoadAfterCartAdd($observer)
28
  {
 
 
 
29
  try {
30
  $action = Mage::app()->getFrontController()->getAction();
31
  if (!$action) {
32
  return $this;
33
  }
34
  $actionName = $action->getFullActionName();
35
- if ($actionName != 'checkout_cart_add' && $actionName != 'checkout_cart_updateItemOptions') {
36
  return $this;
37
  }
38
 
@@ -73,26 +76,17 @@ class Futurenext_Zakeke_Model_Observer
73
  return $this;
74
  }
75
 
76
- $additionalOptions = array();
77
  $additionalOption = $product->getCustomOption('additional_options');
78
  if ($additionalOption) {
79
- $additionalOptions = (array)unserialize($additionalOption->getValue());
80
  }
81
 
82
- foreach ($additionalOptions as $additionalOption) {
83
- if (isset($additionalOption['is_zakeke'])) {
84
- return $this;
85
- }
86
  }
87
 
88
- $registryKey = Futurenext_Zakeke_Helper_Data::ZAKEKE_CART_INFO_REGISTRY . $toAddProductId;
89
- $zakekeCartData = Mage::registry($registryKey);
90
- if (is_null($zakekeCartData)) {
91
- /** @var Futurenext_Zakeke_Helper_ZakekeApi $zakekeApi */
92
- $zakekeApi = Mage::helper('futurenext_zakeke/zakekeApi');
93
- $zakekeCartData = $zakekeApi->getCartInfo($design);
94
- Mage::register($registryKey, $zakekeCartData);
95
- }
96
 
97
  /** @var Mage_Core_Helper_Data $coreHelper */
98
  $coreHelper = Mage::helper('core');
@@ -100,15 +94,16 @@ class Futurenext_Zakeke_Model_Observer
100
  $originalFinalPrice = $product->getFinalPrice($qty);
101
 
102
  $zakekePrice = 0.0;
103
- if ($zakekeCartData->pricing->modelPriceDeltaPerc) {
104
- $zakekePrice += $originalFinalPrice * ($zakekeCartData->pricing->modelPriceDeltaPerc / 100);
105
  } else {
106
- $zakekePrice += (float)$zakekeCartData->pricing->modelPriceDeltaValue;
107
  }
108
- $zakekePrice += (float)$zakekeCartData->pricing->designPrice;
109
 
110
  $zakekeOption = array(
111
  'label' => $coreHelper->__('Customization'),
 
112
  'value' => $zakekeHelper->htmlView($zakekeCartData->previews),
113
  'print_value' => '#' . $design,
114
  'custom_view' => true,
@@ -121,7 +116,7 @@ class Futurenext_Zakeke_Model_Observer
121
  'is_zakeke' => true
122
  );
123
 
124
- $additionalOptions[] = $zakekeOption;
125
 
126
  if ($zakekePrice) {
127
  $zakekeFinalPrice = $coreHelper->currency($zakekePrice, true, false);
@@ -129,12 +124,13 @@ class Futurenext_Zakeke_Model_Observer
129
  'label' => $coreHelper->__('Customization Price'),
130
  'value' => $zakekeFinalPrice
131
  ];
132
- $additionalOptions[] = $zakekePricingOption;
133
  }
134
 
135
- $product->addCustomOption('additional_options', serialize($additionalOptions));
136
  } catch (Exception $e) {
137
  Mage::logException($e);
 
138
  throw $e;
139
  }
140
  return $this;
@@ -149,13 +145,16 @@ class Futurenext_Zakeke_Model_Observer
149
  */
150
  public function reorder($observer)
151
  {
 
 
 
152
  try {
153
  $action = Mage::app()->getFrontController()->getAction();
154
  if ($action === null) {
155
  return $this;
156
  }
157
  $actionName = $action->getFullActionName();
158
- if ($actionName != 'sales_order_reorder') {
159
  return $this;
160
  }
161
 
@@ -199,22 +198,21 @@ class Futurenext_Zakeke_Model_Observer
199
  /** @var Mage_Core_Helper_Data $coreHelper */
200
  $coreHelper = Mage::helper('core');
201
 
202
- /** @var Futurenext_Zakeke_Helper_ZakekeApi $zakekeApi */
203
- $zakekeApi = Mage::helper('futurenext_zakeke/zakekeApi');
204
  $zakekeCartData = $zakekeApi->getCartInfo($design);
205
 
206
  $originalFinalPrice = $product->getFinalPrice($qty);
207
 
208
  $zakekePrice = 0.0;
209
- if ($zakekeCartData->pricing->modelPriceDeltaPerc) {
210
- $zakekePrice += $originalFinalPrice * ($zakekeCartData->pricing->modelPriceDeltaPerc / 100);
211
  } else {
212
- $zakekePrice += (float)$zakekeCartData->pricing->modelPriceDeltaValue;
213
  }
214
- $zakekePrice += (float)$zakekeCartData->pricing->designPrice;
215
 
216
  $zakekeOption = array(
217
  'label' => $coreHelper->__('Customization'),
 
218
  'value' => $zakekeHelper->htmlView($zakekeCartData->previews),
219
  'print_value' => '#' . $design,
220
  'custom_view' => true,
@@ -228,11 +226,6 @@ class Futurenext_Zakeke_Model_Observer
228
  );
229
  $additionalOptions[] = $zakekeOption;
230
 
231
- $simpleProductOption = $item->getOptionByCode('simple_product');
232
- if ($simpleProductOption !== null) {
233
- $product = $simpleProductOption->getProduct();
234
- }
235
-
236
  if ($zakekePrice) {
237
  $zakekeFinalPrice = $coreHelper->currency($zakekePrice);
238
 
@@ -258,6 +251,7 @@ class Futurenext_Zakeke_Model_Observer
258
  ));
259
  } catch (Exception $e) {
260
  Mage::logException($e);
 
261
  throw $e;
262
  }
263
  return $this;
@@ -272,6 +266,9 @@ class Futurenext_Zakeke_Model_Observer
272
  */
273
  public function salesConvertQuoteItemToOrderItem(Varien_Event_Observer $observer)
274
  {
 
 
 
275
  try {
276
  /** @var Mage_Sales_Model_Quote_Item $quoteItem */
277
  $quoteItem = $observer->getItem();
@@ -287,6 +284,7 @@ class Futurenext_Zakeke_Model_Observer
287
  }
288
  } catch (Exception $e) {
289
  Mage::logException($e);
 
290
  throw $e;
291
  }
292
  return $this;
@@ -301,18 +299,13 @@ class Futurenext_Zakeke_Model_Observer
301
  */
302
  public function cartAdd($observer)
303
  {
304
- /** @var Futurenext_Zakeke_Helper_ZakekeApi $zakekeApi */
305
- $zakekeApi = Mage::helper('futurenext_zakeke/zakekeApi');
306
 
307
  try {
308
- $zakekeApi->log('Observer cartAdd called');
309
-
310
  /** @var Mage_Catalog_Model_Product $product */
311
  $product = $observer->getProduct();
312
 
313
- $found = false;
314
- $zakekePrice = 0.0;
315
-
316
  $action = Mage::app()->getFrontController()->getAction();
317
  $request = $action->getRequest();
318
  $qty = $request->getParam('qty');
@@ -325,55 +318,53 @@ class Futurenext_Zakeke_Model_Observer
325
 
326
  /** @var Mage_Catalog_Model_Product_Option $additionalOption */
327
  $additionalOption = $product->getCustomOption('additional_options');
328
- if ($additionalOption) {
329
- $additionalOptions = (array)unserialize($additionalOption->getValue());
330
- foreach ($additionalOptions as $option) {
331
- if (isset($option['is_zakeke'])) {
332
- $found = true;
333
-
334
- if (isset($option['pricing'])) {
335
- $pricing = $option['pricing'];
336
- if ($pricing->modelPriceDeltaPerc) {
337
- $zakekePrice += $product->getFinalPrice($qty) * ($pricing->modelPriceDeltaPerc / 100);
338
- } else {
339
- $zakekePrice += (float)$pricing->modelPriceDeltaValue;
340
- }
341
-
342
- $zakekePrice += (float)$pricing->designPrice;
343
- }
344
- break;
 
 
 
 
 
 
345
  }
 
 
346
  }
347
- }
348
 
349
- if (!$found) {
350
- return $this;
351
- }
352
 
353
- /** @var Mage_Sales_Model_Quote_Item $quoteItem */
354
- $quoteItem = $observer->getQuoteItem();
355
- /** @var Mage_Sales_Model_Quote_Item_Option $option */
356
- $option = Mage::getModel('sales/quote_item_option');
357
- $option->setProductId($product->getId())
358
- ->setCode('product_type')
359
- ->setProduct($product)
360
- ->setValue(Futurenext_Zakeke_Helper_Data::ZAKEKE_PRODUCT_TYPE);
361
- $quoteItem->addOption($option);
362
-
363
- /** @var Mage_Directory_Helper_Data $directoryHelper */
364
- $directoryHelper = Mage::helper('directory');
365
- $baseCurrencyCode = Mage::app()->getStore()->getBaseCurrencyCode();
366
- $currentCurrencyCode = Mage::app()->getStore()->getCurrentCurrencyCode();
367
-
368
- $baseFinalPrice = $product->getFinalPrice($quoteItem->getQty()) + $zakekePrice;
369
- $finalPrice = $directoryHelper->currencyConvert($baseFinalPrice, $baseCurrencyCode, $currentCurrencyCode);
370
-
371
- $quoteItem->setCustomPrice($finalPrice);
372
- $quoteItem->setOriginalCustomPrice($finalPrice);
373
- $product->setIsSuperMode(true);
374
  } catch (Exception $e) {
375
  Mage::logException($e);
376
- $zakekeApi->log('Observer orderSave exception ' . $e);
377
  throw $e;
378
  }
379
  return $this;
@@ -397,16 +388,6 @@ class Futurenext_Zakeke_Model_Observer
397
  /** @var Mage_Sales_Model_Order $order */
398
  $order = $observer->getOrder();
399
 
400
- $action = Mage::app()->getFrontController()->getAction();
401
- $request = $action->getRequest();
402
- $qty = $request->getParam('qty');
403
- if (isset($qty)) {
404
- $filter = new Zend_Filter_LocalizedToNormalized(
405
- array('locale' => Mage::app()->getLocale()->getLocaleCode())
406
- );
407
- $qty = $filter->filter($qty);
408
- }
409
-
410
  /** @var Mage_Customer_Model_Session $session */
411
  $session = Mage::getSingleton('customer/session');
412
 
@@ -443,12 +424,8 @@ class Futurenext_Zakeke_Model_Observer
443
  continue;
444
  }
445
 
446
- $additionalOptions = $productOptions['additional_options'];
447
- foreach ($additionalOptions as $option) {
448
- if (!isset($option['is_zakeke'])) {
449
- continue;
450
- }
451
-
452
  $zakekePrice = 0.0;
453
  if (isset($option['price'])) {
454
  $zakekePrice = $option['price'];
@@ -490,13 +467,10 @@ class Futurenext_Zakeke_Model_Observer
490
  );
491
 
492
  $data['details'][] = $itemData;
493
- break;
494
  }
495
  }
496
-
497
- $zakekeApi->log('Observer orderSave order data ' . json_encode($data));
498
-
499
  if (count($data['details']) > 0) {
 
500
  $zakekeApi->placeOrder($data);
501
  }
502
  } catch (Exception $e) {
@@ -507,39 +481,6 @@ class Futurenext_Zakeke_Model_Observer
507
  return $this;
508
  }
509
 
510
- /**
511
- * Notify Zakeke that an order containing some Zakeke customized product is begin cancelled
512
- *
513
- * @param Varien_Event_Observer $observer
514
- * @return $this
515
- * @throws Exception
516
- */
517
- public function orderCancel($observer)
518
- {
519
- try {
520
- /** @var Mage_Sales_Model_Order $order */
521
- $order = $observer->getOrder();
522
-
523
- if ($order->getStatus() != 'canceled') {
524
- return $this;
525
- }
526
-
527
- /** @var Mage_Sales_Model_Order_Item $item */
528
- foreach ($order->getAllVisibleItems() as $item) {
529
- if ($item->getProductType() == Futurenext_Zakeke_Helper_Data::ZAKEKE_PRODUCT_TYPE) {
530
- /** @var Futurenext_Zakeke_Helper_ZakekeApi $zakekeApi */
531
- $zakekeApi = Mage::helper('futurenext_zakeke/zakekeApi');
532
- $zakekeApi->cancelOrder($order->getId());
533
- return $this;
534
- }
535
- }
536
- } catch (Exception $e) {
537
- Mage::logException($e);
538
- throw $e;
539
- }
540
- return $this;
541
- }
542
-
543
  /**
544
  * Notify Zakeke if a guest is also a Zakeke user that now she is registered
545
  *
26
  */
27
  public function productLoadAfterCartAdd($observer)
28
  {
29
+ /** @var Futurenext_Zakeke_Helper_ZakekeApi $zakekeApi */
30
+ $zakekeApi = Mage::helper('futurenext_zakeke/zakekeApi');
31
+
32
  try {
33
  $action = Mage::app()->getFrontController()->getAction();
34
  if (!$action) {
35
  return $this;
36
  }
37
  $actionName = $action->getFullActionName();
38
+ if ($actionName !== 'checkout_cart_add' && $actionName !== 'checkout_cart_updateItemOptions') {
39
  return $this;
40
  }
41
 
76
  return $this;
77
  }
78
 
79
+ $options = array();
80
  $additionalOption = $product->getCustomOption('additional_options');
81
  if ($additionalOption) {
82
+ $options = (array)unserialize($additionalOption->getValue());
83
  }
84
 
85
+ if (Futurenext_Zakeke_Helper_Data::getZakekeOption($options)) {
86
+ return $this;
 
 
87
  }
88
 
89
+ $zakekeCartData = $zakekeApi->getCartInfo($design);
 
 
 
 
 
 
 
90
 
91
  /** @var Mage_Core_Helper_Data $coreHelper */
92
  $coreHelper = Mage::helper('core');
94
  $originalFinalPrice = $product->getFinalPrice($qty);
95
 
96
  $zakekePrice = 0.0;
97
+ if ($zakekeCartData->pricing['modelPriceDeltaPerc']) {
98
+ $zakekePrice += $originalFinalPrice * ($zakekeCartData->pricing['modelPriceDeltaPerc'] / 100);
99
  } else {
100
+ $zakekePrice += (float)$zakekeCartData->pricing['modelPriceDeltaValue'];
101
  }
102
+ $zakekePrice += (float)$zakekeCartData->pricing['designPrice'];
103
 
104
  $zakekeOption = array(
105
  'label' => $coreHelper->__('Customization'),
106
+ 'option_id' => 'zakeke',
107
  'value' => $zakekeHelper->htmlView($zakekeCartData->previews),
108
  'print_value' => '#' . $design,
109
  'custom_view' => true,
116
  'is_zakeke' => true
117
  );
118
 
119
+ $options[] = $zakekeOption;
120
 
121
  if ($zakekePrice) {
122
  $zakekeFinalPrice = $coreHelper->currency($zakekePrice, true, false);
124
  'label' => $coreHelper->__('Customization Price'),
125
  'value' => $zakekeFinalPrice
126
  ];
127
+ $options[] = $zakekePricingOption;
128
  }
129
 
130
+ $product->addCustomOption('additional_options', serialize($options));
131
  } catch (Exception $e) {
132
  Mage::logException($e);
133
+ $zakekeApi->log('Observer productLoadAfterCartAdd exception ' . $e);
134
  throw $e;
135
  }
136
  return $this;
145
  */
146
  public function reorder($observer)
147
  {
148
+ /** @var Futurenext_Zakeke_Helper_ZakekeApi $zakekeApi */
149
+ $zakekeApi = Mage::helper('futurenext_zakeke/zakekeApi');
150
+
151
  try {
152
  $action = Mage::app()->getFrontController()->getAction();
153
  if ($action === null) {
154
  return $this;
155
  }
156
  $actionName = $action->getFullActionName();
157
+ if ($actionName !== 'sales_order_reorder') {
158
  return $this;
159
  }
160
 
198
  /** @var Mage_Core_Helper_Data $coreHelper */
199
  $coreHelper = Mage::helper('core');
200
 
 
 
201
  $zakekeCartData = $zakekeApi->getCartInfo($design);
202
 
203
  $originalFinalPrice = $product->getFinalPrice($qty);
204
 
205
  $zakekePrice = 0.0;
206
+ if ($zakekeCartData->pricing['modelPriceDeltaPerc']) {
207
+ $zakekePrice += $originalFinalPrice * ($zakekeCartData->pricing['modelPriceDeltaPerc'] / 100);
208
  } else {
209
+ $zakekePrice += (float)$zakekeCartData->pricing['modelPriceDeltaValue'];
210
  }
211
+ $zakekePrice += (float)$zakekeCartData->pricing['designPrice'];
212
 
213
  $zakekeOption = array(
214
  'label' => $coreHelper->__('Customization'),
215
+ 'option_id' => 'zakeke',
216
  'value' => $zakekeHelper->htmlView($zakekeCartData->previews),
217
  'print_value' => '#' . $design,
218
  'custom_view' => true,
226
  );
227
  $additionalOptions[] = $zakekeOption;
228
 
 
 
 
 
 
229
  if ($zakekePrice) {
230
  $zakekeFinalPrice = $coreHelper->currency($zakekePrice);
231
 
251
  ));
252
  } catch (Exception $e) {
253
  Mage::logException($e);
254
+ $zakekeApi->log('Observer reorder exception ' . $e);
255
  throw $e;
256
  }
257
  return $this;
266
  */
267
  public function salesConvertQuoteItemToOrderItem(Varien_Event_Observer $observer)
268
  {
269
+ /** @var Futurenext_Zakeke_Helper_ZakekeApi $zakekeApi */
270
+ $zakekeApi = Mage::helper('futurenext_zakeke/zakekeApi');
271
+
272
  try {
273
  /** @var Mage_Sales_Model_Quote_Item $quoteItem */
274
  $quoteItem = $observer->getItem();
284
  }
285
  } catch (Exception $e) {
286
  Mage::logException($e);
287
+ $zakekeApi->log('Observer salesConvertQuoteItemToOrderItem exception ' . $e);
288
  throw $e;
289
  }
290
  return $this;
299
  */
300
  public function cartAdd($observer)
301
  {
302
+ /** @var Futurenext_Zakeke_Helper_ZakekeApi $zakekeApi */
303
+ $zakekeApi = Mage::helper('futurenext_zakeke/zakekeApi');
304
 
305
  try {
 
 
306
  /** @var Mage_Catalog_Model_Product $product */
307
  $product = $observer->getProduct();
308
 
 
 
 
309
  $action = Mage::app()->getFrontController()->getAction();
310
  $request = $action->getRequest();
311
  $qty = $request->getParam('qty');
318
 
319
  /** @var Mage_Catalog_Model_Product_Option $additionalOption */
320
  $additionalOption = $product->getCustomOption('additional_options');
321
+ if (!$additionalOption) {
322
+ return $this;
323
+ }
324
+
325
+ $options = (array)unserialize($additionalOption->getValue());
326
+ if ($option = Futurenext_Zakeke_Helper_Data::getZakekeOption($options)) {
327
+ /** @var Mage_Sales_Model_Quote_Item $quoteItem */
328
+ $quoteItem = $observer->getQuoteItem();
329
+ /** @var Mage_Sales_Model_Quote_Item_Option $option */
330
+ $option = Mage::getModel('sales/quote_item_option');
331
+ $option->setProductId($product->getId())
332
+ ->setCode('product_type')
333
+ ->setProduct($product)
334
+ ->setValue(Futurenext_Zakeke_Helper_Data::ZAKEKE_PRODUCT_TYPE);
335
+ $quoteItem->addOption($option);
336
+
337
+ $zakekePrice = 0.0;
338
+ if (isset($option['pricing'])) {
339
+ $pricing = $option['pricing'];
340
+ if ($pricing['modelPriceDeltaPerc']) {
341
+ $zakekePrice += $product->getFinalPrice($qty) * ($pricing['modelPriceDeltaPerc'] / 100);
342
+ } else {
343
+ $zakekePrice += (float)$pricing['modelPriceDeltaValue'];
344
  }
345
+
346
+ $zakekePrice += (float)$pricing['designPrice'];
347
  }
 
348
 
349
+ if (!$zakekePrice) {
350
+ return $this;
351
+ }
352
 
353
+ /** @var Mage_Directory_Helper_Data $directoryHelper */
354
+ $directoryHelper = Mage::helper('directory');
355
+ $baseCurrencyCode = Mage::app()->getStore()->getBaseCurrencyCode();
356
+ $currentCurrencyCode = Mage::app()->getStore()->getCurrentCurrencyCode();
357
+
358
+ $baseFinalPrice = $product->getFinalPrice($quoteItem->getQty()) + $zakekePrice;
359
+ $finalPrice = $directoryHelper->currencyConvert($baseFinalPrice, $baseCurrencyCode, $currentCurrencyCode);
360
+
361
+ $quoteItem->setCustomPrice($finalPrice);
362
+ $quoteItem->setOriginalCustomPrice($finalPrice);
363
+ $product->setIsSuperMode(true);
364
+ }
 
 
 
 
 
 
 
 
 
365
  } catch (Exception $e) {
366
  Mage::logException($e);
367
+ $zakekeApi->log('Observer cartAdd exception ' . $e);
368
  throw $e;
369
  }
370
  return $this;
388
  /** @var Mage_Sales_Model_Order $order */
389
  $order = $observer->getOrder();
390
 
 
 
 
 
 
 
 
 
 
 
391
  /** @var Mage_Customer_Model_Session $session */
392
  $session = Mage::getSingleton('customer/session');
393
 
424
  continue;
425
  }
426
 
427
+ $options = $productOptions['additional_options'];
428
+ if ($option = Futurenext_Zakeke_Helper_Data::getZakekeOption($options)) {
 
 
 
 
429
  $zakekePrice = 0.0;
430
  if (isset($option['price'])) {
431
  $zakekePrice = $option['price'];
467
  );
468
 
469
  $data['details'][] = $itemData;
 
470
  }
471
  }
 
 
 
472
  if (count($data['details']) > 0) {
473
+ $zakekeApi->log('Observer orderSave order with such info ' . json_encode($data));
474
  $zakekeApi->placeOrder($data);
475
  }
476
  } catch (Exception $e) {
481
  return $this;
482
  }
483
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
484
  /**
485
  * Notify Zakeke if a guest is also a Zakeke user that now she is registered
486
  *
app/code/community/Futurenext/Zakeke/controllers/CustomizeController.php CHANGED
@@ -99,10 +99,13 @@ class Futurenext_Zakeke_CustomizeController extends Mage_Core_Controller_Front_A
99
  try {
100
  $product = $this->_initProduct();
101
 
 
 
 
102
  /**
103
  * Check product availability
104
  */
105
- if (!$product) {
106
  Mage::log('Zakeke CustomizeController: ' . self::NOT_FOUND_MESSAGE);
107
  $this->getResponse()->setHeader('HTTP/1.1', '404', true);
108
  $data = array('error' => self::NOT_FOUND_MESSAGE);
@@ -252,9 +255,6 @@ class Futurenext_Zakeke_CustomizeController extends Mage_Core_Controller_Front_A
252
  /** @var Futurenext_Zakeke_Helper_ZakekeApi $zakekeApi */
253
  $zakekeApi = Mage::helper('futurenext_zakeke/zakekeApi');
254
  $token = $zakekeApi->getToken($data);
255
- if (!$token) {
256
- throw new Exception($this->__('Failed to get the Zakeke authentication token.'));
257
- }
258
 
259
  // Register current data
260
  Mage::register('current_product', $product);
@@ -265,8 +265,7 @@ class Futurenext_Zakeke_CustomizeController extends Mage_Core_Controller_Front_A
265
  );
266
 
267
  $this->loadLayout();
268
- $title = $product->getName();
269
- $this->getLayout()->getBlock('head')->setTitle($title);
270
  $this->renderLayout();
271
  } catch (Exception $e) {
272
  Mage::logException($e);
@@ -323,9 +322,6 @@ class Futurenext_Zakeke_CustomizeController extends Mage_Core_Controller_Front_A
323
  /** @var Futurenext_Zakeke_Helper_ZakekeApi $zakekeApi */
324
  $zakekeApi = Mage::helper('futurenext_zakeke/zakekeApi');
325
  $token = $zakekeApi->getToken($data);
326
- if (!$token) {
327
- throw new Exception($this->__('Failed to get the Zakeke authentication token.'));
328
- }
329
 
330
  // Register current data
331
  Mage::register('current_product', $product);
@@ -336,8 +332,7 @@ class Futurenext_Zakeke_CustomizeController extends Mage_Core_Controller_Front_A
336
  );
337
 
338
  $this->loadLayout();
339
- $title = $product->getName() . ' ' . $this->__('customization');
340
- $this->getLayout()->getBlock('head')->setTitle($title);
341
  $this->renderLayout();
342
  } catch (Exception $e) {
343
  Mage::logException($e);
99
  try {
100
  $product = $this->_initProduct();
101
 
102
+ /** @var Futurenext_Zakeke_Helper_Data $zakekeHelper */
103
+ $zakekeHelper = Mage::helper('futurenext_zakeke');
104
+
105
  /**
106
  * Check product availability
107
  */
108
+ if (!($product && $zakekeHelper->isProductCustomizable($product))) {
109
  Mage::log('Zakeke CustomizeController: ' . self::NOT_FOUND_MESSAGE);
110
  $this->getResponse()->setHeader('HTTP/1.1', '404', true);
111
  $data = array('error' => self::NOT_FOUND_MESSAGE);
255
  /** @var Futurenext_Zakeke_Helper_ZakekeApi $zakekeApi */
256
  $zakekeApi = Mage::helper('futurenext_zakeke/zakekeApi');
257
  $token = $zakekeApi->getToken($data);
 
 
 
258
 
259
  // Register current data
260
  Mage::register('current_product', $product);
265
  );
266
 
267
  $this->loadLayout();
268
+ $this->getLayout()->getBlock('head')->setTitle($product->getName());
 
269
  $this->renderLayout();
270
  } catch (Exception $e) {
271
  Mage::logException($e);
322
  /** @var Futurenext_Zakeke_Helper_ZakekeApi $zakekeApi */
323
  $zakekeApi = Mage::helper('futurenext_zakeke/zakekeApi');
324
  $token = $zakekeApi->getToken($data);
 
 
 
325
 
326
  // Register current data
327
  Mage::register('current_product', $product);
332
  );
333
 
334
  $this->loadLayout();
335
+ $this->getLayout()->getBlock('head')->setTitle($product->getName());
 
336
  $this->renderLayout();
337
  } catch (Exception $e) {
338
  Mage::logException($e);
app/code/community/Futurenext/Zakeke/etc/config.xml CHANGED
@@ -12,7 +12,7 @@
12
  <config>
13
  <modules>
14
  <Futurenext_Zakeke>
15
- <version>1.0.0.7</version>
16
  </Futurenext_Zakeke>
17
  </modules>
18
 
@@ -21,11 +21,6 @@
21
  <futurenext_zakeke>
22
  <class>Futurenext_Zakeke_Block</class>
23
  </futurenext_zakeke>
24
- <sales>
25
- <rewrite>
26
- <order_email_items_order_default>Futurenext_Zakeke_Block_Sales_Order_Email_Items_Order_Default</order_email_items_order_default>
27
- </rewrite>
28
- </sales>
29
  </blocks>
30
 
31
  <models>
@@ -145,6 +140,16 @@
145
  </futurenext_zakeke>
146
  </updates>
147
  </layout>
 
 
 
 
 
 
 
 
 
 
148
  </adminhtml>
149
 
150
  <frontend>
12
  <config>
13
  <modules>
14
  <Futurenext_Zakeke>
15
+ <version>1.0.0.8</version>
16
  </Futurenext_Zakeke>
17
  </modules>
18
 
21
  <futurenext_zakeke>
22
  <class>Futurenext_Zakeke_Block</class>
23
  </futurenext_zakeke>
 
 
 
 
 
24
  </blocks>
25
 
26
  <models>
140
  </futurenext_zakeke>
141
  </updates>
142
  </layout>
143
+
144
+ <translate>
145
+ <modules>
146
+ <Futurenext_Zakeke>
147
+ <files>
148
+ <default>Futurenext_Zakeke.csv</default>
149
+ </files>
150
+ </Futurenext_Zakeke>
151
+ </modules>
152
+ </translate>
153
  </adminhtml>
154
 
155
  <frontend>
app/code/community/Futurenext/Zakeke/etc/system.xml CHANGED
@@ -34,19 +34,9 @@
34
  <show_in_website>1</show_in_website>
35
  <show_in_store>1</show_in_store>
36
  <fields>
37
- <zakekeActive translate="label">
38
- <label>Enabled</label>
39
- <sort_order>1</sort_order>
40
- <show_in_default>1</show_in_default>
41
- <show_in_website>1</show_in_website>
42
- <show_in_store>1</show_in_store>
43
- <frontend_type>select</frontend_type>
44
- <source_model>adminhtml/system_config_source_yesno</source_model>
45
- </zakekeActive>
46
-
47
  <zakekeUsername translate="label comment">
48
  <label>Zakeke username</label>
49
- <sort_order>2</sort_order>
50
  <show_in_default>1</show_in_default>
51
  <show_in_website>1</show_in_website>
52
  <show_in_store>1</show_in_store>
@@ -56,7 +46,7 @@
56
 
57
  <zakekePassword translate="label">
58
  <label>Zakeke password</label>
59
- <sort_order>3</sort_order>
60
  <show_in_default>1</show_in_default>
61
  <show_in_website>1</show_in_website>
62
  <show_in_store>1</show_in_store>
34
  <show_in_website>1</show_in_website>
35
  <show_in_store>1</show_in_store>
36
  <fields>
 
 
 
 
 
 
 
 
 
 
37
  <zakekeUsername translate="label comment">
38
  <label>Zakeke username</label>
39
+ <sort_order>1</sort_order>
40
  <show_in_default>1</show_in_default>
41
  <show_in_website>1</show_in_website>
42
  <show_in_store>1</show_in_store>
46
 
47
  <zakekePassword translate="label">
48
  <label>Zakeke password</label>
49
+ <sort_order>2</sort_order>
50
  <show_in_default>1</show_in_default>
51
  <show_in_website>1</show_in_website>
52
  <show_in_store>1</show_in_store>
app/design/adminhtml/default/default/template/zakeke/sales/items/column/zakeke/name.phtml CHANGED
@@ -7,7 +7,7 @@ $_zakekeDownload = $this->getZakekeOutputZip();
7
  <div><strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong> <?php echo implode('<br />', Mage::helper('catalog')->splitSku($this->escapeHtml($this->getSku()))); ?></div>
8
 
9
  <?php if ($_zakekePreviews) : ?>
10
- <?php echo $this->helper('futurenext_zakeke')->htmlView($_zakekePreviews) ?>
11
  <?php endif; ?>
12
  <?php if ($_zakekeDownload) : ?>
13
  <a href="<?php echo $this->quoteEscape($_zakekeDownload) ?>" download>
7
  <div><strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong> <?php echo implode('<br />', Mage::helper('catalog')->splitSku($this->escapeHtml($this->getSku()))); ?></div>
8
 
9
  <?php if ($_zakekePreviews) : ?>
10
+ <?php echo $this->helper('futurenext_zakeke')->adminhtmlView($_zakekePreviews) ?>
11
  <?php endif; ?>
12
  <?php if ($_zakekeDownload) : ?>
13
  <a href="<?php echo $this->quoteEscape($_zakekeDownload) ?>" download>
app/design/adminhtml/default/default/template/zakeke/sales/order/invoice/create/items/renderer/zakeke.phtml CHANGED
@@ -1,29 +1,3 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Academic Free License (AFL 3.0)
8
- * that is bundled with this package in the file LICENSE_AFL.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/afl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magento.com so we can send you a copy immediately.
14
- *
15
- * DISCLAIMER
16
- *
17
- * Do not edit or add to this file if you wish to upgrade Magento to newer
18
- * versions in the future. If you wish to customize Magento for your
19
- * needs please refer to http://www.magento.com for more information.
20
- *
21
- * @category design
22
- * @package default_default
23
- * @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
24
- * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
- */
26
- ?>
27
  <?php $_item = $this->getItem() ?>
28
  <?php $this->setPriceDataObject($_item) ?>
29
  <tr class="border">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php $_item = $this->getItem() ?>
2
  <?php $this->setPriceDataObject($_item) ?>
3
  <tr class="border">
app/design/adminhtml/default/default/template/zakeke/sales/order/invoice/view/items/renderer/zakeke.phtml CHANGED
@@ -1,29 +1,3 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Academic Free License (AFL 3.0)
8
- * that is bundled with this package in the file LICENSE_AFL.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/afl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magento.com so we can send you a copy immediately.
14
- *
15
- * DISCLAIMER
16
- *
17
- * Do not edit or add to this file if you wish to upgrade Magento to newer
18
- * versions in the future. If you wish to customize Magento for your
19
- * needs please refer to http://www.magento.com for more information.
20
- *
21
- * @category design
22
- * @package default_default
23
- * @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
24
- * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
- */
26
- ?>
27
  <?php $_item = $this->getItem() ?>
28
  <?php $this->setPriceDataObject($_item) ?>
29
  <tr class="border">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php $_item = $this->getItem() ?>
2
  <?php $this->setPriceDataObject($_item) ?>
3
  <tr class="border">
app/design/frontend/base/default/layout/zakeke.xml CHANGED
@@ -32,24 +32,8 @@
32
  <template>zakeke/cart/minicart.phtml</template>
33
  </action>
34
  </reference>
35
- <reference name="head">
36
- <action method="addItem">
37
- <type>skin_js</type>
38
- <name>js/zakeke/preview.js</name>
39
- </action>
40
- </reference>
41
  </default>
42
 
43
- <customer_account>
44
- <reference name="cart_sidebar">
45
- <action method="addItemRender">
46
- <type>zakeke</type>
47
- <block>futurenext_zakeke/cartItemRenderer</block>
48
- <template>zakeke/cart/minicart.phtml</template>
49
- </action>
50
- </reference>
51
- </customer_account>
52
-
53
  <checkout_cart_index>
54
  <reference name="checkout.cart">
55
  <action method="addItemRender">
@@ -61,12 +45,6 @@
61
  </checkout_cart_index>
62
 
63
  <catalog_product_view>
64
- <reference name="head">
65
- <action method="addItem">
66
- <type>skin_css</type>
67
- <name>css/zakeke/productview.css</name>
68
- </action>
69
- </reference>
70
  <reference name="product.info.addtocart">
71
  <block type="futurenext_zakeke/customizeButton"
72
  name="zakeke.customize.button"
@@ -74,25 +52,6 @@
74
  </reference>
75
  </catalog_product_view>
76
 
77
- <checkout_onepage_review>
78
- <reference name="root">
79
- <action method="addItemRender">
80
- <type>zakeke</type>
81
- <block>futurenext_zakeke/checkoutItemRenderer</block>
82
- <template>zakeke/checkout/onepage/review/item.phtml</template></action>
83
- </reference>
84
- </checkout_onepage_review>
85
-
86
- <sales_order_view>
87
- <reference name="order_items">
88
- <action method="addItemRender">
89
- <type>zakeke</type>
90
- <block>futurenext_zakeke/salesItemRenderer</block>
91
- <template>zakeke/sales/order/items/renderer/zakeke.phtml</template>
92
- </action>
93
- </reference>
94
- </sales_order_view>
95
-
96
  <futurenext_zakeke_customize_add>
97
  <reference name="root">
98
  <action method="setTemplate"><template>page/1column.phtml</template></action>
32
  <template>zakeke/cart/minicart.phtml</template>
33
  </action>
34
  </reference>
 
 
 
 
 
 
35
  </default>
36
 
 
 
 
 
 
 
 
 
 
 
37
  <checkout_cart_index>
38
  <reference name="checkout.cart">
39
  <action method="addItemRender">
45
  </checkout_cart_index>
46
 
47
  <catalog_product_view>
 
 
 
 
 
 
48
  <reference name="product.info.addtocart">
49
  <block type="futurenext_zakeke/customizeButton"
50
  name="zakeke.customize.button"
52
  </reference>
53
  </catalog_product_view>
54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  <futurenext_zakeke_customize_add>
56
  <reference name="root">
57
  <action method="setTemplate"><template>page/1column.phtml</template></action>
app/design/frontend/base/default/template/zakeke/checkout/onepage/review/item.phtml DELETED
@@ -1,237 +0,0 @@
1
- <?php
2
- /*******************************************************
3
- * Copyright (C) 2016 FutureNext SRL
4
- *
5
- * This file is part of Zakeke.
6
- *
7
- * Zakeke can not be copied and/or distributed without the express
8
- * permission of FutureNext SRL
9
- *******************************************************/
10
-
11
- $_item = $this->getItem();
12
- $_zakekePreviews = $this->getZakekePreviews();
13
- ?>
14
- <tr>
15
- <td><h3 class="product-name"><?php echo $this->escapeHtml($this->getProductName()) ?></h3>
16
- <div class="zakeke-preview">
17
- <div style="display: flex">
18
- <?php foreach ($_zakekePreviews as $preview): ?>
19
- <div data-zakeke-label="<?php echo $this->quoteEscape($preview->label) ?>" style="position: relative; width: 180px; height: 180px; overflow: hidden; cursor: pointer; margin: 0px;"
20
- onclick="zakekeShowPreview(this); return false;">
21
- <img src="<?php echo $this->quoteEscape($preview->url) ?>" style="width: 180px">
22
- </div>
23
- <?php endforeach; ?>
24
- </div>
25
- </div>
26
- <?php if ($_options = $this->getOptionList()):?>
27
- <dl class="item-options">
28
- <?php foreach ($_options as $_option) : ?>
29
- <?php if (isset($_option['is_zakeke'])) continue; ?>
30
- <?php $_formatedOptionValue = $this->getFormatedOptionValue($_option) ?>
31
- <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
32
- <dd<?php if (isset($_formatedOptionValue['full_view'])): ?> class="truncated"<?php endif; ?>><?php echo $_formatedOptionValue['value'] ?>
33
- <?php if (isset($_formatedOptionValue['full_view'])): ?>
34
- <div class="truncated_full_value">
35
- <dl class="item-options">
36
- <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
37
- <dd><?php echo $_formatedOptionValue['full_view'] ?></dd>
38
- </dl>
39
- </div>
40
- <?php endif; ?>
41
- </dd>
42
- <?php endforeach; ?>
43
- </dl>
44
- <?php endif;?>
45
- <?php if ($addtInfoBlock = $this->getProductAdditionalInformationBlock()):?>
46
- <?php echo $addtInfoBlock->setItem($_item)->toHtml() ?>
47
- <?php endif;?>
48
- </td>
49
- <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
50
- <td class="a-right">
51
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
52
- <span class="cart-tax-total" onclick="taxToggle('eunit-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
53
- <?php else: ?>
54
- <span class="cart-price">
55
- <?php endif; ?>
56
-
57
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
58
- <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()); ?>
59
- <?php else: ?>
60
- <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()) ?>
61
- <?php endif; ?>
62
-
63
- </span>
64
-
65
-
66
- <?php if (Mage::helper('weee')->getApplied($_item)): ?>
67
-
68
- <div class="cart-tax-info" id="eunit-item-tax-details<?php echo $_item->getId(); ?>" style="display:none;">
69
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
70
- <small>
71
- <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
72
- <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount'],true,true); ?></span><br />
73
- <?php endforeach; ?>
74
- </small>
75
- <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
76
- <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
77
- <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount'],true,true); ?></small></span><br />
78
- <?php endforeach; ?>
79
- <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
80
- <small>
81
- <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
82
- <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount'],true,true); ?></span><br />
83
- <?php endforeach; ?>
84
- </small>
85
- <?php endif; ?>
86
- </div>
87
-
88
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
89
- <div class="cart-tax-total" onclick="taxToggle('eunit-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
90
- <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()); ?></span>
91
- </div>
92
- <?php endif; ?>
93
- <?php endif; ?>
94
- </td>
95
- <?php endif; ?>
96
- <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
97
- <td>
98
- <?php $_incl = $this->helper('checkout')->getPriceInclTax($_item); ?>
99
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
100
- <span class="cart-tax-total" onclick="taxToggle('unit-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
101
- <?php else: ?>
102
- <span class="cart-price">
103
- <?php endif; ?>
104
-
105
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
106
- <?php echo $this->helper('checkout')->formatPrice($_incl + Mage::helper('weee')->getWeeeTaxInclTax($_item)); ?>
107
- <?php else: ?>
108
- <?php echo $this->helper('checkout')->formatPrice($_incl-$_item->getWeeeTaxDisposition()) ?>
109
- <?php endif; ?>
110
-
111
- </span>
112
- <?php if (Mage::helper('weee')->getApplied($_item)): ?>
113
-
114
- <div class="cart-tax-info" id="unit-item-tax-details<?php echo $_item->getId(); ?>" style="display:none;">
115
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
116
- <small>
117
- <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
118
- <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></span><br />
119
- <?php endforeach; ?>
120
- </small>
121
- <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
122
- <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
123
- <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></small></span><br />
124
- <?php endforeach; ?>
125
- <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
126
- <small>
127
- <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
128
- <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></span><br />
129
- <?php endforeach; ?>
130
- </small>
131
- <?php endif; ?>
132
- </div>
133
-
134
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
135
- <div class="cart-tax-total" onclick="taxToggle('unit-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
136
- <span class="nobr"><?php echo Mage::helper('weee')->__('Total incl. tax'); ?>:<br /> <?php echo $this->helper('checkout')->formatPrice($_incl + Mage::helper('weee')->getWeeeTaxInclTax($_item)); ?></span>
137
- </div>
138
- <?php endif; ?>
139
- <?php endif; ?>
140
- </td>
141
- <?php endif; ?>
142
- <td class="a-center"><?php echo $_item->getQty() ?></td>
143
- <!-- sub total starts here -->
144
- <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
145
- <td class="a-right">
146
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
147
- <span class="cart-tax-total" onclick="taxToggle('esubtotal-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
148
- <?php else: ?>
149
- <span class="cart-price">
150
- <?php endif; ?>
151
-
152
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
153
- <?php echo $this->helper('checkout')->formatPrice($_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()); ?>
154
- <?php else: ?>
155
- <?php echo $this->helper('checkout')->formatPrice($_item->getRowTotal()) ?>
156
- <?php endif; ?>
157
-
158
- </span>
159
- <?php if (Mage::helper('weee')->getApplied($_item)): ?>
160
-
161
- <div class="cart-tax-info" id="esubtotal-item-tax-details<?php echo $_item->getId(); ?>" style="display:none;">
162
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
163
- <small>
164
- <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
165
- <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount'],true,true); ?></span><br />
166
- <?php endforeach; ?>
167
- </small>
168
- <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
169
- <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
170
- <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount'],true,true); ?></small></span><br />
171
- <?php endforeach; ?>
172
- <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
173
- <small>
174
- <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
175
- <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount'],true,true); ?></span><br />
176
- <?php endforeach; ?>
177
- </small>
178
- <?php endif; ?>
179
- </div>
180
-
181
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
182
- <div class="cart-tax-total" onclick="taxToggle('esubtotal-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
183
- <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->helper('checkout')->formatPrice($_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()); ?></span>
184
- </div>
185
- <?php endif; ?>
186
- <?php endif; ?>
187
- </td>
188
- <?php endif; ?>
189
- <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
190
- <td>
191
- <?php $_incl = $this->helper('checkout')->getSubtotalInclTax($_item); ?>
192
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
193
- <span class="cart-tax-total" onclick="taxToggle('subtotal-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
194
- <?php else: ?>
195
- <span class="cart-price">
196
- <?php endif; ?>
197
-
198
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
199
- <?php echo $this->helper('checkout')->formatPrice($_incl + Mage::helper('weee')->getRowWeeeTaxInclTax($_item)); ?>
200
- <?php else: ?>
201
- <?php echo $this->helper('checkout')->formatPrice($_incl-$_item->getWeeeTaxRowDisposition()) ?>
202
- <?php endif; ?>
203
-
204
- </span>
205
-
206
-
207
- <?php if (Mage::helper('weee')->getApplied($_item)): ?>
208
-
209
- <div class="cart-tax-info" id="subtotal-item-tax-details<?php echo $_item->getId(); ?>" style="display:none;">
210
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
211
- <small>
212
- <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
213
- <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount_incl_tax'],true,true); ?></span><br />
214
- <?php endforeach; ?>
215
- </small>
216
- <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
217
- <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
218
- <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount_incl_tax'],true,true); ?></small></span><br />
219
- <?php endforeach; ?>
220
- <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
221
- <small>
222
- <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
223
- <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount_incl_tax'],true,true); ?></span><br />
224
- <?php endforeach; ?>
225
- </small>
226
- <?php endif; ?>
227
- </div>
228
-
229
- <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
230
- <div class="cart-tax-total" onclick="taxToggle('subtotal-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
231
- <span class="nobr"><?php echo Mage::helper('weee')->__('Total incl. tax'); ?>:<br /> <?php echo $this->helper('checkout')->formatPrice($_incl + Mage::helper('weee')->getRowWeeeTaxInclTax($_item)); ?></span>
232
- </div>
233
- <?php endif; ?>
234
- <?php endif; ?>
235
- </td>
236
- <?php endif; ?>
237
- </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/base/default/template/zakeke/sales/order/items/renderer/zakeke.phtml DELETED
@@ -1,349 +0,0 @@
1
- <?php
2
- /*******************************************************
3
- * Copyright (C) 2016 FutureNext SRL
4
- *
5
- * This file is part of Zakeke.
6
- *
7
- * Zakeke can not be copied and/or distributed without the express
8
- * permission of FutureNext SRL
9
- *******************************************************/
10
-
11
- /** @var Futurenext_Zakeke_Block_SalesItemRenderer $this */
12
- ?>
13
- <?php
14
- $_item = $this->getItem();
15
- $_zakekePreviews = $this->getZakekePreviews();
16
- ?>
17
- <tr class="border" id="order-item-row-<?php echo $_item->getId() ?>">
18
- <td><h3 class="product-name"><?php echo $this->escapeHtml($_item->getName()) ?></h3>
19
- <div class="zakeke-preview">
20
- <div style="display: flex">
21
- <?php foreach ($_zakekePreviews as $preview): ?>
22
- <div data-zakeke-label="<?php echo $this->quoteEscape($preview->label) ?>" style="position: relative; max-height: 186px; overflow: hidden; cursor: pointer; margin: 0px;"
23
- onclick="zakekeShowPreview(this); return false;">
24
- <img src="<?php echo $this->quoteEscape($preview->url) ?>" style="width: 180px">
25
- </div>
26
- <?php endforeach; ?>
27
- </div>
28
- </div>
29
- <?php if ($_options = $this->getItemOptions()): ?>
30
- <dl class="item-options">
31
- <?php foreach ($_options as $_option) : ?>
32
- <?php if (isset($_option['is_zakeke'])) continue; ?>
33
- <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
34
- <?php if (!$this->getPrintStatus()): ?>
35
- <?php $_formatedOptionValue = $this->getFormatedOptionValue($_option) ?>
36
- <dd<?php if (isset($_formatedOptionValue['full_view'])): ?> class="truncated"<?php endif; ?>>
37
- <?php echo $_formatedOptionValue['value'] ?>
38
- <?php if (isset($_formatedOptionValue['full_view'])): ?>
39
- <div class="truncated_full_value">
40
- <dl class="item-options">
41
- <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
42
- <dd><?php echo $_formatedOptionValue['full_view'] ?></dd>
43
- </dl>
44
- </div>
45
- <?php endif; ?>
46
- </dd>
47
- <?php else: ?>
48
- <dd><?php echo $this->escapeHtml((isset($_option['print_value']) ? $_option['print_value'] : $_option['value'])) ?></dd>
49
- <?php endif; ?>
50
- <?php endforeach; ?>
51
- </dl>
52
- <?php endif; ?>
53
-
54
- <?php echo $this->escapeHtml($_item->getDescription()) ?>
55
- <?php if ($this->helper('giftmessage/message')->getIsMessagesAvailable('order_item', $_item) && $_item->getGiftMessageId()): ?>
56
- <br/><a href="#" id="order-item-gift-message-link-<?php echo $_item->getId() ?>"
57
- class="giftmessage-preview-link expand"
58
- onclick="return giftMessageToogle('<?php echo $_item->getId() ?>')"><?php echo $this->__('Gift Message') ?></a>
59
- <?php endif; ?>
60
- </td>
61
- <td><?php echo $this->escapeHtml(Mage::helper('core/string')->splitInjection($this->getSku())) ?></td>
62
-
63
- <td class="a-right nowrap">
64
- <?php if ($this->helper('tax')->displayCartBothPrices() || $this->helper('tax')->displayCartPriceExclTax()): ?>
65
- <span class="price-excl-tax">
66
- <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
67
- <?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
68
- <span class="cart-price">
69
- <?php endif; ?>
70
- <span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
71
- <?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
72
- </span>
73
- <?php endif; ?>
74
- <?php endif; ?>
75
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
76
- <span class="cart-tax-total"
77
- onclick="taxToggle('eunit-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
78
- <?php else: ?>
79
- <span class="cart-price">
80
- <?php endif; ?>
81
-
82
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(0, 1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
83
- <?php echo $this->getOrder()->formatPrice($this->getItem()->getPrice() + $this->getItem()->getWeeeTaxAppliedAmount() + $this->getItem()->getWeeeTaxDisposition()); ?>
84
- <?php else: ?>
85
- <?php echo $this->getOrder()->formatPrice($this->getItem()->getPrice()) ?>
86
- <?php endif; ?>
87
- </span>
88
-
89
- <?php if (Mage::helper('weee')->getApplied($this->getItem())): ?>
90
-
91
- <span class="cart-tax-info" id="eunit-item-tax-details<?php echo $this->getItem()->getId(); ?>"
92
- style="display:none;">
93
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 1, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
94
- <small>
95
- <?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
96
- <span class="nobr"><?php echo $tax['title']; ?>
97
- : <?php echo $this->getOrder()->formatPrice($tax['amount']); ?></span>
98
- <?php endforeach; ?>
99
- </small>
100
- <?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
101
- <?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
102
- <span class="nobr"><small><?php echo $tax['title']; ?>
103
- : <?php echo $this->getOrder()->formatPrice($tax['amount']); ?></small></span>
104
- <?php endforeach; ?>
105
- <?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 4, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
106
- <small>
107
- <?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
108
- <span class="nobr"><?php echo $tax['title']; ?>
109
- : <?php echo $this->getOrder()->formatPrice($tax['amount']); ?></span>
110
- <?php endforeach; ?>
111
- </small>
112
- <?php endif; ?>
113
- </span>
114
-
115
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
116
- <span class="cart-tax-total"
117
- onclick="taxToggle('eunit-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
118
- <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>
119
- :<br/> <?php echo $this->getOrder()->formatPrice($this->getItem()->getPrice() + $this->getItem()->getWeeeTaxAppliedAmount() + $this->getItem()->getWeeeTaxDisposition()); ?></span>
120
- </span>
121
- <?php endif; ?>
122
- <?php endif; ?>
123
- </span>
124
- <br/>
125
- <?php endif; ?>
126
- <?php if ($this->helper('tax')->displayCartBothPrices() || $this->helper('tax')->displayCartPriceInclTax()): ?>
127
- <span class="price-incl-tax">
128
- <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
129
- <?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
130
- <span class="cart-price">
131
- <?php endif; ?>
132
- <span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
133
- <?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
134
- </span>
135
- <?php endif; ?>
136
- <?php endif; ?>
137
- <?php $_incl = $this->helper('checkout')->getPriceInclTax($this->getItem()); ?>
138
-
139
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
140
- <span class="cart-tax-total"
141
- onclick="taxToggle('unit-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
142
- <?php else: ?>
143
- <span class="cart-price">
144
- <?php endif; ?>
145
-
146
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(0, 1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
147
- <?php echo $this->getOrder()->formatPrice($_incl + Mage::helper('weee')->getWeeeTaxInclTax($_item)); ?>
148
- <?php else: ?>
149
- <?php echo $this->getOrder()->formatPrice($_incl - $this->getItem()->getWeeeTaxDisposition()) ?>
150
- <?php endif; ?>
151
-
152
- </span>
153
-
154
- <?php if (Mage::helper('weee')->getApplied($this->getItem())): ?>
155
-
156
- <span class="cart-tax-info" id="unit-item-tax-details<?php echo $this->getItem()->getId(); ?>"
157
- style="display:none;">
158
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 1, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
159
- <small>
160
- <?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
161
- <span class="nobr"><?php echo $tax['title']; ?>
162
- : <?php echo $this->getOrder()->formatPrice($tax['amount_incl_tax']); ?></span>
163
- <?php endforeach; ?>
164
- </small>
165
- <?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
166
- <?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
167
- <span class="nobr"><small><?php echo $tax['title']; ?>
168
- : <?php echo $this->getOrder()->formatPrice($tax['amount_incl_tax']); ?></small></span>
169
- <?php endforeach; ?>
170
- <?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 4, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
171
- <small>
172
- <?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
173
- <span class="nobr"><?php echo $tax['title']; ?>
174
- : <?php echo $this->getOrder()->formatPrice($tax['amount_incl_tax']); ?></span>
175
- <?php endforeach; ?>
176
- </small>
177
- <?php endif; ?>
178
- </span>
179
-
180
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
181
- <span class="cart-tax-total"
182
- onclick="taxToggle('unit-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
183
- <span class="nobr"><?php echo Mage::helper('weee')->__('Total incl. tax'); ?>
184
- :<br/> <?php echo $this->getOrder()->formatPrice($_incl + Mage::helper('weee')->getWeeeTaxInclTax($_item)); ?></span>
185
- </span>
186
- <?php endif; ?>
187
- <?php endif; ?>
188
- </span>
189
- <?php endif; ?>
190
- </td>
191
-
192
- <td class="a-right nowrap">
193
- <span class="nobr">
194
- <?php if ($this->getItem()->getQtyOrdered() > 0): ?>
195
- <?php echo $this->__('Ordered'); ?>:
196
- <strong><?php echo $this->getItem()->getQtyOrdered() * 1 ?></strong><br/>
197
- <?php endif; ?>
198
- <?php if ($this->getItem()->getQtyShipped() > 0): ?>
199
- <?php echo $this->__('Shipped'); ?>:
200
- <strong><?php echo $this->getItem()->getQtyShipped() * 1 ?></strong><br/>
201
- <?php endif; ?>
202
- <?php if ($this->getItem()->getQtyCanceled() > 0): ?>
203
- <?php echo $this->__('Canceled'); ?>:
204
- <strong><?php echo $this->getItem()->getQtyCanceled() * 1 ?></strong><br/>
205
- <?php endif; ?>
206
- <?php if ($this->getItem()->getQtyRefunded() > 0): ?>
207
- <?php echo $this->__('Refunded'); ?>:
208
- <strong><?php echo $this->getItem()->getQtyRefunded() * 1 ?></strong><br/>
209
- <?php endif; ?>
210
- </span>
211
- </td>
212
- <td class="a-right nowrap">
213
- <?php if ($this->helper('tax')->displayCartBothPrices() || $this->helper('tax')->displayCartPriceExclTax()): ?>
214
- <span class="price-excl-tax">
215
- <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
216
- <?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
217
- <span class="cart-price">
218
- <?php endif; ?>
219
- <span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
220
- <?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
221
- </span>
222
- <?php endif; ?>
223
- <?php endif; ?>
224
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
225
- <span class="cart-tax-total"
226
- onclick="taxToggle('esubtotal-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
227
- <?php else: ?>
228
- <span class="cart-price">
229
- <?php endif; ?>
230
-
231
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(0, 1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
232
- <?php echo $this->getOrder()->formatPrice($this->getItem()->getRowTotal() + $this->getItem()->getWeeeTaxAppliedRowAmount() + $this->getItem()->getWeeeTaxRowDisposition()); ?>
233
- <?php else: ?>
234
- <?php echo $this->getOrder()->formatPrice($this->getItem()->getRowTotal()) ?>
235
- <?php endif; ?>
236
-
237
- </span>
238
-
239
-
240
- <?php if (Mage::helper('weee')->getApplied($this->getItem())): ?>
241
-
242
- <span class="cart-tax-info" id="esubtotal-item-tax-details<?php echo $this->getItem()->getId(); ?>"
243
- style="display:none;">
244
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 1, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
245
- <small>
246
- <?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
247
- <span class="nobr"><?php echo $tax['title']; ?>
248
- : <?php echo $this->getOrder()->formatPrice($tax['row_amount']); ?></span>
249
- <?php endforeach; ?>
250
- </small>
251
- <?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
252
- <?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
253
- <span class="nobr"><small><?php echo $tax['title']; ?>
254
- : <?php echo $this->getOrder()->formatPrice($tax['row_amount']); ?></small></span>
255
- <?php endforeach; ?>
256
- <?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 4, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
257
- <small>
258
- <?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
259
- <span class="nobr"><?php echo $tax['title']; ?>
260
- : <?php echo $this->getOrder()->formatPrice($tax['row_amount']); ?></span>
261
- <?php endforeach; ?>
262
- </small>
263
- <?php endif; ?>
264
- </span>
265
-
266
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
267
- <span class="cart-tax-total"
268
- onclick="taxToggle('esubtotal-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
269
- <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>
270
- :<br/> <?php echo $this->getOrder()->formatPrice($this->getItem()->getRowTotal() + $this->getItem()->getWeeeTaxAppliedRowAmount() + $this->getItem()->getWeeeTaxRowDisposition()); ?></span>
271
- </span>
272
- <?php endif; ?>
273
- <?php endif; ?>
274
- </span>
275
- <br/>
276
- <?php endif; ?>
277
- <?php if ($this->helper('tax')->displayCartBothPrices() || $this->helper('tax')->displayCartPriceInclTax()): ?>
278
- <span class="price-incl-tax">
279
- <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
280
- <?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
281
- <span class="cart-price">
282
- <?php endif; ?>
283
- <span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
284
- <?php if (!Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
285
- </span>
286
- <?php endif; ?>
287
- <?php endif; ?>
288
- <?php $_incl = $this->helper('checkout')->getSubtotalInclTax($this->getItem()); ?>
289
-
290
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
291
- <span class="cart-tax-total"
292
- onclick="taxToggle('subtotal-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
293
- <?php else: ?>
294
- <span class="cart-price">
295
- <?php endif; ?>
296
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), array(0, 1, 4), 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
297
- <?php echo $this->getOrder()->formatPrice($_incl + Mage::helper('weee')->getRowWeeeTaxInclTax($_item)); ?>
298
- <?php else: ?>
299
- <?php echo $this->getOrder()->formatPrice($_incl - $this->getItem()->getWeeeTaxRowDisposition()) ?>
300
- <?php endif; ?>
301
-
302
- </span>
303
-
304
- <?php if (Mage::helper('weee')->getApplied($this->getItem())): ?>
305
-
306
- <span class="cart-tax-info" id="subtotal-item-tax-details<?php echo $this->getItem()->getId(); ?>"
307
- style="display:none;">
308
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 1, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
309
- <small>
310
- <?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
311
- <span class="nobr"><?php echo $tax['title']; ?>
312
- : <?php echo $this->getOrder()->formatPrice($tax['row_amount_incl_tax']); ?></span>
313
- <?php endforeach; ?>
314
- </small>
315
- <?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
316
- <?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
317
- <span class="nobr"><small><?php echo $tax['title']; ?>
318
- : <?php echo $this->getOrder()->formatPrice($tax['row_amount_incl_tax']); ?></small></span>
319
- <?php endforeach; ?>
320
- <?php elseif (Mage::helper('weee')->typeOfDisplay($this->getItem(), 4, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
321
- <small>
322
- <?php foreach (Mage::helper('weee')->getApplied($this->getItem()) as $tax): ?>
323
- <span class="nobr"><?php echo $tax['title']; ?>
324
- : <?php echo $this->getOrder()->formatPrice($tax['row_amount_incl_tax']); ?></span>
325
- <?php endforeach; ?>
326
- </small>
327
- <?php endif; ?>
328
- </span>
329
-
330
- <?php if (Mage::helper('weee')->typeOfDisplay($this->getItem(), 2, 'sales') && (float)$this->getItem()->getWeeeTaxAppliedAmount()): ?>
331
- <span class="cart-tax-total"
332
- onclick="taxToggle('subtotal-item-tax-details<?php echo $this->getItem()->getId(); ?>', this, 'cart-tax-total-expanded');">
333
- <span class="nobr"><?php echo Mage::helper('weee')->__('Total incl. tax'); ?>
334
- :<br/> <?php echo $this->getOrder()->formatPrice($_incl + Mage::helper('weee')->getRowWeeeTaxInclTax($_item)); ?></span>
335
- </span>
336
- <?php endif; ?>
337
- <?php endif; ?>
338
- </span>
339
- <?php endif; ?>
340
- </td>
341
- <!--
342
- <?php if ($this->helper('tax')->displayCartBothPrices() || $this->helper('tax')->displayCartPriceExclTax()): ?>
343
- <th class="nowrap a-right"><?php echo $this->getOrder()->formatPrice($this->getItem()->getRowTotal()) ?></th>
344
- <?php endif; ?>
345
- <?php if ($this->helper('tax')->displayCartBothPrices() || $this->helper('tax')->displayCartPriceInclTax()): ?>
346
- <th class="nowrap a-right"><?php echo $this->getOrder()->formatPrice($this->helper('checkout')->getSubtotalInclTax($this->getItem())); ?></th>
347
- <?php endif; ?>
348
- -->
349
- </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/locale/it_IT/Futurenext_Zakeke.csv CHANGED
@@ -1,3 +1,4 @@
1
  Customize,Personalizza
2
  Customization,Personalizzazione
3
- "Customization Price","Costo personalizzazione"
 
1
  Customize,Personalizza
2
  Customization,Personalizzazione
3
+ "Customization Price","Costo personalizzazione"
4
+ "Download customization files","Scarica file di personalizzazione"
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Futurenext_Zakeke</name>
4
- <version>1.0.0.7</version>
5
  <stability>stable</stability>
6
  <license uri="https://www.zakeke.com/Contracts/GeneralConditions">Zakeke license</license>
7
  <channel>community</channel>
@@ -10,9 +10,9 @@
10
  <description>Zakeke is an innovative cloud platform that allows any Magento store to integrate into the system a 2D and 3D complete customizer of products, giving the possibility to customize "live" products for sale to the end customer.</description>
11
  <notes>Bug fixing release</notes>
12
  <authors><author><name>Futurenext</name><user>futurenext</user><email>info@zakeke.com</email></author></authors>
13
- <date>2017-03-31</date>
14
- <time>12:07:29</time>
15
- <contents><target name="magecommunity"><dir name="Futurenext"><dir name="Zakeke"><dir name="Block"><dir name="Adminhtml"><dir name="Catalog"><dir name="Product"><dir name="Composite"><dir name="Fieldset"><file name="Downloadable.php" hash="2d8fb733bc0ba91d9f6663f36489fbd3"/></dir></dir><dir name="Edit"><dir name="Tab"><dir name="Downloadable"><file name="Links.php" hash="346b6dfd7dd8607b67c280350ac9975e"/><file name="Samples.php" hash="93c481ebd2ef25927bd836829d943fae"/></dir><file name="Downloadable.php" hash="f8b9ba9f21da82fdc42aca57b2342440"/></dir></dir></dir></dir><dir name="Sales"><dir name="Items"><dir name="Column"><dir name="Zakeke"><file name="Name.php" hash="663d3f51347773fb7db4737641171ffd"/></dir></dir></dir></dir></dir><file name="CartItemRenderer.php" hash="24dd771900f341285fcb6625648bdafb"/><file name="CheckoutItemRenderer.php" hash="efc02e5ff750861fe849c83e7df24da1"/><dir name="Customize"><file name="Add.php" hash="6d206e080ed91ed1ffbdd7528d89be2f"/><file name="Configure.php" hash="e815ed877af5727bd20289429122107b"/></dir><file name="Customize.php" hash="dcae150aafaa72013f83c0e51746f56d"/><file name="CustomizeButton.php" hash="0289e8754309ed5ba622a4e0ce643d25"/><file name="ModuleChecker.php" hash="8df2615bc87c4e656584ee80a51a9b31"/><dir name="Sales"><dir name="Order"><dir name="Email"><dir name="Items"><dir name="Order"><file name="Default.php" hash="f053f33c788884284d983f9340b8a104"/></dir></dir></dir></dir></dir><file name="SalesItemRenderer.php" hash="e5033cf0e41f399d27d8a4f6e9cad82f"/><file name="View.php" hash="f4f780e2c0e48bc0280bc6980d420da2"/></dir><dir name="Helper"><file name="Data.php" hash="45761a858ac8700b299d8a30a04c1d74"/><file name="ZakekeApi.php" hash="33570062b20d80a2222b3bfa6e0766a9"/></dir><dir name="Model"><dir name="Api2"><dir name="Colors"><dir name="Rest"><dir name="Admin"><file name="V1.php" hash="0b1ad3d9656fd5b729d1f7a626359e19"/></dir></dir></dir><file name="Colors.php" hash="f9f004c13ef5357bb3d5e798208e7902"/><dir name="ProductAttribute"><dir name="Rest"><dir name="Admin"><file name="V1.php" hash="40a6a5def798a5d0e8bcee1ac8c8a4d8"/></dir></dir></dir><file name="ProductAttribute.php" hash="97ea0f12646d9f1f1ab6916ed41f04dc"/><dir name="ProductOptions"><dir name="Rest"><dir name="Admin"><file name="V1.php" hash="6c6dd2079f58a654b60c465cc1fbc357"/></dir></dir></dir><file name="ProductOptions.php" hash="5e1234a158723dc5a8e2c3ccf6e152cf"/><dir name="Settings"><dir name="Rest"><dir name="Admin"><file name="V1.php" hash="e982e900acb2a4ac267cdda95c87cd35"/></dir></dir></dir><file name="Settings.php" hash="2f7fa711c00e75d3c4afabb007145c49"/><dir name="ZakekeEnabled"><dir name="Rest"><dir name="Admin"><file name="V1.php" hash="b107fafe0fa69827bebadfd66c6274d9"/></dir></dir></dir><file name="ZakekeEnabled.php" hash="0f5c210fa296b30283aa41f500c3e3b9"/></dir><file name="ModuleList.php" hash="929479d45eb4252daaff6e4a40733b09"/><file name="Observer.php" hash="1f57441680e8e27086079004574c69f9"/><dir name="Resource"><file name="Setup.php" hash="42a7681d56fcd5ad06f75a223ef420f1"/><dir name="ZakekeEnabled"><file name="Collection.php" hash="fdadf3c788c4b5e175e4a20501116027"/></dir><file name="ZakekeEnabled.php" hash="f32fb4b25f1f78287a38c3bd170bdbaa"/></dir><file name="ZakekeEnabled.php" hash="9b31e4606dcf8622092f638ca9f3920c"/></dir><dir name="controllers"><file name="CustomizeController.php" hash="c11203f7292404560d0d23a9ebf6d85a"/><dir name="Zakeke"><file name="ModuleCheckerController.php" hash="b92d1f5b155479a85f358f1356ccdd29"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="22cdf40e6e83327b58f9e97fa17e8f68"/><file name="api2.xml" hash="9af2352582ae62a261d07f58e64d5e77"/><file name="config.xml" hash="fc882d4af053db6af33cfb56973b1c7e"/><file name="system.xml" hash="be811a77878dc17994b5a641ddb2c838"/></dir><dir name="sql"><dir name="zakeke_setup"><file name="install-1.0.0.0.php" hash="64a3954b20b3142886446ac432a04b21"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Futurenext_Zakeke.xml" hash="f309795ee4b758943868cb1f7459fb9c"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="js"><dir name="zakeke"><file name="preview.js" hash="a22a32209982d2dda7561cff723b49bb"/></dir></dir><dir name="css"><dir name="zakeke"><file name="productview.css" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="zakeke"><file name="modulechecker.css" hash="e7fd6efc953f7e2aae234607a0a379a8"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="zakeke.xml" hash="d296777d398f6af473adfb8a15477b47"/></dir><dir name="template"><dir name="zakeke"><file name="modulechecker.phtml" hash="b3101729cc5030c645770af6a814cd26"/><dir name="sales"><dir name="items"><dir name="column"><dir name="zakeke"><file name="name.phtml" hash="e441a8f732c2d378df0deb88b7f7f5e7"/></dir></dir></dir><dir name="order"><dir name="creditmemo"><dir name="create"><dir name="items"><dir name="renderer"><file name="zakeke.phtml" hash="6294158a08ad56639c3a57a4d88c2f81"/></dir></dir></dir><dir name="view"><dir name="items"><dir name="renderer"><file name="zakeke.phtml" hash="4421194ecc884d934f099a256062cfcb"/></dir></dir></dir></dir><dir name="invoice"><dir name="create"><dir name="items"><dir name="renderer"><file name="zakeke.phtml" hash="74c7b3f6230f25b48dc3eb762eed7b2f"/></dir></dir></dir><dir name="view"><dir name="items"><dir name="renderer"><file name="zakeke.phtml" hash="01cd2347f60718c6238a7e19274d83bb"/></dir></dir></dir></dir><dir name="view"><dir name="items"><dir name="renderer"><file name="zakeke.phtml" hash="867a37a7072be0cba7dc9f7c03cec0d4"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="zakeke.xml" hash="d5e2ce6707c4e307857469097caeebda"/></dir><dir name="template"><dir name="zakeke"><dir name="cart"><dir name="item"><file name="default.phtml" hash="bfb6e4a50c69ccfdfe66ad8c8711afdd"/></dir><file name="minicart.phtml" hash="1e7398e848e024bbeae11ed1550de3c8"/></dir><dir name="checkout"><dir name="onepage"><dir name="review"><file name="item.phtml" hash="2255b8b6fd8d9df3af96fc3c6c06b320"/></dir></dir></dir><dir name="customization"><file name="add.phtml" hash="c647328e435fbe6dbe61e325e7a90f89"/></dir><file name="customize.phtml" hash="5b16967774ef9109760873480f2f23c2"/><file name="customizeButton.phtml" hash="78c81b67f8bb3e63c27d36054edaeb35"/><dir name="sales"><dir name="order"><dir name="items"><dir name="renderer"><file name="zakeke.phtml" hash="9590846363b6dc7ca0cd7eaaa0c86949"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="zakeke"><file name="customize.js" hash="efab393e72ffeedae64002dc1b8c002c"/><file name="jquery.js" hash="105112a8a757f683234e01dec3799022"/><file name="preview.js" hash="a22a32209982d2dda7561cff723b49bb"/></dir></dir></target><target name="magelocale"><dir name="it_IT"><file name="Futurenext_Zakeke.csv" hash="0a8b269e780aa6b01790451945e7e25a"/></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php><extension><name>curl</name><min/><max/></extension></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Futurenext_Zakeke</name>
4
+ <version>1.0.0.8</version>
5
  <stability>stable</stability>
6
  <license uri="https://www.zakeke.com/Contracts/GeneralConditions">Zakeke license</license>
7
  <channel>community</channel>
10
  <description>Zakeke is an innovative cloud platform that allows any Magento store to integrate into the system a 2D and 3D complete customizer of products, giving the possibility to customize "live" products for sale to the end customer.</description>
11
  <notes>Bug fixing release</notes>
12
  <authors><author><name>Futurenext</name><user>futurenext</user><email>info@zakeke.com</email></author></authors>
13
+ <date>2017-05-03</date>
14
+ <time>08:48:55</time>
15
+ <contents><target name="magecommunity"><dir name="Futurenext"><dir name="Zakeke"><dir name="Block"><dir name="Adminhtml"><dir name="Sales"><dir name="Items"><dir name="Column"><dir name="Zakeke"><file name="Name.php" hash="44ee4fa109c9fbf1283cf2a4a4370cab"/></dir></dir></dir></dir></dir><file name="CartItemRenderer.php" hash="9c48c821bdab816c35c4d959e52f1976"/><file name="CheckoutItemRenderer.php" hash="02d4244d1274ac023c7fe997fcedf833"/><dir name="Customize"><file name="Add.php" hash="6d206e080ed91ed1ffbdd7528d89be2f"/><file name="Configure.php" hash="e815ed877af5727bd20289429122107b"/></dir><file name="Customize.php" hash="dcae150aafaa72013f83c0e51746f56d"/><file name="CustomizeButton.php" hash="0289e8754309ed5ba622a4e0ce643d25"/><file name="ModuleChecker.php" hash="8df2615bc87c4e656584ee80a51a9b31"/><file name="SalesItemRenderer.php" hash="2b470077ecef18ec49eab960409914ef"/><file name="View.php" hash="0c5a7231813b3737e069ad1ca3ccf809"/></dir><dir name="Helper"><file name="Data.php" hash="243765672b4e31bbbf945425e544fd5d"/><file name="ZakekeApi.php" hash="9556204f7e6fad0d5917e9dd19819d30"/></dir><dir name="Model"><dir name="Api2"><dir name="Colors"><dir name="Rest"><dir name="Admin"><file name="V1.php" hash="0b1ad3d9656fd5b729d1f7a626359e19"/></dir></dir></dir><file name="Colors.php" hash="f9f004c13ef5357bb3d5e798208e7902"/><dir name="ProductAttribute"><dir name="Rest"><dir name="Admin"><file name="V1.php" hash="40a6a5def798a5d0e8bcee1ac8c8a4d8"/></dir></dir></dir><file name="ProductAttribute.php" hash="97ea0f12646d9f1f1ab6916ed41f04dc"/><dir name="ProductOptions"><dir name="Rest"><dir name="Admin"><file name="V1.php" hash="6c6dd2079f58a654b60c465cc1fbc357"/></dir></dir></dir><file name="ProductOptions.php" hash="5e1234a158723dc5a8e2c3ccf6e152cf"/><dir name="Settings"><dir name="Rest"><dir name="Admin"><file name="V1.php" hash="e982e900acb2a4ac267cdda95c87cd35"/></dir></dir></dir><file name="Settings.php" hash="2f7fa711c00e75d3c4afabb007145c49"/><dir name="ZakekeEnabled"><dir name="Rest"><dir name="Admin"><file name="V1.php" hash="b107fafe0fa69827bebadfd66c6274d9"/></dir></dir></dir><file name="ZakekeEnabled.php" hash="0f5c210fa296b30283aa41f500c3e3b9"/></dir><file name="ModuleList.php" hash="929479d45eb4252daaff6e4a40733b09"/><file name="Observer.php" hash="06577c15ab93a639c419295d91e90e7c"/><dir name="Resource"><file name="Setup.php" hash="42a7681d56fcd5ad06f75a223ef420f1"/><dir name="ZakekeEnabled"><file name="Collection.php" hash="fdadf3c788c4b5e175e4a20501116027"/></dir><file name="ZakekeEnabled.php" hash="f32fb4b25f1f78287a38c3bd170bdbaa"/></dir><file name="ZakekeEnabled.php" hash="9b31e4606dcf8622092f638ca9f3920c"/></dir><dir name="controllers"><file name="CustomizeController.php" hash="10671c9bfc00cd41c6d983d938fac06a"/><dir name="Zakeke"><file name="ModuleCheckerController.php" hash="b92d1f5b155479a85f358f1356ccdd29"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="22cdf40e6e83327b58f9e97fa17e8f68"/><file name="api2.xml" hash="9af2352582ae62a261d07f58e64d5e77"/><file name="config.xml" hash="1f833aa2e7ed7e42b43a161ee0ea6d12"/><file name="system.xml" hash="daf9c491d17687ab6d464dbf9cacf1f8"/></dir><dir name="sql"><dir name="zakeke_setup"><file name="install-1.0.0.0.php" hash="64a3954b20b3142886446ac432a04b21"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Futurenext_Zakeke.xml" hash="f309795ee4b758943868cb1f7459fb9c"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="zakeke.xml" hash="d296777d398f6af473adfb8a15477b47"/></dir><dir name="template"><dir name="zakeke"><file name="modulechecker.phtml" hash="b3101729cc5030c645770af6a814cd26"/><dir name="sales"><dir name="items"><dir name="column"><dir name="zakeke"><file name="name.phtml" hash="723ecc1f6c0ad17495389b8e012d72e3"/></dir></dir></dir><dir name="order"><dir name="creditmemo"><dir name="create"><dir name="items"><dir name="renderer"><file name="zakeke.phtml" hash="6294158a08ad56639c3a57a4d88c2f81"/></dir></dir></dir><dir name="view"><dir name="items"><dir name="renderer"><file name="zakeke.phtml" hash="4421194ecc884d934f099a256062cfcb"/></dir></dir></dir></dir><dir name="invoice"><dir name="create"><dir name="items"><dir name="renderer"><file name="zakeke.phtml" hash="0da287c2ae4a87e0e768fdad0d0adfd3"/></dir></dir></dir><dir name="view"><dir name="items"><dir name="renderer"><file name="zakeke.phtml" hash="42f0631dd2ce37d9d7289b6d2785b222"/></dir></dir></dir></dir><dir name="view"><dir name="items"><dir name="renderer"><file name="zakeke.phtml" hash="867a37a7072be0cba7dc9f7c03cec0d4"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="zakeke.xml" hash="e64948c6a8cfd391d35b39c139789a6f"/></dir><dir name="template"><dir name="zakeke"><dir name="cart"><dir name="item"><file name="default.phtml" hash="bfb6e4a50c69ccfdfe66ad8c8711afdd"/></dir><file name="minicart.phtml" hash="1e7398e848e024bbeae11ed1550de3c8"/></dir><dir name="customization"><file name="add.phtml" hash="c647328e435fbe6dbe61e325e7a90f89"/></dir><file name="customize.phtml" hash="5b16967774ef9109760873480f2f23c2"/><file name="customizeButton.phtml" hash="78c81b67f8bb3e63c27d36054edaeb35"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="zakeke"><file name="customize.js" hash="efab393e72ffeedae64002dc1b8c002c"/><file name="jquery.js" hash="105112a8a757f683234e01dec3799022"/><file name="preview.js" hash="a22a32209982d2dda7561cff723b49bb"/></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="zakeke"><file name="modulechecker.css" hash="e7fd6efc953f7e2aae234607a0a379a8"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="it_IT"><file name="Futurenext_Zakeke.csv" hash="0f0a51c0319322d722cd93f43302b0a9"/></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php><extension><name>curl</name><min/><max/></extension></required></dependencies>
18
  </package>
skin/frontend/base/default/css/zakeke/productview.css DELETED
File without changes
skin/frontend/base/default/js/zakeke/preview.js DELETED
@@ -1,45 +0,0 @@
1
- /*******************************************************
2
- * Copyright (C) 2016 FutureNext SRL
3
- *
4
- * This file is part of Zakeke.
5
- *
6
- * Zakeke can not be copied and/or distributed without the express
7
- * permission of FutureNext SRL
8
- *******************************************************/
9
-
10
- function zakekeShowPreview(preview) {
11
- var previewUrl = preview.lastElementChild.src,
12
- previewLabel = preview.dataset.zakekeLabel,
13
- backdrop = window.document.createElement('DIV'),
14
- popup = window.document.createElement('DIV'),
15
- content = window.document.createElement('DIV'),
16
- label = window.document.createElement('DIV'),
17
- labelText = window.document.createTextNode(previewLabel),
18
- image = window.document.createElement('IMG');
19
-
20
- content.style = 'position: relative';
21
-
22
- if (previewLabel && previewLabel.length > 0) {
23
- label.appendChild(labelText);
24
- label.style.cssText = 'position: absolute; bottom: 0px; left: 0px; width: 100%; padding: 10px; box-sizing: border-box; color: rgb(51, 51, 51); background: rgba(255, 255, 255, 0.87) none repeat scroll 0% 0%; border-top: 1px solid rgb(255, 255, 255); border-bottom: 1px solid rgba(0, 0, 0, 0.25); border-radius: 0px 0px 5px 5px; box-shadow: 0px -2px 4px rgba(0, 0, 0, 0.35); font-weight: bold;';
25
-
26
- content.appendChild(label);
27
- }
28
-
29
- image.src = previewUrl;
30
-
31
- popup.style.cssText = 'align-self: center; background: white';
32
- content.appendChild(image);
33
-
34
- popup.appendChild(content);
35
-
36
- backdrop.appendChild(popup);
37
-
38
- backdrop.addEventListener('click', function () {
39
- preview.parentElement.parentElement.removeChild(backdrop);
40
- });
41
-
42
- backdrop.style.cssText = 'position: fixed; height: 100%; width: 100%; background: black; left: 0; top: 0; z-index: 9999; display: flex; flex-direction: column; justify-content: center;';
43
-
44
- preview.parentElement.parentElement.appendChild(backdrop);
45
- }