Jmango360_Japi - Version 2.9.4

Version Notes

* Bug fixes

Download this release

Release Info

Developer Duc Ngo
Extension Jmango360_Japi
Version 2.9.4
Comparing to
See all releases


Code changes from version 2.9.3 to 2.9.4

Files changed (31) hide show
  1. app/code/community/Jmango360/Japi/Block/Banner.php +13 -0
  2. app/code/community/Jmango360/Japi/Helper/Data.php +170 -0
  3. app/code/community/Jmango360/Japi/Helper/Product.php +8 -8
  4. app/code/community/Jmango360/Japi/Model/Core/Session.php +3 -1
  5. app/code/community/Jmango360/Japi/Model/Observer.php +26 -2
  6. app/code/community/Jmango360/Japi/Model/Rest/Catalog/Category/Assignedproducts.php +4 -1
  7. app/code/community/Jmango360/Japi/Model/Rest/Catalog/Category/Tree.php +2 -2
  8. app/code/community/Jmango360/Japi/Model/Rest/Catalog/Search/Products.php +6 -3
  9. app/code/community/Jmango360/Japi/Model/Rest/Mage.php +177 -0
  10. app/code/community/Jmango360/Japi/Model/System/Config/Backend/Icon.php +62 -0
  11. app/code/community/Jmango360/Japi/controllers/CheckoutController.php +2 -1
  12. app/code/community/Jmango360/Japi/controllers/KlarnaController.php +319 -0
  13. app/code/community/Jmango360/Japi/controllers/Rest/MageController.php +35 -0
  14. app/code/community/Jmango360/Japi/etc/config.xml +53 -10
  15. app/code/community/Jmango360/Japi/etc/system.xml +211 -10
  16. app/design/frontend/base/default/layout/jmango360_japi.xml +99 -1
  17. app/design/frontend/base/default/template/japi/checkout/onepage/payment.phtml +4 -4
  18. app/design/frontend/base/default/template/japi/checkout/onepage/style.phtml +1 -1
  19. app/design/frontend/base/default/template/japi/giftmessage/inline.phtml +28 -0
  20. app/design/frontend/base/default/template/japi/page/html/smart-app-banner.phtml +46 -0
  21. app/design/frontend/base/default/template/japi/vaimo/klarna/klarnacheckout/cart.phtml +139 -0
  22. app/design/frontend/base/default/template/japi/vaimo/klarna/klarnacheckout/cart/item/default.phtml +397 -0
  23. app/design/frontend/base/default/template/japi/vaimo/klarna/klarnacheckout/main.phtml +30 -0
  24. app/locale/de_DE/Jmango360_Japi.csv +251 -0
  25. app/locale/es_ES/Jmango360_Japi.csv +252 -0
  26. app/locale/fr_FR/Jmango360_Japi.csv +1 -1
  27. package.xml +4 -4
  28. skin/frontend/base/default/japi/css/style.css +92 -4
  29. skin/frontend/base/default/japi/css/style.less +117 -1
  30. skin/frontend/base/default/japi/lib/smart-app-banner/smart-app-banner.css +297 -0
  31. skin/frontend/base/default/japi/lib/smart-app-banner/smart-app-banner.js +35 -0
app/code/community/Jmango360/Japi/Block/Banner.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright 2016 JMango360
5
+ */
6
+ class Jmango360_Japi_Block_Banner extends Mage_Core_Block_Template
7
+ {
8
+ public function getIcon($icon = null)
9
+ {
10
+ if (!$icon) return '';
11
+ return Mage::getBaseUrl('media') . 'japi/icon/' . Mage::getStoreConfig('japi/jmango_smart_app_banner/' . $icon);
12
+ }
13
+ }
app/code/community/Jmango360/Japi/Helper/Data.php CHANGED
@@ -16,6 +16,87 @@ class Jmango360_Japi_Helper_Data extends Mage_Core_Helper_Abstract
16
  'region', 'region_id', 'postcode', 'telephone', 'fax', 'vat_id'
17
  );
18
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  /**
20
  * Set session cookie if website not accept SID
21
  */
@@ -575,6 +656,11 @@ class Jmango360_Japi_Helper_Data extends Mage_Core_Helper_Abstract
575
 
576
  if (Mage::getStoreConfigFlag('japi/jmango_rest_checkout_settings/onepage')) {
577
  $checkoutUrl = Mage::getUrl('japi/checkout/onepage', array('_secure' => true));
 
 
 
 
 
578
  } else {
579
  $checkoutUrl = Mage::getStoreConfig('japi/jmango_rest_checkout_settings/checkout_url');
580
  }
@@ -964,4 +1050,88 @@ class Jmango360_Japi_Helper_Data extends Mage_Core_Helper_Abstract
964
  {
965
  Mage::app()->saveCache(time(), 'admin_japi_lastcheck_update', array(Mage_Core_Model_Config::CACHE_TAG));
966
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
967
  }
16
  'region', 'region_id', 'postcode', 'telephone', 'fax', 'vat_id'
17
  );
18
 
19
+ protected $systemConfigPathExcludes = array(
20
+ 'jmango_rest_api',
21
+ 'jmango_rest_developer_settings'
22
+ );
23
+
24
+ protected $_filters;
25
+
26
+ /**
27
+ * Support Mana Filters
28
+ */
29
+ public function isFilterEnabled($filter, $block)
30
+ {
31
+ if (!$this->isModuleEnabled('Mana_Filters')) return true;
32
+
33
+ $attributeCode = $filter->getAttributeModel() ? $filter->getAttributeModel()->getAttributeCode() : '';
34
+ if (!$attributeCode) return false;
35
+
36
+ if (!$this->_filters) {
37
+ /* @var $manaFiltersHelper Mana_Filters_Helper_Data */
38
+ $manaFiltersHelper = Mage::helper('mana_filters');
39
+ /* @var $manaCoreHelper Mana_Core_Helper_Data */
40
+ $manaCoreHelper = Mage::helper('mana_core');
41
+
42
+ $request = Mage::app()->getRequest();
43
+
44
+ if ($request->getModuleName() == 'catalogsearch' && $request->getActionName() == 'search') {
45
+ $manaFiltersHelper->setMode('search');
46
+ $_filterOptionsCollection = Mage::getResourceModel('mana_filters/filter2_store_collection')
47
+ ->addColumnToSelect('*')
48
+ ->addStoreFilter(Mage::app()->getStore())
49
+ ->setOrder('position', 'ASC');
50
+ Mage::dispatchEvent('m_before_load_filter_collection', array('collection' => $_filterOptionsCollection));
51
+ } else {
52
+ $setIds = Mage::getSingleton('catalog/layer')->getProductCollection()->getSetIds();
53
+ $_filterOptionsCollection = Mage::getResourceModel('mana_filters/filter2_store_collection')
54
+ ->addFieldToSelect('*')
55
+ ->addCodeFilter($this->_getAttributeCodes($setIds))
56
+ ->addStoreFilter(Mage::app()->getStore())
57
+ ->setOrder('position', 'ASC');
58
+ Mage::dispatchEvent('m_before_load_filter_collection', array('collection' => $_filterOptionsCollection));
59
+ }
60
+
61
+ foreach ($_filterOptionsCollection as $filterOptions) {
62
+ /* @var $filterOptions Mana_Filters_Model_Filter2_Store */
63
+ if ($manaFiltersHelper->isFilterEnabled($filterOptions)
64
+ && (!$manaCoreHelper->isManadevDependentFilterInstalled() || !Mage::helper('manapro_filterdependent')->hide($filterOptions, $_filterOptionsCollection))
65
+ && $manaFiltersHelper->canShowFilterInBlock($block, $filterOptions)
66
+ ) {
67
+ $this->_filters[] = $filterOptions->getCode();
68
+ }
69
+ }
70
+ }
71
+
72
+ if (is_array($this->_filters)) {
73
+ return in_array($attributeCode, $this->_filters);
74
+ }
75
+
76
+ return true;
77
+ }
78
+
79
+ protected function _getAttributeCodes($setIds)
80
+ {
81
+ /* @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Attribute_Collection */
82
+ $collection = Mage::getResourceModel('catalog/product_attribute_collection');
83
+ $collection->setAttributeSetFilter($setIds);
84
+ $select = $collection->getSelect()
85
+ ->reset(Zend_Db_Select::COLUMNS)
86
+ ->columns('attribute_code');
87
+
88
+ return array_merge($collection->getConnection()->fetchCol($select), array('category'));
89
+ }
90
+
91
+ /**
92
+ * Check if we should wrap payment methods block html
93
+ */
94
+ public function wrapPaymentBlockMethods()
95
+ {
96
+ return version_compare(Mage::getVersion(), '1.8', '<') === true
97
+ || $this->isModuleEnabled('AW_Points');
98
+ }
99
+
100
  /**
101
  * Set session cookie if website not accept SID
102
  */
656
 
657
  if (Mage::getStoreConfigFlag('japi/jmango_rest_checkout_settings/onepage')) {
658
  $checkoutUrl = Mage::getUrl('japi/checkout/onepage', array('_secure' => true));
659
+ if (Mage::helper('core')->isModuleEnabled('Vaimo_Klarna')) {
660
+ if (Mage::getStoreConfigFlag('payment/vaimo_klarna_checkout/active')) {
661
+ $checkoutUrl = Mage::getUrl('japi/klarna/checkout', array('_secure' => true));
662
+ }
663
+ }
664
  } else {
665
  $checkoutUrl = Mage::getStoreConfig('japi/jmango_rest_checkout_settings/checkout_url');
666
  }
1050
  {
1051
  Mage::app()->saveCache(time(), 'admin_japi_lastcheck_update', array(Mage_Core_Model_Config::CACHE_TAG));
1052
  }
1053
+
1054
+ /**
1055
+ * Get Jmango360 system config
1056
+ *
1057
+ * @return array
1058
+ */
1059
+ public function getPluginSystemConfigs()
1060
+ {
1061
+ $data = array();
1062
+ /** @var Mage_Core_Model_Config_System $configSystem */
1063
+ $configSystem = Mage::getModel('core/config_system');
1064
+ $systemXml = $configSystem->load('Jmango360_Japi');
1065
+
1066
+ /** @var Mage_Core_Model_Config_Element $nodes */
1067
+ $nodes = $systemXml->getNode('sections/japi/groups')->children();
1068
+
1069
+ /** @var Mage_Core_Model_Config_Element $value */
1070
+ foreach ($nodes as $key => $value) {
1071
+ if (in_array($key, $this->systemConfigPathExcludes))
1072
+ continue;
1073
+ $valueArr = $value->asArray();
1074
+
1075
+ if (count($valueArr)) {
1076
+ //Remove some elements not using
1077
+ unset($valueArr['@']);
1078
+ unset($valueArr['show_in_default']);
1079
+ unset($valueArr['show_in_website']);
1080
+ unset($valueArr['show_in_store']);
1081
+ }
1082
+ if ($valueArr['fields']) {
1083
+ unset($valueArr['fields']['@']);
1084
+ foreach ($valueArr['fields'] as $k => $val) {
1085
+ //Remove some elements not using
1086
+ unset($valueArr['fields'][$k]['@']);
1087
+ unset($valueArr['fields'][$k]['show_in_default']);
1088
+ unset($valueArr['fields'][$k]['show_in_website']);
1089
+ unset($valueArr['fields'][$k]['show_in_store']);
1090
+ unset($valueArr['fields'][$k]['frontend_model']);
1091
+ unset($valueArr['fields'][$k]['backend_model']);
1092
+ unset($valueArr['fields'][$k]['source_model']);
1093
+
1094
+ //Get config's options
1095
+ $valueArr['fields'][$k]['options'] = $this->_getPluginConfigOptions($val['source_model']);
1096
+ //Get config's value
1097
+ $valueArr['fields'][$k]['value'] = $this->_getPluginConfigValue($key, $k);
1098
+ }
1099
+ }
1100
+ $data['settings'][$key] = $valueArr;
1101
+ }
1102
+ return $data;
1103
+ }
1104
+
1105
+ /**
1106
+ * Get Jmango360 config's value
1107
+ *
1108
+ * @param $group
1109
+ * @param $filed
1110
+ * @return mixed|string
1111
+ */
1112
+ protected function _getPluginConfigValue($group, $filed)
1113
+ {
1114
+ if ($group == 'jmango_rest_api' && $filed == 'version')
1115
+ {
1116
+ return $this->getPluginVersion();
1117
+ } else {
1118
+ $configPath = 'japi/' . $group . '/' . $filed;
1119
+ return Mage::getStoreConfig($configPath);
1120
+ }
1121
+ }
1122
+
1123
+ /**
1124
+ * Get Jmango360 config's options
1125
+ *
1126
+ * @param $sourceModel
1127
+ * @return null|array
1128
+ */
1129
+ protected function _getPluginConfigOptions($sourceModel)
1130
+ {
1131
+ if (!$sourceModel) return null;
1132
+ $model = Mage::getModel($sourceModel);
1133
+ if (!is_object($model)) return null;
1134
+ if (!$model->toOptionArray()) return null;
1135
+ return $model->toOptionArray();
1136
+ }
1137
  }
app/code/community/Jmango360/Japi/Helper/Product.php CHANGED
@@ -7,15 +7,15 @@ class Jmango360_Japi_Helper_Product extends Mage_Core_Helper_Abstract
7
  protected $_defaultImagesPaths = array(
8
  'image' => array(
9
  'width' => 'japi/jmango_rest_gallery_settings/image_width',
10
- 'height' => 'japi/jmango_rest_gallery_settings/image_height',
11
  ),
12
  'small_image' => array(
13
  'width' => 'japi/jmango_rest_gallery_settings/small_image_width',
14
- 'height' => 'japi/jmango_rest_gallery_settings/small_image_height',
15
  ),
16
  'thumbnail' => array(
17
- 'width' => 'japi/jmango_rest_gallery_settings/thumbnail_width',
18
- 'height' => 'japi/jmango_rest_gallery_settings/thumbnail_height',
19
  )
20
  );
21
 
@@ -94,9 +94,9 @@ class Jmango360_Japi_Helper_Product extends Mage_Core_Helper_Abstract
94
  public function isSCPActive()
95
  {
96
  return $this->isModuleEnabled('OrganicInternet_SimpleConfigurableProducts')
97
- || ($this->isModuleEnabled('Amasty_Conf') && Mage::getStoreConfigFlag('amconf/general/use_simple_price'))
98
- || ($this->isModuleEnabled('Ayasoftware_SimpleProductPricing') && Mage::getStoreConfigFlag('spp/setting/enableModule'))
99
- || $this->isModuleEnabled('Itonomy_SimpleConfigurable');
100
  }
101
 
102
  /**
@@ -1363,7 +1363,7 @@ class Jmango360_Japi_Helper_Product extends Mage_Core_Helper_Abstract
1363
  protected function _isAllowedAttribute($attribute, $attributes = null)
1364
  {
1365
  return !in_array($attribute->getFrontendInput(), $this->_ignoredAttributeTypes)
1366
- && !in_array($attribute->getAttributeCode(), $this->_ignoredAttributeCodes);
1367
  }
1368
 
1369
  /**
7
  protected $_defaultImagesPaths = array(
8
  'image' => array(
9
  'width' => 'japi/jmango_rest_gallery_settings/image_width',
10
+ 'height' => 'japi/jmango_rest_gallery_settings/image_height'
11
  ),
12
  'small_image' => array(
13
  'width' => 'japi/jmango_rest_gallery_settings/small_image_width',
14
+ 'height' => 'japi/jmango_rest_gallery_settings/small_image_height'
15
  ),
16
  'thumbnail' => array(
17
+ 'width' => 'japi/jmango_rest_gallery_settings/small_image_width',
18
+ 'height' => 'japi/jmango_rest_gallery_settings/small_image_height'
19
  )
20
  );
21
 
94
  public function isSCPActive()
95
  {
96
  return $this->isModuleEnabled('OrganicInternet_SimpleConfigurableProducts')
97
+ || ($this->isModuleEnabled('Amasty_Conf') && Mage::getStoreConfigFlag('amconf/general/use_simple_price'))
98
+ || ($this->isModuleEnabled('Ayasoftware_SimpleProductPricing') && Mage::getStoreConfigFlag('spp/setting/enableModule'))
99
+ || $this->isModuleEnabled('Itonomy_SimpleConfigurable');
100
  }
101
 
102
  /**
1363
  protected function _isAllowedAttribute($attribute, $attributes = null)
1364
  {
1365
  return !in_array($attribute->getFrontendInput(), $this->_ignoredAttributeTypes)
1366
+ && !in_array($attribute->getAttributeCode(), $this->_ignoredAttributeCodes);
1367
  }
1368
 
1369
  /**
app/code/community/Jmango360/Japi/Model/Core/Session.php CHANGED
@@ -86,6 +86,7 @@ class Jmango360_Japi_Model_Core_Session extends Mage_Core_Model_Session
86
  $this->setSessionId();
87
 
88
  Varien_Profiler::start(__METHOD__ . '/start');
 
89
  $sessionCacheLimiter = Mage::getConfig()->getNode('global/session_cache_limiter');
90
  if ($sessionCacheLimiter) {
91
  session_cache_limiter((string)$sessionCacheLimiter);
@@ -104,6 +105,7 @@ class Jmango360_Japi_Model_Core_Session extends Mage_Core_Model_Session
104
  if ($cookie->get(session_name()) == $this->getSessionId()) {
105
  $cookie->renew(session_name());
106
  }
 
107
  Varien_Profiler::stop(__METHOD__ . '/start');
108
 
109
  // FORCE SESSION DATA TO CURRENT REQUEST TO BYPASS VALIDATOR
@@ -126,7 +128,7 @@ class Jmango360_Japi_Model_Core_Session extends Mage_Core_Model_Session
126
  /**
127
  * Check whether SID can be used for session initialization
128
  * Admin area will always have this feature enabled
129
- * Always enabled with 'japi' routers or extist param request 'jkey'
130
  *
131
  * @return bool
132
  */
86
  $this->setSessionId();
87
 
88
  Varien_Profiler::start(__METHOD__ . '/start');
89
+
90
  $sessionCacheLimiter = Mage::getConfig()->getNode('global/session_cache_limiter');
91
  if ($sessionCacheLimiter) {
92
  session_cache_limiter((string)$sessionCacheLimiter);
105
  if ($cookie->get(session_name()) == $this->getSessionId()) {
106
  $cookie->renew(session_name());
107
  }
108
+
109
  Varien_Profiler::stop(__METHOD__ . '/start');
110
 
111
  // FORCE SESSION DATA TO CURRENT REQUEST TO BYPASS VALIDATOR
128
  /**
129
  * Check whether SID can be used for session initialization
130
  * Admin area will always have this feature enabled
131
+ * Always enabled with 'japi' routers
132
  *
133
  * @return bool
134
  */
app/code/community/Jmango360/Japi/Model/Observer.php CHANGED
@@ -571,7 +571,26 @@ class Jmango360_Japi_Model_Observer
571
 
572
  /* @var $obj Vaimo_Klarna_Model_Observer */
573
  $obj = Mage::getSingleton('klarna/observer');
574
- $obj->checkLaunchKlarnaCheckout($observer);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
575
  }
576
 
577
  /**
@@ -582,6 +601,8 @@ class Jmango360_Japi_Model_Observer
582
  */
583
  public function japiOnepagePreDispatch(Varien_Event_Observer $observer)
584
  {
 
 
585
  $session = Mage::getSingleton('core/session');
586
  $sessionId = $session->getSessionId();
587
  /** @var Mage_Core_Model_Cookie $cookie */
@@ -602,6 +623,9 @@ class Jmango360_Japi_Model_Observer
602
 
603
  /* @var $obj Klevu_Search_Model_Observer */
604
  $obj = Mage::getSingleton('klevu_search/observer');
605
- if ($obj) $obj->applyLandingPageModelRewrites($observer);
 
 
 
606
  }
607
  }
571
 
572
  /* @var $obj Vaimo_Klarna_Model_Observer */
573
  $obj = Mage::getSingleton('klarna/observer');
574
+
575
+ if (method_exists($obj, 'checkLaunchKlarnaCheckout')) {
576
+ $obj->checkLaunchKlarnaCheckout($observer);
577
+ }
578
+ }
579
+
580
+ /**
581
+ * Support Vaimo_Klarna
582
+ * Redirect to JMango360 checkout success page
583
+ *
584
+ * @param Varien_Event_Observer $observer
585
+ * @return $this
586
+ */
587
+ public function Vaimo_Klarna__checkoutKlarnaSuccess(Varien_Event_Observer $observer)
588
+ {
589
+ /* @var $server Jmango360_Japi_Model_Server */
590
+ $server = Mage::getSingleton('japi/server');
591
+ if ($server->getIsRest()) {
592
+ Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('japi/klarna/success'));
593
+ }
594
  }
595
 
596
  /**
601
  */
602
  public function japiOnepagePreDispatch(Varien_Event_Observer $observer)
603
  {
604
+ if (strpos(Mage::getBaseUrl(), 'eleganza') === false) return $this;
605
+
606
  $session = Mage::getSingleton('core/session');
607
  $sessionId = $session->getSessionId();
608
  /** @var Mage_Core_Model_Cookie $cookie */
623
 
624
  /* @var $obj Klevu_Search_Model_Observer */
625
  $obj = Mage::getSingleton('klevu_search/observer');
626
+
627
+ if (method_exists($obj, 'applyLandingPageModelRewrites')) {
628
+ $obj->applyLandingPageModelRewrites($observer);
629
+ }
630
  }
631
  }
app/code/community/Jmango360/Japi/Model/Rest/Catalog/Category/Assignedproducts.php CHANGED
@@ -97,12 +97,15 @@ class Jmango360_Japi_Model_Rest_Catalog_Category_Assignedproducts extends Mage_C
97
 
98
  if (!$filters || !is_array($filters)) return $data;
99
 
 
 
 
100
  foreach ($filters as $key => $filter) {
101
  /* @var $filter Mage_Catalog_Block_Layer_Filter_Abstract */
102
  if ($filter->getType() == 'catalog/layer_filter_category') {
103
  continue;
104
  }
105
- if ($filter->getItemsCount()) {
106
  $data[] = $this->_filterToArray($filter);
107
  }
108
  }
97
 
98
  if (!$filters || !is_array($filters)) return $data;
99
 
100
+ /* @var $helper Jmango360_Japi_Helper_Data */
101
+ $helper = Mage::helper('japi');
102
+
103
  foreach ($filters as $key => $filter) {
104
  /* @var $filter Mage_Catalog_Block_Layer_Filter_Abstract */
105
  if ($filter->getType() == 'catalog/layer_filter_category') {
106
  continue;
107
  }
108
+ if ($filter->getItemsCount() && $helper->isFilterEnabled($filter, $block)) {
109
  $data[] = $this->_filterToArray($filter);
110
  }
111
  }
app/code/community/Jmango360/Japi/Model/Rest/Catalog/Category/Tree.php CHANGED
@@ -147,8 +147,8 @@ class Jmango360_Japi_Model_Rest_Catalog_Category_Tree extends Mage_Catalog_Model
147
  if (!$productCollection->getSize()) return '';
148
 
149
  $imageAttributes = array('image', 'small_image', 'thumbnail');
150
- $imageSizeW = Mage::getStoreConfig('japi/jmango_rest_gallery_settings/thumbnail_width');
151
- $imageSizeH = Mage::getStoreConfig('japi/jmango_rest_gallery_settings/thumbnail_height');
152
 
153
  $productCollection->addAttributeToSelect($imageAttributes);
154
 
147
  if (!$productCollection->getSize()) return '';
148
 
149
  $imageAttributes = array('image', 'small_image', 'thumbnail');
150
+ $imageSizeW = Mage::getStoreConfig('japi/jmango_rest_gallery_settings/small_image_width');
151
+ $imageSizeH = Mage::getStoreConfig('japi/jmango_rest_gallery_settings/small_image_height');
152
 
153
  $productCollection->addAttributeToSelect($imageAttributes);
154
 
app/code/community/Jmango360/Japi/Model/Rest/Catalog/Search/Products.php CHANGED
@@ -112,16 +112,20 @@ class Jmango360_Japi_Model_Rest_Catalog_Search_Products extends Mage_CatalogSear
112
  protected function _getFilters($block)
113
  {
114
  $data = array();
115
-
116
  $filters = $block->getFilters();
117
 
 
 
 
 
 
118
  foreach ($filters as $key => $filter) {
119
  /* @var $filter Mage_Catalog_Block_Layer_Filter_Abstract */
120
  if (!$this->_shouldShow($filter)) {
121
  continue;
122
  }
123
 
124
- if ($filter->getItemsCount()) {
125
  $arrFilter = $this->_filterToArray($filter);
126
  if ($arrFilter != null) {
127
  $data[] = $arrFilter;
@@ -202,7 +206,6 @@ class Jmango360_Japi_Model_Rest_Catalog_Search_Products extends Mage_CatalogSear
202
  if ($filter->getAttributeModel()) {
203
  return (string)$filter->getAttributeModel()->getAttributeCode();
204
  } else {
205
- Mage::log(get_class($filter));
206
  return null;
207
  }
208
  break;
112
  protected function _getFilters($block)
113
  {
114
  $data = array();
 
115
  $filters = $block->getFilters();
116
 
117
+ if (!$filters || !is_array($filters)) return $data;
118
+
119
+ /* @var $helper Jmango360_Japi_Helper_Data */
120
+ $helper = Mage::helper('japi');
121
+
122
  foreach ($filters as $key => $filter) {
123
  /* @var $filter Mage_Catalog_Block_Layer_Filter_Abstract */
124
  if (!$this->_shouldShow($filter)) {
125
  continue;
126
  }
127
 
128
+ if ($filter->getItemsCount() && $helper->isFilterEnabled($filter, $block)) {
129
  $arrFilter = $this->_filterToArray($filter);
130
  if ($arrFilter != null) {
131
  $data[] = $arrFilter;
206
  if ($filter->getAttributeModel()) {
207
  return (string)$filter->getAttributeModel()->getAttributeCode();
208
  } else {
 
209
  return null;
210
  }
211
  break;
app/code/community/Jmango360/Japi/Model/Rest/Mage.php CHANGED
@@ -113,12 +113,183 @@ class Jmango360_Japi_Model_Rest_Mage extends Mage_Core_Model_Abstract
113
  $this->_getResponse()->render($data);
114
  $this->_getResponse()->setHttpResponseCode(Jmango360_Japi_Model_Server::HTTP_OK);
115
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
  default:
117
  throw new Jmango360_Japi_Exception('Resource method not implemented', Jmango360_Japi_Model_Request::HTTP_INTERNAL_ERROR);
118
  break;
119
  }
120
  }
121
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  protected function _getModules()
123
  {
124
  $modules = Mage::getConfig()->getNode('modules')->children();
@@ -149,6 +320,12 @@ class Jmango360_Japi_Model_Rest_Mage extends Mage_Core_Model_Abstract
149
  foreach ($observers as $observer) {
150
  foreach ($observer->children() as $observerNode) {
151
  $class = (string)$observerNode->xpath('class')[0];
 
 
 
 
 
 
152
  $method = (string)$observerNode->xpath('method')[0];
153
  $data[$eventName][] = sprintf('%s:%s', $class, $method);
154
  }
113
  $this->_getResponse()->render($data);
114
  $this->_getResponse()->setHttpResponseCode(Jmango360_Japi_Model_Server::HTTP_OK);
115
  break;
116
+ case 'getSettings' . Jmango360_Japi_Model_Request::OPERATION_RETRIEVE:
117
+ $data = $this->_getSettings();
118
+ $this->_getResponse()->render($data);
119
+ $this->_getResponse()->setHttpResponseCode(Jmango360_Japi_Model_Server::HTTP_OK);
120
+ break;
121
+ case 'getSettingAttributes' . Jmango360_Japi_Model_Request::OPERATION_RETRIEVE:
122
+ $data = $this->_getSettingAttributes();
123
+ $this->_getResponse()->render($data);
124
+ $this->_getResponse()->setHttpResponseCode(Jmango360_Japi_Model_Server::HTTP_OK);
125
+ break;
126
+ case 'getShippingAndPaymentMethods' . Jmango360_Japi_Model_Request::OPERATION_RETRIEVE:
127
+ $data = $this->_getShippingAndPaymentMethods();
128
+ $this->_getResponse()->render($data);
129
+ $this->_getResponse()->setHttpResponseCode(Jmango360_Japi_Model_Server::HTTP_OK);
130
+ break;
131
+ case 'getAllSystemSettings' . Jmango360_Japi_Model_Request::OPERATION_RETRIEVE:
132
+ $data = $this->_getAllSystemSettings();
133
+ $this->_getResponse()->render($data);
134
+ $this->_getResponse()->setHttpResponseCode(Jmango360_Japi_Model_Server::HTTP_OK);
135
+ break;
136
+ case 'saveSettings' . Jmango360_Japi_Model_Request::OPERATION_CREATE:
137
+ $data = $this->_savePluginSettings();
138
+ $this->_getResponse()->render($data);
139
+ $this->_getResponse()->setHttpResponseCode(Jmango360_Japi_Model_Server::HTTP_OK);
140
+ break;
141
  default:
142
  throw new Jmango360_Japi_Exception('Resource method not implemented', Jmango360_Japi_Model_Request::HTTP_INTERNAL_ERROR);
143
  break;
144
  }
145
  }
146
 
147
+ /**
148
+ * Save Japi system config
149
+ * @return array
150
+ * @throws Jmango360_Japi_Exception
151
+ */
152
+ protected function _savePluginSettings()
153
+ {
154
+ $data = array();
155
+ $groups = $this->_getRequest()->getParam('groups');
156
+
157
+ if (isset($_FILES['groups']['name']) && is_array($_FILES['groups']['name'])) {
158
+ /**
159
+ * Carefully merge $_FILES and $_POST information
160
+ * None of '+=' or 'array_merge_recursive' can do this correct
161
+ */
162
+ foreach ($_FILES['groups']['name'] as $groupName => $group) {
163
+ if (is_array($group)) {
164
+ foreach ($group['fields'] as $fieldName => $field) {
165
+ if (!empty($field['value'])) {
166
+ $groups[$groupName]['fields'][$fieldName] = array('value' => $field['value']);
167
+ }
168
+ }
169
+ }
170
+ }
171
+ }
172
+
173
+ try {
174
+ $section = 'japi';
175
+
176
+ $storeId = $this->_getRequest()->getParam('store_id');
177
+ $storeModel = Mage::app()->getStore($storeId);
178
+ if (!$storeModel->getId()) {
179
+ throw new Jmango360_Japi_Exception(
180
+ Mage::helper('japi')->__('Store not found.'),
181
+ Jmango360_Japi_Model_Request::HTTP_BAD_REQUEST
182
+ );
183
+ }
184
+ $website = $storeModel->getWebsite()->getCode();
185
+ $store = $storeModel->getCode();
186
+
187
+ Mage::getSingleton('adminhtml/config_data')
188
+ ->setSection($section)
189
+ ->setWebsite($website)
190
+ ->setStore($store)
191
+ ->setGroups($groups)
192
+ ->save();
193
+
194
+ // reinit configuration
195
+ Mage::getConfig()->reinit();
196
+ Mage::dispatchEvent('admin_system_config_section_save_after', array(
197
+ 'website' => $website,
198
+ 'store' => $store,
199
+ 'section' => $section
200
+ ));
201
+ Mage::app()->reinitStores();
202
+
203
+ // website and store codes can be used in event implementation, so set them as well
204
+ Mage::dispatchEvent("admin_system_config_changed_section_{$section}",
205
+ array('website' => $website, 'store' => $store)
206
+ );
207
+ $data['message'][] = (Mage::helper('japi')->__('The configuration has been saved.'));
208
+ } catch (Exception $e) {
209
+ throw new Jmango360_Japi_Exception(
210
+ $e->getMessage(),
211
+ Jmango360_Japi_Model_Request::HTTP_INTERNAL_ERROR
212
+ );
213
+ }
214
+
215
+ return $data;
216
+ }
217
+
218
+ /**
219
+ * Get Japi System settings
220
+ * @return array
221
+ */
222
+ protected function _getAllSystemSettings()
223
+ {
224
+ /** @var Jmango360_Japi_Helper_Data $helper */
225
+ $helper = Mage::helper('japi');
226
+ $data = $helper->getPluginSystemConfigs();
227
+
228
+ return $data;
229
+ }
230
+
231
+ /**
232
+ * Get Japi Setting Attributes
233
+ * @return array
234
+ */
235
+ protected function _getSettingAttributes()
236
+ {
237
+ $data = array();
238
+ /** @var $sourceModel Jmango360_Japi_Model_System_Config_Source_Attributes */
239
+ $sourceModel = Mage::getModel('japi/system_config_source_attributes');
240
+ $data['attributes'] = $sourceModel->toOptionArray();
241
+
242
+ return $data;
243
+ }
244
+
245
+ protected function _getShippingAndPaymentMethods()
246
+ {
247
+ $data = array();
248
+
249
+ /** @var $shippingSource Jmango360_Japi_Model_System_Config_Source_Shipping */
250
+ $shippingSource = Mage::getModel('japi/system_config_source_shipping');
251
+ $data['shipping_methods'] = $shippingSource->toOptionArray();
252
+
253
+ /** @var $paymentSource Jmango360_Japi_Model_System_Config_Source_Payment */
254
+ $paymentSource = Mage::getModel('japi/system_config_source_payment');
255
+ $data['payment_methods'] = $paymentSource->toOptionArray();
256
+
257
+ return $data;
258
+ }
259
+
260
+ protected function _getSettings()
261
+ {
262
+ $storeId = $this->_getRequest()->getParam('store_id');
263
+ $store = Mage::app()->getStore($storeId);
264
+ if (!$store->getId()) {
265
+ throw new Jmango360_Japi_Exception(
266
+ Mage::helper('japi')->__('Store not found.'),
267
+ Jmango360_Japi_Model_Request::HTTP_BAD_REQUEST
268
+ );
269
+ }
270
+
271
+ $configFile = Mage::app()->getConfig()->getModuleDir('etc', 'Jmango360_Japi') . DS . 'config.xml';
272
+ /* @var $xml Varien_Simplexml_Element */
273
+ $xml = simplexml_load_string(file_get_contents($configFile), 'Varien_Simplexml_Element');
274
+ $xmlData = $xml->asArray();
275
+ $data = array();
276
+
277
+ if (isset($xmlData['default'])) {
278
+ foreach ($xmlData['default'] as $section => $sections) {
279
+ if (!isset($data[$section])) $data[$section] = array();
280
+ foreach ($sections as $group => $groups) {
281
+ if (!isset($data[$section][$group])) $data[$section][$group] = array();
282
+ foreach ($groups as $field => $value) {
283
+ $path = sprintf('%s/%s/%s', $section, $group, $field);
284
+ $data[$section][$group][$field] = Mage::getStoreConfig($path, $store->getId());
285
+ }
286
+ }
287
+ }
288
+ }
289
+
290
+ return array('settings' => $data);
291
+ }
292
+
293
  protected function _getModules()
294
  {
295
  $modules = Mage::getConfig()->getNode('modules')->children();
320
  foreach ($observers as $observer) {
321
  foreach ($observer->children() as $observerNode) {
322
  $class = (string)$observerNode->xpath('class')[0];
323
+ if ($class) {
324
+ $className = Mage::getConfig()->getModelClassName($class);
325
+ if (class_exists($className)) {
326
+ $class = $className;
327
+ }
328
+ }
329
  $method = (string)$observerNode->xpath('method')[0];
330
  $data[$eventName][] = sprintf('%s:%s', $class, $method);
331
  }
app/code/community/Jmango360/Japi/Model/System/Config/Backend/Icon.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright 2016 JMango360
5
+ */
6
+ class Jmango360_Japi_Model_System_Config_Backend_Icon extends Mage_Adminhtml_Model_System_Config_Backend_Image
7
+ {
8
+ /**
9
+ * The tail part of directory path for uploading
10
+ */
11
+ const UPLOAD_DIR = 'japi/icon';
12
+
13
+ /**
14
+ * Token for the root part of directory path for uploading
15
+ */
16
+ const UPLOAD_ROOT = 'media';
17
+
18
+ /**
19
+ * Return path to directory for upload file
20
+ *
21
+ * @return string
22
+ * @throw Mage_Core_Exception
23
+ */
24
+ protected function _getUploadDir()
25
+ {
26
+ $uploadDir = $this->_appendScopeInfo(self::UPLOAD_DIR);
27
+ $uploadRoot = $this->_getUploadRoot(self::UPLOAD_ROOT);
28
+ $uploadDir = $uploadRoot . '/' . $uploadDir;
29
+ return $uploadDir;
30
+ }
31
+
32
+ /**
33
+ * Makes a decision about whether to add info about the scope.
34
+ *
35
+ * @return boolean
36
+ */
37
+ protected function _addWhetherScopeInfo()
38
+ {
39
+ return true;
40
+ }
41
+
42
+ /**
43
+ * Getter for allowed extensions of uploaded files.
44
+ *
45
+ * @return array
46
+ */
47
+ protected function _getAllowedExtensions()
48
+ {
49
+ return array('png', 'gif', 'jpg', 'jpeg', 'svg');
50
+ }
51
+
52
+ /**
53
+ * Get real media dir path
54
+ *
55
+ * @param $token
56
+ * @return string
57
+ */
58
+ protected function _getUploadRoot($token)
59
+ {
60
+ return Mage::getBaseDir($token);
61
+ }
62
+ }
app/code/community/Jmango360/Japi/controllers/CheckoutController.php CHANGED
@@ -84,7 +84,7 @@ class Jmango360_Japi_CheckoutController extends Mage_Checkout_OnepageController
84
  protected function _allowGuestCheckout()
85
  {
86
  return Mage::getSingleton('customer/session')->isLoggedIn()
87
- || Mage::helper('checkout')->isAllowedGuestCheckout($this->getOnepage()->getQuote());
88
  }
89
 
90
  /**
@@ -148,6 +148,7 @@ class Jmango360_Japi_CheckoutController extends Mage_Checkout_OnepageController
148
 
149
  // Bypass merge js
150
  Mage::app()->getStore()->setConfig('dev/js/merge_files', 0);
 
151
  Mage::app()->getStore()->setConfig('gtspeed/cssjs/min_js', 0);
152
  Mage::app()->getStore()->setConfig('gtspeed/cssjs/merge_js', 0);
153
  Mage::app()->getStore()->setConfig('hsmedia/mediasetting/hsmedia_enabled', 0);
84
  protected function _allowGuestCheckout()
85
  {
86
  return Mage::getSingleton('customer/session')->isLoggedIn()
87
+ || Mage::helper('checkout')->isAllowedGuestCheckout($this->getOnepage()->getQuote());
88
  }
89
 
90
  /**
148
 
149
  // Bypass merge js
150
  Mage::app()->getStore()->setConfig('dev/js/merge_files', 0);
151
+ Mage::app()->getStore()->setConfig('dev/js/meanbee_footer_js_enabled', 0);
152
  Mage::app()->getStore()->setConfig('gtspeed/cssjs/min_js', 0);
153
  Mage::app()->getStore()->setConfig('gtspeed/cssjs/merge_js', 0);
154
  Mage::app()->getStore()->setConfig('hsmedia/mediasetting/hsmedia_enabled', 0);
app/code/community/Jmango360/Japi/controllers/KlarnaController.php ADDED
@@ -0,0 +1,319 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Copyright 2016 JMango360
4
+ */
5
+ include_once('Vaimo/Klarna/controllers/Checkout/KlarnaController.php');
6
+
7
+ class Jmango360_Japi_KlarnaController extends Vaimo_Klarna_Checkout_KlarnaController
8
+ {
9
+ protected function _resetLayout()
10
+ {
11
+ Mage::app()->getStore()->setConfig('payment/vaimo_klarna_checkout/klarna_layout', 1);
12
+ Mage::app()->getStore()->setConfig('payment/vaimo_klarna_checkout/show_login_form', 0);
13
+ Mage::app()->getStore()->setConfig('payment/vaimo_klarna_checkout/enable_auto_focus', 0);
14
+ }
15
+
16
+ public function checkoutAction()
17
+ {
18
+ //Reset layout
19
+ $this->_resetLayout();
20
+
21
+ if (!$this->_getCart()->hasQuote()) {
22
+ // If recreate_cart_on_failed_validate is set to no, this parameter is not included
23
+ $id = $this->getRequest()->getParam('quote_id');
24
+ if ($id) {
25
+ $order = Mage::getModel('sales/order')->load($id, 'quote_id');
26
+ if ($order && $order->getId()) {
27
+ if ($order->getState() == Mage_Sales_Model_Order::STATE_PENDING_PAYMENT) {
28
+ $comment = $this->__('Order created by Validate, but was abandoned');
29
+ Mage::helper('klarna')->logKlarnaApi($comment . ' (' . $order->getIncrementId() . ')');
30
+
31
+ $order->addStatusHistoryComment($comment);
32
+ $order->cancel();
33
+ $order->save();
34
+
35
+ $quoteNew = Mage::getModel('sales/quote');
36
+ $quoteOld = Mage::getModel('sales/quote')->load($id);
37
+
38
+ $quoteNew->setStoreId($quoteOld->getStoreId())
39
+ ->merge($quoteOld)
40
+ ->setKlarnaCheckoutId(NULL)
41
+ ->collectTotals()
42
+ ->save();
43
+ $this->_getSession()->replaceQuote($quoteNew);
44
+
45
+ $comment = $this->__('Canceled order and created new cart from original cart');
46
+ Mage::helper('klarna')->logKlarnaApi($comment . ' (' . $quoteNew->getId() . ')');
47
+
48
+ $order->addStatusHistoryComment($comment);
49
+ $order->save();
50
+
51
+ $error = $this->__('Payment cancelled or some error occured. Please try again.');
52
+ $this->_getSession()->addError($error);
53
+
54
+ $this->_redirectToCart($quoteNew->getStoreId());
55
+ return;
56
+ }
57
+ }
58
+ }
59
+ }
60
+
61
+ $quote = $this->_getQuote();
62
+
63
+ if (!$quote->getId() || !$quote->hasItems()) {
64
+ $this->_getSession()->addError(Mage::helper('checkout')->__('You have no items in your shopping cart.'));
65
+ $quote->setHasError(true);
66
+ }
67
+
68
+ if ($quote->getHasError()) {
69
+ foreach ($quote->getMessages() as $message) {
70
+ $this->_getSession()->addError($message->getCode());
71
+ }
72
+ }
73
+
74
+ $quote->load($quote->getId());
75
+ $klarna = Mage::getModel('klarna/klarnacheckout');
76
+ $klarna->setQuote($quote, Vaimo_Klarna_Helper_Data::KLARNA_METHOD_CHECKOUT);
77
+ if (!$klarna->getKlarnaCheckoutEnabled()) {
78
+ if (Mage::helper('klarna')->isOneStepCheckout()) {
79
+ $this->_redirect('onestepcheckout');
80
+ } else {
81
+ $this->_redirect('japi/checkout/onepage');
82
+ }
83
+ return;
84
+ }
85
+
86
+ if (!$quote->validateMinimumAmount()) {
87
+ $error = Mage::getStoreConfig('sales/minimum_order/error_message') ?
88
+ Mage::getStoreConfig('sales/minimum_order/error_message') :
89
+ Mage::helper('checkout')->__('Subtotal must exceed minimum order amount');
90
+
91
+ $this->_getSession()->addError($error);
92
+ $quote->setHasError(true);
93
+ }
94
+
95
+ $updateQuote = false;
96
+ if (Mage::helper('klarna')->checkPaymentMethod($quote)) {
97
+ $updateQuote = true;
98
+ }
99
+ if ($this->_checkShippingMethod()) {
100
+ $updateQuote = true;
101
+ }
102
+ if ($this->_checkNewsletter()) {
103
+ $updateQuote = true;
104
+ }
105
+
106
+ if ($updateQuote) {
107
+ $quote->collectTotals();
108
+ $quote->save();
109
+ }
110
+
111
+ $this->loadLayout();
112
+ $this->_initLayoutMessages(array('customer/session', 'checkout/session'));
113
+ $this->getLayout()->getBlock('head')->setTitle($this->__('Klarna Checkout'));
114
+
115
+ $this->_appendPopupUrls();
116
+
117
+ $this->renderLayout();
118
+ }
119
+
120
+ /**
121
+ * Append popup urls to response header
122
+ */
123
+ protected function _appendPopupUrls()
124
+ {
125
+ $urls = explode("\n", Mage::getStoreConfig('japi/jmango_rest_checkout_settings/klarna_popup_urls'));
126
+ if (!count($urls)) return;
127
+
128
+ $urlsString = implode(';', $urls);
129
+ $this->getResponse()->setHeader('Klarna-Popup-Urls', $urlsString, true);
130
+
131
+ $head = $this->getLayout()->getBlock('head');
132
+ if (!$head) return;
133
+
134
+ $block = $this->getLayout()->createBlock('core/text');
135
+ $block->setText(sprintf('<meta name="%s" content="%s">', 'Klarna-Popup-Urls', $urlsString));
136
+ $head->append($block, 'Klarna-Popup-Urls');
137
+ }
138
+
139
+ public function successAction()
140
+ {
141
+ try {
142
+ Mage::helper('klarna')->logKlarnaApi(Vaimo_Klarna_Helper_Data::KLARNA_LOG_START_TAG);
143
+ $revisitedf = false;
144
+ $checkoutId = $this->_getSession()->getKlarnaCheckoutId();
145
+ if (!$checkoutId) {
146
+ $checkoutId = $this->_getSession()->getKlarnaCheckoutPrevId();
147
+ if ($checkoutId) {
148
+ $revisitedf = true;
149
+ }
150
+ }
151
+ if (!$checkoutId) {
152
+ Mage::helper('klarna')->logKlarnaApi('successAction checkout id is empty, so we do nothing');
153
+ exit(1);
154
+ }
155
+ if (!$revisitedf) {
156
+ Mage::helper('klarna')->logKlarnaApi('successAction checkout id: ' . $checkoutId);
157
+ } else {
158
+ Mage::helper('klarna')->logKlarnaApi('successAction revisited, checkout id: ' . $checkoutId);
159
+ }
160
+ //$quote = Mage::getModel('sales/quote')->load($checkoutId, 'klarna_checkout_id');
161
+ $quote = Mage::helper('klarna')->findQuote($checkoutId);
162
+ if (!$quote || !$quote->getId()) {
163
+ Mage::throwException($this->__('Cart not available. Please try again') . ': ' . $checkoutId . ' revisitedf = ' . $revisitedf);
164
+ }
165
+ $klarna = Mage::getModel('klarna/klarnacheckout');
166
+ $klarna->setQuote($quote, Vaimo_Klarna_Helper_Data::KLARNA_METHOD_CHECKOUT);
167
+
168
+ } catch (Exception $e) {
169
+ // Will show empty success page... however unlikely it is to get here, it's not very good
170
+ Mage::helper('klarna')->logKlarnaException($e);
171
+ return $this;
172
+ }
173
+
174
+ $canDisplaySuccess = null;
175
+ // Sometimes there is a timeout or incorrect status is given by the call to Klarna,
176
+ // especially when running against test server
177
+ // Now we try 5 times at least, before showing blank page...
178
+ $useCurrentOrderSession = true;
179
+ for ($cnt = 0; $cnt < 5; $cnt++) {
180
+ try {
181
+ $status = $klarna->getCheckoutStatus($checkoutId, $useCurrentOrderSession);
182
+ $canDisplaySuccess =
183
+ $status == 'checkout_complete' ||
184
+ $status == 'created' ||
185
+ $status == 'AUTHORIZED';
186
+ if (!$canDisplaySuccess) {
187
+ Mage::helper('klarna')->logDebugInfo(
188
+ 'successAction got incorrect status: ' . $status . ' ' .
189
+ 'for klarna order id: ' . $checkoutId . '. ' .
190
+ 'Retrying (' . ($cnt + 1) . ' / 5)'
191
+ );
192
+ $useCurrentOrderSession = false; // Reinitiate communication
193
+ } else {
194
+ break;
195
+ }
196
+ } catch (Exception $e) {
197
+ Mage::helper('klarna')->logKlarnaException($e);
198
+ Mage::helper('klarna')->logDebugInfo(
199
+ 'successAction caused an exception: ' . $e->getMessage() .
200
+ 'Retrying (' . ($cnt + 1) . ' / 5)'
201
+ );
202
+ $useCurrentOrderSession = false; // Reinitiate communication
203
+ }
204
+ }
205
+
206
+ try {
207
+ if (!$canDisplaySuccess) {
208
+ Mage::helper('klarna')->logKlarnaApi('successAction ERROR: order not created: ' . $status);
209
+ $error = $this->__('Checkout incomplete, please try again.');
210
+ $this->_getSession()->addError($error);
211
+ $this->_redirectToCart($quote->getStoreId());
212
+ return $this;
213
+ } else {
214
+ Mage::helper('klarna')->logKlarnaApi('successAction displaying success');
215
+ }
216
+
217
+ $createOrderOnSuccess = $klarna->getConfigData('create_order_on_success');
218
+
219
+ if (!$revisitedf) {
220
+ if ($quote->getId() && $quote->getIsActive()) {
221
+ // successQuote returns true if successful, a string if failed
222
+ $createdKlarnaOrder = new Varien_Object($klarna->getActualKlarnaOrderArray());
223
+ $result = $klarna->successQuote($checkoutId, $createOrderOnSuccess, $createdKlarnaOrder);
224
+ Mage::helper('klarna')->logKlarnaApi('successQuote result = ' . $result);
225
+
226
+ $order = Mage::getModel('sales/order')->load($quote->getId(), 'quote_id');
227
+
228
+ if ($order && $order->getId()) {
229
+ Mage::helper('klarna')->logDebugInfo('successQuote successfully created order with no: ' . $order->getIncrementId());
230
+ }
231
+ }
232
+
233
+ $this->_getCart()->unsetData('quote');
234
+ $this->_getSession()->clearHelperData();
235
+ $this->_getSession()->clear();
236
+ $this->_getSession()->setLastQuoteId($quote->getId());
237
+ $this->_getSession()->setLastSuccessQuoteId($quote->getId());
238
+ $order = Mage::getModel('sales/order')->load($quote->getId(), 'quote_id');
239
+ if ($order && $order->getId()) {
240
+ $this->_getSession()->setLastOrderId($order->getId());
241
+ $this->_getSession()->setLastRealOrderId($order->getIncrementId());
242
+
243
+ // JMango360: Append order ID to request header
244
+ $this->getResponse()->setHeader('Last-Real-Order-Id', $order->getIncrementId(), true);
245
+ }
246
+ $this->_getSession()->setKlarnaCheckoutPrevId($checkoutId);
247
+ $this->_getSession()->setKlarnaCheckoutId(''); // This needs to be cleared, to be able to create new orders
248
+ $this->_getSession()->setKlarnaUseOtherMethods(false);
249
+ }
250
+
251
+ //$this->loadLayout();
252
+ //$this->_initLayoutMessages('customer/session');
253
+ //$this->getLayout()->getBlock('head')->setTitle($this->__('Klarna Checkout'));
254
+
255
+ if ($this->_getSession()->getLastOrderId()) {
256
+ Mage::dispatchEvent('checkout_onepage_controller_success_action', array('order_ids' => array($this->_getSession()->getLastOrderId())));
257
+ }
258
+
259
+ // This is KCO specific for the current API... This must find another solution
260
+ if ($block = Mage::app()->getFrontController()->getAction()->getLayout()->getBlock('google_analytics')) {
261
+ $block->setKlarnaCheckoutOrder($klarna->getActualKlarnaOrder());
262
+ }
263
+
264
+ //$this->renderLayout();
265
+
266
+ Mage::helper('klarna')->logKlarnaApi('successAction displayed success');
267
+ Mage::helper('klarna')->logKlarnaApi(Vaimo_Klarna_Helper_Data::KLARNA_LOG_END_TAG);
268
+
269
+ // JMango360: Redirect to checkout/onepage/success
270
+ $this->_redirect('checkout/onepage/success');
271
+ } catch (Exception $e) {
272
+ // Will show empty success page... however unlikely it is to get here, it's not very good
273
+ Mage::helper('klarna')->logKlarnaException($e);
274
+ return $this;
275
+ }
276
+ }
277
+
278
+ public function getKlarnaWrapperHtmlAction()
279
+ {
280
+ $this->_resetLayout();
281
+
282
+ $layout = (int)$this->getRequest()->getParam('klarna_layout');
283
+
284
+ if ($layout == 1 && !empty($layout)) {
285
+ $blockName = 'klarna_sidebar';
286
+ } else {
287
+ $blockName = 'klarna_default';
288
+ }
289
+
290
+ $this->loadLayout('japi_klarna_checkout');
291
+
292
+ $block = $this->getLayout()->getBlock($blockName);
293
+ $cartHtml = $block->toHtml();
294
+
295
+ $result['update_sections'] = array(
296
+ 'name' => 'klarna_sidebar',
297
+ 'html' => $cartHtml
298
+ );
299
+
300
+ $this->getResponse()->setBody(Zend_Json::encode($result));
301
+ }
302
+
303
+ public function getKlarnaCheckoutAction()
304
+ {
305
+ $this->_resetLayout();
306
+
307
+ $this->loadLayout('japi_klarna_checkout');
308
+
309
+ $block = $this->getLayout()->getBlock('checkout');
310
+ $klarnaCheckoutHtml = $block->toHtml();
311
+
312
+ $result['update_sections'] = array(
313
+ 'name' => 'klarna_checkout',
314
+ 'html' => $klarnaCheckoutHtml
315
+ );
316
+
317
+ $this->getResponse()->setBody(Zend_Json::encode($result));
318
+ }
319
+ }
app/code/community/Jmango360/Japi/controllers/Rest/MageController.php CHANGED
@@ -124,4 +124,39 @@ class Jmango360_Japi_Rest_MageController extends Jmango360_Japi_Controller_Abstr
124
  $server->setRestDispatchModel(Mage::getModel('japi/rest_mage'));
125
  $server->run();
126
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  }
124
  $server->setRestDispatchModel(Mage::getModel('japi/rest_mage'));
125
  $server->run();
126
  }
127
+
128
+ public function getSettingsAction()
129
+ {
130
+ $server = $this->getServer();
131
+ $server->setRestDispatchModel(Mage::getModel('japi/rest_mage'));
132
+ $server->run();
133
+ }
134
+
135
+ public function getSettingAttributesAction()
136
+ {
137
+ $server = $this->getServer();
138
+ $server->setRestDispatchModel(Mage::getModel('japi/rest_mage'));
139
+ $server->run();
140
+ }
141
+
142
+ public function getShippingAndPaymentMethodsAction()
143
+ {
144
+ $server = $this->getServer();
145
+ $server->setRestDispatchModel(Mage::getModel('japi/rest_mage'));
146
+ $server->run();
147
+ }
148
+
149
+ public function getAllSystemSettingsAction()
150
+ {
151
+ $server = $this->getServer();
152
+ $server->setRestDispatchModel(Mage::getModel('japi/rest_mage'));
153
+ $server->run();
154
+ }
155
+
156
+ public function saveSettingsAction()
157
+ {
158
+ $server = $this->getServer();
159
+ $server->setRestDispatchModel(Mage::getModel('japi/rest_mage'));
160
+ $server->run();
161
+ }
162
  }
app/code/community/Jmango360/Japi/etc/config.xml CHANGED
@@ -7,7 +7,7 @@
7
  <config>
8
  <modules>
9
  <Jmango360_Japi>
10
- <version>2.9.3</version>
11
  </Jmango360_Japi>
12
  </modules>
13
 
@@ -81,7 +81,16 @@
81
 
82
  <frontend>
83
  <events>
84
- <controller_action_predispatch_japi_checkout_onepage>
 
 
 
 
 
 
 
 
 
85
  <observers>
86
  <vaimo_klarna>
87
  <type>singleton</type>
@@ -89,7 +98,7 @@
89
  <method>Vaimo_Klarna__checkLaunchKlarnaCheckout</method>
90
  </vaimo_klarna>
91
  </observers>
92
- </controller_action_predispatch_japi_checkout_onepage>
93
  <controller_action_postdispatch_japi_checkout_saveShippingMethod>
94
  <observers>
95
  <tig_postnl>
@@ -315,15 +324,30 @@
315
  <japi>
316
  <jmango_rest_api>
317
  <apiuser>jmango360</apiuser>
 
318
  <use_token>0</use_token>
319
  </jmango_rest_api>
320
  <jmango_rest_catalog_settings>
321
  <include_all_active>1</include_all_active>
 
 
322
  <hide_null_value>0</hide_null_value>
 
 
323
  <visible_on_app>0</visible_on_app>
 
324
  </jmango_rest_catalog_settings>
 
 
 
325
  <jmango_rest_checkout_settings>
 
 
326
  <onepage>1</onepage>
 
 
 
 
327
  </jmango_rest_checkout_settings>
328
  <jmango_rest_gallery_settings>
329
  <image_width>1200</image_width>
@@ -334,25 +358,44 @@
334
  <thumbnail_height>400</thumbnail_height>
335
  <image_default_listing>thumbnail</image_default_listing>
336
  <catalog_image_default>thumbnail</catalog_image_default>
337
- <show_grouped_item_image>0</show_grouped_item_image>
338
  </jmango_rest_gallery_settings>
339
- <jmango_rest_developer_settings>
340
- <enable>0</enable>
341
- </jmango_rest_developer_settings>
342
  <jmango_rest_sales_settings>
343
  <display_order_from>1</display_order_from>
344
  </jmango_rest_sales_settings>
345
  <jmango_rest_customer_settings>
346
  <display_customer_from>1</display_customer_from>
347
  <enable_address>0</enable_address>
 
348
  <street2_require>1</street2_require>
349
  <street2_type>number</street2_type>
 
350
  <street3_require>0</street3_require>
 
351
  <street4_require>0</street4_require>
352
  </jmango_rest_customer_settings>
353
- <jmango_app_login_settings>
354
- <require_login>0</require_login>
355
- </jmango_app_login_settings>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
356
  </japi>
357
  </default>
358
  </config>
7
  <config>
8
  <modules>
9
  <Jmango360_Japi>
10
+ <version>2.9.4</version>
11
  </Jmango360_Japi>
12
  </modules>
13
 
81
 
82
  <frontend>
83
  <events>
84
+ <controller_action_predispatch_checkout_klarna_success>
85
+ <observers>
86
+ <vaimo_klarna>
87
+ <type>singleton</type>
88
+ <class>japi/observer</class>
89
+ <method>Vaimo_Klarna__checkoutKlarnaSuccess</method>
90
+ </vaimo_klarna>
91
+ </observers>
92
+ </controller_action_predispatch_checkout_klarna_success>
93
+ <!--controller_action_predispatch_japi_checkout_onepage>
94
  <observers>
95
  <vaimo_klarna>
96
  <type>singleton</type>
98
  <method>Vaimo_Klarna__checkLaunchKlarnaCheckout</method>
99
  </vaimo_klarna>
100
  </observers>
101
+ </controller_action_predispatch_japi_checkout_onepage-->
102
  <controller_action_postdispatch_japi_checkout_saveShippingMethod>
103
  <observers>
104
  <tig_postnl>
324
  <japi>
325
  <jmango_rest_api>
326
  <apiuser>jmango360</apiuser>
327
+ <apikey></apikey>
328
  <use_token>0</use_token>
329
  </jmango_rest_api>
330
  <jmango_rest_catalog_settings>
331
  <include_all_active>1</include_all_active>
332
+ <attribute_on_listing></attribute_on_listing>
333
+ <attribute_on_details></attribute_on_details>
334
  <hide_null_value>0</hide_null_value>
335
+ <show_grouped_item_image>0</show_grouped_item_image>
336
+ <custom_css></custom_css>
337
  <visible_on_app>0</visible_on_app>
338
+ <default_direction></default_direction>
339
  </jmango_rest_catalog_settings>
340
+ <jmango_app_login_settings>
341
+ <require_login>0</require_login>
342
+ </jmango_app_login_settings>
343
  <jmango_rest_checkout_settings>
344
+ <shipping_excluded></shipping_excluded>
345
+ <payment_excluded></payment_excluded>
346
  <onepage>1</onepage>
347
+ <custom_xml></custom_xml>
348
+ <custom_css></custom_css>
349
+ <checkout_url></checkout_url>
350
+ <klarna_popup_urls></klarna_popup_urls>
351
  </jmango_rest_checkout_settings>
352
  <jmango_rest_gallery_settings>
353
  <image_width>1200</image_width>
358
  <thumbnail_height>400</thumbnail_height>
359
  <image_default_listing>thumbnail</image_default_listing>
360
  <catalog_image_default>thumbnail</catalog_image_default>
 
361
  </jmango_rest_gallery_settings>
362
+ <jmango_rest_stock_settings>
363
+ <display_product_stock_status>0</display_product_stock_status>
364
+ </jmango_rest_stock_settings>
365
  <jmango_rest_sales_settings>
366
  <display_order_from>1</display_order_from>
367
  </jmango_rest_sales_settings>
368
  <jmango_rest_customer_settings>
369
  <display_customer_from>1</display_customer_from>
370
  <enable_address>0</enable_address>
371
+ <street2_label></street2_label>
372
  <street2_require>1</street2_require>
373
  <street2_type>number</street2_type>
374
+ <street3_label></street3_label>
375
  <street3_require>0</street3_require>
376
+ <street4_label></street4_label>
377
  <street4_require>0</street4_require>
378
  </jmango_rest_customer_settings>
379
+ <jmango_smart_app_banner>
380
+ <enable>0</enable>
381
+ <ios_app_id></ios_app_id>
382
+ <android_app_id></android_app_id>
383
+ <days_hidden>15</days_hidden>
384
+ <days_reminder>90</days_reminder>
385
+ <app_store_language>nl</app_store_language>
386
+ <title>My App</title>
387
+ <author>My Company</author>
388
+ <button>VIEW</button>
389
+ <store_ios>On the App Store</store_ios>
390
+ <store_android>In Google Play</store_android>
391
+ <price_ios>FREE</price_ios>
392
+ <price_android>FREE</price_android>
393
+ <apple_touch_icon></apple_touch_icon>
394
+ <android_touch_icon></android_touch_icon>
395
+ </jmango_smart_app_banner>
396
+ <jmango_rest_developer_settings>
397
+ <enable>0</enable>
398
+ </jmango_rest_developer_settings>
399
  </japi>
400
  </default>
401
  </config>
app/code/community/Jmango360/Japi/etc/system.xml CHANGED
@@ -8,8 +8,8 @@
8
  <frontend_type>text</frontend_type>
9
  <sort_order>400</sort_order>
10
  <show_in_default>1</show_in_default>
11
- <show_in_website>0</show_in_website>
12
- <show_in_store>0</show_in_store>
13
  <groups>
14
  <jmango_rest_api translate="label" module="japi">
15
  <label>Connection credentials</label>
@@ -162,7 +162,7 @@
162
  <show_in_default>1</show_in_default>
163
  <show_in_website>0</show_in_website>
164
  <show_in_store>0</show_in_store>
165
- <sort_order>21</sort_order>
166
  <fields>
167
  <require_login translate="label comment" module="japi">
168
  <label>App users must login to see product prices</label>
@@ -181,7 +181,7 @@
181
  <show_in_default>1</show_in_default>
182
  <show_in_website>0</show_in_website>
183
  <show_in_store>0</show_in_store>
184
- <sort_order>25</sort_order>
185
  <fields>
186
  <shipping_excluded translate="label comment" module="japi">
187
  <label>Excluded shipping methods</label>
@@ -193,7 +193,7 @@
193
  <show_in_website>1</show_in_website>
194
  <show_in_store>1</show_in_store>
195
  <can_be_empty>1</can_be_empty>
196
- <comment>Select one or more but not all shipping methods that are not suitable/compatible to be used in mobile app environment. This can be set anytime during or after creation of JMango360 application.</comment>
197
  </shipping_excluded>
198
  <payment_excluded translate="label comment" module="japi">
199
  <label>Excluded payment methods</label>
@@ -255,6 +255,16 @@
255
  <onepage>0</onepage>
256
  </depends>
257
  </checkout_url>
 
 
 
 
 
 
 
 
 
 
258
  </fields>
259
  </jmango_rest_checkout_settings>
260
  <jmango_rest_gallery_settings translate="label" module="japi">
@@ -262,7 +272,7 @@
262
  <show_in_default>1</show_in_default>
263
  <show_in_website>0</show_in_website>
264
  <show_in_store>0</show_in_store>
265
- <sort_order>30</sort_order>
266
  <fields>
267
  <image_width translate="label comment" module="japi">
268
  <label>Detail page image cache-width</label>
@@ -345,7 +355,7 @@
345
  <show_in_default>1</show_in_default>
346
  <show_in_website>0</show_in_website>
347
  <show_in_store>0</show_in_store>
348
- <sort_order>35</sort_order>
349
  <fields>
350
  <display_product_stock_status translate="label comment" module="japi">
351
  <label>Display products availability in stock in mobile app</label>
@@ -363,7 +373,7 @@
363
  <show_in_default>1</show_in_default>
364
  <show_in_website>0</show_in_website>
365
  <show_in_store>0</show_in_store>
366
- <sort_order>36</sort_order>
367
  <fields>
368
  <display_order_from translate="label comment" module="japi">
369
  <label>Enable Order From in orders list</label>
@@ -382,7 +392,7 @@
382
  <show_in_default>1</show_in_default>
383
  <show_in_website>0</show_in_website>
384
  <show_in_store>0</show_in_store>
385
- <sort_order>37</sort_order>
386
  <fields>
387
  <display_customer_from translate="label comment" module="japi">
388
  <label>Enable JMango360 User in Customers list</label>
@@ -495,12 +505,203 @@
495
  </street4_require>
496
  </fields>
497
  </jmango_rest_customer_settings>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
498
  <jmango_rest_developer_settings translate="label" module="japi">
499
  <label>Developer</label>
500
  <show_in_default>1</show_in_default>
501
  <show_in_website>0</show_in_website>
502
  <show_in_store>0</show_in_store>
503
- <sort_order>40</sort_order>
504
  <fields>
505
  <enable translate="label comment" module="japi">
506
  <label>Enable debug logging</label>
8
  <frontend_type>text</frontend_type>
9
  <sort_order>400</sort_order>
10
  <show_in_default>1</show_in_default>
11
+ <show_in_website>1</show_in_website>
12
+ <show_in_store>1</show_in_store>
13
  <groups>
14
  <jmango_rest_api translate="label" module="japi">
15
  <label>Connection credentials</label>
162
  <show_in_default>1</show_in_default>
163
  <show_in_website>0</show_in_website>
164
  <show_in_store>0</show_in_store>
165
+ <sort_order>30</sort_order>
166
  <fields>
167
  <require_login translate="label comment" module="japi">
168
  <label>App users must login to see product prices</label>
181
  <show_in_default>1</show_in_default>
182
  <show_in_website>0</show_in_website>
183
  <show_in_store>0</show_in_store>
184
+ <sort_order>40</sort_order>
185
  <fields>
186
  <shipping_excluded translate="label comment" module="japi">
187
  <label>Excluded shipping methods</label>
193
  <show_in_website>1</show_in_website>
194
  <show_in_store>1</show_in_store>
195
  <can_be_empty>1</can_be_empty>
196
+ <comment>Select one or more, but not all shipping methods that are not suitable/compatible to be used in mobile app environment. This can be set anytime during or after creation of JMango360 application.</comment>
197
  </shipping_excluded>
198
  <payment_excluded translate="label comment" module="japi">
199
  <label>Excluded payment methods</label>
255
  <onepage>0</onepage>
256
  </depends>
257
  </checkout_url>
258
+ <klarna_popup_urls translate="label comment" module="japi">
259
+ <label>Klarna Popup URLs</label>
260
+ <frontend_type>textarea</frontend_type>
261
+ <sort_order>40</sort_order>
262
+ <show_in_default>1</show_in_default>
263
+ <show_in_website>1</show_in_website>
264
+ <show_in_store>1</show_in_store>
265
+ <can_be_empty>1</can_be_empty>
266
+ <comment>URLs that will be shown as pop-up in checkout page.</comment>
267
+ </klarna_popup_urls>
268
  </fields>
269
  </jmango_rest_checkout_settings>
270
  <jmango_rest_gallery_settings translate="label" module="japi">
272
  <show_in_default>1</show_in_default>
273
  <show_in_website>0</show_in_website>
274
  <show_in_store>0</show_in_store>
275
+ <sort_order>50</sort_order>
276
  <fields>
277
  <image_width translate="label comment" module="japi">
278
  <label>Detail page image cache-width</label>
355
  <show_in_default>1</show_in_default>
356
  <show_in_website>0</show_in_website>
357
  <show_in_store>0</show_in_store>
358
+ <sort_order>60</sort_order>
359
  <fields>
360
  <display_product_stock_status translate="label comment" module="japi">
361
  <label>Display products availability in stock in mobile app</label>
373
  <show_in_default>1</show_in_default>
374
  <show_in_website>0</show_in_website>
375
  <show_in_store>0</show_in_store>
376
+ <sort_order>70</sort_order>
377
  <fields>
378
  <display_order_from translate="label comment" module="japi">
379
  <label>Enable Order From in orders list</label>
392
  <show_in_default>1</show_in_default>
393
  <show_in_website>0</show_in_website>
394
  <show_in_store>0</show_in_store>
395
+ <sort_order>80</sort_order>
396
  <fields>
397
  <display_customer_from translate="label comment" module="japi">
398
  <label>Enable JMango360 User in Customers list</label>
505
  </street4_require>
506
  </fields>
507
  </jmango_rest_customer_settings>
508
+ <jmango_smart_app_banner translate="label" module="japi">
509
+ <label>Smart App Banner Settings</label>
510
+ <show_in_default>1</show_in_default>
511
+ <show_in_website>1</show_in_website>
512
+ <show_in_store>1</show_in_store>
513
+ <sort_order>90</sort_order>
514
+ <fields>
515
+ <enable translate="label comment" module="japi">
516
+ <label>Enable smart app banner</label>
517
+ <frontend_type>select</frontend_type>
518
+ <source_model>adminhtml/system_config_source_yesno</source_model>
519
+ <sort_order>10</sort_order>
520
+ <show_in_default>1</show_in_default>
521
+ <show_in_website>1</show_in_website>
522
+ <show_in_store>1</show_in_store>
523
+ <comment>Enable smart app banner when mobile users open your webshop</comment>
524
+ </enable>
525
+ <ios_app_id translate="label comment" module="japi">
526
+ <label>App ID on App Store</label>
527
+ <frontend_type>text</frontend_type>
528
+ <sort_order>11</sort_order>
529
+ <show_in_default>1</show_in_default>
530
+ <show_in_website>1</show_in_website>
531
+ <show_in_store>1</show_in_store>
532
+ <comment>Enter the App ID on App Store.</comment>
533
+ <depends>
534
+ <enable>1</enable>
535
+ </depends>
536
+ </ios_app_id>
537
+ <android_app_id translate="label comment" module="japi">
538
+ <label>App ID on Google Play</label>
539
+ <frontend_type>text</frontend_type>
540
+ <sort_order>12</sort_order>
541
+ <show_in_default>1</show_in_default>
542
+ <show_in_website>1</show_in_website>
543
+ <show_in_store>1</show_in_store>
544
+ <comment>Enter the App ID on Google Play.</comment>
545
+ <depends>
546
+ <enable>1</enable>
547
+ </depends>
548
+ </android_app_id>
549
+ <days_hidden translate="label comment" module="japi">
550
+ <label>Days Hidden</label>
551
+ <frontend_type>text</frontend_type>
552
+ <sort_order>20</sort_order>
553
+ <show_in_default>1</show_in_default>
554
+ <show_in_website>1</show_in_website>
555
+ <show_in_store>1</show_in_store>
556
+ <comment>Days to hide banner after button Close is clicked.</comment>
557
+ <depends>
558
+ <enable>1</enable>
559
+ </depends>
560
+ </days_hidden>
561
+ <days_reminder translate="label comment" module="japi">
562
+ <label>Days Reminder</label>
563
+ <frontend_type>text</frontend_type>
564
+ <sort_order>30</sort_order>
565
+ <show_in_default>1</show_in_default>
566
+ <show_in_website>1</show_in_website>
567
+ <show_in_store>1</show_in_store>
568
+ <comment>Days to hide banner after button View is clicked.</comment>
569
+ <depends>
570
+ <enable>1</enable>
571
+ </depends>
572
+ </days_reminder>
573
+ <app_store_language translate="label comment" module="japi">
574
+ <label>App Store Language</label>
575
+ <frontend_type>text</frontend_type>
576
+ <sort_order>40</sort_order>
577
+ <show_in_default>1</show_in_default>
578
+ <show_in_website>1</show_in_website>
579
+ <show_in_store>1</show_in_store>
580
+ <comment>Language code for the app store.</comment>
581
+ <depends>
582
+ <enable>1</enable>
583
+ </depends>
584
+ </app_store_language>
585
+ <title translate="label comment" module="japi">
586
+ <label>Title</label>
587
+ <frontend_type>text</frontend_type>
588
+ <sort_order>50</sort_order>
589
+ <show_in_default>1</show_in_default>
590
+ <show_in_website>1</show_in_website>
591
+ <show_in_store>1</show_in_store>
592
+ <comment>Enter customer's store displaying name. Ex: My App.</comment>
593
+ <depends>
594
+ <enable>1</enable>
595
+ </depends>
596
+ </title>
597
+ <author translate="label comment" module="japi">
598
+ <label>Author</label>
599
+ <frontend_type>text</frontend_type>
600
+ <sort_order>60</sort_order>
601
+ <show_in_default>1</show_in_default>
602
+ <show_in_website>1</show_in_website>
603
+ <show_in_store>1</show_in_store>
604
+ <comment>Enter customer's company name. Ex: My Company.</comment>
605
+ <depends>
606
+ <enable>1</enable>
607
+ </depends>
608
+ </author>
609
+ <button translate="label comment" module="japi">
610
+ <label>Button</label>
611
+ <frontend_type>text</frontend_type>
612
+ <sort_order>70</sort_order>
613
+ <show_in_default>1</show_in_default>
614
+ <show_in_website>1</show_in_website>
615
+ <show_in_store>1</show_in_store>
616
+ <comment>Enter title for button displaying on smart app banner.</comment>
617
+ <depends>
618
+ <enable>1</enable>
619
+ </depends>
620
+ </button>
621
+ <store_ios translate="label comment" module="japi">
622
+ <label>Store for iOS</label>
623
+ <frontend_type>text</frontend_type>
624
+ <sort_order>80</sort_order>
625
+ <show_in_default>1</show_in_default>
626
+ <show_in_website>1</show_in_website>
627
+ <show_in_store>1</show_in_store>
628
+ <comment>Enter the store where iOS app is available.</comment>
629
+ <depends>
630
+ <enable>1</enable>
631
+ </depends>
632
+ </store_ios>
633
+ <store_android translate="label comment" module="japi">
634
+ <label>Store for Android</label>
635
+ <frontend_type>text</frontend_type>
636
+ <sort_order>90</sort_order>
637
+ <show_in_default>1</show_in_default>
638
+ <show_in_website>1</show_in_website>
639
+ <show_in_store>1</show_in_store>
640
+ <comment>Enter the store where Android app is available.</comment>
641
+ <depends>
642
+ <enable>1</enable>
643
+ </depends>
644
+ </store_android>
645
+ <price_ios translate="label comment" module="japi">
646
+ <label>Price for iOS app</label>
647
+ <frontend_type>text</frontend_type>
648
+ <sort_order>100</sort_order>
649
+ <show_in_default>1</show_in_default>
650
+ <show_in_website>1</show_in_website>
651
+ <show_in_store>1</show_in_store>
652
+ <comment>Enter price for iOS app.</comment>
653
+ <depends>
654
+ <enable>1</enable>
655
+ </depends>
656
+ </price_ios>
657
+ <price_android translate="label comment" module="japi">
658
+ <label>Price for Android app</label>
659
+ <frontend_type>text</frontend_type>
660
+ <sort_order>110</sort_order>
661
+ <show_in_default>1</show_in_default>
662
+ <show_in_website>1</show_in_website>
663
+ <show_in_store>1</show_in_store>
664
+ <comment>Enter price for Android app.</comment>
665
+ <depends>
666
+ <enable>1</enable>
667
+ </depends>
668
+ </price_android>
669
+ <apple_touch_icon translate="label comment" module="japi">
670
+ <label>Icon for iOS app</label>
671
+ <comment>Allowed file types: png, gif, jpg, jpeg, svg</comment>
672
+ <frontend_type>image</frontend_type>
673
+ <backend_model>japi/system_config_backend_icon</backend_model>
674
+ <base_url type="media" scope_info="1">japi/icon</base_url>
675
+ <sort_order>120</sort_order>
676
+ <show_in_default>1</show_in_default>
677
+ <show_in_website>1</show_in_website>
678
+ <show_in_store>1</show_in_store>
679
+ <depends>
680
+ <enable>1</enable>
681
+ </depends>
682
+ </apple_touch_icon>
683
+ <android_touch_icon translate="label comment" module="japi">
684
+ <label>Icon for Android app</label>
685
+ <comment>Allowed file types: png, gif, jpg, jpeg, svg</comment>
686
+ <frontend_type>image</frontend_type>
687
+ <backend_model>japi/system_config_backend_icon</backend_model>
688
+ <base_url type="media" scope_info="1">japi/icon</base_url>
689
+ <sort_order>130</sort_order>
690
+ <show_in_default>1</show_in_default>
691
+ <show_in_website>1</show_in_website>
692
+ <show_in_store>1</show_in_store>
693
+ <depends>
694
+ <enable>1</enable>
695
+ </depends>
696
+ </android_touch_icon>
697
+ </fields>
698
+ </jmango_smart_app_banner>
699
  <jmango_rest_developer_settings translate="label" module="japi">
700
  <label>Developer</label>
701
  <show_in_default>1</show_in_default>
702
  <show_in_website>0</show_in_website>
703
  <show_in_store>0</show_in_store>
704
+ <sort_order>100</sort_order>
705
  <fields>
706
  <enable translate="label comment" module="japi">
707
  <label>Enable debug logging</label>
app/design/frontend/base/default/layout/jmango360_japi.xml CHANGED
@@ -5,10 +5,16 @@
5
  */
6
  -->
7
  <layout version="0.1.0">
 
 
 
 
 
 
8
  <japi_checkout_default translate="label">
9
  <label>JMango360 Onepage Checkout Page</label>
10
  <block type="page/html" name="root" output="toHtml" template="japi/page/rwd.phtml">
11
- <block type="page/html_head" name="head" as="head" template="japi/page/html/head.phtml">
12
  <action method="addItem"><type>skin_css</type><file>japi/lib/bootstrap/css/bootstrap.min.css</file></action>
13
  <action method="addItem"><type>skin_css</type><file>japi/lib/ladda/ladda.min.css</file></action>
14
  <action method="addItem"><type>skin_css</type><file>japi/css/icomoon/style.css</file></action>
@@ -210,4 +216,96 @@
210
  </action>
211
  </reference>
212
  </japi_checkout_onepage_paymentmethod>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  </layout>
5
  */
6
  -->
7
  <layout version="0.1.0">
8
+ <default>
9
+ <reference name="head">
10
+ <block type="japi/banner" name="japi_smart_app_banner" template="japi/page/html/smart-app-banner.phtml"/>
11
+ </reference>
12
+ </default>
13
+
14
  <japi_checkout_default translate="label">
15
  <label>JMango360 Onepage Checkout Page</label>
16
  <block type="page/html" name="root" output="toHtml" template="japi/page/rwd.phtml">
17
+ <block type="Mage_Page_Block_Html_Head" name="head" as="head" template="japi/page/html/head.phtml">
18
  <action method="addItem"><type>skin_css</type><file>japi/lib/bootstrap/css/bootstrap.min.css</file></action>
19
  <action method="addItem"><type>skin_css</type><file>japi/lib/ladda/ladda.min.css</file></action>
20
  <action method="addItem"><type>skin_css</type><file>japi/css/icomoon/style.css</file></action>
216
  </action>
217
  </reference>
218
  </japi_checkout_onepage_paymentmethod>
219
+
220
+ <japi_klarna_checkout>
221
+ <update handle="japi_checkout_default"/>
222
+
223
+ <label>Jmango360 Klarna Checkout</label>
224
+
225
+ <reference name="head">
226
+ <action method="addCss"><stylesheet>css/vaimo/klarna/vendor/bootstrap-grid.min.css</stylesheet><group>klarna</group></action>
227
+ <action method="addCss"><stylesheet>css/vaimo/klarna/vendor/fontawesome.min.css</stylesheet><group>klarna</group></action>
228
+ <action method="addCss"><stylesheet>css/vaimo/klarna/klarnadefault.css</stylesheet><group>klarna</group></action>
229
+ <action method="addCss"><stylesheet>css/vaimo/klarna/klarnacheckout.css</stylesheet><group>klarna</group></action>
230
+ <action method="addCss"><stylesheet>japi/css/style.css?v=2.10.0</stylesheet></action>
231
+ <action method="addJs"><script>vaimo/klarna/klarnautils.js</script><group>klarna</group></action>
232
+ <action method="addJs"><script>vaimo/klarna/klarnacheckout.js</script><group>klarna</group></action>
233
+ </reference>
234
+
235
+ <reference name="content">
236
+ <block type="core/template" name="klarna_container" as="klarna_container" template="japi/vaimo/klarna/klarnacheckout/main.phtml">
237
+ <block type="core/template" name="klarna_header" template="vaimo/klarna/klarnacheckout/header.phtml">
238
+ <block type="core/template" name="klarna_msg" template="vaimo/klarna/klarnacheckout/msg.phtml"/>
239
+ </block>
240
+
241
+ <block type="core/template" name="klarna_default" as="klarna_default" template="vaimo/klarna/klarnacheckout/default.phtml">
242
+ <block type="klarna/klarnacheckout_othermethod" name="other.payment.methods" template="vaimo/klarna/klarnacheckout/othermethod.phtml"/>
243
+ <block type="checkout/onepage_shipping_method" name="checkout.onepage.shipping_method" as="shipping_method" template="vaimo/klarna/klarnacheckout/shipping_method.phtml">
244
+ <block type="checkout/onepage_shipping_method_available" name="checkout.onepage.shipping_method.available" as="available" template="vaimo/klarna/klarnacheckout/shipping_method/available.phtml"/>
245
+ </block>
246
+ <block type="checkout/cart" name="checkout.cart">
247
+ <action method="setCartTemplate"><value>japi/vaimo/klarna/klarnacheckout/cart.phtml</value></action>
248
+ <action method="setEmptyTemplate"><value>checkout/cart/noItems.phtml</value></action>
249
+ <action method="chooseTemplate"/>
250
+ <action method="addItemRender"><type>simple</type><block>checkout/cart_item_renderer</block><template>japi/vaimo/klarna/klarnacheckout/cart/item/default.phtml</template></action>
251
+ <action method="addItemRender"><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>japi/vaimo/klarna/klarnacheckout/cart/item/default.phtml</template></action>
252
+ <action method="addItemRender"><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>japi/vaimo/klarna/klarnacheckout/cart/item/default.phtml</template></action>
253
+ <action method="addItemRender"><type>bundle</type><block>checkout/cart_item_renderer</block><template>japi/vaimo/klarna/klarnacheckout/cart/item/default.phtml</template></action>
254
+ <action method="addItemRender"><type>ugiftcert</type><block>ugiftcert/cart_item</block><template>japi/vaimo/klarna/klarnacheckout/cart/item/default.phtml</template></action>
255
+ </block>
256
+ <block type="checkout/cart_totals" name="checkout.cart.totals" as="totals" template="vaimo/klarna/klarnacheckout/cart/totals.phtml"/>
257
+ <block type="klarna/klarnacheckout_discount" name="discount" as="discount" template="vaimo/klarna/klarnacheckout/discount.phtml">
258
+ <block type="checkout/cart_coupon" name="checkout.cart.coupon" as="coupon" template="vaimo/klarna/klarnacheckout/discount/coupon.phtml"/>
259
+ </block>
260
+ </block>
261
+
262
+ <block type="core/template" name="klarna_login" template="vaimo/klarna/klarnacheckout/account-login.phtml">
263
+ <block type="klarna/klarnacheckout_autofill" name="klarnacheckout.autofill" after="-" template="vaimo/klarna/klarnacheckout/autofill.phtml"/>
264
+ </block>
265
+
266
+ <block type="core/template" name="klarna_sidebar" as="klarna_sidebar" template="vaimo/klarna/klarnacheckout/sidebar.phtml">
267
+ <block type="klarna/klarnacheckout_othermethod" name="other.payment.methods" template="vaimo/klarna/klarnacheckout/othermethod.phtml"/>
268
+ <block type="checkout/onepage_shipping_method" name="checkout.onepage.shipping_method" as="shipping_method" template="vaimo/klarna/klarnacheckout/shipping_method.phtml">
269
+ <block type="checkout/onepage_shipping_method_available" name="checkout.onepage.shipping_method.available" as="available" template="vaimo/klarna/klarnacheckout/shipping_method/available.phtml"/>
270
+ </block>
271
+ <block type="klarna/klarnacheckout_reward" name="klarnacheckout.reward" template="vaimo/klarna/klarnacheckout/reward.phtml"/>
272
+ <block type="klarna/klarnacheckout_customer_balance" name="klarnacheckout.customer_balance" template="vaimo/klarna/klarnacheckout/customer/balance.phtml"/>
273
+ <block type="klarna/klarnacheckout_newsletter" name="checkout.newsletter" template="vaimo/klarna/klarnacheckout/newsletter.phtml"/>
274
+ <block type="checkout/cart" name="checkout.cart">
275
+ <action method="setCartTemplate"><value>japi/vaimo/klarna/klarnacheckout/cart.phtml</value></action>
276
+ <action method="setEmptyTemplate"><value>checkout/cart/noItems.phtml</value></action>
277
+ <action method="chooseTemplate"/>
278
+ <action method="addItemRender"><type>simple</type><block>checkout/cart_item_renderer</block><template>japi/vaimo/klarna/klarnacheckout/cart/item/default.phtml</template></action>
279
+ <action method="addItemRender"><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>japi/vaimo/klarna/klarnacheckout/cart/item/default.phtml</template></action>
280
+ <action method="addItemRender"><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>japi/vaimo/klarna/klarnacheckout/cart/item/default.phtml</template></action>
281
+ <action method="addItemRender"><type>bundle</type><block>checkout/cart_item_renderer</block><template>japi/vaimo/klarna/klarnacheckout/cart/item/default.phtml</template></action>
282
+ <action method="addItemRender"><type>ugiftcert</type><block>ugiftcert/cart_item</block><template>japi/vaimo/klarna/klarnacheckout/cart/item/default.phtml</template></action>
283
+ <block type="checkout/cart_totals" name="checkout.cart.totals" as="totals" template="vaimo/klarna/klarnacheckout/cart/totals.phtml"/>
284
+ </block>
285
+ <block type="klarna/klarnacheckout_discount" name="discount" as="discount" template="vaimo/klarna/klarnacheckout/discount.phtml">
286
+ <block type="checkout/cart_coupon" name="checkout.cart.coupon" as="coupon" template="vaimo/klarna/klarnacheckout/discount/coupon.phtml"/>
287
+ </block>
288
+ </block>
289
+
290
+ <block type="core/template" name="klarna_checkout" as="klarna_checkout" template="vaimo/klarna/klarnacheckout/checkout.phtml">
291
+ <action method="setElementId"><value>klarna_checkout</value></action>
292
+ <block type="klarna/klarnacheckout_klarnacheckout" name="checkout" template="vaimo/klarna/klarnacheckout/klarnacheckout.phtml"/>
293
+ </block>
294
+ </block>
295
+ </reference>
296
+ </japi_klarna_checkout>
297
+
298
+ <japi_klarna_success>
299
+ <update handle="japi_checkout_default"/>
300
+
301
+ <label>Klarna Checkout Success</label>
302
+
303
+ <reference name="head">
304
+ <action method="addCss"><stylesheet>css/vaimo/klarna/klarnacheckout.css</stylesheet></action>
305
+ </reference>
306
+
307
+ <reference name="content">
308
+ <block type="klarna/klarnacheckout_success" name="checkout" template="vaimo/klarna/klarnacheckout/success.phtml"/>
309
+ </reference>
310
+ </japi_klarna_success>
311
  </layout>
app/design/frontend/base/default/template/japi/checkout/onepage/payment.phtml CHANGED
@@ -25,8 +25,8 @@
25
  */
26
  ?>
27
  <?php
28
- $_edition = Mage::getEdition();
29
- $_version = Mage::getVersion();
30
  ?>
31
  <script type="text/javascript">
32
  //<![CDATA[
@@ -38,11 +38,11 @@ $_version = Mage::getVersion();
38
  </script>
39
  <form action="" id="co-payment-form">
40
  <fieldset>
41
- <?php if ($_edition == Mage::EDITION_COMMUNITY && version_compare($_version, '1.8', '<')===true): ?>
42
  <dl class="sp-methods" id="checkout-payment-method-load">
43
  <?php endif; ?>
44
  <?php echo $this->getChildHtml('methods') ?>
45
- <?php if ($_edition == Mage::EDITION_COMMUNITY && version_compare($_version, '1.8', '<')===true): ?>
46
  </dl>
47
  <?php endif; ?>
48
  </fieldset>
25
  */
26
  ?>
27
  <?php
28
+ /* @var $helper Jmango360_Japi_Helper_Data */
29
+ $helper = Mage::helper('japi');
30
  ?>
31
  <script type="text/javascript">
32
  //<![CDATA[
38
  </script>
39
  <form action="" id="co-payment-form">
40
  <fieldset>
41
+ <?php if ($helper->wrapPaymentBlockMethods()): ?>
42
  <dl class="sp-methods" id="checkout-payment-method-load">
43
  <?php endif; ?>
44
  <?php echo $this->getChildHtml('methods') ?>
45
+ <?php if ($helper->wrapPaymentBlockMethods()): ?>
46
  </dl>
47
  <?php endif; ?>
48
  </fieldset>
app/design/frontend/base/default/template/japi/checkout/onepage/style.phtml CHANGED
@@ -19,7 +19,7 @@ $customCss = Mage::getStoreConfig('japi/jmango_rest_checkout_settings/custom_css
19
  $TIGPostNLVersion = Mage::helper('japi')->getExtensionVersion('TIG_PostNL');
20
  ?>
21
  <link type="text/css" rel="stylesheet" media="all"
22
- href="<?php echo $this->getSkinUrl('japi/css/style.css?v=2.9.3') ?>"/>
23
 
24
  <?php if (Mage::helper('japi')->isModuleEnabled('GoMage_Checkout')): ?>
25
  <link type="text/css" rel="stylesheet" media="all"
19
  $TIGPostNLVersion = Mage::helper('japi')->getExtensionVersion('TIG_PostNL');
20
  ?>
21
  <link type="text/css" rel="stylesheet" media="all"
22
+ href="<?php echo $this->getSkinUrl('japi/css/style.css?v=2.9.4') ?>"/>
23
 
24
  <?php if (Mage::helper('japi')->isModuleEnabled('GoMage_Checkout')): ?>
25
  <link type="text/css" rel="stylesheet" media="all"
app/design/frontend/base/default/template/japi/giftmessage/inline.phtml CHANGED
@@ -61,6 +61,34 @@ if(!window.toogleVisibilityOnObjects) {
61
  }
62
  }
63
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  if(!window.toogleRequired) {
65
  var toogleRequired = function (source, objects)
66
  {
61
  }
62
  }
63
 
64
+ if(!window.toogleVisibility) {
65
+ var toogleVisibility = function(objects, show) {
66
+ objects.each(function(item){
67
+ if (show) {
68
+ $(item).show();
69
+ $(item).removeClassName('no-display');
70
+ }
71
+ else {
72
+ $(item).hide();
73
+ $(item).addClassName('no-display');
74
+ }
75
+ });
76
+ }
77
+ }
78
+
79
+ if(!window.displayContainer) {
80
+ var displayContainer = function(source) {
81
+ if ($(source)) {
82
+ if ($(source).hasClassName('no-display')) {
83
+ $(source).removeClassName('no-display');
84
+ } else {
85
+ $(source).addClassName('no-display');
86
+ }
87
+ }
88
+ return false;
89
+ }
90
+ }
91
+
92
  if(!window.toogleRequired) {
93
  var toogleRequired = function (source, objects)
94
  {
app/design/frontend/base/default/template/japi/page/html/smart-app-banner.phtml ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Copyright 2016 JMango360
4
+ */
5
+ /* @var $this Jmango360_Japi_Block_Banner */
6
+
7
+ $request = Mage::app()->getRequest();
8
+ if ($request->getModuleName() == 'japi') return;
9
+
10
+ /* @var $server Jmango360_Japi_Model_Server */
11
+ $server = Mage::getSingleton('japi/server');
12
+ if ($server->getIsRest()) return;
13
+
14
+ if (!Mage::getStoreConfigFlag('japi/jmango_smart_app_banner/enable')) return;
15
+ ?>
16
+ <meta name="apple-itunes-app"
17
+ content="app-id=<?php echo Mage::getStoreConfig('japi/jmango_smart_app_banner/ios_app_id') ?>">
18
+ <meta name="google-play-app"
19
+ content="app-id=<?php echo Mage::getStoreConfig('japi/jmango_smart_app_banner/android_app_id') ?>">
20
+ <link rel="stylesheet" href="<?php echo $this->getSkinUrl('japi/lib/smart-app-banner/smart-app-banner.css') ?>"
21
+ type="text/css" media="screen">
22
+ <link rel="apple-touch-icon" href="<?php echo $this->getIcon('apple_touch_icon') ?>">
23
+ <link rel="android-touch-icon" href="<?php echo $this->getIcon('android_touch_icon') ?>"/>
24
+ <script type="text/javascript"
25
+ src="<?php echo $this->getSkinUrl('japi/lib/smart-app-banner/smart-app-banner.js') ?>"></script>
26
+ <script type="text/javascript">
27
+ new SmartBanner({
28
+ daysHidden: <?php echo Mage::getStoreConfig('japi/jmango_smart_app_banner/days_hidden') ?>,
29
+ daysReminder: <?php echo Mage::getStoreConfig('japi/jmango_smart_app_banner/days_reminder') ?>,
30
+ appStoreLanguage: '<?php echo Mage::getStoreConfig('japi/jmango_smart_app_banner/app_store_language') ?>',
31
+ title: '<?php echo Mage::getStoreConfig('japi/jmango_smart_app_banner/title') ?>',
32
+ author: '<?php echo Mage::getStoreConfig('japi/jmango_smart_app_banner/author') ?>',
33
+ button: '<?php echo Mage::getStoreConfig('japi/jmango_smart_app_banner/button') ?>',
34
+ store: {
35
+ ios: '<?php echo Mage::getStoreConfig('japi/jmango_smart_app_banner/store_ios') ?>',
36
+ android: '<?php echo Mage::getStoreConfig('japi/jmango_smart_app_banner/store_android') ?>'
37
+ },
38
+ price: {
39
+ ios: '<?php echo Mage::getStoreConfig('japi/jmango_smart_app_banner/price_ios') ?>',
40
+ android: '<?php echo Mage::getStoreConfig('japi/jmango_smart_app_banner/price_android') ?>'
41
+ },
42
+ theme: 'ios' // put platform type ('ios', 'android', etc.) here to force single theme on all device
43
+ //icon: '' // full path to icon image if not using website icon image
44
+ //force: 'ios' // Uncomment for platform emulation
45
+ });
46
+ </script>
app/design/frontend/base/default/template/japi/vaimo/klarna/klarnacheckout/cart.phtml ADDED
@@ -0,0 +1,139 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Copyright (c) 2009-2014 Vaimo AB
4
+ *
5
+ * Vaimo reserves all rights in the Program as delivered. The Program
6
+ * or any portion thereof may not be reproduced in any form whatsoever without
7
+ * the written consent of Vaimo, except as provided by licence. A licence
8
+ * under Vaimo's rights in the Program may be available directly from
9
+ * Vaimo.
10
+ *
11
+ * Disclaimer:
12
+ * THIS NOTICE MAY NOT BE REMOVED FROM THE PROGRAM BY ANY USER THEREOF.
13
+ * THE PROGRAM IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
14
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ * OUT OF OR IN CONNECTION WITH THE PROGRAM OR THE USE OR OTHER DEALINGS
19
+ * IN THE PROGRAM.
20
+ *
21
+ * @category Vaimo
22
+ * @package Vaimo_Klarna
23
+ * @copyright Copyright (c) 2009-2014 Vaimo AB
24
+ */
25
+ ?>
26
+
27
+ <?php
28
+ $isTwoColumnLayout = Mage::getStoreConfig('payment/vaimo_klarna_checkout/klarna_layout');
29
+ $cartUpdateParams = array(
30
+ 'klarna_layout' => $isTwoColumnLayout,
31
+ '_secure' => true
32
+ );
33
+ ?>
34
+
35
+ <div class="klarna_block" id="klarna_cart-container">
36
+ <?php if (Mage::helper('klarna')->excludeCartInKlarnaCheckout()) : ?>
37
+ <form id="klarna_cart" action="<?php echo $this->getUrl('checkout/klarna/cartUpdatePost') ?>" method="post">
38
+ <input type="hidden" name="return_url" value="<?php echo $this->getUrl('checkout/klarna') ?>"/>
39
+ <input type="hidden" id="klarna_cart_reload" name="klarna_cart_reload" value="<?php echo $this->getUrl('japi/klarna/getKlarnaWrapperHtml', $cartUpdateParams) ?>"/>
40
+ <input type="hidden" id="klarna_checkout_reload" name="klarna_checkout_reload" value="<?php echo $this->getUrl('japi/klarna/getKlarnaCheckout') ?>"/>
41
+ </form>
42
+ <?php else: ?>
43
+ <?php if ($isTwoColumnLayout) : ?>
44
+ <h2 class="klarna_block-title"><?php echo $this->__('Order Summary'); ?></h2>
45
+ <?php endif; ?>
46
+
47
+ <?php if(!$this->hasError()): ?>
48
+ <ul class="checkout-types">
49
+ <?php foreach ($this->getMethods('top_methods') as $method): ?>
50
+ <?php if ($methodHtml = $this->getMethodHtml($method)): ?>
51
+ <li><?php echo $methodHtml; ?></li>
52
+ <?php endif; ?>
53
+ <?php endforeach; ?>
54
+ </ul>
55
+ <?php endif; ?>
56
+
57
+ <?php echo $this->getChildHtml('form_before') ?>
58
+
59
+ <form id="klarna_cart" class="klarna_cart" action="<?php echo $this->getUrl('checkout/klarna/cartUpdatePost') ?>" method="post">
60
+ <input type="hidden" name="return_url" value="<?php echo $this->getUrl('checkout/klarna') ?>"/>
61
+ <input type="hidden" id="klarna_cart_reload" name="klarna_cart_reload" value="<?php echo $this->getUrl('japi/klarna/getKlarnaWrapperHtml', $cartUpdateParams) ?>"/>
62
+ <input type="hidden" id="klarna_checkout_reload" name="klarna_checkout_reload" value="<?php echo $this->getUrl('japi/klarna/getKlarnaCheckout') ?>"/>
63
+
64
+ <?php if ($isTwoColumnLayout) : ?>
65
+ <ul class="klarna_cart-items">
66
+ <?php foreach($this->getItems() as $_item): ?>
67
+ <li class="klarna_product" id="cart_item_<?php echo $_item->getId(); ?>" data-itemid="<?php echo $_item->getId(); ?>">
68
+ <?php echo $this->getItemHtml($_item); ?>
69
+ </li>
70
+ <?php endforeach ?>
71
+ </ul>
72
+
73
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
74
+ <div class="klarna_cart-total">
75
+ <span class="a-right"><?php echo $this->helper('tax')->getIncExcTaxLabel(false) ?></span>
76
+ <span><?php echo $this->helper('tax')->getIncExcTaxLabel(true) ?></span>
77
+ <span class="a-right"><?php echo $this->helper('tax')->getIncExcTaxLabel(false) ?></span>
78
+ <span><?php echo $this->helper('tax')->getIncExcTaxLabel(true) ?></span>
79
+ </div>
80
+ <?php endif; ?>
81
+ <?php else : ?>
82
+ <table id="cart_table">
83
+
84
+ <?php $mergedCells = ($this->helper('tax')->displayCartBothPrices() ? 2 : 1); ?>
85
+ <thead>
86
+ <tr>
87
+ <th colspan="<?php echo $mergedCells; ?>"></th>
88
+ <th rowspan="<?php echo $mergedCells; ?>"></th>
89
+ <th rowspan="<?php echo $mergedCells; ?>"><?php echo $this->__('Product Name') ?></th>
90
+ <th colspan="<?php echo $mergedCells; ?>"><?php echo $this->__('Unit Price') ?></th>
91
+ <th class="qty" colspan="<?php echo $mergedCells; ?>"><?php echo $this->__('Qty') ?></th>
92
+ <th colspan="<?php echo $mergedCells; ?>"><?php echo $this->__('Subtotal') ?></th>
93
+ </tr>
94
+
95
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
96
+ <tr>
97
+ <th class="a-right"><?php echo $this->helper('tax')->getIncExcTaxLabel(false) ?></th>
98
+ <th><?php echo $this->helper('tax')->getIncExcTaxLabel(true) ?></th>
99
+ <th class="a-right"><?php echo $this->helper('tax')->getIncExcTaxLabel(false) ?></th>
100
+ <th><?php echo $this->helper('tax')->getIncExcTaxLabel(true) ?></th>
101
+ </tr>
102
+ <?php endif; ?>
103
+ </thead>
104
+
105
+ <?php if($this->getContinueShoppingUrl()): ?>
106
+ <tfoot>
107
+ <tr>
108
+ <td colspan="6">
109
+ <a href="<?php echo $this->getContinueShoppingUrl() ?>" title="<?php echo Mage::helper('klarna')->quoteEscape($this->__('Continue Shopping')) ?>">&lt;&lt; <?php echo $this->__('Continue Shopping') ?></a>
110
+ </td>
111
+ </tr>
112
+ </tfoot>
113
+ <?php endif; ?>
114
+
115
+ <tbody>
116
+ <?php foreach($this->getItems() as $_item): ?>
117
+ <?php echo $this->getItemHtml($_item) ?>
118
+ <?php endforeach ?>
119
+ </tbody>
120
+
121
+ </table>
122
+ <?php endif; ?>
123
+
124
+ <script type="text/javascript">decorateTable('cart_table')</script>
125
+ </form>
126
+
127
+ <?php echo $this->getChildHtml('totals'); ?>
128
+
129
+ <?php if(!$this->hasError()): ?>
130
+ <ul class="checkout-types">
131
+ <?php foreach ($this->getMethods('methods') as $method): ?>
132
+ <?php if ($methodHtml = $this->getMethodHtml($method)): ?>
133
+ <li><?php echo $methodHtml; ?></li>
134
+ <?php endif; ?>
135
+ <?php endforeach; ?>
136
+ </ul>
137
+ <?php endif; ?>
138
+ <?php endif; ?>
139
+ </div>
app/design/frontend/base/default/template/japi/vaimo/klarna/klarnacheckout/cart/item/default.phtml ADDED
@@ -0,0 +1,397 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Copyright (c) 2009-2014 Vaimo AB
4
+ *
5
+ * Vaimo reserves all rights in the Program as delivered. The Program
6
+ * or any portion thereof may not be reproduced in any form whatsoever without
7
+ * the written consent of Vaimo, except as provided by licence. A licence
8
+ * under Vaimo's rights in the Program may be available directly from
9
+ * Vaimo.
10
+ *
11
+ * Disclaimer:
12
+ * THIS NOTICE MAY NOT BE REMOVED FROM THE PROGRAM BY ANY USER THEREOF.
13
+ * THE PROGRAM IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
14
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ * OUT OF OR IN CONNECTION WITH THE PROGRAM OR THE USE OR OTHER DEALINGS
19
+ * IN THE PROGRAM.
20
+ *
21
+ * @category Vaimo
22
+ * @package Vaimo_Klarna
23
+ * @copyright Copyright (c) 2009-2014 Vaimo AB
24
+ */
25
+
26
+ $_item = $this->getItem();
27
+ $isVisibleProduct = $_item->getProduct()->isVisibleInSiteVisibility();
28
+ $isTwoColumnLayout = (bool) Mage::getStoreConfig('payment/vaimo_klarna_checkout/klarna_layout');
29
+ if (version_compare(Mage::getVersion(), '1.7.0', '<') || ((version_compare(Mage::getVersion(), '1.10.0')>=0) && (version_compare(Mage::getVersion(), '1.11.0')<0))) {
30
+ $canApplyMsrp = false;
31
+ } else {
32
+ $canApplyMsrp = Mage::helper('catalog')->canApplyMsrp($_item->getProduct(), Mage_Catalog_Model_Product_Attribute_Source_Msrp_Type::TYPE_BEFORE_ORDER_CONFIRM);
33
+ }
34
+
35
+ ?>
36
+ <?php if($isTwoColumnLayout) : ?>
37
+ <img class="klarna_product-image" src="<?php echo $this->helper('catalog/image')->init($_item->getProduct(), 'thumbnail')->resize(50,50); ?>" width="50" height="50" alt="<?php echo $this->htmlEscape($this->getImageLabel($_item, 'small_image')) ?>" title="<?php echo $this->htmlEscape($this->getImageLabel($_item, 'small_image')) ?>"/>
38
+
39
+ <div class="klarna_product-details">
40
+ <a href="<?php echo $this->getProductUrl(); ?>" class="klarna_product-name"><?php echo $this->htmlEscape($_item->getProduct()->getName()) ?></a>
41
+
42
+ <?php // Display product price ?>
43
+ <?php if ($canApplyMsrp): ?>
44
+
45
+ <span class="map-cart-sidebar-item"><?php echo $this->__('See price before order confirmation.'); ?></span>
46
+
47
+ <?php else: ?>
48
+
49
+ <?php // Price excl. tax ?>
50
+ <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
51
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
52
+ <?php echo $this->__('Excl. Tax'); ?>:
53
+ <?php endif; ?>
54
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
55
+ <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()); ?>
56
+ <?php else: ?>
57
+ <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()) ?>
58
+ <?php endif; ?>
59
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
60
+ <br />
61
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
62
+ <small>
63
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
64
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount'],true,true); ?></span><br />
65
+ <?php endforeach; ?>
66
+ </small>
67
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
68
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
69
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></small></span><br />
70
+ <?php endforeach; ?>
71
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
72
+ <small>
73
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
74
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></span><br />
75
+ <?php endforeach; ?>
76
+ </small>
77
+ <?php endif; ?>
78
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
79
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()); ?></span>
80
+ <?php endif; ?>
81
+ <?php endif; ?>
82
+ <?php endif; ?>
83
+
84
+ <?php // Price incl. tax ?>
85
+ <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
86
+ <?php $_incl = $this->helper('checkout')->getPriceInclTax($_item); ?>
87
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
88
+ <br /><?php echo $this->__('Incl. Tax'); ?>:
89
+ <?php endif; ?>
90
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
91
+ <?php echo $this->helper('checkout')->formatPrice($_incl+$_item->getWeeeTaxAppliedAmount()); ?>
92
+ <?php else: ?>
93
+ <?php echo $this->helper('checkout')->formatPrice($_incl-$_item->getWeeeTaxDisposition()) ?>
94
+ <?php endif; ?>
95
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
96
+ <br />
97
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
98
+ <small>
99
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
100
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount'],true,true); ?></span><br />
101
+ <?php endforeach; ?>
102
+ </small>
103
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
104
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
105
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></small></span><br />
106
+ <?php endforeach; ?>
107
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
108
+ <small>
109
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
110
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></span><br />
111
+ <?php endforeach; ?>
112
+ </small>
113
+ <?php endif; ?>
114
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
115
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total incl. tax'); ?>:<br /> <?php echo $this->helper('checkout')->formatPrice($_incl+$_item->getWeeeTaxAppliedAmount()); ?></span>
116
+ <?php endif; ?>
117
+ <?php endif; ?>
118
+ <?php endif; ?>
119
+ <?php endif; // Can apply msrp end ?>
120
+
121
+ <div class="klarna_product-option klarna_product-quantity">
122
+ <span class="klarna_option-label"><?php echo $this->__('Quantity') ?>:</span>
123
+ <input id="cart_item_qty_<?php echo $_item->getId(); ?>" class="qty-input klarna_input-text" name="cart[<?php echo $_item->getId() ?>][qty]" data-itemid="<?php echo $_item->getId(); ?>" value="<?php echo $this->getQty() ?>" size="4" title="<?php echo $this->__('Qty') ?>" maxlength="12" readonly/>
124
+ <input type="hidden" id="cart_item_qty_org_<?php echo $_item->getId(); ?>" name="org_qty_<?php echo $_item->getId() ?>" class="org_qty_<?php echo $_item->getId(); ?>" data-itemid="<?php echo $_item->getId(); ?>" value="<?php echo $this->getQty() ?>" />
125
+ </div>
126
+
127
+ <?php if ($_options = $this->getOptionList()):?>
128
+
129
+ <?php foreach ($_options as $_option) : ?>
130
+ <div class="klarna_product-option">
131
+ <span class="klarna_option-label"><?php echo $this->htmlEscape($_option['label']) ?>:</span>
132
+
133
+ <span class="klarna_option-value">
134
+ <?php if (is_array($_option['value'])): ?>
135
+ <?php echo nl2br(implode("\n", $_option['value'])) ?>
136
+ <?php else: ?>
137
+ <?php echo $_option['value'] ?>
138
+ <?php endif; ?>
139
+ </span>
140
+ </div>
141
+ <?php endforeach; ?>
142
+
143
+ <?php endif; ?>
144
+ </div>
145
+ <div class="klarna_product-remove">
146
+ <a href="#" class="remove-item" role="removeproduct" title="<?php echo $this->__('Remove item')?>" data-itemid="<?php echo $_item->getId(); ?>">&times;</a>
147
+ </div>
148
+ <?php else : ?>
149
+
150
+ <tr id="cart_item_<?php echo $_item->getId(); ?>" data-itemid="<?php echo $_item->getId(); ?>">
151
+ <td><a href="#" class="remove-item" title="<?php echo $this->__('Remove item')?>" data-itemid="<?php echo $_item->getId(); ?>"><?php echo $this->__('Remove item')?></a></td>
152
+ <td><?php if ($this->hasProductUrl()):?><a href="<?php echo $this->getProductUrl() ?>" title="<?php echo $this->htmlEscape($this->getProductName()) ?>" class="product-image"><?php endif;?><img src="<?php echo $this->getProductThumbnail()->resize(59); ?>" width="59" height="59" alt="<?php echo $this->htmlEscape($this->getProductName()) ?>" /><?php if ($this->hasProductUrl()):?></a><?php endif;?></td>
153
+ <td class="product_name">
154
+ <?php if ($this->hasProductUrl()):?>
155
+ <a href="<?php echo $this->getProductUrl() ?>"><?php echo $this->htmlEscape($this->getProductName()) ?></a>
156
+ <?php else: ?>
157
+ <?php echo $this->htmlEscape($this->getProductName()) ?>
158
+ <?php endif; ?>
159
+ <?php if ($_options = $this->getOptionList()):?>
160
+ <dl class="item-options">
161
+ <?php foreach ($_options as $_option) : ?>
162
+ <?php $_formatedOptionValue = $this->getFormatedOptionValue($_option) ?>
163
+ <dt><?php echo $this->htmlEscape($_option['label']) ?></dt>
164
+ <dd<?php if (isset($_formatedOptionValue['full_view'])): ?> class="truncated"<?php endif; ?>><?php echo $_formatedOptionValue['value'] ?>
165
+ <?php if (isset($_formatedOptionValue['full_view'])): ?>
166
+ <div class="truncated_full_value">
167
+ <dl class="item-options">
168
+ <dt><?php echo $this->htmlEscape($_option['label']) ?></dt>
169
+ <dd><?php echo $_formatedOptionValue['full_view'] ?></dd>
170
+ </dl>
171
+ </div>
172
+ <?php endif; ?>
173
+ </dd>
174
+ <?php endforeach; ?>
175
+ </dl>
176
+ <?php endif;?>
177
+ <?php if ($messages = $this->getMessages()): ?>
178
+ <?php foreach ($messages as $message): ?>
179
+ <p class="item-msg <?php echo $message['type'] ?>">* <?php echo $this->escapeHtml($message['text']) ?></p>
180
+ <?php endforeach; ?>
181
+ <?php endif; ?>
182
+ <?php $addInfoBlock = $this->getProductAdditionalInformationBlock(); ?>
183
+ <?php if ($addInfoBlock): ?>
184
+ <?php echo $addInfoBlock->setItem($_item)->toHtml() ?>
185
+ <?php endif;?>
186
+ </td>
187
+ <?php if (false): ?>
188
+ <td class="a-center">
189
+ <?php if ($isVisibleProduct): ?>
190
+ <a href="<?php echo $this->getConfigureUrl() ?>" title="<?php echo $this->__('Edit item parameters') ?>"><?php echo $this->__('Edit') ?></a>
191
+ <?php endif ?>
192
+ </td>
193
+ <?php endif; ?>
194
+
195
+ <?php if ($canApplyMsrp): ?>
196
+ <td class="a-right"<?php if ($this->helper('tax')->displayCartBothPrices()): ?> colspan="2"<?php endif; ?>>
197
+ <span class="cart-price">
198
+ <span class="cart-msrp-unit"><?php echo $this->__('See price before order confirmation.'); ?></span>
199
+ <?php $helpLinkId = 'cart-msrp-help-' . $_item->getId(); ?>
200
+ <a id="<?php echo $helpLinkId ?>" href="#" class="map-help-link"><?php echo $this->__("What's this?"); ?></a>
201
+ <script type="text/javascript">
202
+ Catalog.Map.addHelpLink($('<?php echo $helpLinkId ?>'), "<?php echo $this->__("What's this?") ?>");
203
+ </script>
204
+ </span>
205
+ </td>
206
+ <?php else: ?>
207
+
208
+ <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
209
+ <td class="a-right">
210
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
211
+ <span class="cart-tax-total" onclick="taxToggle('eunit-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
212
+ <?php else: ?>
213
+ <span class="cart-price">
214
+ <?php endif; ?>
215
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
216
+ <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()); ?>
217
+ <?php else: ?>
218
+ <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()) ?>
219
+ <?php endif; ?>
220
+
221
+ </span>
222
+
223
+
224
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
225
+
226
+ <div class="cart-tax-info" id="eunit-item-tax-details<?php echo $_item->getId(); ?>" style="display:none;">
227
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
228
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
229
+ <span class="weee"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount'],true,true); ?></span>
230
+ <?php endforeach; ?>
231
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
232
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
233
+ <span class="weee"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></span>
234
+ <?php endforeach; ?>
235
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
236
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
237
+ <span class="weee"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></span>
238
+ <?php endforeach; ?>
239
+ <?php endif; ?>
240
+ </div>
241
+
242
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
243
+ <div class="cart-tax-total" onclick="taxToggle('eunit-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
244
+ <span class="weee"><?php echo Mage::helper('weee')->__('Total'); ?>: <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()); ?></span>
245
+ </div>
246
+ <?php endif; ?>
247
+ <?php endif; ?>
248
+ </td>
249
+ <?php endif; ?>
250
+ <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
251
+ <td>
252
+ <?php $_incl = $this->helper('checkout')->getPriceInclTax($_item); ?>
253
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
254
+ <span class="cart-tax-total" onclick="taxToggle('unit-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
255
+ <?php else: ?>
256
+ <span class="cart-price">
257
+ <?php endif; ?>
258
+
259
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
260
+ <?php echo $this->helper('checkout')->formatPrice($_incl+$_item->getWeeeTaxAppliedAmount()); ?>
261
+ <?php else: ?>
262
+ <?php echo $this->helper('checkout')->formatPrice($_incl-$_item->getWeeeTaxDisposition()) ?>
263
+ <?php endif; ?>
264
+
265
+ </span>
266
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
267
+
268
+ <div class="cart-tax-info" id="unit-item-tax-details<?php echo $_item->getId(); ?>" style="display:none;">
269
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
270
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
271
+ <span class="weee"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount'],true,true); ?></span>
272
+ <?php endforeach; ?>
273
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
274
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
275
+ <span class="weee"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></span>
276
+ <?php endforeach; ?>
277
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
278
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
279
+ <span class="weee"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></span>
280
+ <?php endforeach; ?>
281
+ <?php endif; ?>
282
+ </div>
283
+
284
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
285
+ <div class="cart-tax-total" onclick="taxToggle('unit-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
286
+ <span class="weee"><?php echo Mage::helper('weee')->__('Total incl. tax'); ?>: <?php echo $this->helper('checkout')->formatPrice($_incl+$_item->getWeeeTaxAppliedAmount()); ?></span>
287
+ </div>
288
+ <?php endif; ?>
289
+ <?php endif; ?>
290
+ </td>
291
+ <?php endif; ?>
292
+ <?php endif; ?>
293
+ <td class="qty">
294
+ <?php if (true): ?>
295
+ <a href="#" class="subtract-item" data-itemid="<?php echo $_item->getId(); ?>"><?php echo $this->__('Subtract item')?></a>
296
+ <?php endif; ?>
297
+ <input id="cart_item_qty_<?php echo $_item->getId(); ?>" class="qty-input" name="cart[<?php echo $_item->getId() ?>][qty]" data-itemid="<?php echo $_item->getId(); ?>" value="<?php echo $this->getQty() ?>" size="4" title="<?php echo $this->__('Qty') ?>" maxlength="12" readonly/>
298
+ <input type="hidden" id="cart_item_qty_org_<?php echo $_item->getId(); ?>" name="org_qty_<?php echo $_item->getId() ?>" class="org_qty_<?php echo $_item->getId(); ?>" data-itemid="<?php echo $_item->getId(); ?>" value="<?php echo $this->getQty() ?>" />
299
+ <?php if (true): ?>
300
+ <a href="#" class="add-item" data-itemid="<?php echo $_item->getId(); ?>"><?php echo $this->__('Add item')?></a>
301
+ <?php endif; ?>
302
+ </td>
303
+ <?php if (($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()) && !$_item->getNoSubtotal()): ?>
304
+ <td class="a-right">
305
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
306
+ <span class="cart-tax-total" onclick="taxToggle('esubtotal-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
307
+ <?php else: ?>
308
+ <span class="cart-price">
309
+ <?php endif; ?>
310
+
311
+ <?php if ($canApplyMsrp): ?>
312
+ <span class="cart-msrp-subtotal"></span>
313
+ <?php else: ?>
314
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
315
+ <?php echo $this->helper('checkout')->formatPrice($_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()); ?>
316
+ <?php else: ?>
317
+ <?php echo $this->helper('checkout')->formatPrice($_item->getRowTotal()) ?>
318
+ <?php endif; ?>
319
+ <?php endif; ?>
320
+
321
+ </span>
322
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
323
+
324
+ <div class="cart-tax-info" id="esubtotal-item-tax-details<?php echo $_item->getId(); ?>" style="display:none;">
325
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
326
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
327
+ <span class="weee"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount'],true,true); ?></span>
328
+ <?php endforeach; ?>
329
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
330
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
331
+ <span class="weee"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount_incl_tax'],true,true); ?></span>
332
+ <?php endforeach; ?>
333
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
334
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
335
+ <span class="weee"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount_incl_tax'],true,true); ?></span>
336
+ <?php endforeach; ?>
337
+ <?php endif; ?>
338
+ </div>
339
+
340
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
341
+ <div class="cart-tax-total" onclick="taxToggle('esubtotal-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
342
+ <span class="weee"><?php echo Mage::helper('weee')->__('Total'); ?>: <?php echo $this->helper('checkout')->formatPrice($_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()); ?></span>
343
+ </div>
344
+ <?php endif; ?>
345
+ <?php endif; ?>
346
+ </td>
347
+ <?php endif; ?>
348
+ <?php if (($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) && !$_item->getNoSubtotal()): ?>
349
+ <td>
350
+ <?php $_incl = $this->helper('checkout')->getSubtotalInclTax($_item); ?>
351
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
352
+ <span class="cart-tax-total" onclick="taxToggle('subtotal-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
353
+ <?php else: ?>
354
+ <span class="cart-price">
355
+ <?php endif; ?>
356
+
357
+ <?php if ($canApplyMsrp): ?>
358
+ <span class="cart-msrp-subtotal">--</span>
359
+ <?php else: ?>
360
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
361
+ <?php echo $this->helper('checkout')->formatPrice($_incl+$_item->getWeeeTaxAppliedRowAmount()); ?>
362
+ <?php else: ?>
363
+ <?php echo $this->helper('checkout')->formatPrice($_incl-$_item->getWeeeTaxRowDisposition()) ?>
364
+ <?php endif; ?>
365
+ <?php endif; ?>
366
+
367
+ </span>
368
+
369
+
370
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
371
+
372
+ <div class="cart-tax-info" id="subtotal-item-tax-details<?php echo $_item->getId(); ?>" style="display:none;">
373
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
374
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
375
+ <span class="weee"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount'],true,true); ?></span>
376
+ <?php endforeach; ?>
377
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
378
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
379
+ <span class="weee"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount_incl_tax'],true,true); ?></span>
380
+ <?php endforeach; ?>
381
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
382
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
383
+ <span class="weee"><?php echo $tax['title']; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount_incl_tax'],true,true); ?></span>
384
+ <?php endforeach; ?>
385
+ <?php endif; ?>
386
+ </div>
387
+
388
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
389
+ <div class="cart-tax-total" onclick="taxToggle('subtotal-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
390
+ <span class="weee"><?php echo Mage::helper('weee')->__('Total incl. tax'); ?>: <?php echo $this->helper('checkout')->formatPrice($_incl+$_item->getWeeeTaxAppliedRowAmount()); ?></span>
391
+ </div>
392
+ <?php endif; ?>
393
+ <?php endif; ?>
394
+ </td>
395
+ <?php endif; ?>
396
+ </tr>
397
+ <?php endif; ?>
app/design/frontend/base/default/template/japi/vaimo/klarna/klarnacheckout/main.phtml ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $isTwoColumnLayout = 1;//Mage::getStoreConfig('payment/vaimo_klarna_checkout/klarna_layout');
3
+ $showLoginForm = false;//(bool)Mage::getStoreConfig('payment/vaimo_klarna_checkout/show_login_form');
4
+ $layoutCls = $isTwoColumnLayout ? 'klarna_layout-2-column row' : 'klarna_layout-default';
5
+ $bootstrapClsList = $isTwoColumnLayout ? 'col-md-8 col-sm-12' : '';
6
+ ?>
7
+ <div class="checkout-klarna-index klarna_wrapper <?php echo $layoutCls; ?>" id="klarna_container"
8
+ data-layout="<?php echo $isTwoColumnLayout; ?>">
9
+ <?php echo $this->getChildHtml('klarna_header'); ?>
10
+
11
+ <?php if ($isTwoColumnLayout && $showLoginForm && !$this->helper('customer')->isLoggedIn()) : ?>
12
+ <?php echo $this->getChildHtml('klarna_login') ?>
13
+ <?php endif; ?>
14
+
15
+ <?php if (!Mage::getSingleton('checkout/session')->getQuote()->getHasError()): ?>
16
+ <?php if (!Mage::getSingleton('checkout/session')->getQuote()->getHasError()): ?>
17
+ <div class="klarna_main <?php echo $bootstrapClsList; ?>" id="klarna_main">
18
+ <?php if (!$isTwoColumnLayout) : ?>
19
+ <?php echo $this->getChildHtml('klarna_default'); ?>
20
+ <?php endif; ?>
21
+
22
+ <?php echo $this->getChildHtml('klarna_checkout'); ?>
23
+ </div>
24
+
25
+ <?php if ($isTwoColumnLayout) : ?>
26
+ <?php echo $this->getChildHtml('klarna_sidebar'); ?>
27
+ <?php endif; ?>
28
+ <?php endif; ?>
29
+ <?php endif; ?>
30
+ </div>
app/locale/de_DE/Jmango360_Japi.csv ADDED
@@ -0,0 +1,251 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ "Connection credentials","Anmeldeinformationen"
3
+ "This account is not confirmed. <a href='%s'>Click here</a> to resend confirmation email.","Dieser Account ist noch nicht verifiziert. <a href='%s'>Hier klicken</a> um erneut eine Bestätigungs-E-Mail zu schicken."
4
+ "Customer is already logged in.","Der Kunde ist bereits eingeloggt."
5
+ "Could not login","Could not login"
6
+ "Login and password are required.","Benutzername und Passwort müssen eingegeben werden."
7
+ "Account is created. Please check email to confirm.","Account is created. Please check email to confirm."
8
+ "Invalid Exception code '%d'", "Ungültiger Exceptioncode '%d'"
9
+ "Order List", "Bestellliste"
10
+ "Order #", "Bestellnummer"
11
+ "Order Date", "Bestelldatum"
12
+ "Billing Country", "Rechnungsinformationen"
13
+ "Shipping Country", "Rechnungsdetails"
14
+ "Qty. Ordered", "Anzahl bestellt"
15
+ "Subtotal", "Zwischensumme"
16
+ "Total", "Gesamtsumme"
17
+ "Invoiced", "In Rechnung gestellt"
18
+ "Status", "Status"
19
+ "Action", "Aktion"
20
+ "View", "Ansicht"
21
+ "Show Report", "Bericht anzeigen"
22
+ "Total Customers from JMango360 Report", "Gesamtzahl Kunden laut JMango360 Bericht"
23
+ "JMango360 Report - Total number of registered customers","Gesamtzahl Kunden laut JMango360 Bericht"
24
+ "Total Ordered from JMango360 Report", "Gesamtzahl der Bestellungen bei JMango360 laut Bericht"
25
+ "JMango360 Report - Total number of orders","Gesamtzahl der Bestellungen bei JMango360 laut Bericht"
26
+ "Total Sales from JMango360 Report", "Gesamtverkäufe JMango360 laut Bericht"
27
+ "JMango360 Report - Total number of sales","Gesamtverkäufe JMango360 laut Bericht"
28
+ "Chart", "Graph"
29
+ "Period", "Zeitraum"
30
+ "Customers", "Kunden"
31
+ "Orders", "Bestellungen"
32
+ "Order From", "Bestellen von"
33
+ "JMango360 User", "JMango360 Benutzer"
34
+ "Download", "Download"
35
+ "Clear", "Löschen"
36
+ "No", "Nein"
37
+ "Yes", "Ja"
38
+ "Invalid token", "Ungültiger Token"
39
+ "Session expired.", "Sitzung abgelaufen."
40
+ "No rest model found.", "REST Modell nicht gefunden."
41
+ "Resource method not implemented", "Ressourcenmethode nicht angewendet"
42
+ "Minimum order amount is %s", "Mindestbestellwert ist %s"
43
+ "Guest checkout is not enabled", "Bezahlung als Gast nicht möglich"
44
+ "Product ID invalid", "Ungültige Artikelnummer"
45
+ "Something is wrong with the order.", "Etwas ist schief gegangen mit Ihrer Bestellung."
46
+ "Something is wrong with the quote or order.", "Etwas ist schief gegangen mit dem Angebot oder der Bestellung."
47
+ "Cart is empty.", "Warenkorb ist leer."
48
+ "Multishipping not implemented yet.", "Multishopping ist noch nicht verfügbar."
49
+ "Checkout method not implemented yet: ", "Bezahlmethode ist noch nicht verfügbar: "
50
+ "Could not log-out customer", "Kunde konnte nicht ausgeloggt werden"
51
+ "Please login.", "Bitte loggen Sie sich ein."
52
+ "Country code cannot be empty", "Ländercode ist ein Pflichtfeld"
53
+ "Country does not exist: ", "Land existiert nicht: "
54
+ "Country does not exist", "Land existiert nicht"
55
+ "Store not found", "Geschäft nicht gefunden"
56
+ "Not allowed.", "Nicht zulässig."
57
+ "Set store option %s not found", "Die ausgewählte Ladenoption %s konnte nicht gefunden werden"
58
+ "Set store option cannot be empty.", "Sie müssen eine Ladenoption auswählen."
59
+ "Product ID invalid", "ungültige Artikelnummer"
60
+ "Product not found", "Artikel konnte nicht gefunden werden"
61
+ "Please login first!", "Bitte loggen Sie sich zuerst ein!"
62
+ "Cannot specify product.", "Artikel kann nicht bestimt werden."
63
+ "Item not found", "Artikel wurde nicht gefunden"
64
+ "%1$s has been updated in your wishlist.", "%1$s Wurde Ihrer Wunschliste hinzugefügt."
65
+ "An error occurred while updating your wishlist.", "Beim aktualisieren Ihrer Wunschliste ist ein Fehler aufgetreten."
66
+ "Cannot specify your wishlist item.", "Der Artikel auf Ihrer Wunschliste konnte nicht gefunden werden."
67
+ "The product does not exist.", "Dieser Artikel existiert nicht."
68
+ "Wishlist item removed", "Der Artikel wurde von Ihrer Wunschliste entfernt"
69
+ "An error occurred while deleting the item from wishlist: %s", "Beim löschen des Artikels von Ihrer Wunschliste ist ein Fehler aufgetreten: %s"
70
+ "An error occurred while deleting the item from wishlist.", "Beim löschen des Artikels von Ihrer Wunschliste ist ein Fehler aufgetreten."
71
+ "Can't save description %s", "Beschreibung konnte nicht gespeichert werden: %s"
72
+ "Can't delete item from wishlist", "Artikel konnte nicht von der Wunschliste gelöscht werden"
73
+ "Can't save qty %s", "Anzahl konnte nicht gespeichert werden: %s"
74
+ "Wishlist updated successfully", "Ihre Wunschliste wurde erfolgreich aktualisiert"
75
+ "Can't update wishlist", "Ihre Wunschliste konnte nicht aktualisiert werden"
76
+ "No item updated", "Kein Artikel wurde aktualisiert"
77
+ "Cannot specify product", "Der Artikel konnte nicht ausgewählt werden"
78
+ "%s has been added to your wishlist.", "%s wurde Ihrer Wunschliste hinzugefügt."
79
+ "An error occurred while adding item to your wishlist: %s", "Beim hinzufügen dieses Artikels zu Ihrer Wunschliste ist ein Fehler aufgetreten: %s"
80
+ "An error occurred while adding item to your wishlist", "Beim hinzufügen dieses Artikels zu Ihrer Wunschliste ist ein Fehler aufgetreten"
81
+ "Wishlist not allowed", "Wunschliste ist nicht zugelassen"
82
+ "Wishlist doesn't exist", "Wunschliste existiert nicht"
83
+ "Customer not logged in", "Der Kunde ist nicht eingeloggt"
84
+ "Coupon is not valid: ", "Gutschein ist ungültig: "
85
+ "Coupon could not be applied.", "Gutschein konnte nicht eingelöst werden."
86
+ "%s: Minimum quantity allowed for purchase is %s.", "%s: Mindestanzahl beim Einkauf ist %s."
87
+ "%s: Maximum quantity allowed for purchase is %s.", "%s: Maximalanzahl beim Einkauf ist %s."
88
+ "%s was added to your shopping cart.", "%s wurde Ihrem Warenkorb hinzugefügt."
89
+ "No cart data found.", "Es konnten keine Informationen zum Warenkorb gefunden werden."
90
+ "Your shopping cart has been updated.", "Ihr Warenkorb wurde aktualisiert."
91
+ "No bundle-product cart item ID found.", "Die Identifikation für Ihren gebündelten Produktkorb wurde nicht gefunden."
92
+ "The product you are trying to delete could not be found in the cart (item id is %s not found in cart).", "Der Artikel den Sie zum löschen ausgewählt haben konnte nicht in Ihrem Warenkorb gefunden werden."
93
+ "The product has been deleted from your shopping cart.", "Der Artikel wurde aus Ihrem Warenkorb entfernt."
94
+ "Category not found.", "Kategorie nicht gefunden."
95
+ "Category not available.", "Kategorie nicht verfügbar."
96
+ "No category found.", "Keine Kategorie gefunden."
97
+ "Your search returns no results.", "Bei Ihrer Suchanfrage konnten keine Resultate gefunden werden."
98
+ "Query cannot be empty.", "Suchanfrage ist ein Pflichtfeld."
99
+ "Methods are not complete yet. Cart shipping address is not yet completed and saved.", "Methoden sind unvollständig. Die zum Warenkorb gehörige Lieferadresse ist nicht gespeichert."
100
+ "Methods are not complete yet. Cart is empty.", "Methoden sind noch nicht vollständig. Warenkorb ist leer."
101
+ "Shipping method has no shipping carrier object: %s", "Liefermethode hat noch kein Versandträgerobjekt: %s"
102
+ "Carrier object has no collectRates method: %s", "Trägerobjekt hat noch keine collectRates Methode: %s"
103
+ "Shipping method has no rates object: %s", "Liefermethode hat kein rate object: %s"
104
+ "Shipping method has no getAllRates function: %s", "Liefermethode hat keine getAllRates Funktion: %s"
105
+ "Shipping method has no rates: %s", "Liefermethode hat keine rates: %s"
106
+ "Shipping method can not be empty.", "Liefermethode ist ein Pflichtfeld."
107
+ "This shipping method is currently not available.", "Diese Liefermethode ist zur Zeit nicht verfügbar."
108
+ "Customer shipping address not found.", "Lieferadresse des Kunden konnte nicht gefunden werden."
109
+ "Customer shipping address email not found.", "E-Mail-Adresse des Kunden konnte nicht gefunden werden."
110
+ "Customer billing address not found.", "Die Rechnungsadresse des Kunden konnte nicht gefunden werden."
111
+ "Payment method cannot be empty.", "Bitte wählen Sie eine Zahlungsmethode aus."
112
+ "Email cannot be empty.", "E-Mail Adresse ist ein Pflichtfeld."
113
+ "This payment method is currently not available.", "Diese Zahlungsmethode ist zur zeit nicht verfügbar."
114
+ "Please add ", "Bitte hinzufügen "
115
+ "Request info not matches the order.", "Die angefragten Informationen stimmen nicht it der Bestellung überein."
116
+ "No payment provider to redirect found.", "Kein Zahlungsdienstleister für die Umleitung gefunden."
117
+ "Request info does not match the quote. Probably the cart is ordered or the session is expired.", "Die angefragten Informationen stimmen nicht mit dem Angebot überein. Möglicherweise ist der Warenkorb schon bestellt oder die Sitzung ist abgelaufen."
118
+ "Cart is no longer active.", "Der Warenkorb ist nicht länger aktiv."
119
+ "Replaced by new order.", "Durch eine neue Bestellung ersetzt."
120
+ "Cannot save the address: ", "Die Adresse kann nicht gespeichert werden: "
121
+ "The address does not belong to this customer.", "Diese Adresse gehört nicht zu diesem Kunden."
122
+ "Default billing address can not be removed.", "Die Standartrechnungsadresse kann nicht entfernt werden."
123
+ "Default shipping address can not be removed.", "Die Standartlieferadresse kann nicht entfernt werden."
124
+ "An error occurred while deleting the address.", "Beim Löschen der Adresse ist ein Fehler aufgetreten."
125
+ "Address ID can not be empty.", "Adress-Identifikation ist ein Pflichtfeld."
126
+ "Invalid current password", "Ungültiges Passwort"
127
+ "The account information has been saved.", "Ihre Accountdaten wurden erfolgreich gespeichert."
128
+ "Could not retrieve list: ", "Konnte Liste nicht finden: "
129
+ "Order not found (no ID).", "Bestellung konnte nicht gefunden werden (keine ID)."
130
+ "Invalid email address.", "Ungültige E-Mail-Adresse."
131
+ "Please enter your email.", "Bitte geben Sie Ihre E-Mail-Adresse ein."
132
+ "This account needs confirmation. See in confirmation email.", "Dieser Account muss verifiziert werden. Bitte überprüfen Sie Ihre Bestätigungsmail."
133
+ "No products found.", "Keine Produkte gefunden."
134
+ "Category not found.", "Kategorie nicht gefunden."
135
+ "Cannot find customer ID, please try again!", "Kundennummer konnte nicht gefunden werden, bitte versuchen Sie es erneut!"
136
+ "You must leave at least one payment method available.", "Sie müssen mindestens eine Zahlungsmethode auswählen."
137
+ "You must leave at least one shipping method available.", "Sie müssen mindestens eine Liefermethode auswählen."
138
+ "None", "Keine"
139
+ "Base Image", "Basis-Image"
140
+ "Small Image", "Kleines Bild"
141
+ "Thumbnail", "Vorschauansicht"
142
+ "Shipping Excl. Tax (%s)", "Lieferkosten exkl. MwSt. (%s)"
143
+ "Shipping Incl. Tax (%s)", "Lieferkosten inkl. MwSt. (%s)"
144
+ "Subtotal (Excl. Tax)", "SubtZwischensumme (Exkl. MwSt.)"
145
+ "Subtotal (Incl. Tax)", "Zwischensumme (Inkl. MwSt.)"
146
+ "Grand Total Excl. Tax", "Gesamtsumme (Exkl. MwSt.)"
147
+ "Grand Total Incl. Tax", "Gesamtsumme (Inkl. MwSt.)"
148
+ "Unable to set Payment Method.", "Zahlungsmethode konnte nicht ausgewählt werden."
149
+ "Reports", "Berichte"
150
+ "Order Details", "Einzelheiten zur Bestellung"
151
+ "Sales Reports", "Verkaufsbericht"
152
+ "Orders Reports", "Bestellungsbericht"
153
+ "Customers Reports", "Kundenbericht"
154
+ "Version", "Version"
155
+ "The plugin version", "Plugin-Version"
156
+ "User Name", "Benutzername"
157
+ "This username will be checked from every App while a session is set up between the App and the Magento store.", "Dieser Benutzername wird von jeder App überprüft und wird zwischen Sitzungen der App und Magento erstellt."
158
+ "Api Key", "API-Schlüssel"
159
+ "This key will be checked from every App while a session is set up between the App and the Magento store.", "Dieser Benutzername wird von jeder App überprüft und wird zwischen Sitzungen der App und Magento erstellt."
160
+ "Use token for Api communications", "Benutzen Sie den API Token für Kommunikationen"
161
+ "Use token will add check and refresh the token with every request.", "Nutzung des Tokens führt zu einem extra Check und aktualisiert den Token mit jeder Anfrage."
162
+ "Catalogue Settings", "Katalog-Einstellungen"
163
+ "Include all active categories", "Alle aktiven Kategorien mit einbeziehen"
164
+ "Include all ""Active"" categories regardless of whether or not they are included in navigation", "Alle aktiven Kategorien mit einbeziehen, ungeachtet davon ob Sie in der Navigation sind"
165
+ "Display attribute on Product Listing", "Attribut auf der Produktliste anzeigen"
166
+ "This attribute will be displayed in product listing", "Dieses Attribut wird auf der Produktliste angezeigt werden"
167
+ "Display attribute on Product Details", "Attribut in Produktbeschreibung anzeigen"
168
+ "This attribute will be displayed in product details", "Dieses Attribut wird in der Produktbeschreibung angezeigt werden"
169
+ "Mobile App Checkout Settings", "Mobile App Zahlungseinstellungen"
170
+ "Excluded shipping methods", "Ausgenommene Liefermethoden"
171
+ "Select one or more, but not all shipping methods that are not suitable/compatible to be used in mobile app environment. This can be set anytime during or after creation of JMango360 application.", "Wählen Sie eine oder mehrere, jedoch nicht alle Liefermethoden die nicht mit mobilen Apps kompatibel sind. Dies kann jederzeit während, oder nach der Erstellung der JMango360 App geschehen."
172
+ "Excluded payment methods", "Ausgenommene Zahlungsmethoden"
173
+ "Select one or more, but not all payment methods that are not suitable/compatible to be used in mobile app environment. This can be set anytime during or after creation of JMango360 application.", "Wählen Sie eine oder mehrere, jedoch nicht alle Zahlungsmethoden die nicht mit mobilen Apps kompatibel sind. Dies kann jederzeit während, oder nach der Erstellung der JMango360 App geschehen."
174
+ "Web checkout URL", "Zahlungs-URL"
175
+ "Enter custom checkout url of website if Jmango360 plugin could not detect. Ex: checkout/onepage.", "Geben Sie eine benutzerspezifische URL ein, für den Fall. dass das JMango360 Plugin nicht gefunden werden kann. z.B. checkout/onepage"
176
+ "Product image gallery settings", "Einstellungen Produktbilder Gallerie"
177
+ "Detail page image cache-width", "Cachebreite des Detailseitenbildes"
178
+ "Set the default ""cached"" size for ""big"" images on the detail pages.", "Bestimme Standard ""cached"" Größe für ""große"" Bilder auf der Detailseite."
179
+ "Detail page image cache-height", "Cachehöhe des Detailseitenbildes"
180
+ "Set the default ""cached"" size for ""big"" images on the detail pages.", "Bestimme Standard ""cached"" Größe für ""große"" Bilder auf der Detailseite."
181
+ "Catalogue image cache-width", "Katalogbild Cachbreite"
182
+ "Set the default ""cached"" size for images on the catalogue pages.", "Bestimme Standard ""cached"" Größe für Bilder der Katalogseite."
183
+ "Catalogue image cache-height", "Cachehöhe des Katalogbildes"
184
+ "Set the default ""cached"" size for images on the catalog pages.", "Bestimme Standard ""cached"" Größe für Bilder auf der Katalogseite."
185
+ "Thumbnail image cache-width", "Cachebreite der Vorschauansicht"
186
+ "Set the default ""cached"" size for thumbnails on the detail pages.", "Bestimme Standard ""cached"" Größe für Vorschaubilder auf der Detailseite."
187
+ "Thumbnail image cache-height", "Cachehöhe der Vorschauansicht"
188
+ "Set the default """cached"" size for thumbnails on the detail pages.", "Bestimme Standard ""cached"" Größe für Vorschauansichten auf der Detailseite."
189
+ "Choose image type to be displayed if catalogue thumbnail is not available", "Wählen SIe den anzuzeigenden Bildtypen für den Fall, das keine Vorschauansicht verfügbar ist"
190
+ "Choose what kind of image of product that I would like to show in catalogue listing in mobile app.", "Wählen Sie welche Art Produktbild auf der Katalogliste in der mobilen App erscheinen soll."
191
+ "Choose image type to be displayed on catalogue page", "Wählen Sie den anzuzeigenden Bildtyp für die Katalogseite"
192
+ "Choose what kind of image of product that I would like to show in product listing in mobile app.", "Wählen Sie welche Art Produktbild in der Produktliste der mobilen App angezeigt werden soll."
193
+ "Stock Settings", "Inventareinstellungen"
194
+ "Display products availability in stock in mobile app", "Lieferverfügbarkeit in der mobilen App anzeigen"
195
+ "Developer", "Entwickler"
196
+ "Enable debug logging", "Debug Log In aktivieren"
197
+ "Log requests to japi.log. Disable in production.", "Anfragen zu japi.log. schicken. Deaktivierung wird bearbeitet."
198
+ "Sales", "Sales"
199
+ "Order Details", "Bestelldetails"
200
+ "Settings", "Einstellungen"
201
+ "Use Onepage checkout for mobile app","In der mobilen App ""Onepage""-Zahlung verwenden"
202
+ "Select to use JMango360 Onepage responsive web checkout for mobile app instead of default Magento checkout","Anstatt voreingestellte Magento Zahlung, ""Onepage""-Zahlung in der mobilen App verwenden"
203
+ "Custom Layout Update","Custom Layout Update"
204
+ "Enter xml layout update code here, it will only affect JMango360 Onepage checkout page","XML Layout Code hier eingeben, es wird nur die JMango360 ""Onepage"" Zahlungsseite betreffen"
205
+ "Custom CSS","Custom CSS"
206
+ "Enter css code here, it will only append to JMango360 Onepage checkout page","CSS Layout Code hier eingeben, es wird nur die JMango360 ""Onepage"" Zahlungsseite betreffen"
207
+ "Hide non value additional attributes","Attribute ohne Wert verstecken"
208
+ "Attribute whose value is N/A or blank will not be displayed on Additional Information on product detail page","Attribute mit N/A oder blanke Attribute werden nicht in zusätzlichen Produktinformationen angezeigt"
209
+ "Mobile App Login Settings","Mobile App Log-In Einstellungen"
210
+ "App users must login to see product prices","App-Nutzer müssen sich einloggen um Preise zu sehen und der Zum Warenkorb hinzufügen Button"
211
+ "This will prevent mobile app user using app without an account.","Das wird mobile App-Nutzer ohne Kundenkonto von der Nutzung abhalten."
212
+ "Discount Codes","Discount Codes"
213
+ "Enter your coupon code if you have one.","Enter your coupon code if you have one."
214
+ "Apply Coupon","Apply Coupon"
215
+ "Cancel Coupon","Cancel Coupon"
216
+ "Enable Order From in orders list","Bestellungen von Bestellliste aktivieren"
217
+ "Select to view which orders are from JMango360","Sehen Sie welche Bestellungen von JMango360 sind"
218
+ "Enable JMango360 User in Customers list","JMango360 Nutzer in Kundenliste aktivieren"
219
+ "Select to view which customers are from JMango360","Sehen Sie welche Kunden von JMango360 sind"
220
+ "Adding extra attributes to registration form","Zusätzliche Elemente zum Anmeldeformular hinzufügen"
221
+ "Adding these attributes to customer registration form in mobile app","Diese Attribute zur Kundenanmeldung in mobiler App hinzufügen"
222
+ "Show image of child product in Grouped Product Detail on mobile","Bild von Kinderprodukt in gruppierten Produktdetails mobil anzeigen"
223
+ "Please wait","Bitte warten"
224
+ "A new version of the JMango360 Mobile plugin %s is available. Please update.","A new version of the JMango360 Mobile plugin %s is available. Please update."
225
+ "Group ID not found.","Group ID not found."
226
+ "Group not found.","Group not found."
227
+ "Sales Settings","Sales Settings"
228
+ "Customer Settings","Customer Settings"
229
+ "Street Address #2 Label", "Street Address #2 Label"
230
+ "Set the label for 2nd street address.", "Set the label for 2nd street address."
231
+ "Street Address #2 as Required", "Street Address #2 as Required"
232
+ "Set if the street address field is required input.", "Set if the street address field is required input."
233
+ "Street Address #2 Validation", "Street Address #2 Validation"
234
+ "Set type of input for the street address field.", "Set type of input for the street address field."
235
+ "Street Address #3 Label", "Street Address #3 Label"
236
+ "Set the label for 3rd street address.", "Set the label for 3rd street address."
237
+ "Street Address #3 as Required", "Street Address #3 as Required"
238
+ "Street Address #4 Label", "Street Address #4 Label"
239
+ "Set the label for 4th street address.", "Set the label for 4th street address."
240
+ "Set if the street address field is required input.", "Set if the street address field is required input."
241
+ "Please close this form and login with your new account.", "Please close this form and login with your new account."
242
+ "Enable Hide on App on Manage Products","Schalten Sie bei Produkte verwalten ""Verbergen im App"" an"
243
+ "On Manage Products enable Hide on App","Schalten Sie bei Produkte verwalten ""Verbergen im App"" an"
244
+ "Enable this option to choose if a product is hidden on app or not","Schalten Sie diese Option ein wenn Sie ein Produktim App zeigen und verbergen möchten"
245
+ "Enable this option to choose whether or not this product is visible in the app","Enable this option to choose whether or not this product is visible in the app"
246
+ "Hide on JMango360","Hide on JMango360"
247
+ "Hide on JMango360 App","Hide on JMango360 App"
248
+ "Override Default Sort Direction","Override Default Sort Direction"
249
+ "Choose to use direction here instead of mobile default sort direction.","Choose to use direction here instead of mobile default sort direction."
250
+ "Re-run SQL upgrade","Neu-start SQL Upgrade"
251
+ "Re-run successfully.","Neu-start erfolgreich."
app/locale/es_ES/Jmango360_Japi.csv ADDED
@@ -0,0 +1,252 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ "Connection credentials","Credenciales de conexión"
3
+ "This account is not confirmed. <a href='%s'>Click here</a> to resend confirmation email.","Esta cuenta no está confirmada. <a href='%s'>Haga clic aquí</a> para reenviar el correo electrónico de confirmación."
4
+ "Customer is already logged in.","El usuario ya ha iniciado sesión."
5
+ "Could not login","Could not login"
6
+ "Login and password are required.","Se requiere usuario y contraseña."
7
+ "Account is created. Please check email to confirm.","Account is created. Please check email to confirm."
8
+ "Invalid Exception code '%d'", "Código de excepción inválido '%d'"
9
+ "Order List", "Lista de pedidos"
10
+ "Order #", "Número de pedido"
11
+ "Order Date", "Fecha de pedido"
12
+ "Billing Country", "Detalles de factura"
13
+ "Shipping Country", "Información de envío"
14
+ "Qty. Ordered", "Cantidad pedida"
15
+ "Subtotal", "Subtotal"
16
+ "Total", "Total"
17
+ "Invoiced", "Facturado"
18
+ "Status", "Estado de su envío"
19
+ "Action", "Acción"
20
+ "View", "Vista"
21
+ "Show Report", "Mostrar informe"
22
+ "Total Customers from JMango360 Report", "Total de clientes en el informe JMango360"
23
+ "JMango360 Report - Total number of registered customers","Total de clientes en el informe JMango360"
24
+ "Total Ordered from JMango360 Report", "Total de pedidos en el informe JMango360"
25
+ "JMango360 Report - Total number of orders","Total de pedidos en el informe JMango360"
26
+ "Total Sales from JMango360 Report", "Total de ventas en el informe JMango360"
27
+ "JMango360 Report - Total number of sales","Total de ventas en el informe JMango360"
28
+ "Chart", "Gráfico"
29
+ "Period", "Período"
30
+ "Customers", "Clientes"
31
+ "Orders", "Pedidos"
32
+ "Order From", "Pedido desde"
33
+ "JMango360 User", "Usuario JMango360"
34
+ "Download", "Descarga"
35
+ "Clear", "Eliminar"
36
+ "No", "No"
37
+ "Yes", "Sí"
38
+ "Invalid token", "Token inválido"
39
+ "Session expired.", "Su sesión ha caducado."
40
+ "No rest model found.", "No rest model found."
41
+ "Resource method not implemented", "Resource method not implemented"
42
+ "Minimum order amount is %s", "Cantidad mínima de pedido es %s"
43
+ "Guest checkout is not enabled", "El cierre de sesión para invitados no está disponible"
44
+ "Product ID invalid", "Identificación del producto no válida."
45
+ "Something is wrong with the order.", "Hay un problema con su pedido."
46
+ "Something is wrong with the quote or order.", "Hay un problema con su pedido o con la cantidad de su pedido."
47
+ "Cart is empty.", "Su cesta de compra está vacía."
48
+ "Multishipping not implemented yet.", "Los envíos múltiples aún no están disponibles."
49
+ "Checkout method not implemented yet: ", "El método de pago no está disponible todavía: "
50
+ "Could not log-out customer", "No ha sido posible cerrar sesión"
51
+ "Please login.", "Por favor, incie sesión."
52
+ "Country code cannot be empty", "No se puede dejar en blanco el código del país"
53
+ "Country does not exist: ", "El país no existe: "
54
+ "Country does not exist", "El país no existe"
55
+ "Store not found", "No se ha encontrado la tienda"
56
+ "Not allowed.", "No permitido."
57
+ "Set store option %s not found", "Ajuste de opción de tienda %s no encontrada"
58
+ "Set store option cannot be empty.", "Por favor, seleccione una tienda."
59
+ "Product ID invalid", "La identificación del producto es inválida."
60
+ "Product not found", "Product not found"
61
+ "Please login first!", "Por favor, inicie sesión!"
62
+ "Cannot specify product.", "Producto no especificado."
63
+ "Item not found", "Artículo no encontrado"
64
+ "%1$s has been updated in your wishlist.", "%1$s Se ha añadido a tu lista de deseos."
65
+ "An error occurred while updating your wishlist.", "Se ha producido un error al actualizar tu lista de deseos."
66
+ "Cannot specify your wishlist item.", "No se ha podido especificar el artículo en tu lista de deseos."
67
+ "The product does not exist.", "El producto no existe."
68
+ "Wishlist item removed", "El artículo se ha eliminado de su lista de deseos"
69
+ "An error occurred while deleting the item from wishlist: %s", "Se ha producido un error al eliminar el artículo de su lista de deseos: %s"
70
+ "An error occurred while deleting the item from wishlist.", "Se ha producido un error al eliminar el artículo de su lista de deseos."
71
+ "Can't save description %s", "No es posible guardar la descripción: %s"
72
+ "Can't delete item from wishlist", "No es posible eliminar el artículo de su lista de deseos"
73
+ "Can't save qty %s", "No es posible guardar la cantidad %s"
74
+ "Wishlist updated successfully", "Su lista de deseos se ha actualizado"
75
+ "Can't update wishlist", "No se ha podido actualizar su lista de deseos"
76
+ "No item updated", "Ningún artículo ha sido añadido"
77
+ "Cannot specify product", "No se puede especificar el producto"
78
+ "%s has been added to your wishlist.", "%s se ha añadido a su lista de deseos."
79
+ "An error occurred while adding item to your wishlist: %s", "Se ha producido un error al añadir un artículo a su lista de deseos: %s"
80
+ "An error occurred while adding item to your wishlist", "Se ha producido un error al añadir un artículo a su lista de deseos"
81
+ "Wishlist not allowed", "Lista de deseos no permitida"
82
+ "Wishlist doesn't exist", "Lista de deseos inexistente."
83
+ "Customer not logged in", "El cliente no ha iniciado la sesión"
84
+ "Coupon is not valid: ", "El cupón no es válido: "
85
+ "Coupon could not be applied.", "No ha sido posible aplicar el cupón."
86
+ "%s: Minimum quantity allowed for purchase is %s.", "%s: La cantidad mínima de compra es de %s."
87
+ "%s: Maximum quantity allowed for purchase is %s.", "%s: La cantidad máxima de compra es de %s."
88
+ "%s was added to your shopping cart.", "%s fue añadido a su cesta de la compra."
89
+ "No cart data found.", "No se ha encontrado información sobre su cesta de compra."
90
+ "Your shopping cart has been updated.", "Su cesta de la compra ha sido actualizada."
91
+ "No bundle-product cart item ID found.", "La identificación del paquete de productos no ha sido encontrada en su cesta de la compra."
92
+ "The product you are trying to delete could not be found in the cart (item id is %s not found in cart).", "El producto que intenta eliminar no se encuentra en su cesta de la compra (la identificación del artículo %s no se encuentra en su cesta de la compra)."
93
+ "The product has been deleted from your shopping cart.", "El producto ha sido eliminado de su cesta de compra."
94
+ "Category not found.", "Categoría no encontrada."
95
+ "Category not available.", "Categoría no disponible."
96
+ "No category found.", "No se ha encontrado la categoría."
97
+ "Your search returns no results.", "No se han encontrado resultados para su búsqueda."
98
+ "Query cannot be empty.", "La casilla de consultas no puede permanecer vacia."
99
+ "Methods are not complete yet. Cart shipping address is not yet completed and saved.", "No se han completado todos los detalles sobre los métodos. La dirección de envío aún no ha sido completada y guardada."
100
+ "Methods are not complete yet. Cart is empty.", "Los detalles sobre los métodos no se han completado todavía. Su cesta de la compra está vacía."
101
+ "Shipping method has no shipping carrier object: %s", "El modo de envío no tiene ningún transportista disponible: %s"
102
+ "Carrier object has no collectRates method: %s", "El transportista no dispone del método collectRates: %s"
103
+ "Shipping method has no rates object: %s", "El modo de envío no dispone rates object: %s"
104
+ "Shipping method has no getAllRates function: %s", "El modo de envío no contiene la función getAllRates: %s"
105
+ "Shipping method has no rates: %s", "El modo de envío no tiene tasas: %s"
106
+ "Shipping method can not be empty.", "El modo de envío no puede permanecer vacío."
107
+ "This shipping method is currently not available.", "El modo de envío no está disponible en este momento."
108
+ "Customer shipping address not found.", "Dirección de envío no encontrada."
109
+ "Customer shipping address email not found.", "Dirección de correo electrónico para el envío no encontrada."
110
+ "Customer billing address not found.", "Dirección de facturación no encontrada."
111
+ "Payment method cannot be empty.", "El método de pago no puede permanecer vacío."
112
+ "Email cannot be empty.", "Su dirección de correo electrónico no puede permanecer vacía."
113
+ "This payment method is currently not available.", "Este método de pago no está disponible en este momento."
114
+ "Please add ", "Por favor, añada "
115
+ "Request info not matches the order.", "La información requerida no concuerda con el pedido."
116
+ "No payment provider to redirect found.", "No se ha encontrado un proveedor de medios de pago al que ser redireccionado."
117
+ "Request info does not match the quote. Probably the cart is ordered or the session is expired.", "La información requerida no concuerda con la cuota. Probablemente la cesta ya haya sido pedida o la sesión ha caducado."
118
+ "Cart is no longer active.", "La cesta ya no está disponible."
119
+ "Replaced by new order.", "Sustituido por un nuevo pedido."
120
+ "Cannot save the address: ", "No se puede guardar la dirección: "
121
+ "The address does not belong to this customer.", "La dirección no pertenece a este cliente."
122
+ "Default billing address can not be removed.", "La dirección de facturación por defecto no se puede eliminar."
123
+ "Default shipping address can not be removed.", "La dirección de envío por defecto no puede ser eliminada."
124
+ "An error occurred while deleting the address.", "Se ha producido un error al eliminar la dirección."
125
+ "Address ID can not be empty.", "Los detalles sobre la dirección son obligatorios."
126
+ "New password field cannot be empty.", "New password field cannot be empty."
127
+ "Invalid current password", "Contraseña no válida"
128
+ "The account information has been saved.", "La información de la cuenta ha sido guardada."
129
+ "Could not retrieve list: ", "No se ha podido recuperar la lista: "
130
+ "Order not found (no ID).", "Pedido no encontrado (No hay ID)."
131
+ "Invalid email address.", "El correo electrónico no es válido."
132
+ "Please enter your email.", "Por favor, introduzca su correo electrónico."
133
+ "This account needs confirmation. See in confirmation email.", "Su cuenta debe ser verificada. Por favor, compruebe su correo de confirmación."
134
+ "No products found.", "Ningún producto encontrado."
135
+ "Category not found.", "Categoría no encontrada."
136
+ "Cannot find customer ID, please try again!", "No ha sido posible encontrar el ID del cliente, por favor, inténtelo de nuevo!"
137
+ "You must leave at least one payment method available.", "Debe dejar disponible al menos un método de pago."
138
+ "You must leave at least one shipping method available.", "Debe dejar disponible al menos un método de envío."
139
+ "None", "Ninguno"
140
+ "Base Image", "Imagen de base"
141
+ "Small Image", "Imagen pequeña"
142
+ "Thumbnail", "Miniatura"
143
+ "Shipping Excl. Tax (%s)", "Envío libre de impuestos (%s)"
144
+ "Shipping Incl. Tax (%s)", "Envío incluyendo impuestos (%s)"
145
+ "Subtotal (Excl. Tax)", "Subtotal (Excluyendo impuestos)"
146
+ "Subtotal (Incl. Tax)", "Subtotal (Incluyendo impuestos)"
147
+ "Grand Total Excl. Tax", "Importe Total excluyendo impuestos"
148
+ "Grand Total Incl. Tax", "Importe Total incluyendo impuestos"
149
+ "Unable to set Payment Method.", "Imposible seleccionar método de pago."
150
+ "Reports", "Informes"
151
+ "Order Details", "Detalles del pedido"
152
+ "Sales Reports", "Informe de ventas"
153
+ "Orders Reports", "Informe de pedidos"
154
+ "Customers Reports", "Informe de clientes"
155
+ "Version", "Versión"
156
+ "The plugin version", "Versión plug-in"
157
+ "User Name", "Nombre de usuario"
158
+ "This username will be checked from every App while a session is set up between the App and the Magento store.", "Este usuario será comprobado desde todas las aplicaciones, siempre y cuando haya una sesión establecida entre la App y Magento store."
159
+ "Api Key", "Api Key"
160
+ "This key will be checked from every App while a session is set up between the App and the Magento store.", "Esta ‘key’ se comprobará desde cualquier aplicación mientras haya una sesión establecida entre App y Magento store."
161
+ "Use token for Api communications", "Use Token para comunicaciones Api"
162
+ "Use token will add check and refresh the token with every request.", "El uso del token añadirá. Compruebe y actualice el símbolo con cada petición."
163
+ "Catalogue Settings", "Ajustes del catálogo"
164
+ "Include all active categories", "Incluir todas las categorías disponibles"
165
+ "Include all ""Active"" categories regardless of whether or not they are included in navigation", "Incluir todas las categorías disponibles sin importar, si están o no, incluidas en el navegador."
166
+ "Display attribute on Product Listing", "Mostrar las características de los productos en los listados"
167
+ "This attribute will be displayed in product listing", "Esta característica será mostrada en los listados de productos"
168
+ "Display attribute on Product Details", "Mostrar características en los detalles del producto."
169
+ "This attribute will be displayed in product details", "Esta característica será mostrada en los detalles del producto"
170
+ "Mobile App Checkout Settings", "Ajustes de cierre de sesión de la aplicación móvil"
171
+ "Excluded shipping methods", "Excluir modos de envío"
172
+ "Select one or more, but not all shipping methods that are not suitable/compatible to be used in mobile app environment. This can be set anytime during or after creation of JMango360 application.", "Seleccione uno o más, pero no todos los métodos no compatibles con la aplicación móvil. Esta opción es ajustable en cualquier momento durante o después de la creación de la aplicación JMango360."
173
+ "Excluded payment methods", "Excluir métodos de pago"
174
+ "Select one or more, but not all payment methods that are not suitable/compatible to be used in mobile app environment. This can be set anytime during or after creation of JMango360 application.", "Selecciones uno o más, pero no todos los métodos de pago no compatibles con la aplicación móvil. Esta opción es ajustable en todo momento durante o después de la creación de la aplicación JMango360."
175
+ "Web checkout URL", "URL de cierre de sesión en la Web"
176
+ "Enter custom checkout url of website if Jmango360 plugin could not detect. Ex: checkout/onepage.", "Introduzca su URL personalizado para el cierre de sesión de la página web si Jmango360 no lo ha detectado. Ej: checkout/onepage."
177
+ "Product image gallery settings", "Ajustes de la galería de productos"
178
+ "Detail page image cache-width", "Imágenes con ancho caché en la página de detalles"
179
+ "Set the default ""cached"" size for ""big"" images on the detail pages.", "Establezca el tamaño caché por defecto para imágenes grandes en la página de detalles."
180
+ "Detail page image cache-height", "Imágenes con altura caché en la página de detalles"
181
+ "Set the default ""cached"" size for ""big"" images on the detail pages.", "Establezca el tamaño caché por defecto para imágenes grandes en la página de detalles."
182
+ "Catalogue image cache-width", "Imagen de catálogo con anchura caché"
183
+ "Set the default ""cached"" size for images on the catalogue pages.", "Establezca el tamaño caché por defecto para imágenes del catálogo."
184
+ "Catalogue image cache-height", "Imagen de catálogo con altura caché"
185
+ "Set the default ""cached"" size for images on the catalog pages.", "Ajuste el tamaño caché por defecto para imágenes del catálogo."
186
+ "Thumbnail image cache-width", "Imagen en miniatura con ancho caché"
187
+ "Set the default ""cached"" size for thumbnails on the detail pages.", "Establezca el tamaño caché por defecto para imágenes en miniatura en las páginas de detalles."
188
+ "Thumbnail image cache-height", "Imagen en miniatura con altura caché"
189
+ "Set the default """cached"" size for thumbnails on the detail pages.", "Establezca el tamaño caché por defecto para imágenes en miniatura en la página de detalles."
190
+ "Choose image type to be displayed if catalogue thumbnail is not available", "Elija el tipo de imagen que se mostrará en caso de que la miniatura del catálogo no se encuentre disponible"
191
+ "Choose what kind of image of product that I would like to show in catalogue listing in mobile app.", "Elija la imagen del producto que se mostrará en el listado de la aplicación móvil."
192
+ "Choose image type to be displayed on catalogue page", "Elija el tipo de imagen que se mostrará en la página de catálogo"
193
+ "Choose what kind of image of product that I would like to show in product listing in mobile app.", "Elija la imagen del producto que se mostrará en el listado de la aplicación móvil."
194
+ "Stock Settings", "Ajustes del inventario"
195
+ "Display products availability in stock in mobile app", "Mostrar en la aplicación móvil la disponibilidad de productos en el inventario"
196
+ "Developer", "Desarrollador"
197
+ "Enable debug logging", "Permitir el registro de depuración"
198
+ "Log requests to japi.log. Disable in production.", "Registrar el pedido de japi.log. Desabilitarlo en producción."
199
+ "Sales", "Ventas"
200
+ "Order Details", "Detalles de pedido"
201
+ "Settings", "Ajustes"
202
+ "Use Onepage checkout for mobile app","Use Onepage checkout for mobile app"
203
+ "Select to use JMango360 Onepage responsive web checkout for mobile app instead of default Magento checkout","Select to use JMango360 Onepage responsive web checkout for mobile app instead of default Magento checkout"
204
+ "Custom Layout Update","Custom Layout Update"
205
+ "Enter xml layout update code here, it will only affect JMango360 Onepage checkout page","Enter xml layout update code here, it will only affect JMango360 Onepage checkout page"
206
+ "Custom CSS","Custom CSS"
207
+ "Enter css code here, it will only append to JMango360 Onepage checkout page","Enter css code here, it will only append to JMango360 Onepage checkout page"
208
+ "Hide non value additional attributes","Hide non value additional attributes"
209
+ "Attribute whose value is N/A or blank will not be displayed on Additional Information on product detail page","Atrribute whose value is N/A or blank will not be displayed on Additional Infomation on product detail page"
210
+ "Mobile App Login Settings","Mobile App Login Settings"
211
+ "App users must login to see product prices","App users must login to see product prices"
212
+ "This will prevent mobile app user using app without an account.","This will prevent mobile app user using app without an account."
213
+ "Discount Codes","Discount Codes"
214
+ "Enter your coupon code if you have one.","Enter your coupon code if you have one."
215
+ "Apply Coupon","Apply Coupon"
216
+ "Cancel Coupon","Cancel Coupon"
217
+ "Enable Order From in orders list","Enable Order From in orders list"
218
+ "Select to view which orders are from JMango360","Select to view which orders are from JMango360"
219
+ "Enable JMango360 User in Customers list","Enable JMango360 User in Customers list"
220
+ "Select to view which customers are from JMango360","Select to view which customers are from JMango360"
221
+ "Adding extra attributes to registration form","Adding extra attributes to registration form"
222
+ "Adding these attributes to customer registration form in mobile app","Adding these attributes to customer registration form in mobile app"
223
+ "Show image of child product in Grouped Product Detail on mobile","Show image of child product in Grouped Product Detail on mobile"
224
+ "Please wait","Please wait"
225
+ "A new version of the JMango360 Mobile plugin %s is available. Please update.","A new version of the JMango360 Mobile plugin %s is available. Please update."
226
+ "Group ID not found.","Group ID not found."
227
+ "Group not found.","Group not found."
228
+ "Sales Settings","Sales Settings"
229
+ "Customer Settings","Customer Settings"
230
+ "Street Address #2 Label", "Street Address #2 Label"
231
+ "Set the label for 2nd street address.", "Set the label for 2nd street address."
232
+ "Street Address #2 as Required", "Street Address #2 as Required"
233
+ "Set if the street address field is required input.", "Set if the street address field is required input."
234
+ "Street Address #2 Validation", "Street Address #2 Validation"
235
+ "Set type of input for the street address field.", "Set type of input for the street address field."
236
+ "Street Address #3 Label", "Street Address #3 Label"
237
+ "Set the label for 3rd street address.", "Set the label for 3rd street address."
238
+ "Street Address #3 as Required", "Street Address #3 as Required"
239
+ "Street Address #4 Label", "Street Address #4 Label"
240
+ "Set the label for 4th street address.", "Set the label for 4th street address."
241
+ "Set if the street address field is required input.", "Set if the street address field is required input."
242
+ "Please close this form and login with your new account.", "Please close this form and login with your new account."
243
+ "Enable Hide on App on Manage Products","Enable Hide on App on Manage Products"
244
+ "On Manage Products enable Hide on App","On Manage Products enable Hide on App"
245
+ "Enable this option to choose if a product is hidden on app or not","Enable this option to choose if a product is hidden on app or not"
246
+ "Enable this option to choose whether or not this product is visible in the app","Enable this option to choose whether or not this product is visible in the app"
247
+ "Hide on JMango360","Hide on JMango360"
248
+ "Hide on JMango360 App","Hide on JMango360 App"
249
+ "Override Default Sort Direction","Override Default Sort Direction"
250
+ "Choose to use direction here instead of mobile default sort direction.","Choose to use direction here instead of mobile default sort direction."
251
+ "Re-run SQL upgrade","Re-run SQL upgrade"
252
+ "Re-run successfully.","Re-run successfully."
app/locale/fr_FR/Jmango360_Japi.csv CHANGED
@@ -173,7 +173,7 @@
173
  "This attribute will be displayed in product details", "Cet attribut sera affiché sur les détails des produits"
174
  "Mobile App Checkout Settings", "Réglage du paiement des applications mobiles"
175
  "Excluded shipping methods", "Méthode d'expédition exclues"
176
- "Select one or more but not all shipping methods that are not suitable/compatible to be used in mobile app environment. This can be set anytime during or after creation of JMango360 application.", "Sélectionnez une ou plusieurs mais pas toutes les méthodes d'expédition qui ne sont pas appropriées/compatibles à l'utilisation dans l'environnement des applications mobiles. Cela peut être réglé à tout moment pendant ou après la création de l'application Jmango360."
177
  "Excluded payment methods", "Moyens de paiement exclus"
178
  "Select one or more, but not all payment methods that are not suitable/compatible to be used in mobile app environment. This can be set anytime during or after creation of JMango360 application.", "Sélectionnez une ou plusieurs mais pas tous les moyens de paiement qui ne sont pas appropriées/compatibles à l'utilisation dans l'environnement des applications mobiles. Cela peut être réglé à tout moment pendant ou après la création de l'application Jmango360."
179
  "Web checkout URL", "Lien de la page de paiement"
173
  "This attribute will be displayed in product details", "Cet attribut sera affiché sur les détails des produits"
174
  "Mobile App Checkout Settings", "Réglage du paiement des applications mobiles"
175
  "Excluded shipping methods", "Méthode d'expédition exclues"
176
+ "Select one or more, but not all shipping methods that are not suitable/compatible to be used in mobile app environment. This can be set anytime during or after creation of JMango360 application.", "Sélectionnez une ou plusieurs mais pas toutes les méthodes d'expédition qui ne sont pas appropriées/compatibles à l'utilisation dans l'environnement des applications mobiles. Cela peut être réglé à tout moment pendant ou après la création de l'application Jmango360."
177
  "Excluded payment methods", "Moyens de paiement exclus"
178
  "Select one or more, but not all payment methods that are not suitable/compatible to be used in mobile app environment. This can be set anytime during or after creation of JMango360 application.", "Sélectionnez une ou plusieurs mais pas tous les moyens de paiement qui ne sont pas appropriées/compatibles à l'utilisation dans l'environnement des applications mobiles. Cela peut être réglé à tout moment pendant ou après la création de l'application Jmango360."
179
  "Web checkout URL", "Lien de la page de paiement"
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Jmango360_Japi</name>
4
- <version>2.9.3</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.apache.org/licenses/LICENSE-2.0">Apache License</license>
7
  <channel>community</channel>
@@ -31,9 +31,9 @@ Other generic mobile apps that you can add and configure:&#xD;
31
  For more details on JMango360 please visit our website http://www.jmango360.com or out knowledge site http://support.jmango360.com</description>
32
  <notes>* Bug fixes</notes>
33
  <authors><author><name>Duc Ngo</name><user>jmango360</user><email>duc@jmango360.com</email></author></authors>
34
- <date>2016-11-21</date>
35
- <time>08:35:42</time>
36
- <contents><target name="magecommunity"><dir name="Jmango360"><dir name="Japi"><dir name="Block"><dir name="Adminhtml"><dir name="Catalog"><dir name="Product"><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="Hide.php" hash="e4ba69f83fa56a9e79e2a6c7750510f4"/></dir></dir></dir></dir></dir><dir name="Order"><file name="Grid.php" hash="22273d3d0acaf1b0a093e524f87c6aff"/></dir><file name="Order.php" hash="04e94160608b989286aebeb190299565"/><dir name="Report"><dir name="Chart"><file name="Customers.php" hash="5fde8fdbf5d33e63374b8928249fc58e"/><file name="Orders.php" hash="2e5b31bcf202cf4f726245f4c93de3bc"/><file name="Sales.php" hash="d4d7f0e6db1a1c4b509ce5b6439a92d2"/></dir><dir name="Customers"><file name="Chart.php" hash="cff7f9590804c5527fa80f3e2fb3126e"/><file name="Grid.php" hash="92c0a7ee2bb5d8acf26e29a030db4263"/></dir><file name="Customers.php" hash="d2aeda2106b7a66ce23de7e47eafbaa0"/><dir name="Filter"><dir name="Form"><file name="Orders.php" hash="921a673ca567255db3f8e078667bce16"/></dir><file name="Form.php" hash="7b6741ce28ca55c29a5841c41dcb43ce"/></dir><dir name="Orders"><file name="Chart.php" hash="bd3959f7cfb8f64f22a73d974535def3"/><file name="Grid.php" hash="5b4f21bf95f5affb9dd4bceef4a5e710"/></dir><file name="Orders.php" hash="b3852554b219e57c6355cd1541d3866d"/><dir name="Sales"><file name="Chart.php" hash="cfcc4b86ce4cbf71eeb1342639c390f0"/><file name="Grid.php" hash="ad23e6eafa8faca5749ce2ed03cabdf3"/></dir><file name="Sales.php" hash="4c92553c7994bb004c019a68284ad731"/></dir><dir name="System"><dir name="Config"><dir name="Form"><file name="Button.php" hash="45c2b00abe588f0bcc33545432d5e0d3"/><file name="Log.php" hash="578fd58700caded2f8212eaf168c0b6f"/><file name="User.php" hash="765c49cc51ef232c5e36302921197bde"/><file name="Version.php" hash="ed37a968210f8633570cf0851f0c98c9"/></dir></dir></dir><dir name="Widget"><dir name="Form"><dir name="Renderer"><dir name="Element"><file name="Chart.php" hash="248436ebdd189390e4f55cd6031e5394"/></dir></dir></dir></dir></dir><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="e2e09262d227de4bbe92f09787c36232"/><file name="Category.php" hash="f8bc45fa70f86862e6cbe7c9746a1edc"/><file name="Decimal.php" hash="d0d334970f46b2f9f03d0a8ab362015f"/><file name="Price.php" hash="fa47844068b1e00a068aaff82f068e3a"/></dir><file name="View.php" hash="24ac37f0280492b836e7b71a9ed42edb"/></dir><dir name="Product"><file name="List.php" hash="792c386d84b00f91daa270f8e1bd5eee"/></dir></dir><dir name="Catalogsearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="825ecf71c564eb9d76c39abf533b5d44"/></dir></dir><file name="Layer.php" hash="f55660c9d2812781c9b956cda7b353eb"/></dir><dir name="Checkout"><dir name="Cart"><file name="Totals.php" hash="03b89b266dbc21421cd3ee3ebdaa5ecd"/></dir><dir name="Onepage"><file name="Addjs.php" hash="b06fbe98c4c16c472215d4f0e4e11d92"/><file name="Address.php" hash="5aa5083ce32d5710543b2716ed362336"/><file name="Billing.php" hash="9ed5e52390ec384e0742fe5cc035f02b"/><file name="Shipping.php" hash="875d5e21ed3ac9adffe5fa90501dd886"/></dir><file name="Onepage.php" hash="9252a6d5af9d169271208f6a05b9d106"/></dir><file name="Form.php" hash="da6604d3649e5a239ba968ac66203078"/><dir name="GiftMessage"><dir name="Message"><file name="Inline.php" hash="9babd88f15d4f18f3e650e40403a9e30"/></dir></dir></dir><dir name="Controller"><file name="Abstract.php" hash="407a9629e31c0bde55cdb06dd5ce6c38"/></dir><file name="Exception.php" hash="4c7ba2f3f16b67d29588e5c5515c2c29"/><dir name="Helper"><dir name="Adminhtml"><dir name="Report"><file name="Order.php" hash="b6109c1616e5d4fcc5cf0eb9866c6c51"/></dir></dir><file name="Data.php" hash="15e50dadfc485f774df4cdc7a6ea140e"/><file name="Debug.php" hash="51b4ae79ed3bed1be80ba580f5ed983d"/><dir name="GiftMessage"><file name="Message.php" hash="b0fdee7a8c8e247b8ca483b82c18bf2a"/></dir><dir name="Product"><file name="Bundle.php" hash="f207f070f5407e6f7de8d8a869a4ac4a"/><file name="Configurable.php" hash="90aa61463ffd20d2c9de08831c3d4db5"/><file name="Downloadable.php" hash="15f566287b4c9a943b261f4ecb79ccad"/><file name="File.php" hash="ad3730fae76e324f098da2991cf6283e"/><file name="Grouped.php" hash="88823ffed2223f91df4eeeecda771b1d"/><file name="Media.php" hash="84069dbfd8759b3816367822c9a4a287"/><file name="Options.php" hash="c4f422fa68773044ea838476e7e846ef"/><file name="Review.php" hash="53b188b3a700636302b7942dadc40c9b"/><file name="TierPrice.php" hash="c6657d673ffb763e3daf75d6baf9ef45"/></dir><file name="Product.php" hash="e7fd2a7346f642046f421dbbd45487b6"/><file name="Tax.php" hash="9cf654643cfd6bfe4c9be2d852305499"/></dir><dir name="Model"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="567bfc8c4dca52f4c445bb7b39d65586"/><file name="Decimal.php" hash="1c1c15b3e0a38d1c0eb4734df6d965a6"/><file name="Price.php" hash="d28f561aec670d6613add8665107b68d"/></dir></dir></dir><dir name="Catalogsearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="e78da872e86ac57b1c2c6d5d7abb62da"/></dir></dir></dir><dir name="Core"><file name="Session.php" hash="dc122a47f18a1118e7557cf79d837196"/></dir><file name="Dispatcher.php" hash="0032dd91e78f3a8145420be5b069ebd8"/><dir name="Magpleasure"><dir name="Tierprices"><file name="Price.php" hash="96955e13f0153cba6bb41c2b3e23904f"/></dir></dir><file name="Observer.php" hash="00bbb068b966fd4624651a78f19fc6f3"/><dir name="Renderer"><file name="Json.php" hash="01a6d0947bb0de340fb35082dbdebdb3"/></dir><file name="Renderer.php" hash="f6304d75dc46db79b4e5d0a36448058e"/><file name="Request.php" hash="e0bf50273db6a631ef5162da23d480ac"/><dir name="Resource"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="2e2fbe3a4defdc57c67c6da4f4c394ab"/><file name="Decimal.php" hash="3c0754c63f624c844a5d284897d4d67b"/><file name="Price.php" hash="2cfa115132865391e29f6d7d702ee2fc"/></dir></dir></dir><dir name="Report"><dir name="Order"><file name="Collection.php" hash="252dc8575563cd584451b9a24c7e49ea"/></dir></dir><dir name="Sales"><dir name="Report"><dir name="Order"><dir name="Collection"><file name="Aggregated.php" hash="fb1f5302e04cced336a65fb345c9f918"/><file name="Live.php" hash="23b0464c592f45657e4e472e72d34355"/></dir></dir><file name="Order.php" hash="acfb2f0982ed1eac58848ac6b9acb199"/></dir></dir><file name="Setup.php" hash="088e7250a113ca9999280b0705850427"/></dir><file name="Response.php" hash="786d845284e214a4af674bd38ee4fc0f"/><dir name="Rest"><dir name="Cart"><file name="Coupon.php" hash="b5f008680c754454bf11d4b56b1533c0"/><file name="Update.php" hash="6e6cd84881512aea20fb94b4ab08b37b"/></dir><file name="Cart.php" hash="98f9e206b88402a34f63cb9f5bed14b9"/><dir name="Catalog"><dir name="Category"><file name="Assignedproducts.php" hash="a0bd4a2ddefe157c944dfda14ea56d9b"/><file name="Tree.php" hash="222d4b24f1ca6a64c4cdff49c60492f8"/></dir><dir name="Search"><file name="Products.php" hash="b567e0013fe45a6a1d6e417e35cd97a4"/><file name="Terms.php" hash="4322eb9633f94d89b1940ef0bffb959f"/></dir></dir><file name="Catalog.php" hash="6ee5d37530675fe373dbecffb7a62364"/><dir name="Checkout"><file name="Methods.php" hash="177b27a7917d67fd40b407e2189c703e"/><file name="Onepage.php" hash="9bcfa633bd721d739dd44b37367b1cab"/><file name="Redirect.php" hash="77f4f72415a20eef5b4714150aa4b5dd"/><file name="Submit.php" hash="fcd12b9787c1339e012bd02e9d189f02"/></dir><file name="Checkout.php" hash="936f39d94f06b652026e7bd6980c92a3"/><dir name="Cms"><file name="Page.php" hash="0a78b2624bd4e69a6d8c7ee566ffd164"/></dir><file name="Cms.php" hash="e29088c9e5da473b0a430c66bc047f01"/><dir name="Customer"><file name="Address.php" hash="3ecccb0378aedb6ccc979b4a4fcce6d3"/><file name="Edit.php" hash="5ec3ebf05838baae0c1f6aaee10cfa5e"/><file name="Group.php" hash="f406c05b4cba55f7963ada7137228b5b"/><file name="List.php" hash="15d7cc18a6b22cadd911950dfe0673dc"/><file name="Login.php" hash="53905536f879fe296d33efcd4878d2b3"/><dir name="Order"><file name="List.php" hash="333c12255ce5312ffb4208ef19d8622e"/></dir><file name="Order.php" hash="3b270527b5827fcf576d9996f255d68d"/><file name="Password.php" hash="42ce37853acf0ed09224186b16ababa7"/><file name="Register.php" hash="a6d7f0dc7d669054e6f0adf21745d9e5"/></dir><file name="Customer.php" hash="a9e6efe88ce6762a187277d50ae7f35f"/><file name="Mage.php" hash="35ead94110e8328d693cdb6c6422d296"/><dir name="Product"><file name="Crosssell.php" hash="1622bd39c5c272da70e11335ea2b787f"/><file name="List.php" hash="fbb3a9f56e167cd6fad571521ff85bc5"/><file name="Purchased.php" hash="9f672085eee3b3b0dbc4ad73d30f73df"/><file name="Related.php" hash="c6fc3f0f9e9ec35001a92b6dc3e624e7"/><file name="Review.php" hash="3f563b8b87db83ef6ed31456d39b6329"/><file name="Search.php" hash="4dd132256337697e3f9cfa4f3733c2d0"/><file name="Upsell.php" hash="3acb5b81c55e62e07c41eeec1a402001"/><file name="Url.php" hash="ef302c7c1529e9e255cf89ec02b15c9b"/><file name="Viewed.php" hash="2deacf3f0896b5247e15a10c6dbbbfbf"/></dir><file name="Product.php" hash="7fde1fed86a12f4b1843fd5afb70bc2a"/><file name="Wishlist.php" hash="fea816fe81ce072bdfd5a632cfbb2995"/></dir><file name="Server.php" hash="8b2e034926d3af159525f6c9b91544b0"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Payment.php" hash="14bcf1d7c077a4c17c014174921a9228"/><file name="Shipping.php" hash="fa680415ba872da467a898d8995817bc"/></dir><dir name="Source"><dir name="Address"><file name="Attributes.php" hash="b8c2fd4ae5b52ee76d5f18d07c30b1e7"/><file name="Validatetype.php" hash="5ee18901d63ed0de77db6662f2365d4a"/></dir><file name="Attributes.php" hash="67eccf925d994a08177713fec118b7da"/><dir name="Catalog"><file name="Direction.php" hash="d48937f5678bda45f3580479b1fc3049"/><file name="Sortby.php" hash="e1f29a5efdab91e1bd3dcaca0c283c76"/></dir><file name="Catalogimage.php" hash="30b059c1c67d36f5938d22311194aded"/><dir name="Customer"><file name="Attributes.php" hash="f27a2cb3f53b5396ac9bdcbbab15d665"/></dir><file name="Defaultimage.php" hash="7bc4b41fbcd481affbe9c6985fb4a527"/><file name="Payment.php" hash="8553971f076bd048eea8eb24236f7896"/><file name="Shipping.php" hash="b063fa60f03955d15c049cdae9c6870a"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Japi"><file name="LogController.php" hash="0945b5406c46aff7257b0d21b5ad8491"/><file name="OrderController.php" hash="e6b7c1f5a7156a06fa3f51c32e6bbba9"/><file name="ReportController.php" hash="6ab29db3e2e59ea8f968dd8091a9dec2"/><file name="TroubleshootingController.php" hash="94ddc8e2713029ae0b503d708070d40c"/></dir></dir><file name="CheckoutController.php" hash="a02924b7ce411582e84f6706b15d5099"/><dir name="Customer"><file name="AccountController.php" hash="f05aeb623b755053560049bb36239055"/></dir><file name="CustomerController.php" hash="6dfdcd19d714764ab07614cdb6dc2e3d"/><file name="ImageController.php" hash="dd0c5b857adae6d4f3b2e9c589724ec0"/><dir name="Rest"><file name="CartController.php" hash="c03ad5e80be7f6f672a68a9e8be80d79"/><file name="CatalogController.php" hash="be9eb353c01e5d8561282806605470d1"/><file name="CheckoutController.php" hash="c201d0870f9e4b3ecf9997e73120f65a"/><file name="CmsController.php" hash="1f8f491a5fa05060a0bfe94f3cfece75"/><file name="CustomerController.php" hash="ab8d79da68a93695438c95fa70608679"/><file name="MageController.php" hash="9c3dd9ad3fe5fd3c3fb0973de0c1087d"/><file name="ProductController.php" hash="1cddc1ce0a0b8f8a3b458b910b854ad3"/><file name="WishlistController.php" hash="6e821c803a743544762beacdd6628afc"/></dir><file name="TestController.php" hash="5cf6d0077eec7673a8064716f4373523"/></dir><dir name="data"><dir name="japi_setup"><file name="data-install-2.0.0.php" hash="d813ee5c2cc42b051054f818ca93efa2"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="e4ee0cadbc0795af67e37267e4379901"/><file name="config.xml" hash="c32d137dfa82eaa35cd145a0a9ecb891"/><file name="system.xml" hash="aebf1bbf47bf579ea9b42a2c84c06cbb"/></dir><dir name="sql"><dir name="japi_setup"><file name="install-1.0.0.php" hash="f84214fc43f665c79b92dc7a092b364f"/><file name="upgrade-2.0.1.2-2.0.2.php" hash="d54fe62ffff2834a8330daeb47bc2722"/><file name="upgrade-2.1.6-2.2.0.php" hash="1b66107f157fad22a8cf2682c1ba3d52"/><file name="upgrade-2.2.0-2.2.1.php" hash="55fc2d392f0fbe56af2aede01f1d5d6b"/><file name="upgrade-2.8.2-2.9.0.php" hash="f158f1a636b6e98d0d2a26526ffd8c69"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Jmango360_Japi.xml" hash="8029f499a0cb634a21ffe2fdb5c31712"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="jmango360_japi.xml" hash="a808c587efe1e29e0fce5d4e327c0dca"/></dir><dir name="template"><dir name="japi"><dir name="report"><file name="chart.phtml" hash="b4790e21b21fa6bf8ffd9e9c08526636"/><dir name="grid"><file name="container.phtml" hash="284b949ac932c4fb29506b0af9153fe9"/></dir></dir><dir name="widget"><dir name="form"><dir name="renderer"><dir name="element"><file name="chart.phtml" hash="8531200ea3dd209eef9dc829c653f1a0"/></dir></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="jmango360_japi.xml" hash="36a5d26324047e58c297327b2f678f8b"/></dir><dir name="template"><dir name="japi"><dir name="TIG"><dir name="PostNL"><dir name="address_validation"><dir name="checkout"><dir name="onepage"><file name="billing.phtml" hash="45db02c3c310266586d8c8645b75b1f1"/><file name="shipping.phtml" hash="6a8dceaff3e204bb5ea73390685f2ab1"/></dir></dir><dir name="customer"><dir name="address"><file name="edit.phtml" hash="e67297b06331aa19c7542fc6054a506e"/><file name="postcode_check.phtml" hash="87e4ce3591eb1cbdb76c1ceacaca6232"/></dir></dir></dir><dir name="delivery_options"><dir name="onepage"><file name="available.phtml" hash="04ab6351509ce1697dd433231958fe1c"/></dir></dir></dir></dir><dir name="checkout"><dir name="onepage"><file name="address.phtml" hash="c63505c5a59a9c7b77ac113ea81c13aa"/><file name="agreements.phtml" hash="daa5fc3cd4cc95f46447c417d1c98d4e"/><file name="billing.phtml" hash="5a718dc9ce43ba4333786cee9f89457a"/><file name="coupon.phtml" hash="194a4d7dec303dc8c86ac174deb3f6ca"/><file name="js.phtml" hash="82cf4af3e0a2d02250b84084fcc16dc0"/><dir name="payment"><file name="info.phtml" hash="5652693e8debe3ab20e444ae8993ca86"/><file name="methods.phtml" hash="1264ce4ed4738a0fbaaf54ba1ffae22d"/></dir><file name="payment.phtml" hash="1f1ccdb0fb5f42d63b1de496b5f23629"/><dir name="review"><file name="button.phtml" hash="2b4d0b89098374100cde80d0e45dc3b1"/><file name="info.phtml" hash="0dabd96d05df35a2ee955ce97f1bd0b5"/><file name="item.phtml" hash="59f6015bc69052964b77906d854dbcb5"/><file name="totals.phtml" hash="ca947cb3b69fc74bc1616c288135fab7"/></dir><file name="review.phtml" hash="318ca1bcbd683dcf6d1a3edfbee751f6"/><file name="shipping.phtml" hash="adb8e9aa2c6f05679db09f6e1a4429f7"/><dir name="shipping_method"><file name="additional.phtml" hash="2ccd4ad249a519175c62d6105fa0cedc"/><file name="available.phtml" hash="0a71445c8f2df862a678ff63a2c670e1"/></dir><file name="shipping_method.phtml" hash="91f853e8aa31dc94cb3b4b93bcc7748d"/><file name="style.phtml" hash="1d2e6447f86007c5b548d983863bbaa6"/></dir><file name="onepage.phtml" hash="2a45833cbc43a54c73109d4241b0e8d3"/></dir><dir name="customer"><dir name="address"><file name="edit.phtml" hash="cd58cfd578d115b8f37d8020dd0088a8"/></dir><dir name="form"><file name="edit.phtml" hash="841a4133ab0cebce6ca27fd6b0e9de98"/><file name="register.phtml" hash="55fe4fcdb8dc100b1f528d8ad9d106aa"/></dir></dir><file name="form.phtml" hash="fb5e076a84171ae64fa5a8225bfcfb41"/><dir name="giftmessage"><file name="inline.phtml" hash="1c418df89c7c1f4f68825d3ca7c96bde"/></dir><dir name="page"><dir name="html"><file name="head.phtml" hash="74324c13a3950db4d2b437b64548a29b"/></dir><file name="rwd.phtml" hash="bbd5df06b3db265f138b5f0a42bd5299"/></dir><dir name="symfony"><dir name="postcode"><dir name="checkout"><dir name="onepage"><file name="billing.phtml" hash="e49afdd2c9b96b36b11352a5846ce8a3"/><file name="shipping.phtml" hash="1284bed024d69406e4e2f2247604668c"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="japi"><dir name="css"><dir name="TIG"><dir name="Buckaroo3Extended"><file name="styles_opc.css" hash="4df2b78c1c71693c17cbad9c0e0654f2"/></dir></dir><file name="gomage-checkout.css" hash="40937cf757c4d8f4a8b1bc3f85cae458"/><dir name="icomoon"><dir name="fonts"><file name="icomoon.eot" hash="842065e274d718c38968a81a721d49f4"/><file name="icomoon.svg" hash="1c1ad2678d933f8d2fd712006fbe4e97"/><file name="icomoon.ttf" hash="8ffbfccd78de7c37eadeca837ee40344"/><file name="icomoon.woff" hash="32df67c3aed8769c316b3e7ff1bb637c"/></dir><file name="style.css" hash="1bc04f5f4d16a9ef143954066f60180f"/></dir><file name="send-cloud.css" hash="3f8ddf069c533924f5e720a5febc9f9e"/><file name="style.css" hash="21411ba4532c6e103aab534c92673f37"/><file name="style.less" hash="de1f428a717d0f4fa6f7b69b105b7851"/></dir><dir name="images"><file name="ajax-loader.gif" hash="f48ee069890b16455c3ddcacee9b5f75"/><file name="bg-down.png" hash="04d7cd2963010b610f608aca03a45c63"/><file name="bg-up.png" hash="2882d38108532275fb1d425bbd021c9d"/><file name="glc_sprite.png" hash="5cd6f3ba1df3a6d26db5bbc193ce9c61"/></dir><dir name="js"><file name="checkout.js" hash="655cf313f040136c36f4dcb8c838c20a"/><dir name="varien"><file name="form.js" hash="212f1f00ac29da3dd5172ded185137dd"/></dir></dir><dir name="lib"><dir name="bootstrap"><dir name="css"><file name="bootstrap.min.css" hash="3e53c6843a02b42ed881307d0c17af7d"/></dir><dir name="fonts"><file name="glyphicons-halflings-regular.eot" hash="f4769f9bdb7466be65088239c12046d1"/><file name="glyphicons-halflings-regular.svg" hash="f721466883998665b87923b92dea655b"/><file name="glyphicons-halflings-regular.ttf" hash="e18bbf611f2a2e43afc071aa2f4e1512"/><file name="glyphicons-halflings-regular.woff" hash="fa2772327f55d8198301fdb8bcfc8158"/><file name="glyphicons-halflings-regular.woff2" hash="448c34a56d699c29117adc64c43affeb"/></dir><dir name="js"><file name="collapse.js" hash="a056148b6e411d503b1173a7a7015423"/><file name="modal.js" hash="e0b4f56dd8cf393335146c0875c5d57c"/><file name="transition.js" hash="7b2ebef34d503883899753188c57c383"/></dir></dir><dir name="jquery"><file name="jquery-1.11.2.min.js" hash="9aecea3830b65ecad103ee84bd5fe294"/><file name="jquery-noconflict.js" hash="3ec1ec0c93eb4f571268d79d7bb02551"/></dir><dir name="ladda"><file name="ladda.min.css" hash="31b0d68aca8c063f2889c5ea6e089518"/><file name="ladda.min.js" hash="01c75906236ae05920e68197c095ce45"/></dir><dir name="scrollto"><file name="scrollTo.js" hash="067acc15856de3af6370b0b8184dff65"/></dir><dir name="spin"><file name="spin.min.js" hash="cc2192a06099083fb2f687d780807b85"/></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Jmango360_Japi.csv" hash="61b2772f74473df8357a2bfb417c489a"/></dir><dir name="fr_FR"><file name="Jmango360_Japi.csv" hash="ae847a9f8039dde5b5454bc198baa7f2"/></dir><dir name="it_IT"><file name="Jmango360_Japi.csv" hash="229a62b3a4d346ee4ba20cf20d0ab9ca"/></dir><dir name="pt_PT"><file name="Jmango360_Japi.csv" hash="7875ff94b6e34889eb9f8bc31f86618c"/></dir><dir name="pt_BR"><file name="Jmango360_Japi.csv" hash="7875ff94b6e34889eb9f8bc31f86618c"/></dir><dir name="ar_SA"><file name="Jmango360_Japi.csv" hash="96823bbfe12de0ebd415045c462d2a3b"/></dir><dir name="nl_NL"><file name="Jmango360_Japi.csv" hash="a06ed27fc58ec0fb8fbce7a924bf807b"/></dir><dir name="sv_SE"><file name="Jmango360_Japi.csv" hash="57c8dd759fef9bd9f4f8b05d07b5cd04"/></dir><dir name="da_DK"><file name="Jmango360_Japi.csv" hash="4a2f1e6f07e573fdba74741f54f530c1"/></dir></target></contents>
37
  <compatible/>
38
  <dependencies><required><php><min>5.2.0</min><max>7.1.0</max></php></required></dependencies>
39
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Jmango360_Japi</name>
4
+ <version>2.9.4</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.apache.org/licenses/LICENSE-2.0">Apache License</license>
7
  <channel>community</channel>
31
  For more details on JMango360 please visit our website http://www.jmango360.com or out knowledge site http://support.jmango360.com</description>
32
  <notes>* Bug fixes</notes>
33
  <authors><author><name>Duc Ngo</name><user>jmango360</user><email>duc@jmango360.com</email></author></authors>
34
+ <date>2016-12-05</date>
35
+ <time>10:43:53</time>
36
+ <contents><target name="magecommunity"><dir name="Jmango360"><dir name="Japi"><dir name="Block"><dir name="Adminhtml"><dir name="Catalog"><dir name="Product"><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="Hide.php" hash="e4ba69f83fa56a9e79e2a6c7750510f4"/></dir></dir></dir></dir></dir><dir name="Order"><file name="Grid.php" hash="22273d3d0acaf1b0a093e524f87c6aff"/></dir><file name="Order.php" hash="04e94160608b989286aebeb190299565"/><dir name="Report"><dir name="Chart"><file name="Customers.php" hash="5fde8fdbf5d33e63374b8928249fc58e"/><file name="Orders.php" hash="2e5b31bcf202cf4f726245f4c93de3bc"/><file name="Sales.php" hash="d4d7f0e6db1a1c4b509ce5b6439a92d2"/></dir><dir name="Customers"><file name="Chart.php" hash="cff7f9590804c5527fa80f3e2fb3126e"/><file name="Grid.php" hash="92c0a7ee2bb5d8acf26e29a030db4263"/></dir><file name="Customers.php" hash="d2aeda2106b7a66ce23de7e47eafbaa0"/><dir name="Filter"><dir name="Form"><file name="Orders.php" hash="921a673ca567255db3f8e078667bce16"/></dir><file name="Form.php" hash="7b6741ce28ca55c29a5841c41dcb43ce"/></dir><dir name="Orders"><file name="Chart.php" hash="bd3959f7cfb8f64f22a73d974535def3"/><file name="Grid.php" hash="5b4f21bf95f5affb9dd4bceef4a5e710"/></dir><file name="Orders.php" hash="b3852554b219e57c6355cd1541d3866d"/><dir name="Sales"><file name="Chart.php" hash="cfcc4b86ce4cbf71eeb1342639c390f0"/><file name="Grid.php" hash="ad23e6eafa8faca5749ce2ed03cabdf3"/></dir><file name="Sales.php" hash="4c92553c7994bb004c019a68284ad731"/></dir><dir name="System"><dir name="Config"><dir name="Form"><file name="Button.php" hash="45c2b00abe588f0bcc33545432d5e0d3"/><file name="Log.php" hash="578fd58700caded2f8212eaf168c0b6f"/><file name="User.php" hash="765c49cc51ef232c5e36302921197bde"/><file name="Version.php" hash="ed37a968210f8633570cf0851f0c98c9"/></dir></dir></dir><dir name="Widget"><dir name="Form"><dir name="Renderer"><dir name="Element"><file name="Chart.php" hash="248436ebdd189390e4f55cd6031e5394"/></dir></dir></dir></dir></dir><file name="Banner.php" hash="4a582adfa3fe1145116e1860ae146067"/><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="e2e09262d227de4bbe92f09787c36232"/><file name="Category.php" hash="f8bc45fa70f86862e6cbe7c9746a1edc"/><file name="Decimal.php" hash="d0d334970f46b2f9f03d0a8ab362015f"/><file name="Price.php" hash="fa47844068b1e00a068aaff82f068e3a"/></dir><file name="View.php" hash="24ac37f0280492b836e7b71a9ed42edb"/></dir><dir name="Product"><file name="List.php" hash="792c386d84b00f91daa270f8e1bd5eee"/></dir></dir><dir name="Catalogsearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="825ecf71c564eb9d76c39abf533b5d44"/></dir></dir><file name="Layer.php" hash="f55660c9d2812781c9b956cda7b353eb"/></dir><dir name="Checkout"><dir name="Cart"><file name="Totals.php" hash="03b89b266dbc21421cd3ee3ebdaa5ecd"/></dir><dir name="Onepage"><file name="Addjs.php" hash="b06fbe98c4c16c472215d4f0e4e11d92"/><file name="Address.php" hash="5aa5083ce32d5710543b2716ed362336"/><file name="Billing.php" hash="9ed5e52390ec384e0742fe5cc035f02b"/><file name="Shipping.php" hash="875d5e21ed3ac9adffe5fa90501dd886"/></dir><file name="Onepage.php" hash="9252a6d5af9d169271208f6a05b9d106"/></dir><file name="Form.php" hash="da6604d3649e5a239ba968ac66203078"/><dir name="GiftMessage"><dir name="Message"><file name="Inline.php" hash="9babd88f15d4f18f3e650e40403a9e30"/></dir></dir></dir><dir name="Controller"><file name="Abstract.php" hash="407a9629e31c0bde55cdb06dd5ce6c38"/></dir><file name="Exception.php" hash="4c7ba2f3f16b67d29588e5c5515c2c29"/><dir name="Helper"><dir name="Adminhtml"><dir name="Report"><file name="Order.php" hash="b6109c1616e5d4fcc5cf0eb9866c6c51"/></dir></dir><file name="Data.php" hash="c81bc21fc1f06c159d7e35b49644cd94"/><file name="Debug.php" hash="51b4ae79ed3bed1be80ba580f5ed983d"/><dir name="GiftMessage"><file name="Message.php" hash="b0fdee7a8c8e247b8ca483b82c18bf2a"/></dir><dir name="Product"><file name="Bundle.php" hash="f207f070f5407e6f7de8d8a869a4ac4a"/><file name="Configurable.php" hash="90aa61463ffd20d2c9de08831c3d4db5"/><file name="Downloadable.php" hash="15f566287b4c9a943b261f4ecb79ccad"/><file name="File.php" hash="ad3730fae76e324f098da2991cf6283e"/><file name="Grouped.php" hash="88823ffed2223f91df4eeeecda771b1d"/><file name="Media.php" hash="84069dbfd8759b3816367822c9a4a287"/><file name="Options.php" hash="c4f422fa68773044ea838476e7e846ef"/><file name="Review.php" hash="53b188b3a700636302b7942dadc40c9b"/><file name="TierPrice.php" hash="c6657d673ffb763e3daf75d6baf9ef45"/></dir><file name="Product.php" hash="f312914b7b71fc306894dc38f282a77c"/><file name="Tax.php" hash="9cf654643cfd6bfe4c9be2d852305499"/></dir><dir name="Model"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="567bfc8c4dca52f4c445bb7b39d65586"/><file name="Decimal.php" hash="1c1c15b3e0a38d1c0eb4734df6d965a6"/><file name="Price.php" hash="d28f561aec670d6613add8665107b68d"/></dir></dir></dir><dir name="Catalogsearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="e78da872e86ac57b1c2c6d5d7abb62da"/></dir></dir></dir><dir name="Core"><file name="Session.php" hash="00065d65d15f2eb380cf044928bbb051"/></dir><file name="Dispatcher.php" hash="0032dd91e78f3a8145420be5b069ebd8"/><dir name="Magpleasure"><dir name="Tierprices"><file name="Price.php" hash="96955e13f0153cba6bb41c2b3e23904f"/></dir></dir><file name="Observer.php" hash="185e94135ac429e5ee4ea3a172a29b62"/><dir name="Renderer"><file name="Json.php" hash="01a6d0947bb0de340fb35082dbdebdb3"/></dir><file name="Renderer.php" hash="f6304d75dc46db79b4e5d0a36448058e"/><file name="Request.php" hash="e0bf50273db6a631ef5162da23d480ac"/><dir name="Resource"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="2e2fbe3a4defdc57c67c6da4f4c394ab"/><file name="Decimal.php" hash="3c0754c63f624c844a5d284897d4d67b"/><file name="Price.php" hash="2cfa115132865391e29f6d7d702ee2fc"/></dir></dir></dir><dir name="Report"><dir name="Order"><file name="Collection.php" hash="252dc8575563cd584451b9a24c7e49ea"/></dir></dir><dir name="Sales"><dir name="Report"><dir name="Order"><dir name="Collection"><file name="Aggregated.php" hash="fb1f5302e04cced336a65fb345c9f918"/><file name="Live.php" hash="23b0464c592f45657e4e472e72d34355"/></dir></dir><file name="Order.php" hash="acfb2f0982ed1eac58848ac6b9acb199"/></dir></dir><file name="Setup.php" hash="088e7250a113ca9999280b0705850427"/></dir><file name="Response.php" hash="786d845284e214a4af674bd38ee4fc0f"/><dir name="Rest"><dir name="Cart"><file name="Coupon.php" hash="b5f008680c754454bf11d4b56b1533c0"/><file name="Update.php" hash="6e6cd84881512aea20fb94b4ab08b37b"/></dir><file name="Cart.php" hash="98f9e206b88402a34f63cb9f5bed14b9"/><dir name="Catalog"><dir name="Category"><file name="Assignedproducts.php" hash="b2db56ad00122e5ab6da087abdfad1fc"/><file name="Tree.php" hash="7a425ca19829ad6c16fb1168ce084fb0"/></dir><dir name="Search"><file name="Products.php" hash="d67d96016c00e404550380056ef3cf28"/><file name="Terms.php" hash="4322eb9633f94d89b1940ef0bffb959f"/></dir></dir><file name="Catalog.php" hash="6ee5d37530675fe373dbecffb7a62364"/><dir name="Checkout"><file name="Methods.php" hash="177b27a7917d67fd40b407e2189c703e"/><file name="Onepage.php" hash="9bcfa633bd721d739dd44b37367b1cab"/><file name="Redirect.php" hash="77f4f72415a20eef5b4714150aa4b5dd"/><file name="Submit.php" hash="fcd12b9787c1339e012bd02e9d189f02"/></dir><file name="Checkout.php" hash="936f39d94f06b652026e7bd6980c92a3"/><dir name="Cms"><file name="Page.php" hash="0a78b2624bd4e69a6d8c7ee566ffd164"/></dir><file name="Cms.php" hash="e29088c9e5da473b0a430c66bc047f01"/><dir name="Customer"><file name="Address.php" hash="3ecccb0378aedb6ccc979b4a4fcce6d3"/><file name="Edit.php" hash="5ec3ebf05838baae0c1f6aaee10cfa5e"/><file name="Group.php" hash="f406c05b4cba55f7963ada7137228b5b"/><file name="List.php" hash="15d7cc18a6b22cadd911950dfe0673dc"/><file name="Login.php" hash="53905536f879fe296d33efcd4878d2b3"/><dir name="Order"><file name="List.php" hash="333c12255ce5312ffb4208ef19d8622e"/></dir><file name="Order.php" hash="3b270527b5827fcf576d9996f255d68d"/><file name="Password.php" hash="42ce37853acf0ed09224186b16ababa7"/><file name="Register.php" hash="a6d7f0dc7d669054e6f0adf21745d9e5"/></dir><file name="Customer.php" hash="a9e6efe88ce6762a187277d50ae7f35f"/><file name="Mage.php" hash="7d754c65781f19b94d7a0c384b343e08"/><dir name="Product"><file name="Crosssell.php" hash="1622bd39c5c272da70e11335ea2b787f"/><file name="List.php" hash="fbb3a9f56e167cd6fad571521ff85bc5"/><file name="Purchased.php" hash="9f672085eee3b3b0dbc4ad73d30f73df"/><file name="Related.php" hash="c6fc3f0f9e9ec35001a92b6dc3e624e7"/><file name="Review.php" hash="3f563b8b87db83ef6ed31456d39b6329"/><file name="Search.php" hash="4dd132256337697e3f9cfa4f3733c2d0"/><file name="Upsell.php" hash="3acb5b81c55e62e07c41eeec1a402001"/><file name="Url.php" hash="ef302c7c1529e9e255cf89ec02b15c9b"/><file name="Viewed.php" hash="2deacf3f0896b5247e15a10c6dbbbfbf"/></dir><file name="Product.php" hash="7fde1fed86a12f4b1843fd5afb70bc2a"/><file name="Wishlist.php" hash="fea816fe81ce072bdfd5a632cfbb2995"/></dir><file name="Server.php" hash="8b2e034926d3af159525f6c9b91544b0"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Icon.php" hash="9a2feeb7844891bf137c43d0e145549c"/><file name="Payment.php" hash="14bcf1d7c077a4c17c014174921a9228"/><file name="Shipping.php" hash="fa680415ba872da467a898d8995817bc"/></dir><dir name="Source"><dir name="Address"><file name="Attributes.php" hash="b8c2fd4ae5b52ee76d5f18d07c30b1e7"/><file name="Validatetype.php" hash="5ee18901d63ed0de77db6662f2365d4a"/></dir><file name="Attributes.php" hash="67eccf925d994a08177713fec118b7da"/><dir name="Catalog"><file name="Direction.php" hash="d48937f5678bda45f3580479b1fc3049"/><file name="Sortby.php" hash="e1f29a5efdab91e1bd3dcaca0c283c76"/></dir><file name="Catalogimage.php" hash="30b059c1c67d36f5938d22311194aded"/><dir name="Customer"><file name="Attributes.php" hash="f27a2cb3f53b5396ac9bdcbbab15d665"/></dir><file name="Defaultimage.php" hash="7bc4b41fbcd481affbe9c6985fb4a527"/><file name="Payment.php" hash="8553971f076bd048eea8eb24236f7896"/><file name="Shipping.php" hash="b063fa60f03955d15c049cdae9c6870a"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Japi"><file name="LogController.php" hash="0945b5406c46aff7257b0d21b5ad8491"/><file name="OrderController.php" hash="e6b7c1f5a7156a06fa3f51c32e6bbba9"/><file name="ReportController.php" hash="6ab29db3e2e59ea8f968dd8091a9dec2"/><file name="TroubleshootingController.php" hash="94ddc8e2713029ae0b503d708070d40c"/></dir></dir><file name="CheckoutController.php" hash="c2d38f878d5ab5999db30c908bb2c3d8"/><dir name="Customer"><file name="AccountController.php" hash="f05aeb623b755053560049bb36239055"/></dir><file name="CustomerController.php" hash="6dfdcd19d714764ab07614cdb6dc2e3d"/><file name="ImageController.php" hash="dd0c5b857adae6d4f3b2e9c589724ec0"/><file name="KlarnaController.php" hash="edcd6ff328fb1b6fd4094e3cb58aa97f"/><dir name="Rest"><file name="CartController.php" hash="c03ad5e80be7f6f672a68a9e8be80d79"/><file name="CatalogController.php" hash="be9eb353c01e5d8561282806605470d1"/><file name="CheckoutController.php" hash="c201d0870f9e4b3ecf9997e73120f65a"/><file name="CmsController.php" hash="1f8f491a5fa05060a0bfe94f3cfece75"/><file name="CustomerController.php" hash="ab8d79da68a93695438c95fa70608679"/><file name="MageController.php" hash="1c3ef8a5f5a0ceb21565dc968e3ec9e2"/><file name="ProductController.php" hash="1cddc1ce0a0b8f8a3b458b910b854ad3"/><file name="WishlistController.php" hash="6e821c803a743544762beacdd6628afc"/></dir><file name="TestController.php" hash="5cf6d0077eec7673a8064716f4373523"/></dir><dir name="data"><dir name="japi_setup"><file name="data-install-2.0.0.php" hash="d813ee5c2cc42b051054f818ca93efa2"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="e4ee0cadbc0795af67e37267e4379901"/><file name="config.xml" hash="27f2300efaf50eae015418b428b1dce2"/><file name="system.xml" hash="fdb4d41a457ac5d6940457c4c3f43da0"/></dir><dir name="sql"><dir name="japi_setup"><file name="install-1.0.0.php" hash="f84214fc43f665c79b92dc7a092b364f"/><file name="upgrade-2.0.1.2-2.0.2.php" hash="d54fe62ffff2834a8330daeb47bc2722"/><file name="upgrade-2.1.6-2.2.0.php" hash="1b66107f157fad22a8cf2682c1ba3d52"/><file name="upgrade-2.2.0-2.2.1.php" hash="55fc2d392f0fbe56af2aede01f1d5d6b"/><file name="upgrade-2.8.2-2.9.0.php" hash="f158f1a636b6e98d0d2a26526ffd8c69"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Jmango360_Japi.xml" hash="8029f499a0cb634a21ffe2fdb5c31712"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="jmango360_japi.xml" hash="a808c587efe1e29e0fce5d4e327c0dca"/></dir><dir name="template"><dir name="japi"><dir name="report"><file name="chart.phtml" hash="b4790e21b21fa6bf8ffd9e9c08526636"/><dir name="grid"><file name="container.phtml" hash="284b949ac932c4fb29506b0af9153fe9"/></dir></dir><dir name="widget"><dir name="form"><dir name="renderer"><dir name="element"><file name="chart.phtml" hash="8531200ea3dd209eef9dc829c653f1a0"/></dir></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="jmango360_japi.xml" hash="f88a6a009a0cfd9e8a79d76dad9bc75a"/></dir><dir name="template"><dir name="japi"><dir name="TIG"><dir name="PostNL"><dir name="address_validation"><dir name="checkout"><dir name="onepage"><file name="billing.phtml" hash="45db02c3c310266586d8c8645b75b1f1"/><file name="shipping.phtml" hash="6a8dceaff3e204bb5ea73390685f2ab1"/></dir></dir><dir name="customer"><dir name="address"><file name="edit.phtml" hash="e67297b06331aa19c7542fc6054a506e"/><file name="postcode_check.phtml" hash="87e4ce3591eb1cbdb76c1ceacaca6232"/></dir></dir></dir><dir name="delivery_options"><dir name="onepage"><file name="available.phtml" hash="04ab6351509ce1697dd433231958fe1c"/></dir></dir></dir></dir><dir name="checkout"><dir name="onepage"><file name="address.phtml" hash="c63505c5a59a9c7b77ac113ea81c13aa"/><file name="agreements.phtml" hash="daa5fc3cd4cc95f46447c417d1c98d4e"/><file name="billing.phtml" hash="5a718dc9ce43ba4333786cee9f89457a"/><file name="coupon.phtml" hash="194a4d7dec303dc8c86ac174deb3f6ca"/><file name="js.phtml" hash="82cf4af3e0a2d02250b84084fcc16dc0"/><dir name="payment"><file name="info.phtml" hash="5652693e8debe3ab20e444ae8993ca86"/><file name="methods.phtml" hash="1264ce4ed4738a0fbaaf54ba1ffae22d"/></dir><file name="payment.phtml" hash="d61ff99395fa9bdb873c90ceca30e532"/><dir name="review"><file name="button.phtml" hash="2b4d0b89098374100cde80d0e45dc3b1"/><file name="info.phtml" hash="0dabd96d05df35a2ee955ce97f1bd0b5"/><file name="item.phtml" hash="59f6015bc69052964b77906d854dbcb5"/><file name="totals.phtml" hash="ca947cb3b69fc74bc1616c288135fab7"/></dir><file name="review.phtml" hash="318ca1bcbd683dcf6d1a3edfbee751f6"/><file name="shipping.phtml" hash="adb8e9aa2c6f05679db09f6e1a4429f7"/><dir name="shipping_method"><file name="additional.phtml" hash="2ccd4ad249a519175c62d6105fa0cedc"/><file name="available.phtml" hash="0a71445c8f2df862a678ff63a2c670e1"/></dir><file name="shipping_method.phtml" hash="91f853e8aa31dc94cb3b4b93bcc7748d"/><file name="style.phtml" hash="bf50a4fdcb698019fcf23d07c1153b8a"/></dir><file name="onepage.phtml" hash="2a45833cbc43a54c73109d4241b0e8d3"/></dir><dir name="customer"><dir name="address"><file name="edit.phtml" hash="cd58cfd578d115b8f37d8020dd0088a8"/></dir><dir name="form"><file name="edit.phtml" hash="841a4133ab0cebce6ca27fd6b0e9de98"/><file name="register.phtml" hash="55fe4fcdb8dc100b1f528d8ad9d106aa"/></dir></dir><file name="form.phtml" hash="fb5e076a84171ae64fa5a8225bfcfb41"/><dir name="giftmessage"><file name="inline.phtml" hash="0679b8cebef72b0d2774cb18cf7632d6"/></dir><dir name="page"><dir name="html"><file name="head.phtml" hash="74324c13a3950db4d2b437b64548a29b"/><file name="smart-app-banner.phtml" hash="daa381a486f6da0b1b49afac90806580"/></dir><file name="rwd.phtml" hash="bbd5df06b3db265f138b5f0a42bd5299"/></dir><dir name="symfony"><dir name="postcode"><dir name="checkout"><dir name="onepage"><file name="billing.phtml" hash="e49afdd2c9b96b36b11352a5846ce8a3"/><file name="shipping.phtml" hash="1284bed024d69406e4e2f2247604668c"/></dir></dir></dir></dir><dir name="vaimo"><dir name="klarna"><dir name="klarnacheckout"><dir name="cart"><dir name="item"><file name="default.phtml" hash="0272701a9f5004547ea041fb87600465"/></dir></dir><file name="cart.phtml" hash="ba42c2f195826a2a92370ba75aad25f0"/><file name="main.phtml" hash="3b923cb688dd6b664147ee1fe6f199ef"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="japi"><dir name="css"><dir name="TIG"><dir name="Buckaroo3Extended"><file name="styles_opc.css" hash="4df2b78c1c71693c17cbad9c0e0654f2"/></dir></dir><file name="gomage-checkout.css" hash="40937cf757c4d8f4a8b1bc3f85cae458"/><dir name="icomoon"><dir name="fonts"><file name="icomoon.eot" hash="842065e274d718c38968a81a721d49f4"/><file name="icomoon.svg" hash="1c1ad2678d933f8d2fd712006fbe4e97"/><file name="icomoon.ttf" hash="8ffbfccd78de7c37eadeca837ee40344"/><file name="icomoon.woff" hash="32df67c3aed8769c316b3e7ff1bb637c"/></dir><file name="style.css" hash="1bc04f5f4d16a9ef143954066f60180f"/></dir><file name="send-cloud.css" hash="3f8ddf069c533924f5e720a5febc9f9e"/><file name="style.css" hash="25ef8556414dbc4ad05fc3d8a5348e6b"/><file name="style.less" hash="467f8468654561b8e1e390b5ea6dcaa2"/></dir><dir name="images"><file name="ajax-loader.gif" hash="f48ee069890b16455c3ddcacee9b5f75"/><file name="bg-down.png" hash="04d7cd2963010b610f608aca03a45c63"/><file name="bg-up.png" hash="2882d38108532275fb1d425bbd021c9d"/><file name="glc_sprite.png" hash="5cd6f3ba1df3a6d26db5bbc193ce9c61"/></dir><dir name="js"><file name="checkout.js" hash="655cf313f040136c36f4dcb8c838c20a"/><dir name="varien"><file name="form.js" hash="212f1f00ac29da3dd5172ded185137dd"/></dir></dir><dir name="lib"><dir name="bootstrap"><dir name="css"><file name="bootstrap.min.css" hash="3e53c6843a02b42ed881307d0c17af7d"/></dir><dir name="fonts"><file name="glyphicons-halflings-regular.eot" hash="f4769f9bdb7466be65088239c12046d1"/><file name="glyphicons-halflings-regular.svg" hash="f721466883998665b87923b92dea655b"/><file name="glyphicons-halflings-regular.ttf" hash="e18bbf611f2a2e43afc071aa2f4e1512"/><file name="glyphicons-halflings-regular.woff" hash="fa2772327f55d8198301fdb8bcfc8158"/><file name="glyphicons-halflings-regular.woff2" hash="448c34a56d699c29117adc64c43affeb"/></dir><dir name="js"><file name="collapse.js" hash="a056148b6e411d503b1173a7a7015423"/><file name="modal.js" hash="e0b4f56dd8cf393335146c0875c5d57c"/><file name="transition.js" hash="7b2ebef34d503883899753188c57c383"/></dir></dir><dir name="jquery"><file name="jquery-1.11.2.min.js" hash="9aecea3830b65ecad103ee84bd5fe294"/><file name="jquery-noconflict.js" hash="3ec1ec0c93eb4f571268d79d7bb02551"/></dir><dir name="ladda"><file name="ladda.min.css" hash="31b0d68aca8c063f2889c5ea6e089518"/><file name="ladda.min.js" hash="01c75906236ae05920e68197c095ce45"/></dir><dir name="scrollto"><file name="scrollTo.js" hash="067acc15856de3af6370b0b8184dff65"/></dir><dir name="smart-app-banner"><file name="smart-app-banner.css" hash="af2f074ade2666b65042b2ffc7669c3b"/><file name="smart-app-banner.js" hash="800b7c29464c426a461ddee735922e62"/></dir><dir name="spin"><file name="spin.min.js" hash="cc2192a06099083fb2f687d780807b85"/></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Jmango360_Japi.csv" hash="61b2772f74473df8357a2bfb417c489a"/></dir><dir name="fr_FR"><file name="Jmango360_Japi.csv" hash="9c554547a9ce4e5b7ec943811bece11d"/></dir><dir name="it_IT"><file name="Jmango360_Japi.csv" hash="229a62b3a4d346ee4ba20cf20d0ab9ca"/></dir><dir name="pt_PT"><file name="Jmango360_Japi.csv" hash="7875ff94b6e34889eb9f8bc31f86618c"/></dir><dir name="pt_BR"><file name="Jmango360_Japi.csv" hash="7875ff94b6e34889eb9f8bc31f86618c"/></dir><dir name="ar_SA"><file name="Jmango360_Japi.csv" hash="96823bbfe12de0ebd415045c462d2a3b"/></dir><dir name="nl_NL"><file name="Jmango360_Japi.csv" hash="a06ed27fc58ec0fb8fbce7a924bf807b"/></dir><dir name="sv_SE"><file name="Jmango360_Japi.csv" hash="57c8dd759fef9bd9f4f8b05d07b5cd04"/></dir><dir name="da_DK"><file name="Jmango360_Japi.csv" hash="4a2f1e6f07e573fdba74741f54f530c1"/></dir><dir name="de_DE"><file name="Jmango360_Japi.csv" hash="b88d4a9f2b91ccd96826e1ff832eff15"/></dir><dir name="es_ES"><file name="Jmango360_Japi.csv" hash="3ac40ac9a52e645a298d8d5725a9de44"/></dir></target></contents>
37
  <compatible/>
38
  <dependencies><required><php><min>5.2.0</min><max>7.1.0</max></php></required></dependencies>
39
  </package>
skin/frontend/base/default/japi/css/style.css CHANGED
@@ -400,24 +400,67 @@ span.price {
400
  padding: 5px 0 8px 0;
401
  }
402
  .gift-messages-form .inner-box p,
403
- .gift-messages p.control {
 
404
  margin: 5px 0;
405
  }
406
  .gift-messages-form .inner-box p > *,
407
- .gift-messages p.control > * {
 
408
  padding: 0;
409
  margin: 0;
410
  vertical-align: middle;
411
  }
412
  .gift-messages-form .inner-box p input[type="checkbox"],
413
- .gift-messages p.control input[type="checkbox"] {
 
414
  display: inline-block;
415
  margin: 0 5px 0 0;
416
  }
417
  .gift-messages-form .inner-box p label,
418
- .gift-messages p.control label {
 
419
  font-weight: normal;
420
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
421
  .customer-dob .dob-month,
422
  .customer-dob .dob-day,
423
  .customer-dob .dob-year {
@@ -495,6 +538,9 @@ span.price {
495
  #checkout-step-shipping textarea {
496
  background: #fafafa;
497
  }
 
 
 
498
  /******** PostcodeNl_Api ********/
499
  #billing\:postcode_input\:wrapper .field,
500
  #shipping\:postcode_input\:wrapper .field {
@@ -545,11 +591,17 @@ span.price {
545
  text-align: center;
546
  margin: 0.5em 0;
547
  }
 
 
 
 
 
548
  #s_method_postnl_tablerate,
549
  #s_method_postnl_tablerate + label,
550
  #s_method_postnl_flatrate,
551
  #s_method_postnl_flatrate + label {
552
  display: inline;
 
553
  }
554
  .postnl-container {
555
  display: block;
@@ -751,3 +803,39 @@ span.price {
751
  .sp-methods dd ul.klarna-input-box .klarna_notification:before {
752
  background: none;
753
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
400
  padding: 5px 0 8px 0;
401
  }
402
  .gift-messages-form .inner-box p,
403
+ .gift-messages p.control,
404
+ .gift-message-form .inner-box p {
405
  margin: 5px 0;
406
  }
407
  .gift-messages-form .inner-box p > *,
408
+ .gift-messages p.control > *,
409
+ .gift-message-form .inner-box p > * {
410
  padding: 0;
411
  margin: 0;
412
  vertical-align: middle;
413
  }
414
  .gift-messages-form .inner-box p input[type="checkbox"],
415
+ .gift-messages p.control input[type="checkbox"],
416
+ .gift-message-form .inner-box p input[type="checkbox"] {
417
  display: inline-block;
418
  margin: 0 5px 0 0;
419
  }
420
  .gift-messages-form .inner-box p label,
421
+ .gift-messages p.control label,
422
+ .gift-message-form .inner-box p label {
423
  font-weight: normal;
424
  }
425
+ .gift-messages-form h4,
426
+ .gift-message-form h4 {
427
+ font-size: 1em;
428
+ font-weight: 700;
429
+ margin: 1em 0 0 0;
430
+ }
431
+ .gift-messages-form select,
432
+ .gift-message-form select {
433
+ width: 100%;
434
+ }
435
+ .gift-messages-form .gift-wrapping-design,
436
+ .gift-message-form .gift-wrapping-design {
437
+ margin-top: 1em;
438
+ float: left;
439
+ width: 100%;
440
+ }
441
+ .gift-messages-form .gift-wrapping-design img,
442
+ .gift-message-form .gift-wrapping-design img {
443
+ float: left;
444
+ }
445
+ .gift-messages-form .label,
446
+ .gift-message-form .label {
447
+ color: #333;
448
+ font-size: 1em;
449
+ }
450
+ .add-gift-message h3 {
451
+ font-size: 1.2em;
452
+ margin-bottom: 0.5em;
453
+ }
454
+ .add-gift-message input[type=checkbox],
455
+ .add-gift-message input[type=radio] {
456
+ float: left;
457
+ }
458
+ .add-gift-message input[type=checkbox] + label,
459
+ .add-gift-message input[type=radio] + label {
460
+ margin-left: 5px;
461
+ font-weight: normal;
462
+ font-size: 1em;
463
+ }
464
  .customer-dob .dob-month,
465
  .customer-dob .dob-day,
466
  .customer-dob .dob-year {
538
  #checkout-step-shipping textarea {
539
  background: #fafafa;
540
  }
541
+ .no-display {
542
+ display: none;
543
+ }
544
  /******** PostcodeNl_Api ********/
545
  #billing\:postcode_input\:wrapper .field,
546
  #shipping\:postcode_input\:wrapper .field {
591
  text-align: center;
592
  margin: 0.5em 0;
593
  }
594
+ #opc_postnl_ce .field-postcode,
595
+ #opc_postnl_ce .field-housenumber {
596
+ width: 49% !important;
597
+ margin-right: 1%;
598
+ }
599
  #s_method_postnl_tablerate,
600
  #s_method_postnl_tablerate + label,
601
  #s_method_postnl_flatrate,
602
  #s_method_postnl_flatrate + label {
603
  display: inline;
604
+ vertical-align: middle;
605
  }
606
  .postnl-container {
607
  display: block;
803
  .sp-methods dd ul.klarna-input-box .klarna_notification:before {
804
  background: none;
805
  }
806
+ /******** Vaimo_Klarna ************/
807
+ .klarna_wrapper .page-title {
808
+ padding: 0 10px;
809
+ }
810
+ .klarna_wrapper .klarna_totals {
811
+ margin: 20px 0 0 0;
812
+ }
813
+ .klarna_wrapper #klarna_methods {
814
+ margin: 0;
815
+ padding: 0 10px;
816
+ }
817
+ .klarna_wrapper .klarna_loader {
818
+ position: fixed;
819
+ }
820
+ .klarna_wrapper .messages > li {
821
+ padding: 10px;
822
+ }
823
+ .klarna_wrapper .messages span {
824
+ font-size: 12px;
825
+ }
826
+ .klarna_wrapper .klarna_totals td * {
827
+ font-size: 12px;
828
+ }
829
+ .klarna_wrapper .sp-methods dd ul li {
830
+ margin: 0;
831
+ padding: 0;
832
+ }
833
+ .klarna_wrapper .klarna_product-remove {
834
+ display: none;
835
+ }
836
+ .klarna_wrapper input.input-text {
837
+ font-size: 14px;
838
+ }
839
+ .klarna_wrapper .klarna_other-payment-methods {
840
+ display: none;
841
+ }
skin/frontend/base/default/japi/css/style.less CHANGED
@@ -496,22 +496,72 @@ span.price {
496
  }
497
  }
498
 
499
- .gift-messages-form .inner-box p, .gift-messages p.control {
 
 
500
  margin: 5px 0;
 
501
  > * {
502
  padding: 0;
503
  margin: 0;
504
  vertical-align: middle;
505
  }
 
506
  input[type="checkbox"] {
507
  display: inline-block;
508
  margin: 0 5px 0 0;
509
  }
 
510
  label {
511
  font-weight: normal;
512
  }
513
  }
514
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
515
  .customer-dob {
516
  .dob-month, .dob-day, .dob-year {
517
  width: 33%;
@@ -593,6 +643,10 @@ span.price {
593
  }
594
  }
595
 
 
 
 
 
596
  /******** PostcodeNl_Api ********/
597
  #billing\:postcode_input\:wrapper, #shipping\:postcode_input\:wrapper {
598
  .field {
@@ -645,6 +699,12 @@ span.price {
645
  text-align: center;
646
  margin: 0.5em 0;
647
  }
 
 
 
 
 
 
648
  }
649
 
650
  #s_method_postnl_tablerate,
@@ -652,6 +712,7 @@ span.price {
652
  #s_method_postnl_flatrate,
653
  #s_method_postnl_flatrate + label {
654
  display: inline;
 
655
  }
656
 
657
  .postnl-container {
@@ -920,3 +981,58 @@ span.price {
920
  }
921
  }
922
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
496
  }
497
  }
498
 
499
+ .gift-messages-form .inner-box p,
500
+ .gift-messages p.control,
501
+ .gift-message-form .inner-box p {
502
  margin: 5px 0;
503
+
504
  > * {
505
  padding: 0;
506
  margin: 0;
507
  vertical-align: middle;
508
  }
509
+
510
  input[type="checkbox"] {
511
  display: inline-block;
512
  margin: 0 5px 0 0;
513
  }
514
+
515
  label {
516
  font-weight: normal;
517
  }
518
  }
519
 
520
+ .gift-messages-form,
521
+ .gift-message-form {
522
+ h4 {
523
+ font-size: 1em;
524
+ font-weight: 700;
525
+ margin: 1em 0 0 0;
526
+ }
527
+
528
+ select {
529
+ width: 100%;
530
+ }
531
+
532
+ .gift-wrapping-design {
533
+ margin-top: 1em;
534
+ float: left;
535
+ width: 100%;
536
+
537
+ img {
538
+ float: left;
539
+ }
540
+ }
541
+
542
+ .label {
543
+ color: #333;
544
+ font-size: 1em;
545
+ }
546
+ }
547
+
548
+ .add-gift-message {
549
+ h3 {
550
+ font-size: 1.2em;
551
+ margin-bottom: 0.5em;
552
+ }
553
+
554
+ input[type=checkbox], input[type=radio] {
555
+ float: left;
556
+
557
+ + label {
558
+ margin-left: 5px;
559
+ font-weight: normal;
560
+ font-size: 1em;
561
+ }
562
+ }
563
+ }
564
+
565
  .customer-dob {
566
  .dob-month, .dob-day, .dob-year {
567
  width: 33%;
643
  }
644
  }
645
 
646
+ .no-display {
647
+ display: none;
648
+ }
649
+
650
  /******** PostcodeNl_Api ********/
651
  #billing\:postcode_input\:wrapper, #shipping\:postcode_input\:wrapper {
652
  .field {
699
  text-align: center;
700
  margin: 0.5em 0;
701
  }
702
+
703
+ .field-postcode,
704
+ .field-housenumber {
705
+ width: 49% !important;
706
+ margin-right: 1%;
707
+ }
708
  }
709
 
710
  #s_method_postnl_tablerate,
712
  #s_method_postnl_flatrate,
713
  #s_method_postnl_flatrate + label {
714
  display: inline;
715
+ vertical-align: middle;
716
  }
717
 
718
  .postnl-container {
981
  }
982
  }
983
  }
984
+
985
+ /******** Vaimo_Klarna ************/
986
+ .klarna_wrapper {
987
+ .page-title {
988
+ padding: 0 10px;
989
+ }
990
+
991
+ .klarna_totals {
992
+ margin: 20px 0 0 0;
993
+ }
994
+
995
+ #klarna_methods {
996
+ margin: 0;
997
+ padding: 0 10px;
998
+ }
999
+
1000
+ .klarna_loader {
1001
+ position: fixed;
1002
+ }
1003
+
1004
+ .messages {
1005
+ > li {
1006
+ padding: 10px;
1007
+ }
1008
+
1009
+ span {
1010
+ font-size: 12px;
1011
+ }
1012
+ }
1013
+
1014
+ .klarna_totals {
1015
+ td {
1016
+ * {
1017
+ font-size: 12px;
1018
+ }
1019
+ }
1020
+ }
1021
+
1022
+ .sp-methods dd ul li {
1023
+ margin: 0;
1024
+ padding: 0;
1025
+ }
1026
+
1027
+ .klarna_product-remove {
1028
+ display: none;
1029
+ }
1030
+
1031
+ input.input-text {
1032
+ font-size: 14px;
1033
+ }
1034
+
1035
+ .klarna_other-payment-methods {
1036
+ display: none;
1037
+ }
1038
+ }
skin/frontend/base/default/japi/lib/smart-app-banner/smart-app-banner.css ADDED
@@ -0,0 +1,297 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .smartbanner-show {
2
+ margin-top: 80px;
3
+ }
4
+
5
+ .smartbanner-show .smartbanner {
6
+ display: block;
7
+ }
8
+
9
+ /** Default **/
10
+ .smartbanner {
11
+ position: absolute;
12
+ left: 0;
13
+ top: 0;
14
+ display: none;
15
+ width: 100%;
16
+ height: 80px;
17
+ line-height: 80px;
18
+ font-family: 'Helvetica Neue', sans-serif;
19
+ background: #f4f4f4;
20
+ z-index: 9998;
21
+ -webkit-font-smoothing: antialiased;
22
+ overflow: hidden;
23
+ -webkit-text-size-adjust: none;
24
+ }
25
+
26
+ .smartbanner-container {
27
+ margin: 0 auto;
28
+ white-space: nowrap;
29
+ }
30
+
31
+ .smartbanner-close {
32
+ display: inline-block;
33
+ vertical-align: middle;
34
+ margin: 0 5px 0 5px;
35
+ font-family: 'ArialRoundedMTBold', Arial;
36
+ font-size: 20px;
37
+ text-align: center;
38
+ color: #888;
39
+ text-decoration: none;
40
+ border: 0;
41
+ border-radius: 14px;
42
+ -webkit-font-smoothing: subpixel-antialiased;
43
+ }
44
+
45
+ .smartbanner-close:active,
46
+ .smartbanner-close:hover {
47
+ color: #aaa;
48
+ }
49
+
50
+ .smartbanner-icon {
51
+ display: inline-block;
52
+ vertical-align: middle;
53
+ width: 57px;
54
+ height: 57px;
55
+ margin-right: 12px;
56
+ background-size: cover;
57
+ border-radius: 10px;
58
+ }
59
+
60
+ .smartbanner-info {
61
+ display: inline-block;
62
+ vertical-align: middle;
63
+ width: 44%;
64
+ font-size: 11px;
65
+ line-height: 1.2em;
66
+ font-weight: bold;
67
+ }
68
+
69
+ .smartbanner-info > * {
70
+ display: block;
71
+ text-align: left;
72
+ }
73
+
74
+ .smartbanner-title {
75
+ font-size: 13px;
76
+ line-height: 18px;
77
+ }
78
+
79
+ .smartbanner-button {
80
+ position: absolute;
81
+ right: 20px;
82
+ top: 0;
83
+ bottom: 0;
84
+ margin: auto 0;
85
+ height: 24px;
86
+ font-size: 14px;
87
+ line-height: 24px;
88
+ text-align: center;
89
+ font-weight: bold;
90
+ color: #6a6a6a;
91
+ text-transform: uppercase;
92
+ text-decoration: none;
93
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
94
+ }
95
+
96
+ .smartbanner-button:active,
97
+ .smartbanner-button:hover {
98
+ color: #aaa;
99
+ }
100
+
101
+ .smartbanner-button-text {
102
+ }
103
+
104
+ .smartbanner-button-text:active,
105
+ .smartbanner-button-text:hover {
106
+ }
107
+
108
+ /** iOS **/
109
+ .smartbanner-ios {
110
+ background: #f4f4f4;
111
+ /*background: linear-gradient(to bottom, #f4f4f4, #cdcdcd);*/
112
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
113
+ line-height: 80px;
114
+ }
115
+
116
+ .smartbanner-ios .smartbanner-close {
117
+ border: 0;
118
+ width: 18px;
119
+ height: 18px;
120
+ line-height: 18px;
121
+ color: #888;
122
+ text-shadow: 0 1px 0 white;
123
+ }
124
+
125
+ .smartbanner-ios .smartbanner-close:active,
126
+ .smartbanner-ios .smartbanner-close:hover {
127
+ color: #aaa;
128
+ }
129
+
130
+ .smartbanner-ios .smartbanner-icon {
131
+ /*background: rgba(0, 0, 0, 0.6);*/
132
+ background-size: cover;
133
+ /*box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);*/
134
+ }
135
+
136
+ .smartbanner-ios .smartbanner-info {
137
+ color: #6a6a6a;
138
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
139
+ }
140
+
141
+ .smartbanner-ios .smartbanner-title {
142
+ color: #4d4d4d;
143
+ font-weight: bold;
144
+ }
145
+
146
+ .smartbanner-ios .smartbanner-button {
147
+ padding: 0 10px;
148
+ min-width: 10%;
149
+ color: #6a6a6a;
150
+ background: #efefef;
151
+ background: linear-gradient(to bottom, #efefef, #dcdcdc);
152
+ border-radius: 3px;
153
+ box-shadow: inset 0 0 0 1px #bfbfbf, 0 1px 0 rgba(255, 255, 255, 0.6), 0 2px 0 rgba(255, 255, 255, 0.7) inset;
154
+ }
155
+
156
+ .smartbanner-ios .smartbanner-button:active,
157
+ .smartbanner-ios .smartbanner-button:hover {
158
+ background: #dcdcdc;
159
+ background: linear-gradient(to bottom, #dcdcdc, #efefef);
160
+ }
161
+
162
+ .smartbanner-ios .smartbanner-button-text {
163
+ }
164
+
165
+ .smartbanner-ios .smartbanner-button-text:active,
166
+ .smartbanner-ios .smartbanner-button-text:hover {
167
+ }
168
+
169
+ /** Android **/
170
+ .smartbanner-android {
171
+ background: #3d3d3d url(data:image/gif;base64,R0lGODlhCAAIAIABAFVVVf///yH5BAEHAAEALAAAAAAIAAgAAAINRG4XudroGJBRsYcxKAA7);
172
+ box-shadow: inset 0 4px 0 #88b131;
173
+ line-height: 82px;
174
+ }
175
+
176
+ .smartbanner-android .smartbanner-close {
177
+ border: 0;
178
+ width: 17px;
179
+ height: 17px;
180
+ line-height: 17px;
181
+ margin-right: 7px;
182
+ color: #b1b1b3;
183
+ background: #1c1e21;
184
+ text-shadow: 0 1px 1px #000;
185
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.8) inset, 0 1px 1px rgba(255, 255, 255, 0.3);
186
+ }
187
+
188
+ .smartbanner-android .smartbanner-close:active,
189
+ .smartbanner-android .smartbanner-close:hover {
190
+ color: #eee;
191
+ }
192
+
193
+ .smartbanner-android .smartbanner-icon {
194
+ background-color: transparent;
195
+ box-shadow: none;
196
+ }
197
+
198
+ .smartbanner-android .smartbanner-info {
199
+ color: #ccc;
200
+ text-shadow: 0 1px 2px #000;
201
+ }
202
+
203
+ .smartbanner-android .smartbanner-title {
204
+ color: #fff;
205
+ font-weight: bold;
206
+ }
207
+
208
+ .smartbanner-android .smartbanner-button {
209
+ min-width: 12%;
210
+ color: #d1d1d1;
211
+ padding: 0;
212
+ background: none;
213
+ border-radius: 0;
214
+ box-shadow: 0 0 0 1px #333, 0 0 0 2px #dddcdc;
215
+ }
216
+
217
+ .smartbanner-android .smartbanner-button:active,
218
+ .smartbanner-android .smartbanner-button:hover {
219
+ background: none;
220
+ }
221
+
222
+ .smartbanner-android .smartbanner-button-text {
223
+ text-align: center;
224
+ display: block;
225
+ padding: 0 10px;
226
+ background: #42b6c9;
227
+ background: linear-gradient(to bottom, #42b6c9, #39a9bb);
228
+ text-transform: none;
229
+ text-shadow: none;
230
+ box-shadow: none;
231
+ }
232
+
233
+ .smartbanner-android .smartbanner-button-text:active,
234
+ .smartbanner-android .smartbanner-button-text:hover {
235
+ background: #2ac7e1;
236
+ }
237
+
238
+ /** Windows **/
239
+ .smartbanner-windows {
240
+ background: #f4f4f4;
241
+ background: linear-gradient(to bottom, #f4f4f4, #cdcdcd);
242
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
243
+ line-height: 80px;
244
+ }
245
+
246
+ .smartbanner-windows .smartbanner-close {
247
+ border: 0;
248
+ width: 18px;
249
+ height: 18px;
250
+ line-height: 18px;
251
+ color: #888;
252
+ text-shadow: 0 1px 0 white;
253
+ }
254
+
255
+ .smartbanner-windows .smartbanner-close:active,
256
+ .smartbanner-windows .smartbanner-close:hover {
257
+ color: #aaa;
258
+ }
259
+
260
+ .smartbanner-windows .smartbanner-icon {
261
+ background: rgba(0, 0, 0, 0.6);
262
+ background-size: cover;
263
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
264
+ }
265
+
266
+ .smartbanner-windows .smartbanner-info {
267
+ color: #6a6a6a;
268
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
269
+ }
270
+
271
+ .smartbanner-windows .smartbanner-title {
272
+ color: #4d4d4d;
273
+ font-weight: bold;
274
+ }
275
+
276
+ .smartbanner-windows .smartbanner-button {
277
+ padding: 0 10px;
278
+ min-width: 10%;
279
+ color: #6a6a6a;
280
+ background: #efefef;
281
+ background: linear-gradient(to bottom, #efefef, #dcdcdc);
282
+ border-radius: 3px;
283
+ box-shadow: inset 0 0 0 1px #bfbfbf, 0 1px 0 rgba(255, 255, 255, 0.6), 0 2px 0 rgba(255, 255, 255, 0.7) inset;
284
+ }
285
+
286
+ .smartbanner-windows .smartbanner-button:active,
287
+ .smartbanner-windows .smartbanner-button:hover {
288
+ background: #dcdcdc;
289
+ background: linear-gradient(to bottom, #dcdcdc, #efefef);
290
+ }
291
+
292
+ .smartbanner-windows .smartbanner-button-text {
293
+ }
294
+
295
+ .smartbanner-windows .smartbanner-button-text:active,
296
+ .smartbanner-windows .smartbanner-button-text:hover {
297
+ }
skin/frontend/base/default/japi/lib/smart-app-banner/smart-app-banner.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function(u){"object"===typeof exports&&"undefined"!==typeof module?module.exports=u():"function"===typeof define&&define.amd?define([],u):("undefined"!==typeof window?window:"undefined"!==typeof global?global:"undefined"!==typeof self?self:this).SmartBanner=u()})(function(){return function c(f,h,e){function b(d,v){if(!h[d]){if(!f[d]){var g="function"==typeof require&&require;if(!v&&g)return g(d,!0);if(a)return a(d,!0);g=Error("Cannot find module '"+d+"'");throw g.code="MODULE_NOT_FOUND",g;}g=h[d]=
2
+ {exports:{}};f[d][0].call(g.exports,function(a){var e=f[d][1][a];return b(e?e:a)},g,g.exports,c,f,h,e)}return h[d].exports}for(var a="function"==typeof require&&require,d=0;d<e.length;d++)b(e[d]);return b}({1:[function(c,f,h){var e=c("xtend/mutable"),b=c("component-query"),a=c("get-doc"),d=c("cookie-cutter"),g=c("ua-parser-js"),v=(navigator.language||navigator.userLanguage||navigator.browserLanguage).slice(-2)||"us",p=a&&a.documentElement,l={ios:{appMeta:"apple-itunes-app",iconRels:["apple-touch-icon-precomposed",
3
+ "apple-touch-icon"],getStoreLink:function(){return"https://itunes.apple.com/"+this.options.appStoreLanguage+"/app/id"+this.appId}},android:{appMeta:"google-play-app",iconRels:["android-touch-icon","apple-touch-icon-precomposed","apple-touch-icon"],getStoreLink:function(){return"http://play.google.com/store/apps/details?id="+this.appId}},windows:{appMeta:"msApplication-ID",iconRels:["windows-touch-icon","apple-touch-icon-precomposed","apple-touch-icon"],getStoreLink:function(){return"http://www.windowsphone.com/s?appid="+
4
+ this.appId}}};c=function(a){var b=g(navigator.userAgent);this.options=e({},{daysHidden:15,daysReminder:90,appStoreLanguage:v,button:"OPEN",store:{ios:"On the App Store",android:"In Google Play",windows:"In the Windows Store"},price:{ios:"FREE",android:"FREE",windows:"FREE"},theme:"",icon:"",force:""},a||{});this.options.force?this.type=this.options.force:"Windows Phone"===b.os.name||"Windows Mobile"===b.os.name?this.type="windows":"iOS"===b.os.name?this.type="ios":"Android"===b.os.name&&(this.type=
5
+ "android");a=!this.type;var b="ios"===this.type&&"Mobile Safari"===b.browser.name&&6<=parseInt(b.os.version),m=navigator.standalone,r=d.get("smartbanner-closed"),w=d.get("smartbanner-installed");a||b||m||r||w||(e(this,l[this.type]),this.parseAppId()&&(this.create(),this.show()))};c.prototype={constructor:c,create:function(){var d=this.getStoreLink(),e=this.options.price[this.type]+" - "+this.options.store[this.type],m;if(this.options.icon)m=this.options.icon;else for(var r=0;r<this.iconRels.length;r++){var g=
6
+ b('link[rel="'+this.iconRels[r]+'"]');if(g){m=g.getAttribute("href");break}}var q=a.createElement("div");q.className="smartbanner smartbanner-"+(this.options.theme||this.type);q.innerHTML='<div class="smartbanner-container"><a href="javascript:void(0);" class="smartbanner-close">&times;</a><span class="smartbanner-icon" style="background-image: url('+m+')"></span><div class="smartbanner-info"><div class="smartbanner-title">'+this.options.title+"</div><div>"+this.options.author+"</div><span>"+e+'</span></div><a href="'+
7
+ d+'" class="smartbanner-button"><span class="smartbanner-button-text">'+this.options.button+"</span></a></div>";a.body?a.body.appendChild(q):a&&a.addEventListener("DOMContentLoaded",function(){a.body.appendChild(q)});b(".smartbanner-button",q).addEventListener("click",this.install.bind(this),!1);b(".smartbanner-close",q).addEventListener("click",this.close.bind(this),!1)},hide:function(){p.classList.remove("smartbanner-show")},show:function(){p.classList.add("smartbanner-show")},close:function(){this.hide();
8
+ d.set("smartbanner-closed","true",{path:"/",expires:new Date(Number(new Date)+864E5*this.options.daysHidden)})},install:function(){this.hide();d.set("smartbanner-installed","true",{path:"/",expires:new Date(Number(new Date)+864E5*this.options.daysReminder)})},parseAppId:function(){var a=b('meta[name="'+this.appMeta+'"]');if(a)return this.appId="windows"===this.type?a.getAttribute("content"):/app-id=([^\s,]+)/.exec(a.getAttribute("content"))[1]}};f.exports=c},{"component-query":2,"cookie-cutter":3,
9
+ "get-doc":4,"ua-parser-js":6,"xtend/mutable":7}],2:[function(c,f,h){function e(b,a){return a.querySelector(b)}h=f.exports=function(b,a){a=a||document;return e(b,a)};h.all=function(b,a){a=a||document;return a.querySelectorAll(b)};h.engine=function(b){if(!b.one)throw Error(".one callback required");if(!b.all)throw Error(".all callback required");e=b.one;h.all=b.all;return h}},{}],3:[function(c,f,h){h=f.exports=function(e){e||(e={});"string"===typeof e&&(e={cookie:e});void 0===e.cookie&&(e.cookie="");
10
+ return{get:function(b){for(var a=e.cookie.split(/;\s*/),d=0;d<a.length;d++){var g=a[d].split("=");if(unescape(g[0])===b)return unescape(g[1])}},set:function(b,a,d){d||(d={});b=escape(b)+"="+escape(a);d.expires&&(b+="; expires="+d.expires);d.path&&(b+="; path="+escape(d.path));return e.cookie=b}}};"undefined"!==typeof document&&(c=h(document),h.get=c.get,h.set=c.set)},{}],4:[function(c,f,h){c=c("has-dom");f.exports=c()?document:null},{"has-dom":5}],5:[function(c,f,h){f.exports=function(){return"undefined"!==
11
+ typeof window&&"undefined"!==typeof document&&"function"===typeof document.createElement}},{}],6:[function(c,f,h){(function(e,b){var a={extend:function(a,b){var d={},m;for(m in a)d[m]=b[m]&&0===b[m].length%2?b[m].concat(a[m]):a[m];return d},has:function(a,b){return"string"===typeof a?-1!==b.toLowerCase().indexOf(a.toLowerCase()):!1},lowerize:function(a){return a.toLowerCase()},major:function(a){return"string"===typeof a?a.replace(/[^\d\.]/g,"").split(".")[0]:b},trim:function(a){return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
12
+ "")}},d=function(){for(var a,d=0,e,g,c,k,h,f,l=arguments;d<l.length&&!h;){var p=l[d],n=l[d+1];if("undefined"===typeof a)for(c in a={},n)n.hasOwnProperty(c)&&(k=n[c],"object"===typeof k?a[k[0]]=b:a[k]=b);for(e=g=0;e<p.length&&!h;)if(h=p[e++].exec(this.getUA()))for(c=0;c<n.length;c++)f=h[++g],k=n[c],"object"===typeof k&&0<k.length?2==k.length?a[k[0]]="function"==typeof k[1]?k[1].call(this,f):k[1]:3==k.length?a[k[0]]="function"!==typeof k[1]||k[1].exec&&k[1].test?f?f.replace(k[1],k[2]):b:f?k[1].call(this,
13
+ f,k[2]):b:4==k.length&&(a[k[0]]=f?k[3].call(this,f.replace(k[1],k[2])):b):a[k]=f?f:b;d+=2}return a},g=function(d,e){for(var c in e)if("object"===typeof e[c]&&0<e[c].length)for(var g=0;g<e[c].length;g++){if(a.has(e[c][g],d))return"?"===c?b:c}else if(a.has(e[c],d))return"?"===c?b:c;return d},c={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2E3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2","8.1":"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},p={browser:[[/(opera\smini)\/([\w\.-]+)/i,
14
+ /(opera\s[mobiletab]+).+version\/([\w\.-]+)/i,/(opera).+version\/([\w\.]+)/i,/(opera)[\/\s]+([\w\.]+)/i],["name","version"],[/(opios)[\/\s]+([\w\.]+)/i],[["name","Opera Mini"],"version"],[/\s(opr)\/([\w\.]+)/i],[["name","Opera"],"version"],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]+)*/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(rekonq)\/([\w\.]+)*/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs)\/([\w\.-]+)/i],
15
+ ["name","version"],[/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],[["name","IE"],"version"],[/(edge)\/((\d+)?[\w\.]+)/i],["name","version"],[/(yabrowser)\/([\w\.]+)/i],[["name","Yandex"],"version"],[/(comodo_dragon)\/([\w\.]+)/i],[["name",/_/g," "],"version"],[/(micromessenger)\/([\w\.]+)/i],[["name","WeChat"],"version"],[/xiaomi\/miuibrowser\/([\w\.]+)/i],["version",["name","MIUI Browser"]],[/\swv\).+(chrome)\/([\w\.]+)/i],[["name",/(.+)/,"$1 WebView"],"version"],[/android.+samsungbrowser\/([\w\.]+)/i,
16
+ /android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i],["version",["name","Android Browser"]],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i,/(qqbrowser)[\/\s]?([\w\.]+)/i],["name","version"],[/(uc\s?browser)[\/\s]?([\w\.]+)/i,/ucweb.+(ucbrowser)[\/\s]?([\w\.]+)/i,/juc.+(ucweb)[\/\s]?([\w\.]+)/i],[["name","UCBrowser"],"version"],[/(dolfin)\/([\w\.]+)/i],[["name","Dolphin"],"version"],[/((?:android.+)crmo|crios)\/([\w\.]+)/i],[["name","Chrome"],"version"],[/;fbav\/([\w\.]+);/i],
17
+ ["version",["name","Facebook"]],[/fxios\/([\w\.-]+)/i],["version",["name","Firefox"]],[/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],["version",["name","Mobile Safari"]],[/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],["version","name"],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],["name",["version",g,{"1.0":"/8","1.2":"/1","1.3":"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(konqueror)\/([\w\.]+)/i,/(webkit|khtml)\/([\w\.]+)/i],["name","version"],[/(navigator|netscape)\/([\w\.-]+)/i],
18
+ [["name","Netscape"],"version"],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/([\w\.-]+)/i,/(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]+)*/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],["name","version"]],cpu:[[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i],
19
+ [["architecture","amd64"]],[/(ia32(?=;))/i],[["architecture",a.lowerize]],[/((?:i[346]|x)86)[;\)]/i],[["architecture","ia32"]],[/windows\s(ce|mobile);\sppc;/i],[["architecture","arm"]],[/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i],[["architecture",/ower/,"",a.lowerize]],[/(sun4\w)[;\)]/i],[["architecture","sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+;))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i],[["architecture",a.lowerize]]],device:[[/\((ipad|playbook);[\w\s\);-]+(rim|apple)/i],
20
+ ["model","vendor",["type","tablet"]],[/applecoremedia\/[\w\.]+ \((ipad)/],["model",["vendor","Apple"],["type","tablet"]],[/(apple\s{0,1}tv)/i],[["model","Apple TV"],["vendor","Apple"]],[/(archos)\s(gamepad2?)/i,/(hp).+(touchpad)/i,/(hp).+(tablet)/i,/(kindle)\/([\w\.]+)/i,/\s(nook)[\w\s]+build\/(\w+)/i,/(dell)\s(strea[kpr\s\d]*[\dko])/i],["vendor","model",["type","tablet"]],[/(kf[A-z]+)\sbuild\/[\w\.]+.*silk\//i],["model",["vendor","Amazon"],["type","tablet"]],[/(sd|kf)[0349hijorstuw]+\sbuild\/[\w\.]+.*silk\//i],
21
+ [["model",g,{"Fire Phone":["SD","KF"]}],["vendor","Amazon"],["type","mobile"]],[/\((ip[honed|\s\w*]+);.+(apple)/i],["model","vendor",["type","mobile"]],[/\((ip[honed|\s\w*]+);/i],["model",["vendor","Apple"],["type","mobile"]],[/(blackberry)[\s-]?(\w+)/i,/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|huawei|meizu|motorola|polytron)[\s_-]?([\w-]+)*/i,/(hp)\s([\w\s]+\w)/i,/(asus)-?(\w+)/i],["vendor","model",["type","mobile"]],[/\(bb10;\s(\w+)/i],["model",["vendor","BlackBerry"],["type","mobile"]],
22
+ [/android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone)/i],["model",["vendor","Asus"],["type","tablet"]],[/(sony)\s(tablet\s[ps])\sbuild\//i,/(sony)?(?:sgp.+)\sbuild\//i],[["vendor","Sony"],["model","Xperia Tablet"],["type","tablet"]],[/(?:sony)?(?:(?:(?:c|d)\d{4})|(?:so[-l].+))\sbuild\//i],[["vendor","Sony"],["model","Xperia Phone"],["type","mobile"]],[/\s(ouya)\s/i,/(nintendo)\s([wids3u]+)/i],["vendor","model",["type","console"]],[/android.+;\s(shield)\sbuild/i],["model",["vendor",
23
+ "Nvidia"],["type","console"]],[/(playstation\s[34portablevi]+)/i],["model",["vendor","Sony"],["type","console"]],[/(sprint\s(\w+))/i],[["vendor",g,{HTC:"APA",Sprint:"Sprint"}],["model",g,{"Evo Shift 4G":"7373KT"}],["type","mobile"]],[/(lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i],["vendor","model",["type","tablet"]],[/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i,/(zte)-(\w+)*/i,/(alcatel|geeksphone|huawei|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]+)*/i],["vendor",["model",/_/g," "],["type","mobile"]],
24
+ [/(nexus\s9)/i],["model",["vendor","HTC"],["type","tablet"]],[/(nexus\s6p)/i],["model",["vendor","Huawei"],["type","mobile"]],[/(microsoft);\s(lumia[\s\w]+)/i],["vendor","model",["type","mobile"]],[/[\s\(;](xbox(?:\sone)?)[\s\);]/i],["model",["vendor","Microsoft"],["type","console"]],[/(kin\.[onetw]{3})/i],[["model",/\./g," "],["vendor","Microsoft"],["type","mobile"]],[/\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?(:?\s4g)?)[\w\s]+build\//i,/mot[\s-]?(\w+)*/i,/(XT\d{3,4}) build\//i,/(nexus\s6)/i],
25
+ ["model",["vendor","Motorola"],["type","mobile"]],[/android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i],["model",["vendor","Motorola"],["type","tablet"]],[/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i],[["vendor",a.trim],["model",a.trim],["type","smarttv"]],[/hbbtv.+maple;(\d+)/i],[["model",/^/,"SmartTV"],["vendor","Samsung"],["type","smarttv"]],[/\(dtv[\);].+(aquos)/i],["model",["vendor","Sharp"],["type","smarttv"]],[/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i,
26
+ /((SM-T\w+))/i],[["vendor","Samsung"],"model",["type","tablet"]],[/smart-tv.+(samsung)/i],["vendor",["type","smarttv"],"model"],[/((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i,/(sam[sung]*)[\s-]*(\w+-?[\w-]*)*/i,/sec-((sgh\w+))/i],[["vendor","Samsung"],"model",["type","mobile"]],[/sie-(\w+)*/i],["model",["vendor","Siemens"],["type","mobile"]],[/(maemo|nokia).*(n900|lumia\s\d+)/i,/(nokia)[\s_-]?([\w-]+)*/i],[["vendor","Nokia"],"model",["type","mobile"]],[/android\s3\.[\s\w;-]{10}(a\d{3})/i],
27
+ ["model",["vendor","Acer"],["type","tablet"]],[/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i],[["vendor","LG"],"model",["type","tablet"]],[/(lg) netcast\.tv/i],["vendor","model",["type","smarttv"]],[/(nexus\s[45])/i,/lg[e;\s\/-]+(\w+)*/i],["model",["vendor","LG"],["type","mobile"]],[/android.+(ideatab[a-z0-9\-\s]+)/i],["model",["vendor","Lenovo"],["type","tablet"]],[/linux;.+((jolla));/i],["vendor","model",["type","mobile"]],[/((pebble))app\/[\d\.]+\s/i],["vendor","model",["type","wearable"]],[/android.+;\s(glass)\s\d/i],
28
+ ["model",["vendor","Google"],["type","wearable"]],[/android.+(\w+)\s+build\/hm\1/i,/android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i,/android.+(mi[\s\-_]*(?:one|one[\s_]plus|note lte)?[\s_]*(?:\d\w)?)\s+build/i],[["model",/_/g," "],["vendor","Xiaomi"],["type","mobile"]],[/android.+a000(1)\s+build/i],["model",["vendor","OnePlus"],["type","mobile"]],[/\s(tablet)[;\/]/i,/\s(mobile)(?:[;\/]|\ssafari)/i],[["type",a.lowerize],"vendor","model"]],engine:[[/windows.+\sedge\/([\w\.]+)/i],["version",["name",
29
+ "EdgeHTML"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],["name","version"],[/rv\:([\w\.]+).*(gecko)/i],["version","name"]],os:[[/microsoft\s(windows)\s(vista|xp)/i],["name","version"],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s]+\w)*/i,/(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],["name",["version",g,c]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],
30
+ [["name","Windows"],["version",g,c]],[/\((bb)(10);/i],[["name","BlackBerry"],"version"],[/(blackberry)\w*\/?([\w\.]+)*/i,/(tizen)[\/\s]([\w\.]+)/i,/(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i,/linux;.+(sailfish);/i],["name","version"],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],[["name","Symbian"],"version"],[/\((series40);/i],["name"],[/mozilla.+\(mobile;.+gecko.+firefox/i],[["name","Firefox OS"],"version"],[/(nintendo|playstation)\s([wids34portablevu]+)/i,
31
+ /(mint)[\/\s\(]?(\w+)*/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]+)*/i,/(hurd|linux)\s?([\w\.]+)*/i,/(gnu)\s?([\w\.]+)*/i],["name","version"],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[["name","Chromium OS"],"version"],[/(sunos)\s?([\w\.]+\d)*/i],[["name","Solaris"],"version"],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i],["name","version"],[/(haiku)\s(\w+)/i],["name",
32
+ "version"],[/(ip[honead]+)(?:.*os\s([\w]+)*\slike\smac|;\sopera)/i],[["name","iOS"],["version",/_/g,"."]],[/(mac\sos\sx)\s?([\w\s\.]+\w)*/i,/(macintosh|mac(?=_powerpc)\s)/i],[["name","Mac OS"],["version",/_/g,"."]],[/((?:open)?solaris)[\/\s-]?([\w\.]+)*/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i,/(unix)\s?([\w\.]+)*/i],["name","version"]]},l=function(b,c){if(!(this instanceof l))return(new l(b,c)).getResult();var g=b||(e&&e.navigator&&e.navigator.userAgent?
33
+ e.navigator.userAgent:""),f=c?a.extend(p,c):p;this.getBrowser=function(){var b=d.apply(this,f.browser);b.major=a.major(b.version);return b};this.getCPU=function(){return d.apply(this,f.cpu)};this.getDevice=function(){return d.apply(this,f.device)};this.getEngine=function(){return d.apply(this,f.engine)};this.getOS=function(){return d.apply(this,f.os)};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};
34
+ this.getUA=function(){return g};this.setUA=function(a){g=a;return this};return this};l.VERSION="0.7.12";l.BROWSER={NAME:"name",MAJOR:"major",VERSION:"version"};l.CPU={ARCHITECTURE:"architecture"};l.DEVICE={MODEL:"model",VENDOR:"vendor",TYPE:"type",CONSOLE:"console",MOBILE:"mobile",SMARTTV:"smarttv",TABLET:"tablet",WEARABLE:"wearable",EMBEDDED:"embedded"};l.ENGINE={NAME:"name",VERSION:"version"};l.OS={NAME:"name",VERSION:"version"};"undefined"!==typeof h?("undefined"!==typeof f&&f.exports&&(h=f.exports=
35
+ l),h.UAParser=l):e.UAParser=l;var n=e.jQuery||e.Zepto;if("undefined"!==typeof n){var t=new l;n.ua=t.getResult();n.ua.get=function(){return t.getUA()};n.ua.set=function(a){t.setUA(a);a=t.getResult();for(var b in a)n.ua[b]=a[b]}}})("object"===typeof window?window:this)},{}],7:[function(c,f,h){f.exports=function(b){for(var a=1;a<arguments.length;a++){var d=arguments[a],c;for(c in d)e.call(d,c)&&(b[c]=d[c])}return b};var e=Object.prototype.hasOwnProperty},{}]},{},[1])(1)});