Magento_Mobile - Version 1.4.2.0.23.0

Version Notes

1.4.2.0.23.0 version of package
internal svn revision #3cd616975d5927903d4f34bde0d9e5e2e727e9ba

Download this release

Release Info

Developer Magento Core Team
Extension Magento_Mobile
Version 1.4.2.0.23.0
Comparing to
See all releases


Code changes from version 1.4.1.0.23.0 to 1.4.2.0.23.0

Files changed (112) hide show
  1. app/code/core/Mage/XmlConnect/Block/Adminhtml/Admin/Application/Edit/Tab/Settings.php +1 -1
  2. app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Config.php +1 -1
  3. app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Dashboard.php +1 -1
  4. app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Dashboard/GraphInfo.php +1 -1
  5. app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Dashboard/GraphTotalsData.php +1 -1
  6. app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Dashboard/LastOrders.php +1 -1
  7. app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Dashboard/LastSearchTerms.php +1 -1
  8. app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Dashboard/SalesInfo.php +1 -1
  9. app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Dashboard/TopSearchTerms.php +2 -2
  10. app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Loginform.php +1 -1
  11. app/code/core/Mage/XmlConnect/Block/Adminhtml/Mobile/Edit/Tab/Content.php +20 -0
  12. app/code/core/Mage/XmlConnect/Block/Adminhtml/Mobile/Edit/Tab/Design/Images.php +1 -1
  13. app/code/core/Mage/XmlConnect/Block/Adminhtml/Mobile/Edit/Tab/Notification/Helper.php +0 -167
  14. app/code/core/Mage/XmlConnect/Block/Adminhtml/Mobile/Submission/Tab/Container/Submission.php +17 -17
  15. app/code/core/Mage/XmlConnect/Block/Adminhtml/Template/Preview.php +2 -0
  16. app/code/core/Mage/XmlConnect/Block/Cart.php +13 -12
  17. app/code/core/Mage/XmlConnect/Block/Cart/CartTotals.php +29 -0
  18. app/code/core/Mage/XmlConnect/Block/Cart/CartTotals/Nodes/Giftcardaccount.php +4 -4
  19. app/code/core/Mage/XmlConnect/Block/Cart/Item/Renderer/Configurable.php +3 -75
  20. app/code/core/Mage/XmlConnect/Block/Cart/Items.php +11 -11
  21. app/code/core/Mage/XmlConnect/Block/Cart/Paypal/Mecl/Details.php +2 -2
  22. app/code/core/Mage/XmlConnect/Block/Cart/Paypal/Mecl/OrderDetails.php +2 -2
  23. app/code/core/Mage/XmlConnect/Block/Cart/Paypal/Mecl/Review.php +0 -20
  24. app/code/core/Mage/XmlConnect/Block/Cart/Paypal/Mecl/Shippingmethods.php +2 -76
  25. app/code/core/Mage/XmlConnect/Block/Cart/Paypal/Mep/Totals.php +6 -14
  26. app/code/core/Mage/XmlConnect/Block/Cart/Totals.php +5 -4
  27. app/code/core/Mage/XmlConnect/Block/Catalog.php +4 -4
  28. app/code/core/Mage/XmlConnect/Block/Catalog/Product/ItemPrice/Giftcard.php +11 -12
  29. app/code/core/Mage/XmlConnect/Block/Catalog/Product/Options.php +1 -1
  30. app/code/core/Mage/XmlConnect/Block/Catalog/Product/Options/Bundle.php +20 -20
  31. app/code/core/Mage/XmlConnect/Block/Catalog/Product/Options/Configurable.php +27 -27
  32. app/code/core/Mage/XmlConnect/Block/Catalog/Product/Options/Giftcard.php +70 -108
  33. app/code/core/Mage/XmlConnect/Block/Catalog/Product/Options/Grouped.php +10 -10
  34. app/code/core/Mage/XmlConnect/Block/Catalog/Product/Options/Simple.php +1 -1
  35. app/code/core/Mage/XmlConnect/Block/Catalog/Product/Options/Virtual.php +1 -1
  36. app/code/core/Mage/XmlConnect/Block/Catalog/Product/Price/Bundle.php +3 -3
  37. app/code/core/Mage/XmlConnect/Block/Catalog/Product/Price/Default.php +237 -237
  38. app/code/core/Mage/XmlConnect/Block/Catalog/Product/Price/Giftcard.php +6 -6
  39. app/code/core/Mage/XmlConnect/Block/Checkout/Address/Form.php +1 -48
  40. app/code/core/Mage/XmlConnect/Block/Checkout/Cart/Item/Renderer/Configurable.php +1 -2
  41. app/code/core/Mage/XmlConnect/Block/Checkout/Cart/Item/Renderer/Grouped.php +1 -2
  42. app/code/core/Mage/XmlConnect/Block/Checkout/Onepage/Address.php +1 -1
  43. app/code/core/Mage/XmlConnect/Block/Checkout/Onepage/Address/Form.php +1 -1
  44. app/code/core/Mage/XmlConnect/Block/Checkout/Onepage/Address/List.php +34 -41
  45. app/code/core/Mage/XmlConnect/Block/Checkout/Order/Review/Info.php +12 -12
  46. app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/Ccsave.php +3 -3
  47. app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/Info/Ccsave.php +2 -2
  48. app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/Info/Paypal/Abstract.php +2 -2
  49. app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/Info/Pbridge/Verisign.php +2 -2
  50. app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/List.php +2 -28
  51. app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/ListApi23.php +1 -1
  52. app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/Paypal/Payflow.php +10 -10
  53. app/code/core/Mage/XmlConnect/Block/Checkout/Pbridge/Result.php +1 -1
  54. app/code/core/Mage/XmlConnect/Block/Configuration.php +1 -1
  55. app/code/core/Mage/XmlConnect/Block/Customer/Address/Form.php +0 -35
  56. app/code/core/Mage/XmlConnect/Block/Customer/Address/List.php +39 -46
  57. app/code/core/Mage/XmlConnect/Block/Customer/Form.php +121 -1
  58. app/code/core/Mage/XmlConnect/Block/Customer/Order/Item/Renderer/Bundle.php +7 -6
  59. app/code/core/Mage/XmlConnect/Block/Customer/Order/Item/Renderer/Downloadable.php +12 -0
  60. app/code/core/Mage/XmlConnect/Block/Customer/Order/List.php +10 -10
  61. app/code/core/Mage/XmlConnect/Block/Customer/Storecredit.php +9 -7
  62. app/code/core/Mage/XmlConnect/Block/Home.php +0 -1
  63. app/code/core/Mage/XmlConnect/Block/Homebanners.php +5 -4
  64. app/code/core/Mage/XmlConnect/Block/Localization.php +1 -1
  65. app/code/core/Mage/XmlConnect/Block/Review/Form.php +1 -1
  66. app/code/core/Mage/XmlConnect/Block/Wishlist.php +2 -2
  67. app/code/core/Mage/XmlConnect/Controller/AdminAction.php +3 -10
  68. app/code/core/Mage/XmlConnect/Helper/AdminApplication.php +2 -2
  69. app/code/core/Mage/XmlConnect/Helper/Android.php +86 -35
  70. app/code/core/Mage/XmlConnect/Helper/Customer/Form/Renderer.php +3 -3
  71. app/code/core/Mage/XmlConnect/Helper/Customer/Order.php +10 -10
  72. app/code/core/Mage/XmlConnect/Helper/Data.php +2 -1
  73. app/code/core/Mage/XmlConnect/Helper/Image.php +1 -3
  74. app/code/core/Mage/XmlConnect/Helper/Iphone.php +226 -11
  75. app/code/core/Mage/XmlConnect/Helper/Theme.php +1 -2
  76. app/code/core/Mage/XmlConnect/Model/AdminApplication.php +40 -0
  77. app/code/core/Mage/XmlConnect/Model/Application.php +6 -10
  78. app/code/core/Mage/XmlConnect/Model/ConfigData.php +8 -5
  79. app/code/core/Mage/XmlConnect/Model/Configuration.php +1 -1
  80. app/code/core/Mage/XmlConnect/Model/Corefix/Checkout/Session.php +137 -0
  81. app/code/core/Mage/XmlConnect/Model/Corefix/Checkout/Type/Onepage.php +465 -0
  82. app/code/core/Mage/XmlConnect/Model/Corefix/Sales/Quote.php +427 -0
  83. app/code/core/Mage/XmlConnect/Model/ImageLimits.php +8 -3
  84. app/code/core/Mage/XmlConnect/Model/Images.php +21 -29
  85. app/code/core/Mage/XmlConnect/Model/Payment/Method/Paypal/Mecl.php +3 -28
  86. app/code/core/Mage/XmlConnect/Model/Payment/Method/Paypal/Mep.php +2 -6
  87. app/code/core/Mage/XmlConnect/Model/Paypal/Mecl/Checkout.php +24 -0
  88. app/code/core/Mage/XmlConnect/Model/Paypal/Mep/Checkout.php +3 -2
  89. app/code/core/Mage/XmlConnect/Model/Queue.php +2 -8
  90. app/code/core/Mage/XmlConnect/Model/Resource/Application.php +5 -5
  91. app/code/core/Mage/XmlConnect/Model/Resource/ConfigData.php +5 -10
  92. app/code/core/Mage/XmlConnect/Model/Resource/History.php +2 -4
  93. app/code/core/Mage/XmlConnect/Model/Simplexml/Form/Element/Validator/Abstract.php +15 -14
  94. app/code/core/Mage/XmlConnect/Model/Simplexml/Message/Error.php +3 -2
  95. app/code/core/Mage/XmlConnect/Model/Tabs.php +1 -0
  96. app/code/core/Mage/XmlConnect/Model/Template.php +1 -7
  97. app/code/core/Mage/XmlConnect/controllers/Adminhtml/Connect/ConfigController.php +2 -2
  98. app/code/core/Mage/XmlConnect/controllers/CartController.php +2 -2
  99. app/code/core/Mage/XmlConnect/controllers/CatalogController.php +62 -2
  100. app/code/core/Mage/XmlConnect/controllers/CheckoutController.php +1 -0
  101. app/code/core/Mage/XmlConnect/controllers/CustomerController.php +71 -54
  102. app/code/core/Mage/XmlConnect/controllers/Paypal/MeclController.php +47 -18
  103. app/code/core/Mage/XmlConnect/controllers/Paypal/MepController.php +6 -4
  104. app/code/core/Mage/XmlConnect/controllers/WishlistController.php +3 -4
  105. app/code/core/Mage/XmlConnect/etc/config.xml +0 -2
  106. app/code/core/Mage/XmlConnect/sql/xmlconnect_setup/mysql4-data-upgrade-1.6.0.0-1.6.0.0.1.php +5 -4
  107. app/code/core/Mage/XmlConnect/sql/xmlconnect_setup/mysql4-upgrade-1.5.9.9-1.6.0.0.php +4 -3
  108. app/design/adminhtml/default/default/template/xmlconnect/edit/tab/content.phtml +3 -3
  109. app/design/adminhtml/default/default/template/xmlconnect/edit/tab/design/autocomplete.phtml +3 -3
  110. app/design/adminhtml/default/default/template/xmlconnect/form/element/addrow.phtml +1 -1
  111. app/design/adminhtml/default/default/template/xmlconnect/submission/app_icons_preview.phtml +2 -0
  112. package.xml +5 -5
app/code/core/Mage/XmlConnect/Block/Adminhtml/Admin/Application/Edit/Tab/Settings.php CHANGED
@@ -59,7 +59,7 @@ class Mage_XmlConnect_Block_Adminhtml_Admin_Application_Edit_Tab_Settings
59
  'title' => $this->__('Enable Admin Application'),
60
  'values' => Mage::getModel('adminhtml/system_config_source_yesno')->toOptionArray(),
61
  'required' => true,
62
- 'value' => (int)Mage::getSingleton('xmlconnect/configuration')->isActiveAdminApp()
63
  ));
64
 
65
  $this->setForm($form);
59
  'title' => $this->__('Enable Admin Application'),
60
  'values' => Mage::getModel('adminhtml/system_config_source_yesno')->toOptionArray(),
61
  'required' => true,
62
+ 'value' => Mage::getSingleton('xmlconnect/configuration')->isActiveAdminApp()
63
  ));
64
 
65
  $this->setForm($form);
app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Config.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Adminhtml_Connect_Config extends Mage_Core_Block_Abstract
35
  {
36
  /**
37
  * Render login form xml
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Adminhtml_Connect_Config extends Mage_Core_Block_Template
35
  {
36
  /**
37
  * Render login form xml
app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Dashboard.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Adminhtml_Connect_Dashboard extends Mage_Core_Block_Abstract
35
  {
36
  /**
37
  * Simple xml object
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Adminhtml_Connect_Dashboard extends Mage_Core_Block_Template
35
  {
36
  /**
37
  * Simple xml object
app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Dashboard/GraphInfo.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Adminhtml_Connect_Dashboard_GraphInfo extends Mage_Core_Block_Abstract
35
  {
36
  /**
37
  * Time range filter options
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Adminhtml_Connect_Dashboard_GraphInfo extends Mage_Core_Block_Template
35
  {
36
  /**
37
  * Time range filter options
app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Dashboard/GraphTotalsData.php CHANGED
@@ -52,7 +52,7 @@ class Mage_XmlConnect_Block_Adminhtml_Connect_Dashboard_GraphTotalsData extends
52
  */
53
  protected function _initCollection($storeId, $rangeId)
54
  {
55
- if (!is_object(Mage::getConfig()->getNode('modules/' . 'Mage_Reports'))) {
56
  return $this;
57
  }
58
 
52
  */
53
  protected function _initCollection($storeId, $rangeId)
54
  {
55
+ if (!Mage::helper('core')->isModuleEnabled('Mage_Reports')) {
56
  return $this;
57
  }
58
 
app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Dashboard/LastOrders.php CHANGED
@@ -46,7 +46,7 @@ class Mage_XmlConnect_Block_Adminhtml_Connect_Dashboard_LastOrders extends Mage_
46
  */
47
  public function addLastOrdersToXmlObj(Mage_XmlConnect_Model_Simplexml_Element $xmlObj)
48
  {
49
- if (!is_object(Mage::getConfig()->getNode('modules/' . 'Mage_Reports'))) {
50
  return $this;
51
  }
52
 
46
  */
47
  public function addLastOrdersToXmlObj(Mage_XmlConnect_Model_Simplexml_Element $xmlObj)
48
  {
49
+ if (!Mage::helper('core')->isModuleEnabled('Mage_Reports')) {
50
  return $this;
51
  }
52
 
app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Dashboard/LastSearchTerms.php CHANGED
@@ -57,7 +57,7 @@ class Mage_XmlConnect_Block_Adminhtml_Connect_Dashboard_LastSearchTerms
57
  */
58
  protected function _initCollection($storeId)
59
  {
60
- if (!is_object(Mage::getConfig()->getNode('modules/' . 'Mage_CatalogSearch'))) {
61
  return $this;
62
  }
63
  /** @var $_collection Mage_CatalogSearch_Model_Resource_Query_Collection */
57
  */
58
  protected function _initCollection($storeId)
59
  {
60
+ if (!Mage::helper('core')->isModuleEnabled('Mage_CatalogSearch')) {
61
  return $this;
62
  }
63
  /** @var $_collection Mage_CatalogSearch_Model_Resource_Query_Collection */
app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Dashboard/SalesInfo.php CHANGED
@@ -70,7 +70,7 @@ class Mage_XmlConnect_Block_Adminhtml_Connect_Dashboard_SalesInfo extends Mage_A
70
  */
71
  protected function _prepareLayout()
72
  {
73
- if (!is_object(Mage::getConfig()->getNode('modules/' . 'Mage_Reports'))) {
74
  return $this;
75
  }
76
 
70
  */
71
  protected function _prepareLayout()
72
  {
73
+ if (!Mage::helper('core')->isModuleEnabled('Mage_Reports')) {
74
  return $this;
75
  }
76
 
app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Dashboard/TopSearchTerms.php CHANGED
@@ -57,7 +57,7 @@ class Mage_XmlConnect_Block_Adminhtml_Connect_Dashboard_TopSearchTerms
57
  */
58
  protected function _initCollection($storeId)
59
  {
60
- if (!is_object(Mage::getConfig()->getNode('modules/' . 'Mage_CatalogSearch'))) {
61
  return $this;
62
  }
63
  /** @var $_collection Mage_CatalogSearch_Model_Resource_Query_Collection */
@@ -82,7 +82,7 @@ class Mage_XmlConnect_Block_Adminhtml_Connect_Dashboard_TopSearchTerms
82
  * Add last search terms info to xml object
83
  *
84
  * @param Mage_XmlConnect_Model_Simplexml_Element $xmlObj
85
- * @return Mage_XmlConnect_Block_Adminhtml_Connect_Dashboard_TopSearchTerms
86
  */
87
  public function addTopSearchTermsToXmlObj(Mage_XmlConnect_Model_Simplexml_Element $xmlObj)
88
  {
57
  */
58
  protected function _initCollection($storeId)
59
  {
60
+ if (!Mage::helper('core')->isModuleEnabled('Mage_CatalogSearch')) {
61
  return $this;
62
  }
63
  /** @var $_collection Mage_CatalogSearch_Model_Resource_Query_Collection */
82
  * Add last search terms info to xml object
83
  *
84
  * @param Mage_XmlConnect_Model_Simplexml_Element $xmlObj
85
+ * @return Mage_XmlConnect_Block_Adminhtml_Connect_Dashboard_LastOrders
86
  */
87
  public function addTopSearchTermsToXmlObj(Mage_XmlConnect_Model_Simplexml_Element $xmlObj)
88
  {
app/code/core/Mage/XmlConnect/Block/Adminhtml/Connect/Loginform.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Adminhtml_Connect_Loginform extends Mage_Core_Block_Abstract
35
  {
36
  /**
37
  * Render login form xml
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Adminhtml_Connect_Loginform extends Mage_Core_Block_Template
35
  {
36
  /**
37
  * Render login form xml
app/code/core/Mage/XmlConnect/Block/Adminhtml/Mobile/Edit/Tab/Content.php CHANGED
@@ -104,6 +104,26 @@ class Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Content
104
  return $this;
105
  }
106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  /**
108
  * Prepare label for tab
109
  *
104
  return $this;
105
  }
106
 
107
+ /**
108
+ * Retrieve add page button
109
+ *
110
+ * @return string
111
+ */
112
+ public function getAddButtonHtml()
113
+ {
114
+ return $this->getChildHtml('add_button');
115
+ }
116
+
117
+ /**
118
+ * Retrieve delete page button
119
+ *
120
+ * @return string
121
+ */
122
+ public function getDeleteButtonHtml()
123
+ {
124
+ return $this->getChildHtml('delete_button');
125
+ }
126
+
127
  /**
128
  * Prepare label for tab
129
  *
app/code/core/Mage/XmlConnect/Block/Adminhtml/Mobile/Edit/Tab/Design/Images.php CHANGED
@@ -168,7 +168,7 @@ class Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Design_Images extends Mage
168
  /**
169
  * Retrieve image config object
170
  *
171
- * @return Varien_Object
172
  */
173
  public function getConfig()
174
  {
168
  /**
169
  * Retrieve image config object
170
  *
171
+ * @return Varien_Config
172
  */
173
  public function getConfig()
174
  {
app/code/core/Mage/XmlConnect/Block/Adminhtml/Mobile/Edit/Tab/Notification/Helper.php DELETED
@@ -1,167 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * DISCLAIMER
16
- *
17
- * Do not edit or add to this file if you wish to upgrade Magento to newer
18
- * versions in the future. If you wish to customize Magento for your
19
- * needs please refer to http://www.magentocommerce.com for more information.
20
- *
21
- * @category Mage
22
- * @package Mage_XmlConnect
23
- * @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
24
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
- */
26
- class Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Notification_Helper extends Mage_XmlConnect_Block_Adminhtml_Mobile_Widget_Form
27
- implements Mage_Adminhtml_Block_Widget_Tab_Interface
28
- {
29
- /**
30
- * Construnctor
31
- * Setting view options
32
- */
33
- public function __construct()
34
- {
35
- parent::__construct();
36
- $this->setShowGlobalIcon(true);
37
- }
38
-
39
- /**
40
- * Prepare form before rendering HTML
41
- * Setting Form Fieldsets and fields
42
- *
43
- * @return Mage_Adminhtml_Block_Widget_Form
44
- */
45
- protected function _prepareForm()
46
- {
47
- $form = new Varien_Data_Form();
48
-
49
- $this->setForm($form);
50
-
51
- $data = $this->getApplication()->getFormData();
52
-
53
- $yesNoValues = Mage::getModel('adminhtml/system_config_source_yesno')->toOptionArray();
54
-
55
- $fieldset = $form->addFieldset('notifications', array(
56
- 'legend' => Mage::helper('xmlconnect')->__('Push Notification'),
57
- ));
58
-
59
- $notificationEnabled = $fieldset->addField('conf/native/notifisations/isActive', 'select', array(
60
- 'label' => Mage::helper('xmlconnect')->__('Enable AirMail Message Push notification'),
61
- 'name' => 'conf[native][notifications][isActive]',
62
- 'values' => $yesNoValues,
63
- 'value' => (isset($data['conf[native][notifications][isActive]']) ? $data['conf[native][notifications][isActive]'] : '0'),
64
- ));
65
-
66
- $applicationKey = $fieldset->addField('conf/native/notifications/applicationKey', 'text', array(
67
- 'label' => Mage::helper('xmlconnect')->__('Application Key'),
68
- 'name' => 'conf[native][notifications][applicationKey]',
69
- 'value' => (isset($data['conf[native][notifications][applicationKey]']) ? $data['conf[native][notifications][applicationKey]'] : ''),
70
- 'required' => true
71
- ));
72
-
73
- $applicationSecret = $fieldset->addField('conf/native/notifications/applicationSecret', 'text', array(
74
- 'label' => Mage::helper('xmlconnect')->__('Application Secret'),
75
- 'name' => 'conf[native][notifications][applicationSecret]',
76
- 'value' => (isset($data['conf[native][notifications][applicationSecret]']) ? $data['conf[native][notifications][applicationSecret]'] : ''),
77
- 'required' => true
78
- ));
79
-
80
-
81
- $applicationMasterSecret = $fieldset->addField('conf/native/notifications/applicationMasterSecret', 'text', array(
82
- 'label' => Mage::helper('xmlconnect')->__('Application Master Secret'),
83
- 'name' => 'conf[native][notifications][applicationMasterSecret]',
84
- 'value' => (isset($data['conf[native][notifications][applicationMasterSecret]']) ? $data['conf[native][notifications][applicationMasterSecret]'] : ''),
85
- 'required' => true
86
- ));
87
-
88
- $mailboxTitle = $fieldset->addField('conf/native/notifications/mailboxTitle', 'text', array(
89
- 'label' => Mage::helper('xmlconnect')->__('Mailbox title'),
90
- 'name' => 'conf[native][notifications][mailboxTitle]',
91
- 'value' => (isset($data['conf[native][notifications][mailboxTitle]']) ? $data['conf[native][notifications][mailboxTitle]'] : ''),
92
- 'required' => true,
93
- 'note' => Mage::helper('xmlconnect')->__('The Mailbox title will be shown in the More Info tab. To understand more about the title, please <a href="some link">click here</a>')
94
- ));
95
-
96
- // field dependencies
97
- $this->setChild('form_after', $this->getLayout()->createBlock('adminhtml/widget_form_element_dependence')
98
- ->addFieldMap($applicationKey->getHtmlId(), $applicationKey->getName())
99
- ->addFieldMap($applicationSecret->getHtmlId(), $applicationSecret->getName())
100
- ->addFieldMap($applicationMasterSecret->getHtmlId(), $applicationMasterSecret->getName())
101
- ->addFieldMap($mailboxTitle->getHtmlId(), $mailboxTitle->getName())
102
- ->addFieldMap($notificationEnabled->getHtmlId(), $notificationEnabled->getName())
103
- ->addFieldDependence(
104
- $applicationKey->getName(),
105
- $notificationEnabled->getName(),
106
- 1)
107
- ->addFieldDependence(
108
- $applicationSecret->getName(),
109
- $notificationEnabled->getName(),
110
- 1)
111
- ->addFieldDependence(
112
- $applicationMasterSecret->getName(),
113
- $notificationEnabled->getName(),
114
- 1)
115
- ->addFieldDependence(
116
- $mailboxTitle->getName(),
117
- $notificationEnabled->getName(),
118
- 1)
119
- );
120
-
121
- return parent::_prepareForm();
122
- }
123
-
124
- /**
125
- * Tab label getter
126
- *
127
- * @return string
128
- */
129
- public function getTabLabel()
130
- {
131
- return Mage::helper('xmlconnect')->__('Push Notification');
132
- }
133
-
134
- /**
135
- * Tab title getter
136
- *
137
- * @return string
138
- */
139
- public function getTabTitle()
140
- {
141
- return Mage::helper('xmlconnect')->__('Push Notification');
142
- }
143
-
144
- /**
145
- * Check if tab can be shown
146
- *
147
- * @return bool
148
- */
149
- public function canShowTab()
150
- {
151
- return (bool) !Mage::getSingleton('adminhtml/session')->getNewApplication();
152
- }
153
-
154
- /**
155
- * Check if tab hidden
156
- *
157
- * @return bool
158
- */
159
- public function isHidden()
160
- {
161
- if (!$this->getData('conf/special/notifications_submitted')) {
162
- return false;
163
- } else {
164
- return true;
165
- }
166
- }
167
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/core/Mage/XmlConnect/Block/Adminhtml/Mobile/Submission/Tab/Container/Submission.php CHANGED
@@ -191,7 +191,7 @@ class Mage_XmlConnect_Block_Adminhtml_Mobile_Submission_Tab_Container_Submission
191
  $fieldset->addField('conf/submit_text/contact_email', 'text', array(
192
  'name' => 'conf[submit_text][email]',
193
  'label' => $this->__('Contact Email'),
194
- 'class' => 'validate-email email',
195
  'maxlength' => '40',
196
  'value' => isset($formData['conf[submit_text][email]']) ? $formData['conf[submit_text][email]'] : null,
197
  'note' => $this->__('Administrative contact for this app and for app submission issues.'),
@@ -270,54 +270,54 @@ class Mage_XmlConnect_Block_Adminhtml_Mobile_Submission_Tab_Container_Submission
270
  switch ($deviceType) {
271
  case Mage_XmlConnect_Helper_Data::DEVICE_TYPE_IPHONE:
272
  $this->addImage($fieldset, 'conf/submit/icon', $this->__('Large iTunes Icon'),
273
- $this->__('Large icon that appears in the iTunes App Store. You do not need to apply a gradient or soft edges (this is done automatically by Apple).') . $this->__('Required size: %spx x %spx.', 512, 512), '', true);
274
 
275
  $this->addImage($fieldset, 'conf/submit/loader_image', $this->__('Loader Splash Screen'),
276
- $this->__('Image that appears on first screen while your app is loading.') . $this->__('Required size: %spx x %spx.', 320, 460), '', true);
277
 
278
  $this->addImage($fieldset, 'conf/submit/loader_image_i4', $this->__('Loader Splash Screen <br />(iPhone 4 retina)'),
279
- $this->__('Image that appears on first screen while your app is loading.') . $this->__('Required size: %spx x %spx.', 640, 920), '', false);
280
 
281
  $this->addImage($fieldset, 'conf/submit/logo', $this->__('Custom App Icon'),
282
- $this->__('Icon that will appear on the user\'s phone after they download your app. You do not need to apply a gradient or soft edges (this is done automatically by Apple).') . $this->__('Recommended size: %spx x %spx at %s dpi.', 57, 57, 72), '', true);
283
 
284
  $this->addImage($fieldset, 'conf/submit/logo_i4', $this->__('Custom App Icon <br />(iPhone 4 retina)'),
285
- $this->__('Icon that will appear on the user\'s phone after they download your app. You do not need to apply a gradient or soft edges (this is done automatically by Apple).') . $this->__('Recommended size: %spx x %spx.', 114, 114), '', false);
286
 
287
  $this->addImage($fieldset, 'conf/submit/big_logo', $this->__('Copyright Page Logo'),
288
- $this->__('Store logo that is displayed on copyright page of app.') . $this->__('Preferred size: %spx x %spx.', 100, 100), '', true);
289
 
290
  $this->addImage($fieldset, 'conf/submit/big_logo_i4', $this->__('Copyright Page Logo <br />(iPhone 4 retina)'),
291
- $this->__('Store logo that is displayed on copyright page of app.') . $this->__('Preferred size: %spx x %spx.', 200, 200), '', false);
292
  break;
293
  case Mage_XmlConnect_Helper_Data::DEVICE_TYPE_IPAD:
294
  $this->addImage($fieldset, 'conf/submit/icon', $this->__('Large iTunes Icon'),
295
- $this->__('Large icon that appears in the iTunes App Store. You do not need to apply a gradient or soft edges (this is done automatically by Apple).') . $this->__('Required size: %spx x %spx.', 512, 512), '', true);
296
 
297
  $this->addImage($fieldset, 'conf/submit/ipad_loader_portrait_image', $this->__('Loader Splash Screen <br />(portrait mode)'),
298
- $this->__('Image that appears on first screen while your app is loading.') . $this->__('Required size: %spx x %spx.', 768, 1024), '', true);
299
 
300
  $this->addImage($fieldset, 'conf/submit/ipad_loader_landscape_image', $this->__('Loader Splash Screen <br />(landscape mode)'),
301
- $this->__('Image that appears on first screen while your app is loading.') . $this->__('Required size: %spx x %spx.', 1024, 768), '', true);
302
 
303
  $this->addImage($fieldset, 'conf/submit/ipad_logo', $this->__('Custom App Icon'),
304
- $this->__('Icon that will appear on the user\'s device after they download your app. You do not need to apply a gradient or soft edges (this is done automatically by Apple).') . $this->__('Recommended size: %spx x %spx.', 72, 72), '', true);
305
 
306
  $this->addImage($fieldset, 'conf/submit/big_logo', $this->__('Copyright Page Logo'),
307
- $this->__('Store logo that is displayed on copyright page of app.') . $this->__('Preferred size: %spx x %spx.', 100, 100), '', true);
308
  break;
309
  case Mage_XmlConnect_Helper_Data::DEVICE_TYPE_ANDROID:
310
  $this->addImage($fieldset, 'conf/submit/icon', $this->__('High Resolution Application Icon'),
311
- $this->__('The icon that appears in the Android Market.') . $this->__('Recommended size: %spx x %spx.', 512, 512) . $this->__('Maximum size: %s KB.', 1024), '', true);
312
 
313
  $this->addImage($fieldset, 'conf/submit/android_loader_image', $this->__('Loader Splash Screen'),
314
- $this->__('Image that appears on first screen while your app is loading.') . $this->__('Required size: %spx x %spx.', 320, 455), '', true);
315
 
316
  $this->addImage($fieldset, 'conf/submit/android_logo', $this->__('Custom App Icon'),
317
- $this->__('Icon that will appear on the user\'s device after they download your app.') . $this->__('Recommended size: %spx x %spx.', 48, 48), '', true);
318
 
319
  $this->addImage($fieldset, 'conf/submit/big_logo', $this->__('Copyright Page Logo'),
320
- $this->__('Store logo that is displayed on copyright page of app.') . $this->__('Preferred size: %spx x %spx.', 100, 100), '', true);
321
  break;
322
  }
323
 
191
  $fieldset->addField('conf/submit_text/contact_email', 'text', array(
192
  'name' => 'conf[submit_text][email]',
193
  'label' => $this->__('Contact Email'),
194
+ 'class' => 'email',
195
  'maxlength' => '40',
196
  'value' => isset($formData['conf[submit_text][email]']) ? $formData['conf[submit_text][email]'] : null,
197
  'note' => $this->__('Administrative contact for this app and for app submission issues.'),
270
  switch ($deviceType) {
271
  case Mage_XmlConnect_Helper_Data::DEVICE_TYPE_IPHONE:
272
  $this->addImage($fieldset, 'conf/submit/icon', $this->__('Large iTunes Icon'),
273
+ $this->__('Large icon that appears in the iTunes App Store. You do not need to apply a gradient or soft edges (this is done automatically by Apple). Required size: 512px x 512px.'), '', true);
274
 
275
  $this->addImage($fieldset, 'conf/submit/loader_image', $this->__('Loader Splash Screen'),
276
+ $this->__('Image that appears on first screen while your app is loading. Required size: 320px x 460px.'), '', true);
277
 
278
  $this->addImage($fieldset, 'conf/submit/loader_image_i4', $this->__('Loader Splash Screen <br />(iPhone 4 retina)'),
279
+ $this->__('Image that appears on first screen while your app is loading. Required size: 640px x 920px.'), '', false);
280
 
281
  $this->addImage($fieldset, 'conf/submit/logo', $this->__('Custom App Icon'),
282
+ $this->__('Icon that will appear on the users phone after they download your app. You do not need to apply a gradient or soft edges (this is done automatically by Apple). Recommended size: 57px x 57px at 72 dpi.'), '', true);
283
 
284
  $this->addImage($fieldset, 'conf/submit/logo_i4', $this->__('Custom App Icon <br />(iPhone 4 retina)'),
285
+ $this->__('Icon that will appear on the user\'s phone after they download your app. You do not need to apply a gradient or soft edges (this is done automatically by Apple). Recommended size: 114px x 114px.'), '', false);
286
 
287
  $this->addImage($fieldset, 'conf/submit/big_logo', $this->__('Copyright Page Logo'),
288
+ $this->__('Store logo that is displayed on copyright page of app. Preferred size: 100px x 100px.'), '', true);
289
 
290
  $this->addImage($fieldset, 'conf/submit/big_logo_i4', $this->__('Copyright Page Logo <br />(iPhone 4 retina)'),
291
+ $this->__('Store logo that is displayed on copyright page of app. Preferred size: 200px x 200px.'), '', false);
292
  break;
293
  case Mage_XmlConnect_Helper_Data::DEVICE_TYPE_IPAD:
294
  $this->addImage($fieldset, 'conf/submit/icon', $this->__('Large iTunes Icon'),
295
+ $this->__('Large icon that appears in the iTunes App Store. You do not need to apply a gradient or soft edges (this is done automatically by Apple). Required size: 512px x 512px.'), '', true);
296
 
297
  $this->addImage($fieldset, 'conf/submit/ipad_loader_portrait_image', $this->__('Loader Splash Screen <br />(portrait mode)'),
298
+ $this->__('Image that appears on first screen while your app is loading. Required size: 768px x 1024px.'), '', true);
299
 
300
  $this->addImage($fieldset, 'conf/submit/ipad_loader_landscape_image', $this->__('Loader Splash Screen <br />(landscape mode)'),
301
+ $this->__('Image that appears on first screen while your app is loading. Required size: 1024px x 768px.'), '', true);
302
 
303
  $this->addImage($fieldset, 'conf/submit/ipad_logo', $this->__('Custom App Icon'),
304
+ $this->__('Icon that will appear on the user\'s device after they download your app. You do not need to apply a gradient or soft edges (this is done automatically by Apple). Recommended size: 72px x 72px.'), '', true);
305
 
306
  $this->addImage($fieldset, 'conf/submit/big_logo', $this->__('Copyright Page Logo'),
307
+ $this->__('Store logo that is displayed on copyright page of app. Preferred size: 100px x 100px.'), '', true);
308
  break;
309
  case Mage_XmlConnect_Helper_Data::DEVICE_TYPE_ANDROID:
310
  $this->addImage($fieldset, 'conf/submit/icon', $this->__('High Resolution Application Icon'),
311
+ $this->__('The icon that appears in the Android Market. Recommended size: 512px x 512px. Maximum size: 1024 KB.'), '', true);
312
 
313
  $this->addImage($fieldset, 'conf/submit/android_loader_image', $this->__('Loader Splash Screen'),
314
+ $this->__('Image that appears on first screen while your app is loading. Required size: 320px x 455px.'), '', true);
315
 
316
  $this->addImage($fieldset, 'conf/submit/android_logo', $this->__('Custom App Icon'),
317
+ $this->__('Icon that will appear on the user\'s device after they download your app. Recommended size: 48px x 48px.'), '', true);
318
 
319
  $this->addImage($fieldset, 'conf/submit/big_logo', $this->__('Copyright Page Logo'),
320
+ $this->__('Store logo that is displayed on copyright page of app. Preferred size: 100px x 100px.'), '', true);
321
  break;
322
  }
323
 
app/code/core/Mage/XmlConnect/Block/Adminhtml/Template/Preview.php CHANGED
@@ -60,7 +60,9 @@ class Mage_XmlConnect_Block_Adminhtml_Template_Preview extends Mage_Adminhtml_Bl
60
  $storeId = Mage::app()->getDefaultStoreView()->getId();
61
  }
62
 
 
63
  $templateProcessed = $template->getProcessedTemplate(array(), true);
 
64
 
65
  return $templateProcessed;
66
  }
60
  $storeId = Mage::app()->getDefaultStoreView()->getId();
61
  }
62
 
63
+ $template->emulateDesign($storeId);
64
  $templateProcessed = $template->getProcessedTemplate(array(), true);
65
+ $template->revertDesign();
66
 
67
  return $templateProcessed;
68
  }
app/code/core/Mage/XmlConnect/Block/Cart.php CHANGED
@@ -84,13 +84,13 @@ class Mage_XmlConnect_Block_Cart extends Mage_Checkout_Block_Cart_Abstract
84
  }
85
  }
86
  if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) {
87
- $incl = $this->helper('checkout')->getPriceInclTax($item);
88
  if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales')
89
  && $item->getWeeeTaxAppliedAmount()
90
  ) {
91
- $inclPrice = $incl + $item->getWeeeTaxAppliedAmount();
92
  } else {
93
- $inclPrice = $incl - $item->getWeeeTaxDisposition();
94
  }
95
  }
96
  $exclPrice = Mage::helper('xmlconnect')->formatPriceForXml($exclPrice);
@@ -150,13 +150,13 @@ class Mage_XmlConnect_Block_Cart extends Mage_Checkout_Block_Cart_Abstract
150
  }
151
  }
152
  if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) {
153
- $incl = $this->helper('checkout')->getSubtotalInclTax($item);
154
  if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales')
155
  && $item->getWeeeTaxAppliedAmount()
156
  ) {
157
- $inclPrice = $incl + $item->getWeeeTaxAppliedRowAmount();
158
  } else {
159
- $inclPrice = $incl - $item->getWeeeTaxRowDisposition();
160
  }
161
  }
162
 
@@ -172,6 +172,7 @@ class Mage_XmlConnect_Block_Cart extends Mage_Checkout_Block_Cart_Abstract
172
  if ($this->helper('tax')->displayCartBothPrices()) {
173
  $subtotalPriceXmlObj->addAttribute('excluding_tax', $exclPrice);
174
  $subtotalPriceXmlObj->addAttribute('including_tax', $inclPrice);
 
175
  $subtotalFormattedPriceXmlObj->addAttribute('excluding_tax', $formattedExclPrice);
176
  $subtotalFormattedPriceXmlObj->addAttribute('including_tax', $formattedInclPrice);
177
  } else {
@@ -188,14 +189,14 @@ class Mage_XmlConnect_Block_Cart extends Mage_Checkout_Block_Cart_Abstract
188
  /**
189
  * Options list
190
  */
191
- $options = $renderer->getOptionList();
192
- if ($options) {
193
  $itemOptionsXml = $itemXml->addChild('options');
194
- foreach ($options as $option) {
195
- $formattedOptionValue = $renderer->getFormatedOptionValue($option);
196
  $optionXml = $itemOptionsXml->addChild('option');
197
- $optionXml->addAttribute('label', $xmlObject->xmlAttribute($option['label']));
198
- $optionXml->addAttribute('text', $xmlObject->xmlAttribute($formattedOptionValue['value']));
199
  }
200
  }
201
 
84
  }
85
  }
86
  if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) {
87
+ $_incl = $this->helper('checkout')->getPriceInclTax($item);
88
  if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales')
89
  && $item->getWeeeTaxAppliedAmount()
90
  ) {
91
+ $inclPrice = $_incl + $item->getWeeeTaxAppliedAmount();
92
  } else {
93
+ $inclPrice = $_incl - $item->getWeeeTaxDisposition();
94
  }
95
  }
96
  $exclPrice = Mage::helper('xmlconnect')->formatPriceForXml($exclPrice);
150
  }
151
  }
152
  if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) {
153
+ $_incl = $this->helper('checkout')->getSubtotalInclTax($item);
154
  if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales')
155
  && $item->getWeeeTaxAppliedAmount()
156
  ) {
157
+ $inclPrice = $_incl + $item->getWeeeTaxAppliedRowAmount();
158
  } else {
159
+ $inclPrice = $_incl - $item->getWeeeTaxRowDisposition();
160
  }
161
  }
162
 
172
  if ($this->helper('tax')->displayCartBothPrices()) {
173
  $subtotalPriceXmlObj->addAttribute('excluding_tax', $exclPrice);
174
  $subtotalPriceXmlObj->addAttribute('including_tax', $inclPrice);
175
+
176
  $subtotalFormattedPriceXmlObj->addAttribute('excluding_tax', $formattedExclPrice);
177
  $subtotalFormattedPriceXmlObj->addAttribute('including_tax', $formattedInclPrice);
178
  } else {
189
  /**
190
  * Options list
191
  */
192
+ $_options = $renderer->getOptionList();
193
+ if ($_options) {
194
  $itemOptionsXml = $itemXml->addChild('options');
195
+ foreach ($_options as $_option) {
196
+ $_formattedOptionValue = $renderer->getFormatedOptionValue($_option);
197
  $optionXml = $itemOptionsXml->addChild('option');
198
+ $optionXml->addAttribute('label', $xmlObject->xmlAttribute($_option['label']));
199
+ $optionXml->addAttribute('text', $xmlObject->xmlAttribute($_formattedOptionValue['value']));
200
  }
201
  }
202
 
app/code/core/Mage/XmlConnect/Block/Cart/CartTotals.php CHANGED
@@ -40,6 +40,13 @@ class Mage_XmlConnect_Block_Cart_CartTotals extends Mage_Checkout_Block_Cart_Tot
40
  */
41
  protected $_defaultRenderer = 'xmlconnect/cart_cartTotals_default';
42
 
 
 
 
 
 
 
 
43
  /**
44
  * Render cart totals xml
45
  *
@@ -92,4 +99,26 @@ class Mage_XmlConnect_Block_Cart_CartTotals extends Mage_Checkout_Block_Cart_Tot
92
  $block->setTotals($this->getTotals());
93
  return $block;
94
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  }
40
  */
41
  protected $_defaultRenderer = 'xmlconnect/cart_cartTotals_default';
42
 
43
+ /**
44
+ * Cart xml object
45
+ *
46
+ * @var null|Mage_XmlConnect_Model_Simplexml_Element
47
+ */
48
+ protected $_cartXmlObject;
49
+
50
  /**
51
  * Render cart totals xml
52
  *
99
  $block->setTotals($this->getTotals());
100
  return $block;
101
  }
102
+
103
+ /**
104
+ * Set cart xml object
105
+ *
106
+ * @param Mage_XmlConnect_Model_Simplexml_Element $cartXmlObject
107
+ * @return Mage_XmlConnect_Block_Cart_CartTotals
108
+ */
109
+ public function setCartXmlObject($cartXmlObject)
110
+ {
111
+ $this->_cartXmlObject = $cartXmlObject;
112
+ return $this;
113
+ }
114
+
115
+ /**
116
+ * Get cart xml object
117
+ *
118
+ * @return Mage_XmlConnect_Model_Simplexml_Element|null
119
+ */
120
+ public function getCartXmlObject()
121
+ {
122
+ return $this->_cartXmlObject;
123
+ }
124
  }
app/code/core/Mage/XmlConnect/Block/Cart/CartTotals/Nodes/Giftcardaccount.php CHANGED
@@ -45,16 +45,16 @@ class Mage_Xmlconnect_Block_Cart_CartTotals_Nodes_Giftcardaccount extends Mage_C
45
  }
46
  /** @var $cartXmlObject Mage_XmlConnect_Model_Simplexml_Element */
47
  $cartXmlObject = $this->getCartObject();
48
- $cards = $this->getTotal()->getGiftCards();
49
- if (!$cards) {
50
- $cards = $this->getQuoteGiftCards();
51
  }
52
  $code = $this->getTotal()->getCode();
53
 
54
  /** @var $giftCardsXmlObj Mage_XmlConnect_Model_Simplexml_Element */
55
  $giftCardsXmlObj = $cartXmlObject->addCustomChild($code);
56
 
57
- foreach ($cards as $cardCode) {
58
  $giftCardValue = Mage::helper('xmlconnect')->formatPriceForXml($cardCode['a']);
59
  $formattedValue = $this->getQuote()->getStore()->formatPrice($giftCardValue, false);
60
  $giftCardsXmlObj->addCustomChild('item', '-' . $giftCardValue, array(
45
  }
46
  /** @var $cartXmlObject Mage_XmlConnect_Model_Simplexml_Element */
47
  $cartXmlObject = $this->getCartObject();
48
+ $_cards = $this->getTotal()->getGiftCards();
49
+ if (!$_cards) {
50
+ $_cards = $this->getQuoteGiftCards();
51
  }
52
  $code = $this->getTotal()->getCode();
53
 
54
  /** @var $giftCardsXmlObj Mage_XmlConnect_Model_Simplexml_Element */
55
  $giftCardsXmlObj = $cartXmlObject->addCustomChild($code);
56
 
57
+ foreach ($_cards as $cardCode) {
58
  $giftCardValue = Mage::helper('xmlconnect')->formatPriceForXml($cardCode['a']);
59
  $formattedValue = $this->getQuote()->getStore()->formatPrice($giftCardValue, false);
60
  $giftCardsXmlObj->addCustomChild('item', '-' . $giftCardValue, array(
app/code/core/Mage/XmlConnect/Block/Cart/Item/Renderer/Configurable.php CHANGED
@@ -80,80 +80,8 @@ class Mage_XmlConnect_Block_Cart_Item_Renderer_Configurable extends Mage_XmlConn
80
  */
81
  public function getOptionList()
82
  {
83
- return $this->_getConfigurableOptions($this->getItem());
84
- }
85
-
86
- /**
87
- * Retrieves configuration options for configurable product
88
- *
89
- * @param Mage_Sales_Model_Quote_Item $item
90
- * @return array
91
- */
92
- protected function _getConfigurableOptions($item)
93
- {
94
- $product = $item->getProduct();
95
- $typeId = $product->getTypeId();
96
- if ($typeId != Mage_Catalog_Model_Product_Type_Configurable::TYPE_CODE) {
97
- Mage::throwException($this->__('Wrong product type to extract configurable options.'));
98
- }
99
- $attributes = $product->getTypeInstance(true)
100
- ->getSelectedAttributesInfo($product);
101
- return array_merge($attributes, $this->_getCustomOptions($item));
102
- }
103
-
104
- /**
105
- * Retrieves product configuration options
106
- *
107
- * @param Mage_Sales_Model_Quote_Item $item
108
- * @return array
109
- */
110
- protected function _getCustomOptions($item)
111
- {
112
- $product = $item->getProduct();
113
- $options = array();
114
- $optionIds = $item->getOptionByCode('option_ids');
115
- if ($optionIds) {
116
- $options = array();
117
- foreach (explode(',', $optionIds->getValue()) as $optionId) {
118
- $option = $product->getOptionById($optionId);
119
- if ($option) {
120
- $itemOption = $item->getOptionByCode('option_' . $option->getId());
121
- $group = $option->groupFactory($option->getType())
122
- ->setOption($option)
123
- ->setConfigurationItem($item)
124
- ->setConfigurationItemOption($itemOption);
125
-
126
- if ('file' == $option->getType()) {
127
- $downloadParams = $item->getFileDownloadParams();
128
- if ($downloadParams) {
129
- $url = $downloadParams->getUrl();
130
- if ($url) {
131
- $group->setCustomOptionDownloadUrl($url);
132
- }
133
- $urlParams = $downloadParams->getUrlParams();
134
- if ($urlParams) {
135
- $group->setCustomOptionUrlParams($urlParams);
136
- }
137
- }
138
- }
139
-
140
- $options[] = array(
141
- 'label' => $option->getTitle(),
142
- 'value' => $group->getFormattedOptionValue($itemOption->getValue()),
143
- 'print_value' => $group->getPrintableOptionValue($itemOption->getValue()),
144
- 'option_id' => $option->getId(),
145
- 'option_type' => $option->getType(),
146
- 'custom_view' => $group->isCustomizedView()
147
- );
148
- }
149
- }
150
- }
151
-
152
- $addOptions = $item->getOptionByCode('additional_options');
153
- if ($addOptions) {
154
- $options = array_merge($options, unserialize($addOptions->getValue()));
155
- }
156
-
157
- return $options;
158
  }
159
  }
80
  */
81
  public function getOptionList()
82
  {
83
+ /* @var $helper Mage_Catalog_Helper_Product_Configuration */
84
+ $helper = Mage::helper('catalog/product_configuration');
85
+ return $helper->getConfigurableOptions($this->getItem());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
  }
app/code/core/Mage/XmlConnect/Block/Cart/Items.php CHANGED
@@ -77,13 +77,13 @@ class Mage_XmlConnect_Block_Cart_Items extends Mage_Checkout_Block_Cart_Abstract
77
  }
78
  }
79
  if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) {
80
- $incl = $this->helper('checkout')->getPriceInclTax($item);
81
  if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales')
82
  && $item->getWeeeTaxAppliedAmount()
83
  ) {
84
- $inclPrice = $incl + $item->getWeeeTaxAppliedAmount();
85
  } else {
86
- $inclPrice = $incl - $item->getWeeeTaxDisposition();
87
  }
88
  }
89
  $exclPrice = Mage::helper('xmlconnect')->formatPriceForXml($exclPrice);
@@ -162,13 +162,13 @@ class Mage_XmlConnect_Block_Cart_Items extends Mage_Checkout_Block_Cart_Abstract
162
  }
163
  }
164
  if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) {
165
- $incl = $this->helper('checkout')->getSubtotalInclTax($item);
166
  if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales')
167
  && $item->getWeeeTaxAppliedAmount()
168
  ) {
169
- $subtotalInclTax = $incl + $item->getWeeeTaxAppliedRowAmount();
170
  } else {
171
- $subtotalInclTax = $incl - $item->getWeeeTaxRowDisposition();
172
  }
173
  }
174
 
@@ -212,14 +212,14 @@ class Mage_XmlConnect_Block_Cart_Items extends Mage_Checkout_Block_Cart_Abstract
212
  /**
213
  * Options list
214
  */
215
- $options = $renderer->getOptionList();
216
- if ($options) {
217
  $itemOptionsXml = $itemXml->addCustomChild('options');
218
- foreach ($options as $_option) {
219
- $formattedOptionValue = $renderer->getFormatedOptionValue($_option);
220
  $itemOptionsXml->addCustomChild('option', null, array(
221
  'label' => $xmlObject->xmlAttribute($_option['label']),
222
- 'text' => $xmlObject->xmlAttribute($formattedOptionValue['value'])
223
  ));
224
  }
225
  }
77
  }
78
  }
79
  if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) {
80
+ $_incl = $this->helper('checkout')->getPriceInclTax($item);
81
  if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales')
82
  && $item->getWeeeTaxAppliedAmount()
83
  ) {
84
+ $inclPrice = $_incl + $item->getWeeeTaxAppliedAmount();
85
  } else {
86
+ $inclPrice = $_incl - $item->getWeeeTaxDisposition();
87
  }
88
  }
89
  $exclPrice = Mage::helper('xmlconnect')->formatPriceForXml($exclPrice);
162
  }
163
  }
164
  if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) {
165
+ $_incl = $this->helper('checkout')->getSubtotalInclTax($item);
166
  if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales')
167
  && $item->getWeeeTaxAppliedAmount()
168
  ) {
169
+ $subtotalInclTax = $_incl + $item->getWeeeTaxAppliedRowAmount();
170
  } else {
171
+ $subtotalInclTax = $_incl - $item->getWeeeTaxRowDisposition();
172
  }
173
  }
174
 
212
  /**
213
  * Options list
214
  */
215
+ $_options = $renderer->getOptionList();
216
+ if ($_options) {
217
  $itemOptionsXml = $itemXml->addCustomChild('options');
218
+ foreach ($_options as $_option) {
219
+ $_formattedOptionValue = $renderer->getFormatedOptionValue($_option);
220
  $itemOptionsXml->addCustomChild('option', null, array(
221
  'label' => $xmlObject->xmlAttribute($_option['label']),
222
+ 'text' => $xmlObject->xmlAttribute($_formattedOptionValue['value'])
223
  ));
224
  }
225
  }
app/code/core/Mage/XmlConnect/Block/Cart/Paypal/Mecl/Details.php CHANGED
@@ -42,8 +42,8 @@ class Mage_XmlConnect_Block_Cart_Paypal_Mecl_Details extends Mage_Paypal_Block_E
42
  public function addDetailsToXmlObj(Mage_XmlConnect_Model_Simplexml_Element $reviewXmlObj)
43
  {
44
  $itemsXmlObj = $reviewXmlObj->addChild('ordered_items');
45
- foreach ($this->getItems() as $item) {
46
- $this->getItemXml($item, $itemsXmlObj);
47
  }
48
 
49
  $reviewXmlObj->appendChild($this->getChild('totals')->setReturnObjectFlag(true)->_toHtml());
42
  public function addDetailsToXmlObj(Mage_XmlConnect_Model_Simplexml_Element $reviewXmlObj)
43
  {
44
  $itemsXmlObj = $reviewXmlObj->addChild('ordered_items');
45
+ foreach ($this->getItems() as $_item) {
46
+ $this->getItemXml($_item, $itemsXmlObj);
47
  }
48
 
49
  $reviewXmlObj->appendChild($this->getChild('totals')->setReturnObjectFlag(true)->_toHtml());
app/code/core/Mage/XmlConnect/Block/Cart/Paypal/Mecl/OrderDetails.php CHANGED
@@ -42,8 +42,8 @@ class Mage_XmlConnect_Block_Cart_Paypal_Mecl_OrderDetails extends Mage_Paypal_Bl
42
  public function addDetailsToXmlObj(Mage_XmlConnect_Model_Simplexml_Element $reviewXmlObj)
43
  {
44
  $itemsXmlObj = $reviewXmlObj->addChild('ordered_items');
45
- foreach ($this->getItems() as $item) {
46
- $this->getItemXml($item, $itemsXmlObj);
47
  }
48
 
49
  $this->getChild('totals')->setCartXmlObject($reviewXmlObj)->_toHtml();
42
  public function addDetailsToXmlObj(Mage_XmlConnect_Model_Simplexml_Element $reviewXmlObj)
43
  {
44
  $itemsXmlObj = $reviewXmlObj->addChild('ordered_items');
45
+ foreach ($this->getItems() as $_item) {
46
+ $this->getItemXml($_item, $itemsXmlObj);
47
  }
48
 
49
  $this->getChild('totals')->setCartXmlObject($reviewXmlObj)->_toHtml();
app/code/core/Mage/XmlConnect/Block/Cart/Paypal/Mecl/Review.php CHANGED
@@ -33,26 +33,6 @@
33
  */
34
  class Mage_XmlConnect_Block_Cart_Paypal_Mecl_Review extends Mage_Paypal_Block_Express_Review
35
  {
36
- /**
37
- * Get shipping rate code title and its price
38
- *
39
- * @param Varien_Object $rate
40
- * @return string
41
- */
42
- protected function _renderShippingRateOption($rate)
43
- {
44
- $result = $rate->getMethodTitle();
45
- $_excl = $this->getShippingPrice($rate->getPrice(), $this->helper('tax')->displayShippingPriceIncludingTax());
46
- $_incl = $this->getShippingPrice($rate->getPrice(), true);
47
-
48
- $result .= ' - ' . $_excl;
49
-
50
- if ($this->helper('tax')->displayShippingBothPrices() && $_incl != $_excl) {
51
- $result .= ' (' . $this->__('Incl. Tax') . ' ' . $_incl .')';
52
- }
53
- return $result;
54
- }
55
-
56
  /**
57
  * Render PayPal MECL details xml
58
  *
33
  */
34
  class Mage_XmlConnect_Block_Cart_Paypal_Mecl_Review extends Mage_Paypal_Block_Express_Review
35
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  /**
37
  * Render PayPal MECL details xml
38
  *
app/code/core/Mage/XmlConnect/Block/Cart/Paypal/Mecl/Shippingmethods.php CHANGED
@@ -70,7 +70,7 @@ class Mage_XmlConnect_Block_Cart_Paypal_Mecl_Shippingmethods extends Mage_Paypal
70
 
71
  if (Mage::helper('xmlconnect')->checkApiVersion(Mage_XmlConnect_Helper_Data::DEVICE_API_V_23)) {
72
  if ($this->getCanEditShippingMethod() || !$this->getCurrentShippingRate()) {
73
- $groups = $this->getShippingRates();
74
  if ($groups) {
75
  $currentRate = $this->getCurrentShippingRate();
76
  foreach ($groups as $code => $rates) {
@@ -108,7 +108,7 @@ class Mage_XmlConnect_Block_Cart_Paypal_Mecl_Shippingmethods extends Mage_Paypal
108
  }
109
  } else {
110
  if ($this->getCanEditShippingMethod() || !$this->getCurrentShippingRate()) {
111
- $groups = $this->getShippingRates();
112
  if ($groups) {
113
  $currentRate = $this->getCurrentShippingRate();
114
  foreach ($groups as $code => $rates) {
@@ -170,78 +170,4 @@ class Mage_XmlConnect_Block_Cart_Paypal_Mecl_Shippingmethods extends Mage_Paypal
170
  $attributes = $code ? array('label' => $this->getCarrierName($code)) : array();
171
  return $methodListXmlObj->addCustomChild('method', null, $attributes)->addCustomChild('rates');
172
  }
173
-
174
- /**
175
- * Get either shipping rate code or empty value on error
176
- *
177
- * @param Varien_Object $rate
178
- * @return string
179
- */
180
- public function renderShippingRateValue(Varien_Object $rate)
181
- {
182
- if ($rate->getErrorMessage()) {
183
- return '';
184
- }
185
- return $rate->getCode();
186
- }
187
-
188
- /**
189
- * Get current shipping rate
190
- *
191
- * @return Mage_Sales_Model_Quote_Address_Rate|bool
192
- */
193
- public function getCurrentShippingRate()
194
- {
195
- /** @var $address Mage_Sales_Model_Quote_Address */
196
- $address = $this->getAddress();
197
- return $address->getShippingRateByCode($address->getShippingMethod());
198
- }
199
-
200
- /**
201
- * Get shipping rate code title and its price or error message
202
- *
203
- * @param Varien_Object $rate
204
- * @param string $format
205
- * @param string $inclTaxFormat
206
- * @return string
207
- */
208
- public function renderShippingRateOption($rate, $format = '%s - %s%s', $inclTaxFormat = ' (%s %s)')
209
- {
210
- $renderedInclTax = '';
211
- if ($rate->getErrorMessage()) {
212
- $price = $rate->getErrorMessage();
213
- } else {
214
- $price = $this->_getShippingPrice($rate->getPrice(), $this->helper('tax')
215
- ->displayShippingPriceIncludingTax());
216
- $incl = $this->_getShippingPrice($rate->getPrice(), true);
217
- if (($incl != $price) && $this->helper('tax')->displayShippingBothPrices()) {
218
- $renderedInclTax = sprintf($inclTaxFormat, Mage::helper('tax')->__('Incl. Tax'), $incl);
219
- }
220
- }
221
- return sprintf($format, $rate->getMethodTitle(), $price, $renderedInclTax);
222
- }
223
-
224
- /**
225
- * Return formatted shipping price
226
- *
227
- * @param float $price
228
- * @param bool $isInclTax
229
- *
230
- * @return bool
231
- */
232
- protected function _getShippingPrice($price, $isInclTax)
233
- {
234
- return $this->_formatPrice($this->helper('tax')->getShippingPrice($price, $isInclTax, $this->_address));
235
- }
236
-
237
- /**
238
- * Format price base on store convert price method
239
- *
240
- * @param float $price
241
- * @return string
242
- */
243
- protected function _formatPrice($price)
244
- {
245
- return $this->_quote->getStore()->convertPrice($price, true);
246
- }
247
  }
70
 
71
  if (Mage::helper('xmlconnect')->checkApiVersion(Mage_XmlConnect_Helper_Data::DEVICE_API_V_23)) {
72
  if ($this->getCanEditShippingMethod() || !$this->getCurrentShippingRate()) {
73
+ $groups = $this->getShippingRateGroups();
74
  if ($groups) {
75
  $currentRate = $this->getCurrentShippingRate();
76
  foreach ($groups as $code => $rates) {
108
  }
109
  } else {
110
  if ($this->getCanEditShippingMethod() || !$this->getCurrentShippingRate()) {
111
+ $groups = $this->getShippingRateGroups();
112
  if ($groups) {
113
  $currentRate = $this->getCurrentShippingRate();
114
  foreach ($groups as $code => $rates) {
170
  $attributes = $code ? array('label' => $this->getCarrierName($code)) : array();
171
  return $methodListXmlObj->addCustomChild('method', null, $attributes)->addCustomChild('rates');
172
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  }
app/code/core/Mage/XmlConnect/Block/Cart/Paypal/Mep/Totals.php CHANGED
@@ -40,21 +40,13 @@ class Mage_XmlConnect_Block_Cart_Paypal_Mep_Totals extends Mage_Checkout_Block_C
40
  */
41
  protected function _toHtml()
42
  {
43
- $quote = $this->getQuote();
 
44
  /** @var $totalsXmlObj Mage_XmlConnect_Model_Simplexml_Element */
45
- $totalsXmlObj = Mage::getModel('xmlconnect/simplexml_element', '<cart_totals></cart_totals>');
46
-
47
- list($items, $totals) = Mage::helper('paypal')->prepareLineItems($quote);
48
-
49
- if (Mage::helper('paypal')->areCartLineItemsValid($items, $totals, $quote->getBaseGrandTotal())) {
50
- foreach ($totals as $key => $total) {
51
- $totalAmount = $this->helper('core')->currency($total, false, false);
52
- $totalsXmlObj->addChild($key, sprintf('%01.2F', $totalAmount));
53
- }
54
- } else {
55
- Mage::throwException(
56
- Mage::helper('xmlconnect')->__('Cart line items are not eligible for exporting to PayPal API')
57
- );
58
  }
59
 
60
  $paypalTotals = $totalsXmlObj->addChild('paypal_totals');
40
  */
41
  protected function _toHtml()
42
  {
43
+ /** @var $paypalCart Mage_Paypal_Model_Cart */
44
+ $paypalCart = Mage::getModel('paypal/cart', array($this->getQuote()));
45
  /** @var $totalsXmlObj Mage_XmlConnect_Model_Simplexml_Element */
46
+ $totalsXmlObj = Mage::getModel('xmlconnect/simplexml_element', '<cart_totals></cart_totals>');
47
+ foreach ($paypalCart->getTotals(true) as $code => $amount) {
48
+ $currencyAmount = $this->helper('core')->currency($amount, false, false);
49
+ $totalsXmlObj->addChild($code, sprintf('%01.2F', $currencyAmount));
 
 
 
 
 
 
 
 
 
50
  }
51
 
52
  $paypalTotals = $totalsXmlObj->addChild('paypal_totals');
app/code/core/Mage/XmlConnect/Block/Cart/Totals.php CHANGED
@@ -90,6 +90,7 @@ class Mage_XmlConnect_Block_Cart_Totals extends Mage_Checkout_Block_Cart_Totals
90
  $this->_addTotalDataToXmlObj(
91
  $totalsXmlObj, $code . '_excl_tax', $title, $grandTotalExlTax
92
  );
 
93
  $code = $code . '_incl_tax';
94
  $title = $this->__('Grand Total (Incl. Tax)');
95
  }
@@ -100,12 +101,12 @@ class Mage_XmlConnect_Block_Cart_Totals extends Mage_Checkout_Block_Cart_Totals
100
  }
101
  continue 2;
102
  case 'giftcardaccount':
103
- $cards = $renderer->getTotal()->getGiftCards();
104
- if (!$cards) {
105
- $cards = $renderer->getQuoteGiftCards();
106
  }
107
  if ($renderer->getTotal()->getValue()) {
108
- foreach ($cards as $cardCode) {
109
  $title = $this->__('Gift Card (%s)', $cardCode['c']);
110
  $value = $cardCode['c'];
111
  $totalXmlObj = $totalsXmlObj->addChild($code);
90
  $this->_addTotalDataToXmlObj(
91
  $totalsXmlObj, $code . '_excl_tax', $title, $grandTotalExlTax
92
  );
93
+
94
  $code = $code . '_incl_tax';
95
  $title = $this->__('Grand Total (Incl. Tax)');
96
  }
101
  }
102
  continue 2;
103
  case 'giftcardaccount':
104
+ $_cards = $renderer->getTotal()->getGiftCards();
105
+ if (!$_cards) {
106
+ $_cards = $renderer->getQuoteGiftCards();
107
  }
108
  if ($renderer->getTotal()->getValue()) {
109
+ foreach ($_cards as $cardCode) {
110
  $title = $this->__('Gift Card (%s)', $cardCode['c']);
111
  $value = $cardCode['c'];
112
  $totalXmlObj = $totalsXmlObj->addChild($code);
app/code/core/Mage/XmlConnect/Block/Catalog.php CHANGED
@@ -116,13 +116,13 @@ class Mage_XmlConnect_Block_Catalog extends Mage_Catalog_Block_Product_List_Tool
116
  $sortOptions = array_merge(array('relevance' => $this->__('Relevance')), $sortOptions);
117
  $this->setAvailableOrders($sortOptions)->setDefaultDirection('desc')->setSortBy('relevance');
118
 
119
- foreach($this->getAvailableOrders() as $key => $order) {
120
  $item = $ordersXmlObject->addChild('item');
121
- if ($this->isOrderCurrent($key)) {
122
  $item->addAttribute('isDefault', 1);
123
  }
124
- $item->addChild('code', $key);
125
- $item->addChild('name', $ordersXmlObject->escapeXml($order));
126
  }
127
  return $ordersXmlObject;
128
  }
116
  $sortOptions = array_merge(array('relevance' => $this->__('Relevance')), $sortOptions);
117
  $this->setAvailableOrders($sortOptions)->setDefaultDirection('desc')->setSortBy('relevance');
118
 
119
+ foreach($this->getAvailableOrders() as $_key => $_order) {
120
  $item = $ordersXmlObject->addChild('item');
121
+ if ($this->isOrderCurrent($_key)) {
122
  $item->addAttribute('isDefault', 1);
123
  }
124
+ $item->addChild('code', $_key);
125
+ $item->addChild('name', $ordersXmlObject->escapeXml($_order));
126
  }
127
  return $ordersXmlObject;
128
  }
app/code/core/Mage/XmlConnect/Block/Catalog/Product/ItemPrice/Giftcard.php CHANGED
@@ -66,31 +66,30 @@ class Mage_XmlConnect_Block_Catalog_Product_ItemPrice_Giftcard extends Mage_Bund
66
  *
67
  * @param Mage_Catalog_Model_Product $product
68
  * @param Mage_XmlConnect_Model_Simplexml_Element $item
69
- * @return null
70
  */
71
- public function collectProductPrices(Mage_Catalog_Model_Product $product,
72
- Mage_XmlConnect_Model_Simplexml_Element $item)
73
- {
74
  $this->setProduct($product);
75
 
76
  if ($product->getCanShowPrice() !== false) {
77
  $priceListXmlObj = $item->addCustomChild('price_list');
78
 
79
- $min = $this->getMinAmount();
80
- $max = $this->getMaxAmount();
81
- if ($min && $max && $min == $max) {
82
  $pricesXmlObj = $priceListXmlObj->addCustomChild('prices', null, array('id' => 'price'));
83
- $pricesXmlObj->addCustomChild('price', $min, array(
84
  'id' => 'regular',
85
  'label' => $this->__('Regular'),
86
- 'formatted_value' => Mage::helper('core')->currency($min, true, false)
87
  ));
88
- } elseif ($min && $min != 0) {
89
  $pricesXmlObj = $priceListXmlObj->addCustomChild('prices', null, array('id' => 'price'));
90
- $pricesXmlObj->addCustomChild('price', $min, array(
91
  'id' => 'regular',
92
  'label' => $this->__('From'),
93
- 'formatted_value' => Mage::helper('core')->currency($min, true, false)
94
  ));
95
  }
96
  }
66
  *
67
  * @param Mage_Catalog_Model_Product $product
68
  * @param Mage_XmlConnect_Model_Simplexml_Element $item
 
69
  */
70
+ public function collectProductPrices(
71
+ Mage_Catalog_Model_Product $product, Mage_XmlConnect_Model_Simplexml_Element $item
72
+ ) {
73
  $this->setProduct($product);
74
 
75
  if ($product->getCanShowPrice() !== false) {
76
  $priceListXmlObj = $item->addCustomChild('price_list');
77
 
78
+ $_min = $this->getMinAmount();
79
+ $_max = $this->getMaxAmount();
80
+ if ($_min && $_max && $_min == $_max) {
81
  $pricesXmlObj = $priceListXmlObj->addCustomChild('prices', null, array('id' => 'price'));
82
+ $pricesXmlObj->addCustomChild('price', $_min, array(
83
  'id' => 'regular',
84
  'label' => $this->__('Regular'),
85
+ 'formatted_value' => Mage::helper('core')->currency($_min, true, false)
86
  ));
87
+ } elseif ($_min && $_min != 0) {
88
  $pricesXmlObj = $priceListXmlObj->addCustomChild('prices', null, array('id' => 'price'));
89
+ $pricesXmlObj->addCustomChild('price', $_min, array(
90
  'id' => 'regular',
91
  'label' => $this->__('From'),
92
+ 'formatted_value' => Mage::helper('core')->currency($_min, true, false)
93
  ));
94
  }
95
  }
app/code/core/Mage/XmlConnect/Block/Catalog/Product/Options.php CHANGED
@@ -64,7 +64,7 @@ class Mage_XmlConnect_Block_Catalog_Product_Options extends Mage_XmlConnect_Bloc
64
  }
65
 
66
  /**
67
- * Create produc custom options Mage_XmlConnect_Model_Simplexml_Element object
68
  *
69
  * @param Mage_Catalog_Model_Product $product
70
  * @return Mage_XmlConnect_Model_Simplexml_Element
64
  }
65
 
66
  /**
67
+ * Create product custom options Mage_XmlConnect_Model_Simplexml_Element object
68
  *
69
  * @param Mage_Catalog_Model_Product $product
70
  * @return Mage_XmlConnect_Model_Simplexml_Element
app/code/core/Mage/XmlConnect/Block/Catalog/Product/Options/Bundle.php CHANGED
@@ -66,9 +66,9 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Bundle extends Mage_XmlConne
66
  return $isObject ? $xmlModel : $xmlModel->asNiceXml();
67
  }
68
 
69
- foreach ($bundleOptions as $option) {
70
- $selections = $option->getSelections();
71
- $optionId = $option->getOptionId();
72
  if (empty($selections)) {
73
  continue;
74
  }
@@ -76,43 +76,43 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Bundle extends Mage_XmlConne
76
  $optionNode = $optionsXmlObj->addChild('option');
77
 
78
  $type = parent::OPTION_TYPE_SELECT;
79
- if ($option->isMultiSelection()) {
80
  $type = parent::OPTION_TYPE_CHECKBOX;
81
  }
82
- $code = 'bundle_option[' . $option->getId() . ']';
83
  if ($type == parent::OPTION_TYPE_CHECKBOX) {
84
  $code .= '[]';
85
  }
86
  $optionNode->addAttribute('code', $code);
87
  $optionNode->addAttribute('type', $type);
88
- $optionNode->addAttribute('label', $optionsXmlObj->escapeXml($option->getTitle()));
89
- if ($option->getRequired()) {
90
  $optionNode->addAttribute('is_required', 1);
91
  }
92
 
93
- foreach ($selections as $selection) {
94
- if (!$selection->isSaleable()) {
95
  continue;
96
  }
97
- $qty = null;
98
  if ($product->hasPreconfiguredValues()) {
99
- $qty = $product->getPreconfiguredValues()->getData("bundle_option_qty/{$optionId}");
100
  }
101
- if (null === $qty) {
102
- $qty = !($selection->getSelectionQty() * 1) ? '1' : $selection->getSelectionQty() * 1;
103
  }
104
 
105
  $valueNode = $optionNode->addChild('value');
106
- $valueNode->addAttribute('code', $selection->getSelectionId());
107
- $valueNode->addAttribute('label', $optionsXmlObj->escapeXml($selection->getName()));
108
- if (!$option->isMultiSelection()) {
109
- if ($selection->getSelectionCanChangeQty()) {
110
  $valueNode->addAttribute('is_qty_editable', 1);
111
  }
112
  }
113
- $valueNode->addAttribute('qty', $qty);
114
 
115
- $price = $product->getPriceModel()->getSelectionPreFinalPrice($product, $selection);
116
  $price = Mage::helper('xmlconnect')->formatPriceForXml($price);
117
  if ((float)$price != 0.00) {
118
  $valueNode->addAttribute('price', Mage::helper('xmlconnect')->formatPriceForXml(
@@ -123,7 +123,7 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Bundle extends Mage_XmlConne
123
 
124
  if ($product->hasPreconfiguredValues()) {
125
  $this->_setCartSelectedValue($valueNode, $type, $this->_getPreconfiguredOption(
126
- $optionData, $optionId, $selection->getSelectionId()
127
  ));
128
  }
129
  }
66
  return $isObject ? $xmlModel : $xmlModel->asNiceXml();
67
  }
68
 
69
+ foreach ($bundleOptions as $_option) {
70
+ $selections = $_option->getSelections();
71
+ $optionId = $_option->getOptionId();
72
  if (empty($selections)) {
73
  continue;
74
  }
76
  $optionNode = $optionsXmlObj->addChild('option');
77
 
78
  $type = parent::OPTION_TYPE_SELECT;
79
+ if ($_option->isMultiSelection()) {
80
  $type = parent::OPTION_TYPE_CHECKBOX;
81
  }
82
+ $code = 'bundle_option[' . $_option->getId() . ']';
83
  if ($type == parent::OPTION_TYPE_CHECKBOX) {
84
  $code .= '[]';
85
  }
86
  $optionNode->addAttribute('code', $code);
87
  $optionNode->addAttribute('type', $type);
88
+ $optionNode->addAttribute('label', $optionsXmlObj->escapeXml($_option->getTitle()));
89
+ if ($_option->getRequired()) {
90
  $optionNode->addAttribute('is_required', 1);
91
  }
92
 
93
+ foreach ($selections as $_selection) {
94
+ if (!$_selection->isSaleable()) {
95
  continue;
96
  }
97
+ $_qty = null;
98
  if ($product->hasPreconfiguredValues()) {
99
+ $_qty = $product->getPreconfiguredValues()->getData("bundle_option_qty/{$optionId}");
100
  }
101
+ if (null === $_qty) {
102
+ $_qty = !($_selection->getSelectionQty() * 1) ? '1' : $_selection->getSelectionQty() * 1;
103
  }
104
 
105
  $valueNode = $optionNode->addChild('value');
106
+ $valueNode->addAttribute('code', $_selection->getSelectionId());
107
+ $valueNode->addAttribute('label', $optionsXmlObj->escapeXml($_selection->getName()));
108
+ if (!$_option->isMultiSelection()) {
109
+ if ($_selection->getSelectionCanChangeQty()) {
110
  $valueNode->addAttribute('is_qty_editable', 1);
111
  }
112
  }
113
+ $valueNode->addAttribute('qty', $_qty);
114
 
115
+ $price = $product->getPriceModel()->getSelectionPreFinalPrice($product, $_selection);
116
  $price = Mage::helper('xmlconnect')->formatPriceForXml($price);
117
  if ((float)$price != 0.00) {
118
  $valueNode->addAttribute('price', Mage::helper('xmlconnect')->formatPriceForXml(
123
 
124
  if ($product->hasPreconfiguredValues()) {
125
  $this->_setCartSelectedValue($valueNode, $type, $this->_getPreconfiguredOption(
126
+ $optionData, $optionId, $_selection->getSelectionId()
127
  ));
128
  }
129
  }
app/code/core/Mage/XmlConnect/Block/Catalog/Product/Options/Configurable.php CHANGED
@@ -37,7 +37,7 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Configurable extends Mage_Xm
37
  * Generate bundle product options xml
38
  *
39
  * @param Mage_Catalog_Model_Product $product
40
- * @param bool
41
  * @return string | Mage_XmlConnect_Model_Simplexml_Element
42
  */
43
  public function getProductOptionsXml(Mage_Catalog_Model_Product $product, $isObject = false)
@@ -57,28 +57,28 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Configurable extends Mage_Xm
57
  /**
58
  * Configurable attributes
59
  */
60
- $productAttributes = $product->getTypeInstance(true)->getConfigurableAttributes($product);
61
- if (!sizeof($productAttributes)) {
62
  return $isObject ? $xmlModel : $xmlModel->asNiceXml();
63
  }
64
 
65
- $allowProducts = array();
66
- $allProducts = $product->getTypeInstance(true)->getUsedProducts(null, $product);
67
- foreach ($allProducts as $productItem) {
68
- if ($productItem->isSaleable()) {
69
- $allowProducts[] = $productItem;
70
  }
71
  }
72
 
73
  /**
74
  * Allowed products options
75
  */
76
- foreach ($allowProducts as $item) {
77
- $productId = $item->getId();
78
 
79
- foreach ($productAttributes as $attribute) {
80
  $productAttribute = $attribute->getProductAttribute();
81
- $attributeValue = $item->getData($productAttribute->getAttributeCode());
82
  if (!isset($options[$productAttribute->getId()])) {
83
  $options[$productAttribute->getId()] = array();
84
  }
@@ -86,11 +86,11 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Configurable extends Mage_Xm
86
  if (!isset($options[$productAttribute->getId()][$attributeValue])) {
87
  $options[$productAttribute->getId()][$attributeValue] = array();
88
  }
89
- $options[$productAttribute->getId()][$attributeValue][] = $productId;
90
  }
91
  }
92
 
93
- foreach ($productAttributes as $attribute) {
94
  $productAttribute = $attribute->getProductAttribute();
95
  $attributeId = $productAttribute->getId();
96
  $info = array(
@@ -129,8 +129,8 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Configurable extends Mage_Xm
129
 
130
  $isFirst = true;
131
 
132
- $productAttributes = $attributes;
133
- reset($productAttributes);
134
  foreach ($attributes as $id => $attribute) {
135
  $optionNode = $optionsXmlObj->addChild('option');
136
  $optionNode->addAttribute('code', 'super_attribute[' . $id . ']');
@@ -146,8 +146,8 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Configurable extends Mage_Xm
146
  $valueNode->addAttribute('price', $option['price']);
147
  $valueNode->addAttribute('formated_price', $option['formated_price']);
148
  }
149
- if (sizeof($productAttributes) > 1) {
150
- $this->_prepareRecursivelyRelatedValues($valueNode, $productAttributes, $option['products'], 1);
151
  }
152
  if ($product->hasPreconfiguredValues()) {
153
  $this->_setCartSelectedValue($valueNode, 'select', $this->_getPreconfiguredOption(
@@ -194,21 +194,21 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Configurable extends Mage_Xm
194
  $relatedNode->addAttribute('to', 'super_attribute[' . $attrId . ']');
195
  }
196
 
197
- $nodeValue = $relatedNode->addChild('value');
198
- $nodeValue->addAttribute('code', $option['id']);
199
- $nodeValue->addAttribute('label', $nodeValue->escapeXml($option['label']));
200
  if ((float)$option['price'] != 0.00) {
201
- $nodeValue->addAttribute('price', $option['price']);
202
- $nodeValue->addAttribute('formated_price', $option['formated_price']);
203
  }
204
 
205
  /**
206
  * Recursive relation adding
207
  */
208
- $attrClone = $attributes;
209
- if (next($attrClone) != false) {
210
- reset($attrClone);
211
- $this->_prepareRecursivelyRelatedValues($nodeValue, $attrClone, $intersect, $cycle + 1);
212
  }
213
  }
214
  }
37
  * Generate bundle product options xml
38
  *
39
  * @param Mage_Catalog_Model_Product $product
40
+ * @param bool $isObject
41
  * @return string | Mage_XmlConnect_Model_Simplexml_Element
42
  */
43
  public function getProductOptionsXml(Mage_Catalog_Model_Product $product, $isObject = false)
57
  /**
58
  * Configurable attributes
59
  */
60
+ $_attributes = $product->getTypeInstance(true)->getConfigurableAttributes($product);
61
+ if (!sizeof($_attributes)) {
62
  return $isObject ? $xmlModel : $xmlModel->asNiceXml();
63
  }
64
 
65
+ $_allowProducts = array();
66
+ $_allProducts = $product->getTypeInstance(true)->getUsedProducts(null, $product);
67
+ foreach ($_allProducts as $_product) {
68
+ if ($_product->isSaleable()) {
69
+ $_allowProducts[] = $_product;
70
  }
71
  }
72
 
73
  /**
74
  * Allowed products options
75
  */
76
+ foreach ($_allowProducts as $_item) {
77
+ $_productId = $_item->getId();
78
 
79
+ foreach ($_attributes as $attribute) {
80
  $productAttribute = $attribute->getProductAttribute();
81
+ $attributeValue = $_item->getData($productAttribute->getAttributeCode());
82
  if (!isset($options[$productAttribute->getId()])) {
83
  $options[$productAttribute->getId()] = array();
84
  }
86
  if (!isset($options[$productAttribute->getId()][$attributeValue])) {
87
  $options[$productAttribute->getId()][$attributeValue] = array();
88
  }
89
+ $options[$productAttribute->getId()][$attributeValue][] = $_productId;
90
  }
91
  }
92
 
93
+ foreach ($_attributes as $attribute) {
94
  $productAttribute = $attribute->getProductAttribute();
95
  $attributeId = $productAttribute->getId();
96
  $info = array(
129
 
130
  $isFirst = true;
131
 
132
+ $_attributes = $attributes;
133
+ reset($_attributes);
134
  foreach ($attributes as $id => $attribute) {
135
  $optionNode = $optionsXmlObj->addChild('option');
136
  $optionNode->addAttribute('code', 'super_attribute[' . $id . ']');
146
  $valueNode->addAttribute('price', $option['price']);
147
  $valueNode->addAttribute('formated_price', $option['formated_price']);
148
  }
149
+ if (sizeof($_attributes) > 1) {
150
+ $this->_prepareRecursivelyRelatedValues($valueNode, $_attributes, $option['products'], 1);
151
  }
152
  if ($product->hasPreconfiguredValues()) {
153
  $this->_setCartSelectedValue($valueNode, 'select', $this->_getPreconfiguredOption(
194
  $relatedNode->addAttribute('to', 'super_attribute[' . $attrId . ']');
195
  }
196
 
197
+ $_valueNode = $relatedNode->addChild('value');
198
+ $_valueNode->addAttribute('code', $option['id']);
199
+ $_valueNode->addAttribute('label', $_valueNode->escapeXml($option['label']));
200
  if ((float)$option['price'] != 0.00) {
201
+ $_valueNode->addAttribute('price', $option['price']);
202
+ $_valueNode->addAttribute('formated_price', $option['formated_price']);
203
  }
204
 
205
  /**
206
  * Recursive relation adding
207
  */
208
+ $_attrClone = $attributes;
209
+ if (next($_attrClone) != false) {
210
+ reset($_attrClone);
211
+ $this->_prepareRecursivelyRelatedValues($_valueNode, $_attrClone, $intersect, $cycle + 1);
212
  }
213
  }
214
  }
app/code/core/Mage/XmlConnect/Block/Catalog/Product/Options/Giftcard.php CHANGED
@@ -31,8 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Catalog_Product_Options_Giftcard
35
- extends Mage_XmlConnect_Block_Catalog_Product_Options
36
  {
37
  /**
38
  * Get sender name
@@ -70,6 +69,21 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Giftcard
70
  return $senderEmail;
71
  }
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  /**
74
  * Check is message available for current product
75
  *
@@ -113,22 +127,6 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Giftcard
113
  return true;
114
  }
115
 
116
- /**
117
- * Get fixed gift card amounts
118
- *
119
- * @param $product
120
- * @return array
121
- */
122
- public function getAmounts($product)
123
- {
124
- $result = array();
125
- foreach ($product->getGiftcardAmounts() as $amount) {
126
- $result[] = Mage::app()->getStore()->roundPrice($amount['website_value']);
127
- }
128
- sort($result);
129
- return $result;
130
- }
131
-
132
  /**
133
  * Generate gift card product options xml
134
  *
@@ -157,23 +155,24 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Giftcard
157
  /** @var $coreHelper Mage_Core_Helper_Data */
158
  $coreHelper = Mage::helper('core');
159
 
 
 
160
  /**
161
  * Render fixed amounts options
162
  */
163
-
164
  /** @var $fixedAmountsNode Mage_XmlConnect_Model_Simplexml_Element */
165
  $fixedAmountsNode = $optionsXmlObj->addChild('fixed_amounts');
166
  if ($this->isAmountAvailable($product)) {
167
- $amounts = $this->getAmounts($product);
168
  if (count($amounts)) {
169
  foreach ($amounts as $price) {
170
  $amountNode = $fixedAmountsNode->addChild('amount');
171
- $amountNode->addAttribute(
172
- 'formatted_price',
173
- $xmlModel->xmlAttribute(
174
- $coreHelper->currency($price, true, false)
175
- )
176
- );
177
  $amountNode->addAttribute('price', $price);
178
  }
179
  }
@@ -182,34 +181,30 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Giftcard
182
  /**
183
  * Render open amount options
184
  */
185
-
186
  /** @var $openAmountNode Mage_XmlConnect_Model_Simplexml_Element */
187
  $openAmountNode = $optionsXmlObj->addChild('open_amount');
188
  if ($product->getAllowOpenAmount()) {
189
  $openAmountNode->addAttribute('enabled', 1);
190
 
191
- if ($product->getOpenAmountMin()) {
192
- $minPrice = Mage::app()->getStore()->roundPrice($product->getOpenAmountMin());
 
 
 
193
  $minAmount = $coreHelper->currency($minPrice, true, false);
194
  } else {
195
  $minAmount = $minPrice = 0;
196
  }
197
- $openAmountNode->addAttribute(
198
- 'formatted_min_amount',
199
- $xmlModel->xmlAttribute($minAmount)
200
- );
201
  $openAmountNode->addAttribute('min_amount', $minPrice);
202
 
203
- if ($product->getOpenAmountMax()) {
204
- $maxPrice = Mage::app()->getStore()->roundPrice($product->getOpenAmountMax());
205
  $maxAmount = $coreHelper->currency($maxPrice, true, false);
206
  } else {
207
  $maxAmount = $maxPrice = 0;
208
  }
209
- $openAmountNode->addAttribute(
210
- 'formatted_max_amount',
211
- $xmlModel->xmlAttribute($maxAmount)
212
- );
213
  $openAmountNode->addAttribute('max_amount', $maxPrice);
214
  } else {
215
  $openAmountNode->addAttribute('enabled', 0);
@@ -218,89 +213,56 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Giftcard
218
  /**
219
  * Render Gift Card form options
220
  */
221
- $form = $optionsXmlObj->addCustomChild(
222
- 'form',
223
- null,
224
- array(
225
- 'name' => 'giftcard-send-form',
226
- 'method' => 'post'
227
- )
228
- );
229
 
230
- $senderFieldset = $form->addCustomChild(
231
- 'fieldset',
232
- null,
233
- array(
234
- 'legend' => $this->__('Sender Information')
235
- )
236
- );
237
 
238
- $senderFieldset->addField(
239
- 'giftcard_sender_name',
240
- 'text',
241
- array(
242
- 'label' => Mage::helper('enterprise_giftcard')->__('Sender Name'),
243
- 'required' => 'true',
244
- 'value' => $this->getSenderName()
245
- )
246
- );
247
 
248
- $recipientFieldset = $form->addCustomChild(
249
- 'fieldset',
250
- null,
251
- array(
252
- 'legend' => $this->__('Recipient Information')
253
- )
254
- );
255
 
256
- $recipientFieldset->addField(
257
- 'giftcard_recipient_name',
258
- 'text',
259
- array(
260
- 'label' => Mage::helper('enterprise_giftcard')->__('Recipient Name'),
261
- 'required' => 'true',
262
- 'value' => $this->getDefaultValue('giftcard_recipient_name')
263
- )
264
- );
265
 
266
  if ($this->isEmailAvailable($product)) {
267
- $senderFieldset->addField(
268
- 'giftcard_sender_email',
269
- 'email',
270
- array(
271
- 'label' => Mage::helper('enterprise_giftcard')->__('Sender Email'),
272
- 'required' => 'true',
273
- 'value' => $this->getSenderEmail()
274
- )
275
- );
276
 
277
- $recipientFieldset->addField(
278
- 'giftcard_recipient_email',
279
- 'email',
280
- array(
281
- 'label' => Mage::helper('enterprise_giftcard')->__('Recipient Email'),
282
- 'required' => 'true',
283
- 'value' => $this->getDefaultValue('giftcard_recipient_email')
284
- )
285
- );
286
  }
287
 
288
  if ($this->isMessageAvailable($product)) {
289
  $messageMaxLength = (int) Mage::getStoreConfig(
290
  Enterprise_GiftCard_Model_Giftcard::XML_PATH_MESSAGE_MAX_LENGTH
291
  );
292
- $recipientFieldset->addField(
293
- 'giftcard_message',
294
- 'textarea',
295
- array(
296
- 'label' => Mage::helper('enterprise_giftcard')->__('Message'),
297
- 'required' => 'false',
298
- 'max_length'=> $messageMaxLength,
299
- 'value' => $this->getDefaultValue('giftcard_message')
300
- )
301
- );
302
  }
303
-
304
  return $isObject ? $xmlModel : $xmlModel->asNiceXml();
305
  }
306
  }
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Catalog_Product_Options_Giftcard extends Mage_XmlConnect_Block_Catalog_Product_Options
 
35
  {
36
  /**
37
  * Get sender name
69
  return $senderEmail;
70
  }
71
 
72
+ /**
73
+ * Get pre-configured values from product
74
+ *
75
+ * @param $value param id
76
+ * @return string
77
+ */
78
+ protected function getDefaultValue($value)
79
+ {
80
+ if ($this->getProduct()) {
81
+ return (string) $this->getProduct()->getPreconfiguredValues()->getData($value);
82
+ } else {
83
+ return '';
84
+ }
85
+ }
86
+
87
  /**
88
  * Check is message available for current product
89
  *
127
  return true;
128
  }
129
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  /**
131
  * Generate gift card product options xml
132
  *
155
  /** @var $coreHelper Mage_Core_Helper_Data */
156
  $coreHelper = Mage::helper('core');
157
 
158
+ $configValue = $this->getDefaultValue('giftcard_amount');
159
+
160
  /**
161
  * Render fixed amounts options
162
  */
 
163
  /** @var $fixedAmountsNode Mage_XmlConnect_Model_Simplexml_Element */
164
  $fixedAmountsNode = $optionsXmlObj->addChild('fixed_amounts');
165
  if ($this->isAmountAvailable($product)) {
166
+ $amounts = $priceModel->getSortedAmounts($product);
167
  if (count($amounts)) {
168
  foreach ($amounts as $price) {
169
  $amountNode = $fixedAmountsNode->addChild('amount');
170
+ if ($configValue == $price) {
171
+ $amountNode->addAttribute('selected', 1);
172
+ }
173
+ $amountNode->addAttribute('formatted_price', $xmlModel->xmlAttribute(
174
+ $coreHelper->currency($price, true, false)
175
+ ));
176
  $amountNode->addAttribute('price', $price);
177
  }
178
  }
181
  /**
182
  * Render open amount options
183
  */
 
184
  /** @var $openAmountNode Mage_XmlConnect_Model_Simplexml_Element */
185
  $openAmountNode = $optionsXmlObj->addChild('open_amount');
186
  if ($product->getAllowOpenAmount()) {
187
  $openAmountNode->addAttribute('enabled', 1);
188
 
189
+ if ($configValue == 'custom') {
190
+ $openAmountNode->addAttribute('selected_amount', $this->getDefaultValue('custom_giftcard_amount'));
191
+ }
192
+ if ($priceModel->getMinAmount($product)) {
193
+ $minPrice = $product->getOpenAmountMin();
194
  $minAmount = $coreHelper->currency($minPrice, true, false);
195
  } else {
196
  $minAmount = $minPrice = 0;
197
  }
198
+ $openAmountNode->addAttribute('formatted_min_amount', $xmlModel->xmlAttribute($minAmount));
 
 
 
199
  $openAmountNode->addAttribute('min_amount', $minPrice);
200
 
201
+ if ($priceModel->getMaxAmount($product)) {
202
+ $maxPrice = $product->getOpenAmountMax();
203
  $maxAmount = $coreHelper->currency($maxPrice, true, false);
204
  } else {
205
  $maxAmount = $maxPrice = 0;
206
  }
207
+ $openAmountNode->addAttribute('formatted_max_amount', $xmlModel->xmlAttribute($maxAmount));
 
 
 
208
  $openAmountNode->addAttribute('max_amount', $maxPrice);
209
  } else {
210
  $openAmountNode->addAttribute('enabled', 0);
213
  /**
214
  * Render Gift Card form options
215
  */
216
+ $form = $optionsXmlObj->addCustomChild('form', null, array(
217
+ 'name' => 'giftcard-send-form',
218
+ 'method' => 'post'
219
+ ));
 
 
 
 
220
 
221
+ $senderFieldset = $form->addCustomChild('fieldset', null, array(
222
+ 'legend' => $this->__('Sender Information')
223
+ ));
 
 
 
 
224
 
225
+ $senderFieldset->addField('giftcard_sender_name', 'text', array(
226
+ 'label' => Mage::helper('enterprise_giftcard')->__('Sender Name'),
227
+ 'required' => 'true',
228
+ 'value' => $this->getSenderName()
229
+ ));
 
 
 
 
230
 
231
+ $recipientFieldset = $form->addCustomChild('fieldset', null, array(
232
+ 'legend' => $this->__('Recipient Information')
233
+ ));
 
 
 
 
234
 
235
+ $recipientFieldset->addField('giftcard_recipient_name', 'text', array(
236
+ 'label' => Mage::helper('enterprise_giftcard')->__('Recipient Name'),
237
+ 'required' => 'true',
238
+ 'value' => $this->getDefaultValue('giftcard_recipient_name')
239
+ ));
 
 
 
 
240
 
241
  if ($this->isEmailAvailable($product)) {
242
+ $senderFieldset->addField('giftcard_sender_email', 'email', array(
243
+ 'label' => Mage::helper('enterprise_giftcard')->__('Sender Email'),
244
+ 'required' => 'true',
245
+ 'value' => $this->getSenderEmail()
246
+ ));
 
 
 
 
247
 
248
+ $recipientFieldset->addField('giftcard_recipient_email', 'email', array(
249
+ 'label' => Mage::helper('enterprise_giftcard')->__('Recipient Email'),
250
+ 'required' => 'true',
251
+ 'value' => $this->getDefaultValue('giftcard_recipient_email')
252
+ ));
 
 
 
 
253
  }
254
 
255
  if ($this->isMessageAvailable($product)) {
256
  $messageMaxLength = (int) Mage::getStoreConfig(
257
  Enterprise_GiftCard_Model_Giftcard::XML_PATH_MESSAGE_MAX_LENGTH
258
  );
259
+ $recipientFieldset->addField('giftcard_message', 'textarea', array(
260
+ 'label' => Mage::helper('enterprise_giftcard')->__('Message'),
261
+ 'required' => 'false',
262
+ 'max_length'=> $messageMaxLength,
263
+ 'value' => $this->getDefaultValue('giftcard_message')
264
+ ));
 
 
 
 
265
  }
 
266
  return $isObject ? $xmlModel : $xmlModel->asNiceXml();
267
  }
268
  }
app/code/core/Mage/XmlConnect/Block/Catalog/Product/Options/Grouped.php CHANGED
@@ -55,30 +55,30 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Grouped extends Mage_XmlConn
55
  /**
56
  * Grouped (associated) products
57
  */
58
- $associatedProducts = $product->getTypeInstance(true)->getAssociatedProducts($product);
59
- if (!sizeof($associatedProducts)) {
60
  return $isObject ? $xmlModel : $xmlModel->asNiceXml();
61
  }
62
 
63
- foreach ($associatedProducts as $item) {
64
- if (!$item->isSaleable()) {
65
  continue;
66
  }
67
  $optionNode = $optionsNode->addChild('option');
68
 
69
- $optionNode->addAttribute('code', 'super_group[' . $item->getId() . ']');
70
  $optionNode->addAttribute('type', 'product');
71
- $optionNode->addAttribute('label', $xmlModel->escapeXml($item->getName()));
72
  $optionNode->addAttribute('is_qty_editable', 1);
73
- $optionNode->addAttribute('qty', $item->getQty()*1);
74
 
75
  /**
76
  * Process product price
77
  */
78
- if ($item->getPrice() != $item->getFinalPrice()) {
79
- $productPrice = $item->getFinalPrice();
80
  } else {
81
- $productPrice = $item->getPrice();
82
  }
83
 
84
  if ($productPrice != 0) {
55
  /**
56
  * Grouped (associated) products
57
  */
58
+ $_associatedProducts = $product->getTypeInstance(true)->getAssociatedProducts($product);
59
+ if (!sizeof($_associatedProducts)) {
60
  return $isObject ? $xmlModel : $xmlModel->asNiceXml();
61
  }
62
 
63
+ foreach ($_associatedProducts as $_item) {
64
+ if (!$_item->isSaleable()) {
65
  continue;
66
  }
67
  $optionNode = $optionsNode->addChild('option');
68
 
69
+ $optionNode->addAttribute('code', 'super_group[' . $_item->getId() . ']');
70
  $optionNode->addAttribute('type', 'product');
71
+ $optionNode->addAttribute('label', $xmlModel->escapeXml($_item->getName()));
72
  $optionNode->addAttribute('is_qty_editable', 1);
73
+ $optionNode->addAttribute('qty', $_item->getQty()*1);
74
 
75
  /**
76
  * Process product price
77
  */
78
+ if ($_item->getPrice() != $_item->getFinalPrice()) {
79
+ $productPrice = $_item->getFinalPrice();
80
  } else {
81
+ $productPrice = $_item->getPrice();
82
  }
83
 
84
  if ($productPrice != 0) {
app/code/core/Mage/XmlConnect/Block/Catalog/Product/Options/Simple.php CHANGED
@@ -37,7 +37,7 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Simple extends Mage_XmlConne
37
  * Generate simple product options xml
38
  *
39
  * @param Mage_Catalog_Model_Product $product
40
- * @param bool
41
  * @return string | Mage_XmlConnect_Model_Simplexml_Element
42
  */
43
  public function getProductOptionsXml(Mage_Catalog_Model_Product $product, $isObject = false)
37
  * Generate simple product options xml
38
  *
39
  * @param Mage_Catalog_Model_Product $product
40
+ * @param bool $isObject
41
  * @return string | Mage_XmlConnect_Model_Simplexml_Element
42
  */
43
  public function getProductOptionsXml(Mage_Catalog_Model_Product $product, $isObject = false)
app/code/core/Mage/XmlConnect/Block/Catalog/Product/Options/Virtual.php CHANGED
@@ -37,7 +37,7 @@ class Mage_XmlConnect_Block_Catalog_Product_Options_Virtual extends Mage_XmlConn
37
  * Generate virtual product options xml
38
  *
39
  * @param Mage_Catalog_Model_Product $product
40
- * @param bool
41
  * @return string | Mage_XmlConnect_Model_Simplexml_Element
42
  */
43
  public function getProductOptionsXml(Mage_Catalog_Model_Product $product, $isObject = false)
37
  * Generate virtual product options xml
38
  *
39
  * @param Mage_Catalog_Model_Product $product
40
+ * @param bool $isObject
41
  * @return string | Mage_XmlConnect_Model_Simplexml_Element
42
  */
43
  public function getProductOptionsXml(Mage_Catalog_Model_Product $product, $isObject = false)
app/code/core/Mage/XmlConnect/Block/Catalog/Product/Price/Bundle.php CHANGED
@@ -39,9 +39,9 @@ class Mage_XmlConnect_Block_Catalog_Product_Price_Bundle extends Mage_Bundle_Blo
39
  * @param Mage_Catalog_Model_Product $product
40
  * @param Mage_XmlConnect_Model_Simplexml_Element $item
41
  */
42
- public function collectProductPrices(Mage_Catalog_Model_Product $product,
43
- Mage_XmlConnect_Model_Simplexml_Element $item)
44
- {
45
  $this->setProduct($product)->setDisplayMinimalPrice(true)->setUseLinkForAsLowAs(false);
46
 
47
  $priceXmlObj = $item->addChild('price');
39
  * @param Mage_Catalog_Model_Product $product
40
  * @param Mage_XmlConnect_Model_Simplexml_Element $item
41
  */
42
+ public function collectProductPrices(
43
+ Mage_Catalog_Model_Product $product, Mage_XmlConnect_Model_Simplexml_Element $item
44
+ ) {
45
  $this->setProduct($product)->setDisplayMinimalPrice(true)->setUseLinkForAsLowAs(false);
46
 
47
  $priceXmlObj = $item->addChild('price');
app/code/core/Mage/XmlConnect/Block/Catalog/Product/Price/Default.php CHANGED
@@ -39,321 +39,321 @@ class Mage_XmlConnect_Block_Catalog_Product_Price_Default extends Mage_Catalog_B
39
  * @param Mage_Catalog_Model_Product $product
40
  * @param Mage_XmlConnect_Model_Simplexml_Element $item
41
  */
42
- public function collectProductPrices(Mage_Catalog_Model_Product $product,
43
- Mage_XmlConnect_Model_Simplexml_Element $item)
44
- {
45
  $this->setProduct($product)->setDisplayMinimalPrice(true)->setUseLinkForAsLowAs(false);
46
 
47
  $priceXmlObj = $item->addChild('price');
48
- $tierPrices = $this->_getTierPrices($product);
49
- if (count($tierPrices) > 0) {
50
  $tierPricesTextArray = $item->escapeXml(implode(
51
- PHP_EOL, $this->_getTierPricesTextArray($tierPrices, $product)
52
  ));
53
  $item->addCustomChild('price_tier', $tierPricesTextArray);
54
  }
55
 
56
- /** @var $coreHelper Mage_Core_Helper_Data */
57
- $coreHelper = $this->helper('core');
58
- /** @var $weeeHelper Mage_Weee_Helper_Data */
59
- $weeeHelper = $this->helper('weee');
60
- /** @var $taxHelper Mage_Tax_Helper_Data */
61
- $taxHelper = $this->helper('tax');
62
 
63
- $simplePricesTax = ($taxHelper->displayPriceIncludingTax() || $taxHelper->displayBothPrices());
64
- $minimalPriceValue = $product->getMinimalPrice();
65
- $minimalPrice = $taxHelper->getPrice($product, $minimalPriceValue, $simplePricesTax);
66
 
67
  if (!$product->isGrouped()) {
68
- $weeeTaxAmount = $weeeHelper->getAmountForDisplay($product);
69
- if ($weeeHelper->typeOfDisplay($product, array(1, 2, 4))) {
70
- $weeeTaxAmount = $weeeHelper->getAmount($product);
71
- $weeeTaxAttributes = $weeeHelper->getProductWeeeAttributesForDisplay($product);
72
  }
73
 
74
- $price = $taxHelper->getPrice($product, $product->getPrice());
75
- $regularPrice = $taxHelper->getPrice($product, $product->getPrice(), $simplePricesTax);
76
- $finalPrice = $taxHelper->getPrice($product, $product->getFinalPrice());
77
- $finalPriceInclTax = $taxHelper->getPrice($product, $product->getFinalPrice(), true);
78
- $weeeHelper->getPriceDisplayType();
79
- if ($finalPrice == $price) {
80
- if ($taxHelper->displayBothPrices()) {
81
  /**
82
  * Including
83
  */
84
- if ($weeeTaxAmount && $weeeHelper->typeOfDisplay($product, 0)) {
85
  $priceXmlObj->addAttribute(
86
- 'excluding_tax', $coreHelper->currency($price + $weeeTaxAmount, true, false)
87
  );
88
  $priceXmlObj->addAttribute(
89
- 'including_tax', $coreHelper->currency($finalPriceInclTax + $weeeTaxAmount, true, false)
90
  );
91
- } elseif ($weeeTaxAmount && $weeeHelper->typeOfDisplay($product, 1)) {
92
  /**
93
  * Including + Weee
94
  */
95
  $priceXmlObj->addAttribute(
96
- 'excluding_tax', $coreHelper->currency($price + $weeeTaxAmount, true, false)
97
  );
98
  $priceXmlObj->addAttribute(
99
- 'including_tax', $coreHelper->currency($finalPriceInclTax + $weeeTaxAmount, true, false)
100
  );
101
  $weeeXmlObj = $priceXmlObj->addChild('weee');
102
- $weeeSeparator = ' + ';
103
- $weeeXmlObj->addAttribute('separator', $weeeSeparator);
104
- foreach ($weeeTaxAttributes as $weeeTaxAttribute) {
105
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
106
  $weeeItemXmlObj->addAttribute(
107
- 'name', $weeeItemXmlObj->escapeXml($weeeTaxAttribute->getName())
108
  );
109
  $weeeItemXmlObj->addAttribute(
110
- 'amount', $coreHelper->currency($weeeTaxAttribute->getAmount(), true, false)
111
  );
112
  }
113
- } elseif ($weeeTaxAmount && $weeeHelper->typeOfDisplay($product, 4)) {
114
  /**
115
  * Including + Weee
116
  */
117
  $priceXmlObj->addAttribute(
118
- 'excluding_tax', $coreHelper->currency($price + $weeeTaxAmount, true, false)
119
  );
120
  $priceXmlObj->addAttribute(
121
- 'including_tax', $coreHelper->currency($finalPriceInclTax + $weeeTaxAmount, true, false)
122
  );
123
  $weeeXmlObj = $priceXmlObj->addChild('weee');
124
- $weeeSeparator = ' + ';
125
- $weeeXmlObj->addAttribute('separator', $weeeSeparator);
126
- foreach ($weeeTaxAttributes as $weeeTaxAttribute) {
127
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
128
  $weeeItemXmlObj->addAttribute(
129
- 'name', $weeeItemXmlObj->escapeXml($weeeTaxAttribute->getName())
130
  );
131
- $weeeItemXmlObj->addAttribute('amount', $coreHelper->currency(
132
- $weeeTaxAttribute->getAmount() + $weeeTaxAttribute->getTaxAmount(), true, false
133
  ));
134
  }
135
- } elseif ($weeeTaxAmount && $weeeHelper->typeOfDisplay($product, 2)) {
136
  /**
137
  * Excluding + Weee + Final
138
  */
139
- $priceXmlObj->addAttribute('excluding_tax', $coreHelper->currency($price, true, false));
140
  $weeeXmlObj = $priceXmlObj->addChild('weee');
141
- foreach ($weeeTaxAttributes as $weeeTaxAttribute) {
142
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
143
  $weeeItemXmlObj->addAttribute(
144
- 'name', $weeeItemXmlObj->escapeXml($weeeTaxAttribute->getName())
145
  );
146
  $weeeItemXmlObj->addAttribute(
147
- 'amount', $coreHelper->currency($weeeTaxAttribute->getAmount(), true, false)
148
  );
149
  }
150
- $priceXmlObj->addAttribute('including_tax', $coreHelper->currency(
151
- $finalPriceInclTax + $weeeTaxAmount, true, false
152
  ));
153
  } else {
154
- $priceXmlObj->addAttribute('excluding_tax', $coreHelper->currency($price, true, false));
155
  $priceXmlObj->addAttribute(
156
- 'including_tax', $coreHelper->currency($finalPriceInclTax, true, false)
157
  );
158
  }
159
  /**
160
- * if ($taxHelper->displayBothPrices()) {
161
  */
162
  } else {
163
  /**
164
  * Including
165
  */
166
- if ($weeeTaxAmount && $weeeHelper->typeOfDisplay($product, 0)) {
167
- $priceXmlObj->addAttribute('regular', $coreHelper->currency(
168
- $price + $weeeTaxAmount, true, false
169
  ));
170
- } elseif ($weeeTaxAmount && $weeeHelper->typeOfDisplay($product, 1)) {
171
  /**
172
  * Including + Weee
173
  */
174
- $priceXmlObj->addAttribute('regular', $coreHelper->currency(
175
- $price + $weeeTaxAmount, true, false
176
  ));
177
  $weeeXmlObj = $priceXmlObj->addChild('weee');
178
- $weeeSeparator = ' + ';
179
- $weeeXmlObj->addAttribute('separator', $weeeSeparator);
180
- foreach ($weeeTaxAttributes as $weeeTaxAttribute) {
181
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
182
  $weeeItemXmlObj->addAttribute(
183
- 'name', $weeeItemXmlObj->escapeXml($weeeTaxAttribute->getName())
184
  );
185
  $weeeItemXmlObj->addAttribute(
186
- 'amount', $coreHelper->currency($weeeTaxAttribute->getAmount(), true, false)
187
  );
188
  }
189
- } elseif ($weeeTaxAmount && $weeeHelper->typeOfDisplay($product, 4)) {
190
  /**
191
  * Including + Weee
192
  */
193
- $priceXmlObj->addAttribute('regular', $coreHelper->currency(
194
- $price + $weeeTaxAmount, true, false
195
  ));
196
  $weeeXmlObj = $priceXmlObj->addChild('weee');
197
- $weeeSeparator = ' + ';
198
- $weeeXmlObj->addAttribute('separator', $weeeSeparator);
199
- foreach ($weeeTaxAttributes as $weeeTaxAttribute) {
200
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
201
  $weeeItemXmlObj->addAttribute(
202
- 'name', $weeeItemXmlObj->escapeXml($weeeTaxAttribute->getName())
203
  );
204
- $weeeItemXmlObj->addAttribute('amount', $coreHelper->currency(
205
- $weeeTaxAttribute->getAmount() + $weeeTaxAttribute->getTaxAmount(), true, false
206
  ));
207
  }
208
- } elseif ($weeeTaxAmount && $weeeHelper->typeOfDisplay($product, 2)) {
209
  /**
210
  * Excluding + Weee + Final
211
  */
212
- $priceXmlObj->addAttribute('regular', $coreHelper->currency($price, true, false));
213
  $weeeXmlObj = $priceXmlObj->addChild('weee');
214
- foreach ($weeeTaxAttributes as $weeeTaxAttribute) {
215
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
216
  $weeeItemXmlObj->addAttribute(
217
- 'name', $weeeItemXmlObj->escapeXml($weeeTaxAttribute->getName())
218
  );
219
  $weeeItemXmlObj->addAttribute(
220
- 'amount', $coreHelper->currency($weeeTaxAttribute->getAmount(), true, false)
221
  );
222
  }
223
  $priceXmlObj->addAttribute(
224
- 'including_tax', $coreHelper->currency($price + $weeeTaxAmount, true, false)
225
  );
226
  } else {
227
- $priceXmlObj->addAttribute('regular', $coreHelper->currency($price, true, false));
228
  }
229
  }
230
  /**
231
- * if ($finalPrice == $price) {
232
  */
233
  } else {
234
- $originalWeeeTaxAmount = $weeeHelper->getOriginalAmount($product);
235
  /**
236
  * Including
237
  */
238
- if ($weeeTaxAmount && $weeeHelper->typeOfDisplay($product, 0)) {
239
- $priceXmlObj->addAttribute('regular', $coreHelper->currency(
240
- $regularPrice + $originalWeeeTaxAmount, true, false
241
  ));
242
- if ($taxHelper->displayBothPrices()) {
243
- $priceXmlObj->addAttribute('special_excluding_tax', $coreHelper->currency(
244
- $finalPrice + $weeeTaxAmount, true, false
245
  ));
246
- $priceXmlObj->addAttribute('special_including_tax', $coreHelper->currency(
247
- $finalPriceInclTax + $weeeTaxAmount, true, false
248
  ));
249
  } else {
250
- $priceXmlObj->addAttribute('special', $coreHelper->currency(
251
- $finalPrice + $weeeTaxAmount, true, false
252
  ));
253
  }
254
- } elseif ($weeeTaxAmount && $weeeHelper->typeOfDisplay($product, 1)) {
255
  /**
256
  * Including + Weee
257
  */
258
- $priceXmlObj->addAttribute('regular', $coreHelper->currency(
259
- $regularPrice + $originalWeeeTaxAmount, true, false
260
  ));
261
- $priceXmlObj->addAttribute('special_excluding_tax', $coreHelper->currency(
262
- $finalPrice + $weeeTaxAmount, true, false
263
  ));
264
  $weeeXmlObj = $priceXmlObj->addChild('weee');
265
- $weeeSeparator = ' + ';
266
- $weeeXmlObj->addAttribute('separator', $weeeSeparator);
267
- foreach ($weeeTaxAttributes as $weeeTaxAttribute) {
268
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
269
  $weeeItemXmlObj->addAttribute(
270
- 'name', $weeeItemXmlObj->escapeXml($weeeTaxAttribute->getName())
271
  );
272
- $weeeItemXmlObj->addAttribute('amount', $coreHelper->currency(
273
- $weeeTaxAttribute->getAmount(), true, false
274
  ));
275
  }
276
- $priceXmlObj->addAttribute('special_including_tax', $coreHelper->currency(
277
- $finalPriceInclTax + $weeeTaxAmount, true, false
278
  ));
279
- } elseif ($weeeTaxAmount && $weeeHelper->typeOfDisplay($product, 4)) {
280
  /**
281
  * Including + Weee
282
  */
283
- $priceXmlObj->addAttribute('regular', $coreHelper->currency(
284
- $regularPrice + $originalWeeeTaxAmount, true, false
285
  ));
286
- $priceXmlObj->addAttribute('special_excluding_tax', $coreHelper->currency(
287
- $finalPrice + $weeeTaxAmount, true, false
288
  ));
289
  $weeeXmlObj = $priceXmlObj->addChild('weee');
290
- $weeeSeparator = ' + ';
291
- $weeeXmlObj->addAttribute('separator', $weeeSeparator);
292
- foreach ($weeeTaxAttributes as $weeeTaxAttribute) {
293
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
294
  $weeeItemXmlObj->addAttribute(
295
- 'name', $weeeItemXmlObj->escapeXml($weeeTaxAttribute->getName())
296
  );
297
- $weeeItemXmlObj->addAttribute('amount', $coreHelper->currency(
298
- $weeeTaxAttribute->getAmount() + $weeeTaxAttribute->getTaxAmount(), true, false
299
  ));
300
  }
301
- $priceXmlObj->addAttribute('special_including_tax', $coreHelper->currency(
302
- $finalPriceInclTax + $weeeTaxAmount, true, false
303
  ));
304
- } elseif ($weeeTaxAmount && $weeeHelper->typeOfDisplay($product, 2)) {
305
  /**
306
  * Excluding + Weee + Final
307
  */
308
- $priceXmlObj->addAttribute('regular', $coreHelper->currency($regularPrice, true, false));
309
  $priceXmlObj->addAttribute(
310
- 'special_excluding_tax', $coreHelper->currency($finalPrice, true, false)
311
  );
312
  $weeeXmlObj = $priceXmlObj->addChild('weee');
313
- foreach ($weeeTaxAttributes as $weeeTaxAttribute) {
314
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
315
  $weeeItemXmlObj->addAttribute(
316
- 'name', $weeeItemXmlObj->escapeXml($weeeTaxAttribute->getName())
317
  );
318
- $weeeItemXmlObj->addAttribute('amount', $coreHelper->currency(
319
- $weeeTaxAttribute->getAmount(), true, false
320
  ));
321
  }
322
- $priceXmlObj->addAttribute('special_including_tax', $coreHelper->currency(
323
- $finalPriceInclTax + $weeeTaxAmount, true, false
324
  ));
325
  } else {
326
  /**
327
  * Excluding
328
  */
329
- $priceXmlObj->addAttribute('regular', $coreHelper->currency($regularPrice, true, false));
330
- if ($taxHelper->displayBothPrices()) {
331
  $priceXmlObj->addAttribute(
332
- 'special_excluding_tax', $coreHelper->currency($finalPrice, true, false)
333
  );
334
  $priceXmlObj->addAttribute(
335
- 'special_including_tax', $coreHelper->currency($finalPriceInclTax, true, false)
336
  );
337
  } else {
338
  $priceXmlObj->addAttribute(
339
- 'special', $coreHelper->currency($finalPrice, true, false)
340
  );
341
  }
342
  }
343
  }
344
 
345
- if ($this->getDisplayMinimalPrice() && $minimalPriceValue
346
- && $minimalPriceValue < $product->getFinalPrice()
347
  ) {
348
- $minimalPriceDisplayValue = $minimalPrice;
349
 
350
- if ($weeeTaxAmount && $weeeHelper->typeOfDisplay($product, array(0, 1, 4))) {
351
- $minimalPriceDisplayValue = $minimalPrice + $weeeTaxAmount;
352
  }
353
 
354
  if (!$this->getUseLinkForAsLowAs()) {
355
- $priceXmlObj->addAttribute('as_low_as', $coreHelper->currency(
356
- $minimalPriceDisplayValue, true, false
357
  ));
358
  }
359
  }
@@ -361,23 +361,23 @@ class Mage_XmlConnect_Block_Catalog_Product_Price_Default extends Mage_Catalog_B
361
  * if (!$product->isGrouped()) {
362
  */
363
  } else {
364
- $exclTax = $taxHelper->getPrice($product, $minimalPriceValue, null);
365
- $inclTax = $taxHelper->getPrice($product, $minimalPriceValue, true);
366
 
367
- if ($this->getDisplayMinimalPrice() && $minimalPriceValue) {
368
- if ($taxHelper->displayBothPrices()) {
369
- $priceXmlObj->addAttribute('starting_at_excluding_tax', $coreHelper->currency(
370
- $exclTax, true, false
371
  ));
372
- $priceXmlObj->addAttribute('starting_at_including_tax', $coreHelper->currency(
373
- $inclTax, true, false
374
  ));
375
  } else {
376
- $showPrice = $inclTax;
377
- if (!$taxHelper->displayPriceIncludingTax()) {
378
- $showPrice = $exclTax;
379
  }
380
- $priceXmlObj->addAttribute('starting_at', $coreHelper->currency($showPrice, true, false));
381
  }
382
  }
383
  }
@@ -443,169 +443,169 @@ class Mage_XmlConnect_Block_Catalog_Product_Price_Default extends Mage_Catalog_B
443
  /**
444
  * Get tier prices (formatted) as array of strings
445
  *
446
- * @param array $tierPrices
447
- * @param Mage_Catalog_Model_Product $product
448
  * @return array
449
  */
450
- protected function _getTierPricesTextArray($tierPrices, $product)
451
  {
452
  $pricesArray = array();
453
- if (Mage::helper('weee')->typeOfDisplay($product, array(1, 2, 4))) {
454
- $weeeTaxAttributes = Mage::helper('weee')->getProductWeeeAttributesForDisplay($product);
455
  }
456
 
457
- if ($product->isGrouped()) {
458
- $tierPrices = $this->getTierPrices($product);
459
  }
460
- Mage::helper('weee')->processTierPrices($product, $tierPrices);
461
 
462
- foreach ($tierPrices as $price) {
463
  $s = '';
464
  if ($this->helper('tax')->displayBothPrices()) {
465
- if (Mage::helper('weee')->typeOfDisplay($product, 0)) {
466
- $s .= $this->__('Buy %1$s for %2$s (%3$s incl. tax) each', $price['price_qty'], $price['formated_price_incl_weee_only'], $price['formated_price_incl_weee']);
467
- } else if (Mage::helper('weee')->typeOfDisplay($product, 1)) {
468
- $s .= $this->__('Buy %1$s for %2$s', $price['price_qty'], $price['formated_price_incl_weee_only']);
469
- if ($weeeTaxAttributes) {
470
- $s .= ' (' . $this->__('%1$s incl tax.', $price['formated_price_incl_weee']);
471
  $separator = ' + ';
472
- foreach ($weeeTaxAttributes as $attribute) {
473
- $s .= $separator . $attribute->getName() . ': ';
474
- $s .= Mage::helper('core')->currency($attribute->getAmount());
475
  }
476
  $s .= ')';
477
  }
478
  $s .= ' ' . $this->__('each');
479
- } else if (Mage::helper('weee')->typeOfDisplay($product, 4)) {
480
- $s .= $this->__('Buy %1$s for %2$s', $price['price_qty'], $price['formated_price_incl_weee_only']);
481
- if ($weeeTaxAttributes) {
482
- $s .= ' (' . $this->__('%1$s incl tax.', $price['formated_price_incl_weee']);
483
  $separator = ' + ';
484
- foreach ($weeeTaxAttributes as $attribute) {
485
- $s .= $separator . $attribute->getName() . ': ';
486
  $s .= Mage::helper('core')->currency(
487
- $attribute->getAmount() + $attribute->getTaxAmount()
488
  );
489
  }
490
  $s .= ')';
491
  }
492
  $s .= ' ' . $this->__('each');
493
- } else if (Mage::helper('weee')->typeOfDisplay($product, 2)) {
494
- $s .= $this->__('Buy %1$s for %2$s', $price['price_qty'], $price['formated_price']);
495
- if ($weeeTaxAttributes) {
496
  $s .= ' (';
497
- foreach ($weeeTaxAttributes as $attribute) {
498
- $s .= $attribute->getName() . ': ';
499
- $s .= Mage::helper('core')->currency($attribute->getAmount());
500
  }
501
- $s .= ' ' . $this->__('Total incl. Tax: %1$s', $price['formated_price_incl_weee']) . ')';
502
  }
503
  $s .= ' ' . $this->__('each');
504
  } else {
505
- $s .= $this->__('Buy %1$s for %2$s (%3$s incl. tax) each', $price['price_qty'], $price['formated_price'], $price['formated_price_incl_tax']);
506
  }
507
  } else {
508
  if ($this->helper('tax')->displayPriceIncludingTax()) {
509
- if (Mage::helper('weee')->typeOfDisplay($product, 0)) {
510
- $s .= $this->__('Buy %1$s for %2$s each', $price['price_qty'], $price['formated_price_incl_weee']);
511
- } else if (Mage::helper('weee')->typeOfDisplay($product, 1)) {
512
- $s .= $this->__('Buy %1$s for %2$s', $price['price_qty'], $price['formated_price_incl_weee']);
513
- if ($weeeTaxAttributes) {
514
  $s .= ' (';
515
  $separator = '';
516
- foreach ($weeeTaxAttributes as $attribute) {
517
- $s .= $separator . $attribute->getName() . ': ';
518
- $s .= Mage::helper('core')->currency($attribute->getAmount());
519
  $separator = ' + ';
520
  }
521
  $s .= ')';
522
  }
523
  $s .= ' ' . $this->__('each');
524
- } else if (Mage::helper('weee')->typeOfDisplay($product, 4)) {
525
- $s .= $this->__('Buy %1$s for %2$s', $price['price_qty'], $price['formated_price_incl_weee']);
526
- if ($weeeTaxAttributes) {
527
  $s .= ' (';
528
  $separator = '';
529
- foreach ($weeeTaxAttributes as $attribute) {
530
- $s .= $separator . $attribute->getName() . ': ';
531
  $s .= Mage::helper('core')->currency(
532
- $attribute->getAmount() + $attribute->getTaxAmount()
533
  );
534
  $separator = ' + ';
535
  }
536
  $s .= ')';
537
  }
538
  $s .= ' ' . $this->__('each');
539
- } else if (Mage::helper('weee')->typeOfDisplay($product, 2)) {
540
- $s .= $this->__('Buy %1$s for %2$s', $price['price_qty'], $price['formated_price_incl_tax']);
541
- if ($weeeTaxAttributes) {
542
  $s .= ' (';
543
- foreach ($weeeTaxAttributes as $attribute) {
544
- $s .= $attribute->getName() . ': ';
545
- $s .= Mage::helper('core')->currency($attribute->getAmount());
546
  }
547
- $s .= ' ' . $this->__('Total incl. Tax: %1$s', $price['formated_price_incl_weee']) . ')';
548
  }
549
  $s .= ' ' . $this->__('each');
550
  } else {
551
- $s .= $this->__('Buy %1$s for %2$s each', $price['price_qty'], $price['formated_price_incl_tax']);
552
  }
553
  } else {
554
- if (Mage::helper('weee')->typeOfDisplay($product, 0)) {
555
- $s .= $this->__('Buy %1$s for %2$s each', $price['price_qty'], $price['formated_price_incl_weee_only']);
556
- } else if (Mage::helper('weee')->typeOfDisplay($product, 1)) {
557
- $s .= $this->__('Buy %1$s for %2$s', $price['price_qty'], $price['formated_price_incl_weee_only']);
558
- if ($weeeTaxAttributes) {
559
  $s .= ' (';
560
  $separator = '';
561
- foreach ($weeeTaxAttributes as $attribute) {
562
- $s .= $separator . $attribute->getName() . ': ';
563
- $s .= Mage::helper('core')->currency($attribute->getAmount());
564
  $separator = ' + ';
565
  }
566
  $s .= ')';
567
  }
568
  $s .= ' ' . $this->__('each');
569
- } else if (Mage::helper('weee')->typeOfDisplay($product, 4)) {
570
- $s .= $this->__('Buy %1$s for %2$s', $price['price_qty'], $price['formated_price_incl_weee_only']);
571
- if ($weeeTaxAttributes) {
572
  $s .= ' (';
573
  $separator = '';
574
- foreach ($weeeTaxAttributes as $attribute) {
575
- $s .= $separator . $attribute->getName() . ': ';
576
  $s .= Mage::helper('core')->currency(
577
- $attribute->getAmount() + $attribute->getTaxAmount()
578
  );
579
  $separator = ' + ';
580
  }
581
  $s .= ')';
582
  }
583
  $s .= ' ' . $this->__('each');
584
- } else if (Mage::helper('weee')->typeOfDisplay($product, 2)) {
585
- $s .= $this->__('Buy %1$s for %2$s', $price['price_qty'], $price['formated_price']);
586
- if ($weeeTaxAttributes) {
587
  $s .= ' (';
588
- foreach ($weeeTaxAttributes as $attribute) {
589
- $s .= $attribute->getName() . ': ';
590
- $s .= Mage::helper('core')->currency($attribute->getAmount());
591
  }
592
- $s .= ' ' . $this->__('Total incl. Tax: %1$s', $price['formated_price_incl_weee_only']) . ')';
593
  }
594
  $s .= ' ' . $this->__('each');
595
  } else {
596
- $s .= $this->__('Buy %1$s for %2$s each', $price['price_qty'], $price['formated_price']);
597
  }
598
  }
599
  }
600
- if (!$product->isGrouped()) {
601
- $condition1 = ($product->getPrice() == $product->getFinalPrice()
602
- && $product->getPrice() > $price['price']);
603
 
604
- $condition2 = ($product->getPrice() != $product->getFinalPrice()
605
- && $product->getFinalPrice() > $price['price']);
606
 
607
  if ($condition1 || $condition2) {
608
- $s .= ' ' . $this->__('and') . ' ' . $this->__('save') . ' ' . $price['savePercent'] . '%';
609
  }
610
  }
611
  $pricesArray[] = $s;
39
  * @param Mage_Catalog_Model_Product $product
40
  * @param Mage_XmlConnect_Model_Simplexml_Element $item
41
  */
42
+ public function collectProductPrices(
43
+ Mage_Catalog_Model_Product $product, Mage_XmlConnect_Model_Simplexml_Element $item
44
+ ) {
45
  $this->setProduct($product)->setDisplayMinimalPrice(true)->setUseLinkForAsLowAs(false);
46
 
47
  $priceXmlObj = $item->addChild('price');
48
+ $_tierPrices = $this->_getTierPrices($product);
49
+ if (count($_tierPrices) > 0) {
50
  $tierPricesTextArray = $item->escapeXml(implode(
51
+ PHP_EOL, $this->_getTierPricesTextArray($_tierPrices, $product)
52
  ));
53
  $item->addCustomChild('price_tier', $tierPricesTextArray);
54
  }
55
 
56
+ /** @var $_coreHelper Mage_Core_Helper_Data */
57
+ $_coreHelper = $this->helper('core');
58
+ /** @var $_weeeHelper Mage_Weee_Helper_Data */
59
+ $_weeeHelper = $this->helper('weee');
60
+ /** @var $_taxHelper Mage_Tax_Helper_Data */
61
+ $_taxHelper = $this->helper('tax');
62
 
63
+ $_simplePricesTax = ($_taxHelper->displayPriceIncludingTax() || $_taxHelper->displayBothPrices());
64
+ $_minimalPriceValue = $product->getMinimalPrice();
65
+ $_minimalPrice = $_taxHelper->getPrice($product, $_minimalPriceValue, $_simplePricesTax);
66
 
67
  if (!$product->isGrouped()) {
68
+ $_weeeTaxAmount = $_weeeHelper->getAmountForDisplay($product);
69
+ if ($_weeeHelper->typeOfDisplay($product, array(1, 2, 4))) {
70
+ $_weeeTaxAmount = $_weeeHelper->getAmount($product);
71
+ $_weeeTaxAttributes = $_weeeHelper->getProductWeeeAttributesForDisplay($product);
72
  }
73
 
74
+ $_price = $_taxHelper->getPrice($product, $product->getPrice());
75
+ $_regularPrice = $_taxHelper->getPrice($product, $product->getPrice(), $_simplePricesTax);
76
+ $_finalPrice = $_taxHelper->getPrice($product, $product->getFinalPrice());
77
+ $_finalPriceInclTax = $_taxHelper->getPrice($product, $product->getFinalPrice(), true);
78
+ $_weeeHelper->getPriceDisplayType();
79
+ if ($_finalPrice == $_price) {
80
+ if ($_taxHelper->displayBothPrices()) {
81
  /**
82
  * Including
83
  */
84
+ if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($product, 0)) {
85
  $priceXmlObj->addAttribute(
86
+ 'excluding_tax', $_coreHelper->currency($_price + $_weeeTaxAmount, true, false)
87
  );
88
  $priceXmlObj->addAttribute(
89
+ 'including_tax', $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmount, true, false)
90
  );
91
+ } elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($product, 1)) {
92
  /**
93
  * Including + Weee
94
  */
95
  $priceXmlObj->addAttribute(
96
+ 'excluding_tax', $_coreHelper->currency($_price + $_weeeTaxAmount, true, false)
97
  );
98
  $priceXmlObj->addAttribute(
99
+ 'including_tax', $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmount, true, false)
100
  );
101
  $weeeXmlObj = $priceXmlObj->addChild('weee');
102
+ $_weeeSeparator = ' + ';
103
+ $weeeXmlObj->addAttribute('separator', $_weeeSeparator);
104
+ foreach ($_weeeTaxAttributes as $_weeeTaxAttribute) {
105
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
106
  $weeeItemXmlObj->addAttribute(
107
+ 'name', $weeeItemXmlObj->escapeXml($_weeeTaxAttribute->getName())
108
  );
109
  $weeeItemXmlObj->addAttribute(
110
+ 'amount', $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, false)
111
  );
112
  }
113
+ } elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($product, 4)) {
114
  /**
115
  * Including + Weee
116
  */
117
  $priceXmlObj->addAttribute(
118
+ 'excluding_tax', $_coreHelper->currency($_price + $_weeeTaxAmount, true, false)
119
  );
120
  $priceXmlObj->addAttribute(
121
+ 'including_tax', $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmount, true, false)
122
  );
123
  $weeeXmlObj = $priceXmlObj->addChild('weee');
124
+ $_weeeSeparator = ' + ';
125
+ $weeeXmlObj->addAttribute('separator', $_weeeSeparator);
126
+ foreach ($_weeeTaxAttributes as $_weeeTaxAttribute) {
127
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
128
  $weeeItemXmlObj->addAttribute(
129
+ 'name', $weeeItemXmlObj->escapeXml($_weeeTaxAttribute->getName())
130
  );
131
+ $weeeItemXmlObj->addAttribute('amount', $_coreHelper->currency(
132
+ $_weeeTaxAttribute->getAmount() + $_weeeTaxAttribute->getTaxAmount(), true, false
133
  ));
134
  }
135
+ } elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($product, 2)) {
136
  /**
137
  * Excluding + Weee + Final
138
  */
139
+ $priceXmlObj->addAttribute('excluding_tax', $_coreHelper->currency($_price, true, false));
140
  $weeeXmlObj = $priceXmlObj->addChild('weee');
141
+ foreach ($_weeeTaxAttributes as $_weeeTaxAttribute) {
142
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
143
  $weeeItemXmlObj->addAttribute(
144
+ 'name', $weeeItemXmlObj->escapeXml($_weeeTaxAttribute->getName())
145
  );
146
  $weeeItemXmlObj->addAttribute(
147
+ 'amount', $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, false)
148
  );
149
  }
150
+ $priceXmlObj->addAttribute('including_tax', $_coreHelper->currency(
151
+ $_finalPriceInclTax + $_weeeTaxAmount, true, false
152
  ));
153
  } else {
154
+ $priceXmlObj->addAttribute('excluding_tax', $_coreHelper->currency($_price, true, false));
155
  $priceXmlObj->addAttribute(
156
+ 'including_tax', $_coreHelper->currency($_finalPriceInclTax, true, false)
157
  );
158
  }
159
  /**
160
+ * if ($_taxHelper->displayBothPrices()) {
161
  */
162
  } else {
163
  /**
164
  * Including
165
  */
166
+ if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($product, 0)) {
167
+ $priceXmlObj->addAttribute('regular', $_coreHelper->currency(
168
+ $_price + $_weeeTaxAmount, true, false
169
  ));
170
+ } elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($product, 1)) {
171
  /**
172
  * Including + Weee
173
  */
174
+ $priceXmlObj->addAttribute('regular', $_coreHelper->currency(
175
+ $_price + $_weeeTaxAmount, true, false
176
  ));
177
  $weeeXmlObj = $priceXmlObj->addChild('weee');
178
+ $_weeeSeparator = ' + ';
179
+ $weeeXmlObj->addAttribute('separator', $_weeeSeparator);
180
+ foreach ($_weeeTaxAttributes as $_weeeTaxAttribute) {
181
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
182
  $weeeItemXmlObj->addAttribute(
183
+ 'name', $weeeItemXmlObj->escapeXml($_weeeTaxAttribute->getName())
184
  );
185
  $weeeItemXmlObj->addAttribute(
186
+ 'amount', $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, false)
187
  );
188
  }
189
+ } elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($product, 4)) {
190
  /**
191
  * Including + Weee
192
  */
193
+ $priceXmlObj->addAttribute('regular', $_coreHelper->currency(
194
+ $_price + $_weeeTaxAmount, true, false
195
  ));
196
  $weeeXmlObj = $priceXmlObj->addChild('weee');
197
+ $_weeeSeparator = ' + ';
198
+ $weeeXmlObj->addAttribute('separator', $_weeeSeparator);
199
+ foreach ($_weeeTaxAttributes as $_weeeTaxAttribute) {
200
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
201
  $weeeItemXmlObj->addAttribute(
202
+ 'name', $weeeItemXmlObj->escapeXml($_weeeTaxAttribute->getName())
203
  );
204
+ $weeeItemXmlObj->addAttribute('amount', $_coreHelper->currency(
205
+ $_weeeTaxAttribute->getAmount() + $_weeeTaxAttribute->getTaxAmount(), true, false
206
  ));
207
  }
208
+ } elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($product, 2)) {
209
  /**
210
  * Excluding + Weee + Final
211
  */
212
+ $priceXmlObj->addAttribute('regular', $_coreHelper->currency($_price, true, false));
213
  $weeeXmlObj = $priceXmlObj->addChild('weee');
214
+ foreach ($_weeeTaxAttributes as $_weeeTaxAttribute) {
215
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
216
  $weeeItemXmlObj->addAttribute(
217
+ 'name', $weeeItemXmlObj->escapeXml($_weeeTaxAttribute->getName())
218
  );
219
  $weeeItemXmlObj->addAttribute(
220
+ 'amount', $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, false)
221
  );
222
  }
223
  $priceXmlObj->addAttribute(
224
+ 'including_tax', $_coreHelper->currency($_price + $_weeeTaxAmount, true, false)
225
  );
226
  } else {
227
+ $priceXmlObj->addAttribute('regular', $_coreHelper->currency($_price, true, false));
228
  }
229
  }
230
  /**
231
+ * if ($_finalPrice == $_price) {
232
  */
233
  } else {
234
+ $_originalWeeeTaxAmount = $_weeeHelper->getOriginalAmount($product);
235
  /**
236
  * Including
237
  */
238
+ if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($product, 0)) {
239
+ $priceXmlObj->addAttribute('regular', $_coreHelper->currency(
240
+ $_regularPrice + $_originalWeeeTaxAmount, true, false
241
  ));
242
+ if ($_taxHelper->displayBothPrices()) {
243
+ $priceXmlObj->addAttribute('special_excluding_tax', $_coreHelper->currency(
244
+ $_finalPrice + $_weeeTaxAmount, true, false
245
  ));
246
+ $priceXmlObj->addAttribute('special_including_tax', $_coreHelper->currency(
247
+ $_finalPriceInclTax + $_weeeTaxAmount, true, false
248
  ));
249
  } else {
250
+ $priceXmlObj->addAttribute('special', $_coreHelper->currency(
251
+ $_finalPrice + $_weeeTaxAmount, true, false
252
  ));
253
  }
254
+ } elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($product, 1)) {
255
  /**
256
  * Including + Weee
257
  */
258
+ $priceXmlObj->addAttribute('regular', $_coreHelper->currency(
259
+ $_regularPrice + $_originalWeeeTaxAmount, true, false
260
  ));
261
+ $priceXmlObj->addAttribute('special_excluding_tax', $_coreHelper->currency(
262
+ $_finalPrice + $_weeeTaxAmount, true, false
263
  ));
264
  $weeeXmlObj = $priceXmlObj->addChild('weee');
265
+ $_weeeSeparator = ' + ';
266
+ $weeeXmlObj->addAttribute('separator', $_weeeSeparator);
267
+ foreach ($_weeeTaxAttributes as $_weeeTaxAttribute) {
268
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
269
  $weeeItemXmlObj->addAttribute(
270
+ 'name', $weeeItemXmlObj->escapeXml($_weeeTaxAttribute->getName())
271
  );
272
+ $weeeItemXmlObj->addAttribute('amount', $_coreHelper->currency(
273
+ $_weeeTaxAttribute->getAmount(), true, false
274
  ));
275
  }
276
+ $priceXmlObj->addAttribute('special_including_tax', $_coreHelper->currency(
277
+ $_finalPriceInclTax + $_weeeTaxAmount, true, false
278
  ));
279
+ } elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($product, 4)) {
280
  /**
281
  * Including + Weee
282
  */
283
+ $priceXmlObj->addAttribute('regular', $_coreHelper->currency(
284
+ $_regularPrice + $_originalWeeeTaxAmount, true, false
285
  ));
286
+ $priceXmlObj->addAttribute('special_excluding_tax', $_coreHelper->currency(
287
+ $_finalPrice + $_weeeTaxAmount, true, false
288
  ));
289
  $weeeXmlObj = $priceXmlObj->addChild('weee');
290
+ $_weeeSeparator = ' + ';
291
+ $weeeXmlObj->addAttribute('separator', $_weeeSeparator);
292
+ foreach ($_weeeTaxAttributes as $_weeeTaxAttribute) {
293
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
294
  $weeeItemXmlObj->addAttribute(
295
+ 'name', $weeeItemXmlObj->escapeXml($_weeeTaxAttribute->getName())
296
  );
297
+ $weeeItemXmlObj->addAttribute('amount', $_coreHelper->currency(
298
+ $_weeeTaxAttribute->getAmount() + $_weeeTaxAttribute->getTaxAmount(), true, false
299
  ));
300
  }
301
+ $priceXmlObj->addAttribute('special_including_tax', $_coreHelper->currency(
302
+ $_finalPriceInclTax + $_weeeTaxAmount, true, false
303
  ));
304
+ } elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($product, 2)) {
305
  /**
306
  * Excluding + Weee + Final
307
  */
308
+ $priceXmlObj->addAttribute('regular', $_coreHelper->currency($_regularPrice, true, false));
309
  $priceXmlObj->addAttribute(
310
+ 'special_excluding_tax', $_coreHelper->currency($_finalPrice, true, false)
311
  );
312
  $weeeXmlObj = $priceXmlObj->addChild('weee');
313
+ foreach ($_weeeTaxAttributes as $_weeeTaxAttribute) {
314
  $weeeItemXmlObj = $weeeXmlObj->addChild('item');
315
  $weeeItemXmlObj->addAttribute(
316
+ 'name', $weeeItemXmlObj->escapeXml($_weeeTaxAttribute->getName())
317
  );
318
+ $weeeItemXmlObj->addAttribute('amount', $_coreHelper->currency(
319
+ $_weeeTaxAttribute->getAmount(), true, false
320
  ));
321
  }
322
+ $priceXmlObj->addAttribute('special_including_tax', $_coreHelper->currency(
323
+ $_finalPriceInclTax + $_weeeTaxAmount, true, false
324
  ));
325
  } else {
326
  /**
327
  * Excluding
328
  */
329
+ $priceXmlObj->addAttribute('regular', $_coreHelper->currency($_regularPrice, true, false));
330
+ if ($_taxHelper->displayBothPrices()) {
331
  $priceXmlObj->addAttribute(
332
+ 'special_excluding_tax', $_coreHelper->currency($_finalPrice, true, false)
333
  );
334
  $priceXmlObj->addAttribute(
335
+ 'special_including_tax', $_coreHelper->currency($_finalPriceInclTax, true, false)
336
  );
337
  } else {
338
  $priceXmlObj->addAttribute(
339
+ 'special', $_coreHelper->currency($_finalPrice, true, false)
340
  );
341
  }
342
  }
343
  }
344
 
345
+ if ($this->getDisplayMinimalPrice() && $_minimalPriceValue
346
+ && $_minimalPriceValue < $product->getFinalPrice()
347
  ) {
348
+ $_minimalPriceDisplayValue = $_minimalPrice;
349
 
350
+ if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($product, array(0, 1, 4))) {
351
+ $_minimalPriceDisplayValue = $_minimalPrice + $_weeeTaxAmount;
352
  }
353
 
354
  if (!$this->getUseLinkForAsLowAs()) {
355
+ $priceXmlObj->addAttribute('as_low_as', $_coreHelper->currency(
356
+ $_minimalPriceDisplayValue, true, false
357
  ));
358
  }
359
  }
361
  * if (!$product->isGrouped()) {
362
  */
363
  } else {
364
+ $_exclTax = $_taxHelper->getPrice($product, $_minimalPriceValue, null);
365
+ $_inclTax = $_taxHelper->getPrice($product, $_minimalPriceValue, true);
366
 
367
+ if ($this->getDisplayMinimalPrice() && $_minimalPriceValue) {
368
+ if ($_taxHelper->displayBothPrices()) {
369
+ $priceXmlObj->addAttribute('starting_at_excluding_tax', $_coreHelper->currency(
370
+ $_exclTax, true, false
371
  ));
372
+ $priceXmlObj->addAttribute('starting_at_including_tax', $_coreHelper->currency(
373
+ $_inclTax, true, false
374
  ));
375
  } else {
376
+ $_showPrice = $_inclTax;
377
+ if (!$_taxHelper->displayPriceIncludingTax()) {
378
+ $_showPrice = $_exclTax;
379
  }
380
+ $priceXmlObj->addAttribute('starting_at', $_coreHelper->currency($_showPrice, true, false));
381
  }
382
  }
383
  }
443
  /**
444
  * Get tier prices (formatted) as array of strings
445
  *
446
+ * @param array $_tierPrices
447
+ * @param Mage_Catalog_Model_Product $_product
448
  * @return array
449
  */
450
+ protected function _getTierPricesTextArray($_tierPrices, $_product)
451
  {
452
  $pricesArray = array();
453
+ if (Mage::helper('weee')->typeOfDisplay($_product, array(1, 2, 4))) {
454
+ $_weeeTaxAttributes = Mage::helper('weee')->getProductWeeeAttributesForDisplay($_product);
455
  }
456
 
457
+ if ($_product->isGrouped()) {
458
+ $_tierPrices = $this->getTierPrices($_product);
459
  }
460
+ Mage::helper('weee')->processTierPrices($_product, $_tierPrices);
461
 
462
+ foreach ($_tierPrices as $_price) {
463
  $s = '';
464
  if ($this->helper('tax')->displayBothPrices()) {
465
+ if (Mage::helper('weee')->typeOfDisplay($_product, 0)) {
466
+ $s .= $this->__('Buy %1$s for %2$s (%3$s incl. tax) each', $_price['price_qty'], $_price['formated_price_incl_weee_only'], $_price['formated_price_incl_weee']);
467
+ } else if (Mage::helper('weee')->typeOfDisplay($_product, 1)) {
468
+ $s .= $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price_incl_weee_only']);
469
+ if ($_weeeTaxAttributes) {
470
+ $s .= ' (' . $this->__('%1$s incl tax.', $_price['formated_price_incl_weee']);
471
  $separator = ' + ';
472
+ foreach ($_weeeTaxAttributes as $_attribute) {
473
+ $s .= $separator . $_attribute->getName() . ': ';
474
+ $s .= Mage::helper('core')->currency($_attribute->getAmount());
475
  }
476
  $s .= ')';
477
  }
478
  $s .= ' ' . $this->__('each');
479
+ } else if (Mage::helper('weee')->typeOfDisplay($_product, 4)) {
480
+ $s .= $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price_incl_weee_only']);
481
+ if ($_weeeTaxAttributes) {
482
+ $s .= ' (' . $this->__('%1$s incl tax.', $_price['formated_price_incl_weee']);
483
  $separator = ' + ';
484
+ foreach ($_weeeTaxAttributes as $_attribute) {
485
+ $s .= $separator . $_attribute->getName() . ': ';
486
  $s .= Mage::helper('core')->currency(
487
+ $_attribute->getAmount() + $_attribute->getTaxAmount()
488
  );
489
  }
490
  $s .= ')';
491
  }
492
  $s .= ' ' . $this->__('each');
493
+ } else if (Mage::helper('weee')->typeOfDisplay($_product, 2)) {
494
+ $s .= $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price']);
495
+ if ($_weeeTaxAttributes) {
496
  $s .= ' (';
497
+ foreach ($_weeeTaxAttributes as $_attribute) {
498
+ $s .= $_attribute->getName() . ': ';
499
+ $s .= Mage::helper('core')->currency($_attribute->getAmount());
500
  }
501
+ $s .= ' ' . $this->__('Total incl. Tax: %1$s', $_price['formated_price_incl_weee']) . ')';
502
  }
503
  $s .= ' ' . $this->__('each');
504
  } else {
505
+ $s .= $this->__('Buy %1$s for %2$s (%3$s incl. tax) each', $_price['price_qty'], $_price['formated_price'], $_price['formated_price_incl_tax']);
506
  }
507
  } else {
508
  if ($this->helper('tax')->displayPriceIncludingTax()) {
509
+ if (Mage::helper('weee')->typeOfDisplay($_product, 0)) {
510
+ $s .= $this->__('Buy %1$s for %2$s each', $_price['price_qty'], $_price['formated_price_incl_weee']);
511
+ } else if (Mage::helper('weee')->typeOfDisplay($_product, 1)) {
512
+ $s .= $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price_incl_weee']);
513
+ if ($_weeeTaxAttributes) {
514
  $s .= ' (';
515
  $separator = '';
516
+ foreach ($_weeeTaxAttributes as $_attribute) {
517
+ $s .= $separator . $_attribute->getName() . ': ';
518
+ $s .= Mage::helper('core')->currency($_attribute->getAmount());
519
  $separator = ' + ';
520
  }
521
  $s .= ')';
522
  }
523
  $s .= ' ' . $this->__('each');
524
+ } else if (Mage::helper('weee')->typeOfDisplay($_product, 4)) {
525
+ $s .= $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price_incl_weee']);
526
+ if ($_weeeTaxAttributes) {
527
  $s .= ' (';
528
  $separator = '';
529
+ foreach ($_weeeTaxAttributes as $_attribute) {
530
+ $s .= $separator . $_attribute->getName() . ': ';
531
  $s .= Mage::helper('core')->currency(
532
+ $_attribute->getAmount() + $_attribute->getTaxAmount()
533
  );
534
  $separator = ' + ';
535
  }
536
  $s .= ')';
537
  }
538
  $s .= ' ' . $this->__('each');
539
+ } else if (Mage::helper('weee')->typeOfDisplay($_product, 2)) {
540
+ $s .= $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price_incl_tax']);
541
+ if ($_weeeTaxAttributes) {
542
  $s .= ' (';
543
+ foreach ($_weeeTaxAttributes as $_attribute) {
544
+ $s .= $_attribute->getName() . ': ';
545
+ $s .= Mage::helper('core')->currency($_attribute->getAmount());
546
  }
547
+ $s .= ' ' . $this->__('Total incl. Tax: %1$s', $_price['formated_price_incl_weee']) . ')';
548
  }
549
  $s .= ' ' . $this->__('each');
550
  } else {
551
+ $s .= $this->__('Buy %1$s for %2$s each', $_price['price_qty'], $_price['formated_price_incl_tax']);
552
  }
553
  } else {
554
+ if (Mage::helper('weee')->typeOfDisplay($_product, 0)) {
555
+ $s .= $this->__('Buy %1$s for %2$s each', $_price['price_qty'], $_price['formated_price_incl_weee_only']);
556
+ } else if (Mage::helper('weee')->typeOfDisplay($_product, 1)) {
557
+ $s .= $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price_incl_weee_only']);
558
+ if ($_weeeTaxAttributes) {
559
  $s .= ' (';
560
  $separator = '';
561
+ foreach ($_weeeTaxAttributes as $_attribute) {
562
+ $s .= $separator . $_attribute->getName() . ': ';
563
+ $s .= Mage::helper('core')->currency($_attribute->getAmount());
564
  $separator = ' + ';
565
  }
566
  $s .= ')';
567
  }
568
  $s .= ' ' . $this->__('each');
569
+ } else if (Mage::helper('weee')->typeOfDisplay($_product, 4)) {
570
+ $s .= $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price_incl_weee_only']);
571
+ if ($_weeeTaxAttributes) {
572
  $s .= ' (';
573
  $separator = '';
574
+ foreach ($_weeeTaxAttributes as $_attribute) {
575
+ $s .= $separator . $_attribute->getName() . ': ';
576
  $s .= Mage::helper('core')->currency(
577
+ $_attribute->getAmount() + $_attribute->getTaxAmount()
578
  );
579
  $separator = ' + ';
580
  }
581
  $s .= ')';
582
  }
583
  $s .= ' ' . $this->__('each');
584
+ } else if (Mage::helper('weee')->typeOfDisplay($_product, 2)) {
585
+ $s .= $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price']);
586
+ if ($_weeeTaxAttributes) {
587
  $s .= ' (';
588
+ foreach ($_weeeTaxAttributes as $_attribute) {
589
+ $s .= $_attribute->getName() . ': ';
590
+ $s .= Mage::helper('core')->currency($_attribute->getAmount());
591
  }
592
+ $s .= ' ' . $this->__('Total incl. Tax: %1$s', $_price['formated_price_incl_weee_only']) . ')';
593
  }
594
  $s .= ' ' . $this->__('each');
595
  } else {
596
+ $s .= $this->__('Buy %1$s for %2$s each', $_price['price_qty'], $_price['formated_price']);
597
  }
598
  }
599
  }
600
+ if (!$_product->isGrouped()) {
601
+ $condition1 = ($_product->getPrice() == $_product->getFinalPrice()
602
+ && $_product->getPrice() > $_price['price']);
603
 
604
+ $condition2 = ($_product->getPrice() != $_product->getFinalPrice()
605
+ && $_product->getFinalPrice() > $_price['price']);
606
 
607
  if ($condition1 || $condition2) {
608
+ $s .= ' ' . $this->__('and') . ' ' . $this->__('save') . ' ' . $_price['savePercent'] . '%';
609
  }
610
  }
611
  $pricesArray[] = $s;
app/code/core/Mage/XmlConnect/Block/Catalog/Product/Price/Giftcard.php CHANGED
@@ -75,15 +75,15 @@ class Mage_XmlConnect_Block_Catalog_Product_Price_Giftcard extends Mage_Bundle_B
75
  if ($product->getCanShowPrice() !== false) {
76
  $priceXmlObj = $item->addChild('price');
77
 
78
- $min = $this->getMinAmount();
79
- $max = $this->getMaxAmount();
80
- if ($min && $max && $min == $max) {
81
- $priceXmlObj->addAttribute('regular', Mage::helper('core')->currency($min, true, false));
82
- } else if ($min && $min != 0) {
83
  $priceXmlObj->addAttribute(
84
  'regular',
85
  Mage::helper('enterprise_giftcard')->__('From') . ': '
86
- . Mage::helper('core')->currency($min, true, false)
87
  );
88
  }
89
  }
75
  if ($product->getCanShowPrice() !== false) {
76
  $priceXmlObj = $item->addChild('price');
77
 
78
+ $_min = $this->getMinAmount();
79
+ $_max = $this->getMaxAmount();
80
+ if ($_min && $_max && $_min == $_max) {
81
+ $priceXmlObj->addAttribute('regular', Mage::helper('core')->currency($_min, true, false));
82
+ } else if ($_min && $_min != 0) {
83
  $priceXmlObj->addAttribute(
84
  'regular',
85
  Mage::helper('enterprise_giftcard')->__('From') . ': '
86
+ . Mage::helper('core')->currency($_min, true, false)
87
  );
88
  }
89
  }
app/code/core/Mage/XmlConnect/Block/Checkout/Address/Form.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Checkout_Address_Form extends Mage_Core_Block_Abstract
35
  {
36
  /**
37
  * Render customer address form xml
@@ -111,51 +111,4 @@ class Mage_XmlConnect_Block_Checkout_Address_Form extends Mage_Core_Block_Abstra
111
 
112
  return $fromXmlObj->getXml();
113
  }
114
-
115
- /**
116
- * Retrieve regions by country
117
- *
118
- * @deprecated will delete in the next version
119
- * @param string $countryId
120
- * @return array
121
- */
122
- protected function _getRegionOptions($countryId)
123
- {
124
- $cacheKey = 'DIRECTORY_REGION_SELECT_STORE' . Mage::app()->getStore()->getId() . $countryId;
125
- $cache = Mage::app()->loadCache($cacheKey);
126
- if (Mage::app()->useCache('config') && $cache) {
127
- $options = unserialize($cache);
128
- } else {
129
- $collection = Mage::getModel('directory/region')->getResourceCollection()->addCountryFilter($countryId)
130
- ->load();
131
- $options = $collection->toOptionArray();
132
- if (Mage::app()->useCache('config')) {
133
- Mage::app()->saveCache(serialize($options), $cacheKey, array('config'));
134
- }
135
- }
136
- return $options;
137
- }
138
-
139
- /**
140
- * Retrieve countries
141
- *
142
- * @deprecated will delete in the next version
143
- * @return array
144
- */
145
- protected function _getCountryOptions()
146
- {
147
- $cacheKey = 'DIRECTORY_COUNTRY_SELECT_STORE_' . Mage::app()->getStore()->getCode();
148
- $cache = Mage::app()->loadCache($cacheKey);
149
- if (Mage::app()->useCache('config') && $cache) {
150
- $options = unserialize($cache);
151
- } else {
152
- /** @var $collection Mage_Directory_Model_Mysql4_Country_Collection */
153
- $collection = Mage::getModel('directory/country')->getResourceCollection()->loadByStore();
154
- $options = $collection->toOptionArray(false);
155
- if (Mage::app()->useCache('config')) {
156
- Mage::app()->saveCache(serialize($options), $cacheKey, array('config'));
157
- }
158
- }
159
- return $options;
160
- }
161
  }
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Checkout_Address_Form extends Mage_Core_Block_Template
35
  {
36
  /**
37
  * Render customer address form xml
111
 
112
  return $fromXmlObj->getXml();
113
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  }
app/code/core/Mage/XmlConnect/Block/Checkout/Cart/Item/Renderer/Configurable.php CHANGED
@@ -44,8 +44,7 @@ class Mage_Xmlconnect_Block_Checkout_Cart_Item_Renderer_Configurable
44
  $product = $this->getChildProduct();
45
  if (!$product || !$product->getData('thumbnail')
46
  || ($product->getData('thumbnail') == 'no_selection')
47
- || (Mage::getStoreConfig(self::CONFIGURABLE_PRODUCT_IMAGE) == self::USE_PARENT_IMAGE)
48
- ) {
49
  $product = $this->getProduct();
50
  }
51
  return $this->helper('xmlconnect/catalog_product_image')->init($product, 'thumbnail');
44
  $product = $this->getChildProduct();
45
  if (!$product || !$product->getData('thumbnail')
46
  || ($product->getData('thumbnail') == 'no_selection')
47
+ || (Mage::getStoreConfig(self::CONFIGURABLE_PRODUCT_IMAGE) == self::USE_PARENT_IMAGE)) {
 
48
  $product = $this->getProduct();
49
  }
50
  return $this->helper('xmlconnect/catalog_product_image')->init($product, 'thumbnail');
app/code/core/Mage/XmlConnect/Block/Checkout/Cart/Item/Renderer/Grouped.php CHANGED
@@ -43,8 +43,7 @@ class Mage_Xmlconnect_Block_Checkout_Cart_Item_Renderer_Grouped extends Mage_Che
43
  $product = $this->getProduct();
44
  if (!$product->getData('thumbnail')
45
  ||($product->getData('thumbnail') == 'no_selection')
46
- || (Mage::getStoreConfig(self::GROUPED_PRODUCT_IMAGE) == self::USE_PARENT_IMAGE)
47
- ) {
48
  $product = $this->getGroupedProduct();
49
  }
50
  return $this->helper('xmlconnect/catalog_product_image')->init($product, 'thumbnail');
43
  $product = $this->getProduct();
44
  if (!$product->getData('thumbnail')
45
  ||($product->getData('thumbnail') == 'no_selection')
46
+ || (Mage::getStoreConfig(self::GROUPED_PRODUCT_IMAGE) == self::USE_PARENT_IMAGE)) {
 
47
  $product = $this->getGroupedProduct();
48
  }
49
  return $this->helper('xmlconnect/catalog_product_image')->init($product, 'thumbnail');
app/code/core/Mage/XmlConnect/Block/Checkout/Onepage/Address.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Checkout_Onepage_Address extends Mage_Core_Block_Abstract
35
  {
36
  /**
37
  * Save address action
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Checkout_Onepage_Address extends Mage_Checkout_Block_Agreements
35
  {
36
  /**
37
  * Save address action
app/code/core/Mage/XmlConnect/Block/Checkout/Onepage/Address/Form.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Checkout_Onepage_Address_Form extends Mage_Core_Block_Abstract
35
  {
36
  /**
37
  * Render customer address form
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Checkout_Onepage_Address_Form extends Mage_Core_Block_Template
35
  {
36
  /**
37
  * Render customer address form
app/code/core/Mage/XmlConnect/Block/Checkout/Onepage/Address/List.php CHANGED
@@ -33,28 +33,6 @@
33
  */
34
  class Mage_XmlConnect_Block_Checkout_Onepage_Address_List extends Mage_Checkout_Block_Onepage_Abstract
35
  {
36
- /**
37
- * Address attribute list to retrieve
38
- *
39
- * @var array
40
- */
41
- protected $_addressAttributes = array(
42
- 'entity_id',
43
- 'firstname',
44
- 'lastname',
45
- 'company',
46
- 'street1',
47
- 'street2',
48
- 'city',
49
- 'region',
50
- 'region_id',
51
- 'postcode',
52
- 'country',
53
- 'country_id',
54
- 'telephone',
55
- 'fax'
56
- );
57
-
58
  /**
59
  * Render customer address list xml
60
  *
@@ -65,15 +43,15 @@ class Mage_XmlConnect_Block_Checkout_Onepage_Address_List extends Mage_Checkout_
65
  /** @var $listChild Mage_XmlConnect_Model_Simplexml_Element */
66
  $listChild = $this->getXmlObj();
67
 
68
- $billingAddress = $this->getCustomer()->getPrimaryBillingAddress();
69
- $shippingAddress = $this->getCustomer()->getPrimaryShippingAddress();
70
 
71
  foreach ($this->getCustomer()->getAddresses() as $address) {
72
  $childOptions = array();
73
- if ($billingAddress && ($billingAddress->getEntityId() == $address->getEntityId())) {
74
  $childOptions['default_billing'] = 1;
75
  }
76
- if ($shippingAddress && ($shippingAddress->getEntityId() == $address->getEntityId())) {
77
  $childOptions['default_shipping'] = 1;
78
  }
79
  $addressItem = $listChild->addCustomChild('item', null, $childOptions);
@@ -88,32 +66,47 @@ class Mage_XmlConnect_Block_Checkout_Onepage_Address_List extends Mage_Checkout_
88
  *
89
  * @param Mage_Customer_Model_Address $address
90
  * @param Mage_XmlConnect_Model_Simplexml_Element $item
91
- * @return array|null
92
  */
93
  protected function _prepareAddressData(
94
  Mage_Customer_Model_Address $address, Mage_XmlConnect_Model_Simplexml_Element $item
95
  ) {
96
- if (!$address) {
97
- return array();
98
- }
99
-
100
- $address->explodeStreetAddress();
101
- $data = $address->getData();
102
- $data['country'] = $address->getCountryModel()->getName();
103
 
104
- foreach ($data as $key => $value) {
105
- if (is_object($value)) {
106
- unset($data[$key]);
 
 
 
 
 
 
 
107
  } else {
108
- $data[$key] = $item->escapeXml($value);
 
 
 
 
 
 
 
 
 
 
 
 
109
  }
110
  }
111
 
112
- $data = array_intersect_key($data, array_flip($this->_addressAttributes));
113
  foreach ($data as $key => $value) {
114
- if (!empty($value)) {
115
- $item->addChild($key, $item->escapeXml($value));
116
  }
 
117
  }
 
118
  }
119
  }
33
  */
34
  class Mage_XmlConnect_Block_Checkout_Onepage_Address_List extends Mage_Checkout_Block_Onepage_Abstract
35
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  /**
37
  * Render customer address list xml
38
  *
43
  /** @var $listChild Mage_XmlConnect_Model_Simplexml_Element */
44
  $listChild = $this->getXmlObj();
45
 
46
+ $_billingAddress = $this->getCustomer()->getPrimaryBillingAddress();
47
+ $_shippingAddress = $this->getCustomer()->getPrimaryShippingAddress();
48
 
49
  foreach ($this->getCustomer()->getAddresses() as $address) {
50
  $childOptions = array();
51
+ if ($_billingAddress && ($_billingAddress->getEntityId() == $address->getEntityId())) {
52
  $childOptions['default_billing'] = 1;
53
  }
54
+ if ($_shippingAddress && ($_shippingAddress->getEntityId() == $address->getEntityId())) {
55
  $childOptions['default_shipping'] = 1;
56
  }
57
  $addressItem = $listChild->addCustomChild('item', null, $childOptions);
66
  *
67
  * @param Mage_Customer_Model_Address $address
68
  * @param Mage_XmlConnect_Model_Simplexml_Element $item
69
+ * @return Mage_XmlConnect_Block_Checkout_Onepage_Address_List
70
  */
71
  protected function _prepareAddressData(
72
  Mage_Customer_Model_Address $address, Mage_XmlConnect_Model_Simplexml_Element $item
73
  ) {
74
+ $attributes = Mage::helper('customer/address')->getAttributes();
75
+ $data = array('entity_id' => $address->getId());
 
 
 
 
 
76
 
77
+ foreach ($attributes as $attribute) {
78
+ /* @var $attribute Mage_Customer_Model_Attribute */
79
+ if (!$attribute->getIsVisible()) {
80
+ continue;
81
+ }
82
+ if ($attribute->getAttributeCode() == 'country_id') {
83
+ $data['country'] = $address->getCountryModel()->getName();
84
+ $data['country_id'] = $address->getCountryId();
85
+ } else if ($attribute->getAttributeCode() == 'region') {
86
+ $data['region'] = $address->getRegion();
87
  } else {
88
+ $dataModel = Mage_Customer_Model_Attribute_Data::factory($attribute, $address);
89
+ $attributeValue = $dataModel->outputValue(
90
+ Mage_Customer_Model_Attribute_Data::OUTPUT_FORMAT_ONELINE
91
+ );
92
+ if ($attribute->getFrontendInput() == 'multiline') {
93
+ $values = $dataModel->outputValue(Mage_Customer_Model_Attribute_Data::OUTPUT_FORMAT_ARRAY);
94
+ // explode lines
95
+ foreach ($values as $attributeIndex => $attributeVal) {
96
+ $key = sprintf('%s%d', $attribute->getAttributeCode(), $attributeIndex + 1);
97
+ $data[$key] = $attributeVal;
98
+ }
99
+ }
100
+ $data[$attribute->getAttributeCode()] = $attributeValue;
101
  }
102
  }
103
 
 
104
  foreach ($data as $key => $value) {
105
+ if (empty($value)) {
106
+ continue;
107
  }
108
+ $item->addCustomChild($key, $value);
109
  }
110
+ return $this;
111
  }
112
  }
app/code/core/Mage/XmlConnect/Block/Checkout/Order/Review/Info.php CHANGED
@@ -78,12 +78,12 @@ class Mage_XmlConnect_Block_Checkout_Order_Review_Info extends Mage_Checkout_Blo
78
  }
79
 
80
  if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) {
81
- $incl = $this->helper('checkout')->getPriceInclTax($item);
82
  $typeOfDisplay = Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales');
83
  if ($typeOfDisplay && $item->getWeeeTaxAppliedAmount()) {
84
- $inclPrice = $incl + $item->getWeeeTaxAppliedAmount();
85
  } else {
86
- $inclPrice = $incl - $item->getWeeeTaxDisposition();
87
  }
88
  }
89
 
@@ -127,13 +127,13 @@ class Mage_XmlConnect_Block_Checkout_Order_Review_Info extends Mage_Checkout_Blo
127
  }
128
  }
129
  if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) {
130
- $incl = $this->helper('checkout')->getSubtotalInclTax($item);
131
  if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales')
132
  && $item->getWeeeTaxAppliedAmount()
133
  ) {
134
- $inclPrice = $incl + $item->getWeeeTaxAppliedRowAmount();
135
  } else {
136
- $inclPrice = $incl - $item->getWeeeTaxRowDisposition();
137
  }
138
  }
139
 
@@ -166,15 +166,15 @@ class Mage_XmlConnect_Block_Checkout_Order_Review_Info extends Mage_Checkout_Blo
166
  /**
167
  * Options list
168
  */
169
- $options = $renderer->getOptionList();
170
- if ($options) {
171
  $itemOptionsXml = $itemXml->addChild('options');
172
- foreach ($options as $option) {
173
- $formattedOptionValue = $renderer->getFormatedOptionValue($option);
174
  $optionXml = $itemOptionsXml->addChild('option');
175
- $labelValue = $itemsXmlObj->escapeXml($option['label']);
176
  $optionXml->addAttribute('label', $labelValue);
177
- $textValue = $itemsXmlObj->escapeXml($formattedOptionValue['value']);
178
  $optionXml->addAttribute('text', $textValue);
179
  }
180
  }
78
  }
79
 
80
  if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) {
81
+ $_incl = $this->helper('checkout')->getPriceInclTax($item);
82
  $typeOfDisplay = Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales');
83
  if ($typeOfDisplay && $item->getWeeeTaxAppliedAmount()) {
84
+ $inclPrice = $_incl + $item->getWeeeTaxAppliedAmount();
85
  } else {
86
+ $inclPrice = $_incl - $item->getWeeeTaxDisposition();
87
  }
88
  }
89
 
127
  }
128
  }
129
  if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) {
130
+ $_incl = $this->helper('checkout')->getSubtotalInclTax($item);
131
  if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales')
132
  && $item->getWeeeTaxAppliedAmount()
133
  ) {
134
+ $inclPrice = $_incl + $item->getWeeeTaxAppliedRowAmount();
135
  } else {
136
+ $inclPrice = $_incl - $item->getWeeeTaxRowDisposition();
137
  }
138
  }
139
 
166
  /**
167
  * Options list
168
  */
169
+ $_options = $renderer->getOptionList();
170
+ if ($_options) {
171
  $itemOptionsXml = $itemXml->addChild('options');
172
+ foreach ($_options as $_option) {
173
+ $_formattedOptionValue = $renderer->getFormatedOptionValue($_option);
174
  $optionXml = $itemOptionsXml->addChild('option');
175
+ $labelValue = $itemsXmlObj->escapeXml($_option['label']);
176
  $optionXml->addAttribute('label', $labelValue);
177
+ $textValue = $itemsXmlObj->escapeXml($_formattedOptionValue['value']);
178
  $optionXml->addAttribute('text', $textValue);
179
  }
180
  }
app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/Ccsave.php CHANGED
@@ -80,8 +80,8 @@ class Mage_XmlConnect_Block_Checkout_Payment_Method_Ccsave extends Mage_Payment_
80
 
81
  $ccTypes = $helper->getArrayAsXmlItemValues($this->getCcAvailableTypes(), $this->getInfoData('cc_type'));
82
 
83
- $ccMonthArray = $this->getCcMonths();
84
- $ccMonths = $helper->getArrayAsXmlItemValues($ccMonthArray, $this->getInfoData('cc_exp_month'));
85
 
86
  $ccYears = $helper->getArrayAsXmlItemValues($this->getCcYears(), $this->getInfoData('cc_exp_year'));
87
 
@@ -100,7 +100,7 @@ class Mage_XmlConnect_Block_Checkout_Payment_Method_Ccsave extends Mage_Payment_
100
  $solo = '';
101
  if ($this->hasSsCardType()) {
102
  $ssCcMonths = $helper->getArrayAsXmlItemValues(
103
- $ccMonthArray, $this->getInfoData('cc_ss_start_month')
104
  );
105
  $ssCcYears = $helper->getArrayAsXmlItemValues(
106
  $this->getSsStartYears(), $this->getInfoData('cc_ss_start_year')
80
 
81
  $ccTypes = $helper->getArrayAsXmlItemValues($this->getCcAvailableTypes(), $this->getInfoData('cc_type'));
82
 
83
+ $_ccMonthArray = $this->getCcMonths();
84
+ $ccMonths = $helper->getArrayAsXmlItemValues($_ccMonthArray, $this->getInfoData('cc_exp_month'));
85
 
86
  $ccYears = $helper->getArrayAsXmlItemValues($this->getCcYears(), $this->getInfoData('cc_exp_year'));
87
 
100
  $solo = '';
101
  if ($this->hasSsCardType()) {
102
  $ssCcMonths = $helper->getArrayAsXmlItemValues(
103
+ $_ccMonthArray, $this->getInfoData('cc_ss_start_month')
104
  );
105
  $ssCcYears = $helper->getArrayAsXmlItemValues(
106
  $this->getSsStartYears(), $this->getInfoData('cc_ss_start_year')
app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/Info/Ccsave.php CHANGED
@@ -44,8 +44,8 @@ class Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Ccsave extends Mage_Pay
44
  $orderItemXmlObj->addAttribute('type', $this->getMethod()->getCode());
45
  $orderItemXmlObj->addAttribute('title', $orderItemXmlObj->xmlAttribute($this->getMethod()->getTitle()));
46
 
47
- if ($specificInfo = $this->getSpecificInformation()) {
48
- foreach ($specificInfo as $label => $value) {
49
  $orderItemXmlObj->addCustomChild('item', implode($this->getValueAsArray($value, true), '\n'), array(
50
  'label' => $label
51
  ));
44
  $orderItemXmlObj->addAttribute('type', $this->getMethod()->getCode());
45
  $orderItemXmlObj->addAttribute('title', $orderItemXmlObj->xmlAttribute($this->getMethod()->getTitle()));
46
 
47
+ if ($_specificInfo = $this->getSpecificInformation()) {
48
+ foreach ($_specificInfo as $label => $value) {
49
  $orderItemXmlObj->addCustomChild('item', implode($this->getValueAsArray($value, true), '\n'), array(
50
  'label' => $label
51
  ));
app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/Info/Paypal/Abstract.php CHANGED
@@ -44,8 +44,8 @@ abstract class Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Paypal_Abstrac
44
  $orderItemXmlObj->addAttribute('type', $this->getMethod()->getCode());
45
  $orderItemXmlObj->addAttribute('title', $orderItemXmlObj->xmlAttribute($this->getMethod()->getTitle()));
46
 
47
- if ($specificInfo = $this->getSpecificInformation()) {
48
- foreach ($specificInfo as $label => $value) {
49
  $orderItemXmlObj->addCustomChild('item', implode($this->getValueAsArray($value, true), '\n'), array(
50
  'label' => $label
51
  ));
44
  $orderItemXmlObj->addAttribute('type', $this->getMethod()->getCode());
45
  $orderItemXmlObj->addAttribute('title', $orderItemXmlObj->xmlAttribute($this->getMethod()->getTitle()));
46
 
47
+ if ($_specificInfo = $this->getSpecificInformation()) {
48
+ foreach ($_specificInfo as $label => $value) {
49
  $orderItemXmlObj->addCustomChild('item', implode($this->getValueAsArray($value, true), '\n'), array(
50
  'label' => $label
51
  ));
app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/Info/Pbridge/Verisign.php CHANGED
@@ -44,8 +44,8 @@ class Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Pbridge_Verisign extend
44
  $orderItemXmlObj->addAttribute('type', $this->getMethod()->getCode());
45
  $orderItemXmlObj->addAttribute('title', $orderItemXmlObj->xmlAttribute($this->getMethod()->getTitle()));
46
 
47
- if ($specificInfo = $this->getSpecificInformation()) {
48
- foreach ($specificInfo as $label => $value) {
49
  $orderItemXmlObj->addCustomChild('item', implode($this->getValueAsArray($value, true), '\n'), array(
50
  'label' => $label
51
  ));
44
  $orderItemXmlObj->addAttribute('type', $this->getMethod()->getCode());
45
  $orderItemXmlObj->addAttribute('title', $orderItemXmlObj->xmlAttribute($this->getMethod()->getTitle()));
46
 
47
+ if ($_specificInfo = $this->getSpecificInformation()) {
48
+ foreach ($_specificInfo as $label => $value) {
49
  $orderItemXmlObj->addCustomChild('item', implode($this->getValueAsArray($value, true), '\n'), array(
50
  'label' => $label
51
  ));
app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/List.php CHANGED
@@ -76,7 +76,7 @@ class Mage_XmlConnect_Block_Checkout_Payment_Method_List extends Mage_Payment_Bl
76
  */
77
  public function getQuote()
78
  {
79
- return Mage::getSingleton('checkout/session')->getQuote();
80
  }
81
 
82
  /**
@@ -222,7 +222,7 @@ class Mage_XmlConnect_Block_Checkout_Payment_Method_List extends Mage_Payment_Bl
222
  /** @var $customerBalanceBlock Enterprise_CustomerBalance_Block_Checkout_Onepage_Payment_Additional */
223
  $customerBalanceBlock = $this->getLayout()
224
  ->addBlock('enterprise_customerbalance/checkout_onepage_payment_additional', 'customer_balance');
225
- $storeCreditFlag = (int) Mage::helper('enterprise_customerbalance')->isEnabled();
226
  if ($storeCreditFlag && $customerBalanceBlock->isDisplayContainer()) {
227
  $balance = $this->getQuote()->getStore()->formatPrice($customerBalanceBlock->getBalance(), false);
228
  $methodsXmlObj->addCustomChild('customer_balance', null, array(
@@ -372,30 +372,4 @@ class Mage_XmlConnect_Block_Checkout_Payment_Method_List extends Mage_Payment_Bl
372
  }
373
  return $this;
374
  }
375
-
376
- /**
377
- * Deprecated function adding Payment method to the xml
378
- *
379
- * @deprecated after 1.4.2.0
380
- * @param Mage_Core_Block_Template $block
381
- * @param Mage_XmlConnect_Model_Simplexml_Element $methodsXmlObj
382
- * @param array $usedCodes
383
- * @return bool
384
- */
385
- protected function _addToXml($block, $methodsXmlObj, $usedCodes)
386
- {
387
- return false;
388
- }
389
-
390
- /**
391
- * Deprecated function check method status
392
- *
393
- * @deprecated after 1.4.2.0
394
- * @param Mage_Payment_Model_Method_Abstract $method
395
- * @return bool
396
- */
397
- public function isAvailable($method)
398
- {
399
- return $method->isAvailable($this->getQuote());
400
- }
401
  }
76
  */
77
  public function getQuote()
78
  {
79
+ return Mage::getSingleton('xmlconnect/corefix_checkout_session')->getQuote();
80
  }
81
 
82
  /**
222
  /** @var $customerBalanceBlock Enterprise_CustomerBalance_Block_Checkout_Onepage_Payment_Additional */
223
  $customerBalanceBlock = $this->getLayout()
224
  ->addBlock('enterprise_customerbalance/checkout_onepage_payment_additional', 'customer_balance');
225
+ $storeCreditFlag = (int) Mage::getStoreConfig(Enterprise_CustomerBalance_Helper_Data::XML_PATH_ENABLED);
226
  if ($storeCreditFlag && $customerBalanceBlock->isDisplayContainer()) {
227
  $balance = $this->getQuote()->getStore()->formatPrice($customerBalanceBlock->getBalance(), false);
228
  $methodsXmlObj->addCustomChild('customer_balance', null, array(
372
  }
373
  return $this;
374
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
375
  }
app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/ListApi23.php CHANGED
@@ -90,7 +90,7 @@ class Mage_XmlConnect_Block_Checkout_Payment_Method_ListApi23 extends Mage_XmlCo
90
  /** @var $customerBalanceBlock Enterprise_CustomerBalance_Block_Checkout_Onepage_Payment_Additional */
91
  $customerBalanceBlock = $this->getLayout()
92
  ->addBlock('enterprise_customerbalance/checkout_onepage_payment_additional', 'customer_balance');
93
- $storeCreditFlag = (int) Mage::helper('enterprise_customerbalance')->isEnabled();
94
  if ($storeCreditFlag && $customerBalanceBlock->isDisplayContainer()) {
95
  $balance = $this->getQuote()->getStore()->formatPrice($customerBalanceBlock->getBalance(), false);
96
  $methodsXmlObj->addCustomChild('method', null, array(
90
  /** @var $customerBalanceBlock Enterprise_CustomerBalance_Block_Checkout_Onepage_Payment_Additional */
91
  $customerBalanceBlock = $this->getLayout()
92
  ->addBlock('enterprise_customerbalance/checkout_onepage_payment_additional', 'customer_balance');
93
+ $storeCreditFlag = (int) Mage::getStoreConfig(Enterprise_CustomerBalance_Helper_Data::XML_PATH_ENABLED);
94
  if ($storeCreditFlag && $customerBalanceBlock->isDisplayContainer()) {
95
  $balance = $this->getQuote()->getStore()->formatPrice($customerBalanceBlock->getBalance(), false);
96
  $methodsXmlObj->addCustomChild('method', null, array(
app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/Paypal/Payflow.php CHANGED
@@ -52,7 +52,7 @@ class Mage_XmlConnect_Block_Checkout_Payment_Method_Paypal_Payflow extends Mage_
52
  {
53
  $method = $this->getData('method');
54
  if (!$method) {
55
- $method = Mage::getModel('paygate/payflow_pro');
56
  $this->setData('method', $method);
57
  }
58
 
@@ -75,29 +75,29 @@ class Mage_XmlConnect_Block_Checkout_Payment_Method_Paypal_Payflow extends Mage_
75
  $formXmlObj->addAttribute('name', 'payment_form_' . $method->getCode());
76
  $formXmlObj->addAttribute('method', 'post');
77
 
78
- $ccType = $this->getInfoData('cc_type');
79
  $ccTypes = '';
80
 
81
- foreach ($this->getCcAvailableTypes() as $typeCode => $_typeName) {
82
- if (!$typeCode) {
83
  continue;
84
  }
85
  $ccTypes .= '
86
- <item' . ($typeCode == $ccType ? ' selected="1"' : '') . '>
87
  <label>' . $_typeName . '</label>
88
- <value>' . $typeCode . '</value>
89
  </item>';
90
  }
91
 
92
  $ccMonthes = '';
93
 
94
- $ccExpMonth = $this->getInfoData('cc_exp_month');
95
  foreach ($this->getCcMonths() as $k => $v) {
96
  if (!$k) {
97
  continue;
98
  }
99
  $ccMonthes .= '
100
- <item' . ($k == $ccExpMonth ? ' selected="1"' : '') . '>
101
  <label>' . $v . '</label>
102
  <value>' . ($k ? $k : '') . '</value>
103
  </item>';
@@ -105,13 +105,13 @@ class Mage_XmlConnect_Block_Checkout_Payment_Method_Paypal_Payflow extends Mage_
105
 
106
  $ccYears = '';
107
 
108
- $ccExpYear = $this->getInfoData('cc_exp_year');
109
  foreach ($this->getCcYears() as $k => $v) {
110
  if (!$k) {
111
  continue;
112
  }
113
  $ccYears .= '
114
- <item' . ($k == $ccExpYear ? ' selected="1"' : '') . '>
115
  <label>' . $v . '</label>
116
  <value>' . ($k ? $k : '') . '</value>
117
  </item>';
52
  {
53
  $method = $this->getData('method');
54
  if (!$method) {
55
+ $method = Mage::getModel('paypal/payflowpro');
56
  $this->setData('method', $method);
57
  }
58
 
75
  $formXmlObj->addAttribute('name', 'payment_form_' . $method->getCode());
76
  $formXmlObj->addAttribute('method', 'post');
77
 
78
+ $_ccType = $this->getInfoData('cc_type');
79
  $ccTypes = '';
80
 
81
+ foreach ($this->getCcAvailableTypes() as $_typeCode => $_typeName) {
82
+ if (!$_typeCode) {
83
  continue;
84
  }
85
  $ccTypes .= '
86
+ <item' . ($_typeCode == $_ccType ? ' selected="1"' : '') . '>
87
  <label>' . $_typeName . '</label>
88
+ <value>' . $_typeCode . '</value>
89
  </item>';
90
  }
91
 
92
  $ccMonthes = '';
93
 
94
+ $_ccExpMonth = $this->getInfoData('cc_exp_month');
95
  foreach ($this->getCcMonths() as $k => $v) {
96
  if (!$k) {
97
  continue;
98
  }
99
  $ccMonthes .= '
100
+ <item' . ($k == $_ccExpMonth ? ' selected="1"' : '') . '>
101
  <label>' . $v . '</label>
102
  <value>' . ($k ? $k : '') . '</value>
103
  </item>';
105
 
106
  $ccYears = '';
107
 
108
+ $_ccExpYear = $this->getInfoData('cc_exp_year');
109
  foreach ($this->getCcYears() as $k => $v) {
110
  if (!$k) {
111
  continue;
112
  }
113
  $ccYears .= '
114
+ <item' . ($k == $_ccExpYear ? ' selected="1"' : '') . '>
115
  <label>' . $v . '</label>
116
  <value>' . ($k ? $k : '') . '</value>
117
  </item>';
app/code/core/Mage/XmlConnect/Block/Checkout/Pbridge/Result.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Checkout_Pbridge_Result extends Mage_Core_Block_Abstract
35
  {
36
  /**
37
  * Return url for redirect with params of Payment Bridge incoming data
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Checkout_Pbridge_Result extends Mage_Core_Block_Template
35
  {
36
  /**
37
  * Return url for redirect with params of Payment Bridge incoming data
app/code/core/Mage/XmlConnect/Block/Configuration.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Configuration extends Mage_Core_Block_Abstract
35
  {
36
  /**
37
  * Current application model
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Configuration extends Mage_Core_Block_Template
35
  {
36
  /**
37
  * Current application model
app/code/core/Mage/XmlConnect/Block/Customer/Address/Form.php CHANGED
@@ -323,41 +323,6 @@ class Mage_XmlConnect_Block_Customer_Address_Form extends Mage_Customer_Block_Ad
323
  return $this;
324
  }
325
 
326
- /**
327
- * Add custom customer attributes
328
- *
329
- * @deprecated will delete in the next version
330
- * @param Mage_XmlConnect_Model_Simplexml_Form_Element_Fieldset $addressFieldset
331
- * @return Mage_XmlConnect_Block_Customer_Address_Form
332
- */
333
- protected function _addCustomAddressAttributes(
334
- Mage_XmlConnect_Model_Simplexml_Form_Element_Fieldset $addressFieldset
335
- ) {
336
- if (is_object(Mage::getConfig()->getNode('modules/Enterprise_Customer'))) {
337
- /** @var $addressAttrBlock Enterprise_Customer_Block_Form */
338
- $addressAttrBlock = $this->getLayout()
339
- ->addBlock('enterprise_customer/form', 'customer_address_attr');
340
- $addressAttrBlock->setFormCode('customer_address_edit');
341
- $addressAttrBlock->setEntity($this->getAddress());
342
-
343
- foreach ($this->_customerFiledRenderer as $type => $rendererBlock) {
344
- $addressAttrBlock->addRenderer($type, $rendererBlock, 'customer/form/renderer/text.phtml');
345
- }
346
-
347
- if ($addressAttrBlock->hasUserDefinedAttributes()) {
348
- foreach ($addressAttrBlock->getUserDefinedAttributes() as $attribute) {
349
- $type = $attribute->getFrontendInput();
350
- $block = $addressAttrBlock->getRenderer($type);
351
- if ($block) {
352
- $block->setAttributeObject($attribute)->setEntity($addressAttrBlock->getEntity())
353
- ->addFieldToXmlObj($addressFieldset);
354
- }
355
- }
356
- }
357
- }
358
- return $this;
359
- }
360
-
361
  /**
362
  * Get customer name widget block
363
  *
323
  return $this;
324
  }
325
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
326
  /**
327
  * Get customer name widget block
328
  *
app/code/core/Mage/XmlConnect/Block/Customer/Address/List.php CHANGED
@@ -31,31 +31,8 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Customer_Address_List extends Mage_Core_Block_Abstract
35
  {
36
-
37
- /**
38
- * Address attribute list to retrieve
39
- *
40
- * @var array
41
- */
42
- protected $_addressAttributes = array(
43
- 'entity_id',
44
- 'firstname',
45
- 'lastname',
46
- 'company',
47
- 'street1',
48
- 'street2',
49
- 'city',
50
- 'region',
51
- 'region_id',
52
- 'postcode',
53
- 'country',
54
- 'country_id',
55
- 'telephone',
56
- 'fax'
57
- );
58
-
59
  /**
60
  * Render customer address list xml
61
  *
@@ -66,10 +43,10 @@ class Mage_XmlConnect_Block_Customer_Address_List extends Mage_Core_Block_Abstra
66
  $addressXmlObj = Mage::getModel('xmlconnect/simplexml_element', '<address></address>');
67
  $customer = Mage::getSingleton('customer/session')->getCustomer();
68
 
69
- $billingAddssesId = $customer->getDefaultBilling();
70
- $shippingAddssesId = $customer->getDefaultShipping();
71
- $billingAddress = $customer->getAddressById($billingAddssesId);
72
- $shippingAddress = $customer->getAddressById($shippingAddssesId);
73
 
74
  if ($billingAddress && $billingAddress->getId()) {
75
  $item = $addressXmlObj->addChild('item');
@@ -83,13 +60,13 @@ class Mage_XmlConnect_Block_Customer_Address_List extends Mage_Core_Block_Abstra
83
  $item->addAttribute('default_shipping', 1);
84
  $this->prepareAddressData($shippingAddress, $item);
85
  }
86
- $additionalAddresses = $customer->getAdditionalAddresses();
87
- if ($additionalAddresses) {
88
- foreach ($additionalAddresses as $address) {
89
  $item = $addressXmlObj->addChild('item');
90
  $item->addAttribute('label', $this->__('Additional Address'));
91
  $item->addAttribute('additional', 1);
92
- $this->prepareAddressData($address, $item);
93
  }
94
  }
95
 
@@ -103,32 +80,48 @@ class Mage_XmlConnect_Block_Customer_Address_List extends Mage_Core_Block_Abstra
103
  * @param Mage_Customer_Model_Address $address
104
  * @param Mage_XmlConnect_Model_Simplexml_Element $item
105
  * @return array
106
- * @see $this->_addressAttributes
107
  */
108
- public function prepareAddressData(Mage_Customer_Model_Address $address,
109
- Mage_XmlConnect_Model_Simplexml_Element $item)
110
- {
111
  if (!$address) {
112
  return array();
113
  }
114
 
115
- $address->explodeStreetAddress();
116
- $data = $address->getData();
117
- $data['country'] = $address->getCountryModel()->getName();
118
 
119
- foreach ($data as $key => $value) {
120
- if (is_object($value)) {
121
- unset($data[$key]);
 
 
 
 
 
 
 
 
 
122
  } else {
123
- $data[$key] = $item->escapeXml($value);
 
 
 
 
 
 
 
 
 
 
124
  }
125
  }
126
 
127
- $data = array_intersect_key($data, array_flip($this->_addressAttributes));
128
  foreach ($data as $key => $value) {
129
- if (!empty($value)) {
130
- $item->addChild($key, $item->escapeXml($value));
131
  }
 
132
  }
133
  }
134
  }
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Customer_Address_List extends Mage_Core_Block_Template
35
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  /**
37
  * Render customer address list xml
38
  *
43
  $addressXmlObj = Mage::getModel('xmlconnect/simplexml_element', '<address></address>');
44
  $customer = Mage::getSingleton('customer/session')->getCustomer();
45
 
46
+ $_billingAddssesId = $customer->getDefaultBilling();
47
+ $_shippingAddssesId = $customer->getDefaultShipping();
48
+ $billingAddress = $customer->getAddressById($_billingAddssesId);
49
+ $shippingAddress = $customer->getAddressById($_shippingAddssesId);
50
 
51
  if ($billingAddress && $billingAddress->getId()) {
52
  $item = $addressXmlObj->addChild('item');
60
  $item->addAttribute('default_shipping', 1);
61
  $this->prepareAddressData($shippingAddress, $item);
62
  }
63
+ $_additionalAddresses = $customer->getAdditionalAddresses();
64
+ if ($_additionalAddresses) {
65
+ foreach ($_additionalAddresses as $_address) {
66
  $item = $addressXmlObj->addChild('item');
67
  $item->addAttribute('label', $this->__('Additional Address'));
68
  $item->addAttribute('additional', 1);
69
+ $this->prepareAddressData($_address, $item);
70
  }
71
  }
72
 
80
  * @param Mage_Customer_Model_Address $address
81
  * @param Mage_XmlConnect_Model_Simplexml_Element $item
82
  * @return array
 
83
  */
84
+ public function prepareAddressData(
85
+ Mage_Customer_Model_Address $address, Mage_XmlConnect_Model_Simplexml_Element $item
86
+ ) {
87
  if (!$address) {
88
  return array();
89
  }
90
 
91
+ $attributes = Mage::helper('customer/address')->getAttributes();
 
 
92
 
93
+ $data = array('entity_id' => $address->getId());
94
+
95
+ foreach ($attributes as $attribute) {
96
+ /* @var $attribute Mage_Customer_Model_Attribute */
97
+ if (!$attribute->getIsVisible()) {
98
+ continue;
99
+ }
100
+ if ($attribute->getAttributeCode() == 'country_id') {
101
+ $data['country'] = $address->getCountryModel()->getName();
102
+ $data['country_id'] = $address->getCountryId();
103
+ } else if ($attribute->getAttributeCode() == 'region') {
104
+ $data['region'] = $address->getRegion();
105
  } else {
106
+ $dataModel = Mage_Customer_Model_Attribute_Data::factory($attribute, $address);
107
+ $value = $dataModel->outputValue(Mage_Customer_Model_Attribute_Data::OUTPUT_FORMAT_ONELINE);
108
+ if ($attribute->getFrontendInput() == 'multiline') {
109
+ $values = $dataModel->outputValue(Mage_Customer_Model_Attribute_Data::OUTPUT_FORMAT_ARRAY);
110
+ // explode lines
111
+ foreach ($values as $k => $v) {
112
+ $key = sprintf('%s%d', $attribute->getAttributeCode(), $k + 1);
113
+ $data[$key] = $v;
114
+ }
115
+ }
116
+ $data[$attribute->getAttributeCode()] = $value;
117
  }
118
  }
119
 
 
120
  foreach ($data as $key => $value) {
121
+ if (empty($value)) {
122
+ continue;
123
  }
124
+ $item->addChild($key, $item->escapeXml($value));
125
  }
126
  }
127
  }
app/code/core/Mage/XmlConnect/Block/Customer/Form.php CHANGED
@@ -31,8 +31,40 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Customer_Form extends Mage_Core_Block_Abstract
35
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  /**
37
  * Render customer form xml
38
  *
@@ -196,4 +228,92 @@ class Mage_XmlConnect_Block_Customer_Form extends Mage_Core_Block_Abstract
196
  }
197
  return array();
198
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
199
  }
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Customer_Form extends Mage_Core_Block_Template
35
  {
36
+ /**
37
+ * Action type
38
+ *
39
+ * Action type false on registration page and true on account edit page
40
+ *
41
+ * @var bool
42
+ */
43
+ protected $_isEditPage = false;
44
+
45
+ /**
46
+ * Checkout page
47
+ *
48
+ * True only for checkout registration page
49
+ *
50
+ * @var bool
51
+ */
52
+ protected $_isCheckoutRegistrationPage = false;
53
+
54
+ /**
55
+ * Attributes block name
56
+ *
57
+ * @var string
58
+ */
59
+ protected $_attributesBlockName = '';
60
+
61
+ /**
62
+ * Customer form code
63
+ *
64
+ * @var string
65
+ */
66
+ protected $_customerFormCode = '';
67
+
68
  /**
69
  * Render customer form xml
70
  *
228
  }
229
  return array();
230
  }
231
+
232
+ /**
233
+ * Get action type
234
+ *
235
+ * @return boolean
236
+ */
237
+ public function getIsEditPage()
238
+ {
239
+ return $this->_isEditPage;
240
+ }
241
+
242
+ /**
243
+ * Set action type
244
+ *
245
+ * @param boolean $actionType
246
+ * @return Mage_XmlConnect_Block_Customer_Form
247
+ */
248
+ public function setIsEditPage($actionType)
249
+ {
250
+ $this->_isEditPage = $actionType;
251
+ return $this;
252
+ }
253
+
254
+ /**
255
+ * Set customer form code
256
+ *
257
+ * @param string $customerFormCode
258
+ * @return Mage_XmlConnect_Block_Customer_Form
259
+ */
260
+ public function setCustomerFormCode($customerFormCode)
261
+ {
262
+ $this->_customerFormCode = $customerFormCode;
263
+ return $this;
264
+ }
265
+
266
+ /**
267
+ * Get customer form code
268
+ *
269
+ * @return string
270
+ */
271
+ public function getCustomerFormCode()
272
+ {
273
+ return $this->_customerFormCode;
274
+ }
275
+
276
+ /**
277
+ * Set attributes block name
278
+ *
279
+ * @param string $attributesBlockName
280
+ * @return Mage_XmlConnect_Block_Customer_Form
281
+ */
282
+ public function setAttributesBlockName($attributesBlockName)
283
+ {
284
+ $this->_attributesBlockName = $attributesBlockName;
285
+ return $this;
286
+ }
287
+
288
+ /**
289
+ * Get attributes block name
290
+ *
291
+ * @return string
292
+ */
293
+ public function getAttributesBlockName()
294
+ {
295
+ return $this->_attributesBlockName;
296
+ }
297
+
298
+ /**
299
+ * Set is checkout page registration
300
+ *
301
+ * @param boolean $checkoutPageRegistration
302
+ * @return Mage_XmlConnect_Block_Customer_Form
303
+ */
304
+ public function setIsCheckoutRegistrationPage($checkoutPageRegistration)
305
+ {
306
+ $this->_isCheckoutRegistrationPage = $checkoutPageRegistration;
307
+ return $this;
308
+ }
309
+
310
+ /**
311
+ * Get is checkout page registration
312
+ *
313
+ * @return boolean
314
+ */
315
+ public function getIsCheckoutRegistrationPage()
316
+ {
317
+ return $this->_isCheckoutRegistrationPage;
318
+ }
319
  }
app/code/core/Mage/XmlConnect/Block/Customer/Order/Item/Renderer/Bundle.php CHANGED
@@ -49,7 +49,7 @@ class Mage_XmlConnect_Block_Customer_Order_Item_Renderer_Bundle extends Mage_Bun
49
  /** @var $parentItem Mage_Sales_Model_Order_Item */
50
  $parentItem = $this->getItem();
51
  $items = array_merge(array($parentItem), $parentItem->getChildrenItems());
52
- $prevOptionId = '';
53
 
54
  /** @var $weeeHelper Mage_Weee_Helper_Data */
55
  $weeeHelper = $this->helper('weee');
@@ -96,9 +96,9 @@ class Mage_XmlConnect_Block_Customer_Order_Item_Renderer_Bundle extends Mage_Bun
96
 
97
  if ($isOption) {
98
  $attributes = $this->getSelectionAttributes($item);
99
- if ($prevOptionId != $attributes['option_id']) {
100
  $objectXml->addAttribute('label', $objectXml->xmlAttribute($attributes['option_label']));
101
- $prevOptionId = $attributes['option_id'];
102
  }
103
  }
104
 
@@ -182,8 +182,9 @@ class Mage_XmlConnect_Block_Customer_Order_Item_Renderer_Bundle extends Mage_Bun
182
  {
183
  /** @var $parentItem Mage_Sales_Model_Order_Item */
184
  $parentItem = $this->getItem();
 
185
  $items = array_merge(array($parentItem), $parentItem->getChildrenItems());
186
- $prevOptionId = '';
187
 
188
  /** @var $weeeHelper Mage_Weee_Helper_Data */
189
  $weeeHelper = $this->helper('weee');
@@ -230,9 +231,9 @@ class Mage_XmlConnect_Block_Customer_Order_Item_Renderer_Bundle extends Mage_Bun
230
 
231
  if ($isOption) {
232
  $attributes = $this->getSelectionAttributes($item);
233
- if ($prevOptionId != $attributes['option_id']) {
234
  $objectXml->addAttribute('label', $objectXml->xmlAttribute($attributes['option_label']));
235
- $prevOptionId = $attributes['option_id'];
236
  }
237
  }
238
 
49
  /** @var $parentItem Mage_Sales_Model_Order_Item */
50
  $parentItem = $this->getItem();
51
  $items = array_merge(array($parentItem), $parentItem->getChildrenItems());
52
+ $_prevOptionId = '';
53
 
54
  /** @var $weeeHelper Mage_Weee_Helper_Data */
55
  $weeeHelper = $this->helper('weee');
96
 
97
  if ($isOption) {
98
  $attributes = $this->getSelectionAttributes($item);
99
+ if ($_prevOptionId != $attributes['option_id']) {
100
  $objectXml->addAttribute('label', $objectXml->xmlAttribute($attributes['option_label']));
101
+ $_prevOptionId = $attributes['option_id'];
102
  }
103
  }
104
 
182
  {
183
  /** @var $parentItem Mage_Sales_Model_Order_Item */
184
  $parentItem = $this->getItem();
185
+
186
  $items = array_merge(array($parentItem), $parentItem->getChildrenItems());
187
+ $_prevOptionId = '';
188
 
189
  /** @var $weeeHelper Mage_Weee_Helper_Data */
190
  $weeeHelper = $this->helper('weee');
231
 
232
  if ($isOption) {
233
  $attributes = $this->getSelectionAttributes($item);
234
+ if ($_prevOptionId != $attributes['option_id']) {
235
  $objectXml->addAttribute('label', $objectXml->xmlAttribute($attributes['option_label']));
236
+ $_prevOptionId = $attributes['option_id'];
237
  }
238
  }
239
 
app/code/core/Mage/XmlConnect/Block/Customer/Order/Item/Renderer/Downloadable.php CHANGED
@@ -63,6 +63,12 @@ class Mage_XmlConnect_Block_Customer_Order_Item_Renderer_Downloadable
63
 
64
  Mage::helper('xmlconnect/customer_order')->addItemOptionsToXml($this, $itemXml);
65
 
 
 
 
 
 
 
66
  $links = $this->getLinks();
67
  if ($links) {
68
  $linksXml = $itemXml->addCustomChild('links', null, array('label' => $this->getLinksTitle()));
@@ -141,6 +147,12 @@ class Mage_XmlConnect_Block_Customer_Order_Item_Renderer_Downloadable
141
 
142
  Mage::helper('xmlconnect/customer_order')->addItemOptionsToXml($this, $itemXml);
143
 
 
 
 
 
 
 
144
  $links = $this->getLinks();
145
  if ($links) {
146
  $linksXml = $itemXml->addCustomChild('links', null, array('label' => $this->getLinksTitle()));
63
 
64
  Mage::helper('xmlconnect/customer_order')->addItemOptionsToXml($this, $itemXml);
65
 
66
+ $addtInfoBlock = $this->getProductAdditionalInformationBlock();
67
+ if ($addtInfoBlock) {
68
+ // TODO: find how to set additional info block
69
+ // $addtInfoBlock->setItem($item)->toHtml();
70
+ }
71
+
72
  $links = $this->getLinks();
73
  if ($links) {
74
  $linksXml = $itemXml->addCustomChild('links', null, array('label' => $this->getLinksTitle()));
147
 
148
  Mage::helper('xmlconnect/customer_order')->addItemOptionsToXml($this, $itemXml);
149
 
150
+ $addtInfoBlock = $this->getProductAdditionalInformationBlock();
151
+ if ($addtInfoBlock) {
152
+ // TODO: find how to set additional info block
153
+ // $addtInfoBlock->setItem($item)->toHtml();
154
+ }
155
+
156
  $links = $this->getLinks();
157
  if ($links) {
158
  $linksXml = $itemXml->addCustomChild('links', null, array('label' => $this->getLinksTitle()));
app/code/core/Mage/XmlConnect/Block/Customer/Order/List.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Customer_Order_List extends Mage_Core_Block_Abstract
35
  {
36
  /**
37
  * Orders count limit
@@ -57,18 +57,18 @@ class Mage_XmlConnect_Block_Customer_Order_List extends Mage_Core_Block_Abstract
57
  $orders->load();
58
 
59
  if (sizeof($orders->getItems())) {
60
- foreach ($orders as $order) {
61
  $item = $ordersXmlObj->addChild('item');
62
- $item->addChild('entity_id', $order->getId());
63
- $item->addChild('number', $order->getRealOrderId());
64
- $item->addChild('date', $this->formatDate($order->getCreatedAtStoreDate()));
65
- if ($order->getShippingAddress()) {
66
- $item->addChild('ship_to', $ordersXmlObj->escapeXml($order->getShippingAddress()->getName()));
67
  }
68
- $item->addChild('total', $order->getOrderCurrency()->formatPrecision(
69
- $order->getGrandTotal(), 2, array(), false, false
70
  ));
71
- $item->addChild('status', $order->getStatusLabel());
72
  }
73
  }
74
  return $ordersXmlObj->asNiceXml();
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Customer_Order_List extends Mage_Core_Block_Template
35
  {
36
  /**
37
  * Orders count limit
57
  $orders->load();
58
 
59
  if (sizeof($orders->getItems())) {
60
+ foreach ($orders as $_order) {
61
  $item = $ordersXmlObj->addChild('item');
62
+ $item->addChild('entity_id', $_order->getId());
63
+ $item->addChild('number', $_order->getRealOrderId());
64
+ $item->addChild('date', $this->formatDate($_order->getCreatedAtStoreDate()));
65
+ if ($_order->getShippingAddress()) {
66
+ $item->addChild('ship_to', $ordersXmlObj->escapeXml($_order->getShippingAddress()->getName()));
67
  }
68
+ $item->addChild('total', $_order->getOrderCurrency()->formatPrecision(
69
+ $_order->getGrandTotal(), 2, array(), false, false
70
  ));
71
+ $item->addChild('status', $_order->getStatusLabel());
72
  }
73
  }
74
  return $ordersXmlObj->asNiceXml();
app/code/core/Mage/XmlConnect/Block/Customer/Storecredit.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Customer_Storecredit extends Mage_Core_Block_Abstract
35
  {
36
  /**
37
  * Render customer store credits xml
@@ -46,8 +46,10 @@ class Mage_XmlConnect_Block_Customer_Storecredit extends Mage_Core_Block_Abstrac
46
  $accountBalance = $this->getLayout()
47
  ->addBlock('enterprise_customerbalance/account_balance', 'account_balance');
48
 
 
 
49
  $xmlModel->addCustomChild('balance', null, array(
50
- 'label' => $this->__('Your current balance is:'),
51
  'value' => $accountBalance->getBalance(),
52
  'formatted_value' => Mage::helper('core')->currency($accountBalance->getBalance(), true, false)
53
  ));
@@ -57,11 +59,11 @@ class Mage_XmlConnect_Block_Customer_Storecredit extends Mage_Core_Block_Abstrac
57
 
58
  if ($accountHistory->canShow() && $accountHistory->getEvents() && count($accountHistory->getEvents())) {
59
  $balanceHistory = $xmlModel->addCustomChild('balance_history', null, array(
60
- 'label' => $this->__('Balance History'),
61
- 'action_label' => $this->__('Action'),
62
- 'balance_change_label' => $this->__('Balance Change'),
63
- 'balance_label' => $this->__('Balance'),
64
- 'date_label' => $this->__('Date')
65
  ));
66
 
67
  foreach ($accountHistory->getEvents() as $event) {
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Customer_Storecredit extends Mage_Core_Block_Template
35
  {
36
  /**
37
  * Render customer store credits xml
46
  $accountBalance = $this->getLayout()
47
  ->addBlock('enterprise_customerbalance/account_balance', 'account_balance');
48
 
49
+ $customerBalanceHelper = Mage::helper('enterprise_customerbalance');
50
+
51
  $xmlModel->addCustomChild('balance', null, array(
52
+ 'label' => $customerBalanceHelper->__('Your current balance is:'),
53
  'value' => $accountBalance->getBalance(),
54
  'formatted_value' => Mage::helper('core')->currency($accountBalance->getBalance(), true, false)
55
  ));
59
 
60
  if ($accountHistory->canShow() && $accountHistory->getEvents() && count($accountHistory->getEvents())) {
61
  $balanceHistory = $xmlModel->addCustomChild('balance_history', null, array(
62
+ 'label' => $customerBalanceHelper->__('Balance History'),
63
+ 'action_label' => $customerBalanceHelper->__('Action'),
64
+ 'balance_change_label' => $customerBalanceHelper->__('Balance Change'),
65
+ 'balance_label' => $customerBalanceHelper->__('Balance'),
66
+ 'date_label' => $customerBalanceHelper->__('Date')
67
  ));
68
 
69
  foreach ($accountHistory->getEvents() as $event) {
app/code/core/Mage/XmlConnect/Block/Home.php CHANGED
@@ -75,7 +75,6 @@ class Mage_XmlConnect_Block_Home extends Mage_XmlConnect_Block_Catalog
75
  $itemXmlObj->addChild('label', $homeXmlObj->escapeXml($item->getName()));
76
  $itemXmlObj->addChild('entity_id', $item->getId());
77
  $itemXmlObj->addChild('content_type', $item->hasChildren() ? 'categories' : 'products');
78
-
79
  $icon = Mage::helper('xmlconnect/catalog_category_image')->initialize($item, 'thumbnail')
80
  ->resize(Mage::getModel('xmlconnect/images')->getImageLimitParam('content/category'));
81
 
75
  $itemXmlObj->addChild('label', $homeXmlObj->escapeXml($item->getName()));
76
  $itemXmlObj->addChild('entity_id', $item->getId());
77
  $itemXmlObj->addChild('content_type', $item->hasChildren() ? 'categories' : 'products');
 
78
  $icon = Mage::helper('xmlconnect/catalog_category_image')->initialize($item, 'thumbnail')
79
  ->resize(Mage::getModel('xmlconnect/images')->getImageLimitParam('content/category'));
80
 
app/code/core/Mage/XmlConnect/Block/Homebanners.php CHANGED
@@ -31,14 +31,14 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Homebanners extends Mage_Core_Block_Abstract
35
  {
36
  /**
37
  * List of images separated by device those have to be shown on home banners page
38
  *
39
  * @return array
40
  */
41
- private function getBannerTypeArray()
42
  {
43
  return array(
44
  Mage_XmlConnect_Helper_Data::DEVICE_TYPE_ANDROID => array(
@@ -50,7 +50,8 @@ class Mage_XmlConnect_Block_Homebanners extends Mage_Core_Block_Abstract
50
  Mage_XmlConnect_Helper_Data::DEVICE_TYPE_IPAD => array(
51
  Mage_XmlConnect_Model_Device_Ipad::IMAGE_TYPE_LANDSCAPE_BANNER,
52
  Mage_XmlConnect_Model_Device_Ipad::IMAGE_TYPE_PORTRAIT_BANNER,
53
- ));
 
54
  }
55
 
56
  /**
@@ -68,7 +69,7 @@ class Mage_XmlConnect_Block_Homebanners extends Mage_Core_Block_Abstract
68
  /** @var $imagesModel Mage_XmlConnect_Model_Images */
69
  $imagesModel = Mage::getModel('xmlconnect/images');
70
 
71
- $bannerTypeCollection = $this->getBannerTypeArray();
72
  $deviceType = $deviceHelper->getDeviceType();
73
  foreach ($bannerTypeCollection[$deviceType] as $bannerType) {
74
 
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Homebanners extends Mage_Core_Block_Template
35
  {
36
  /**
37
  * List of images separated by device those have to be shown on home banners page
38
  *
39
  * @return array
40
  */
41
+ private function getBannerTypeCollection()
42
  {
43
  return array(
44
  Mage_XmlConnect_Helper_Data::DEVICE_TYPE_ANDROID => array(
50
  Mage_XmlConnect_Helper_Data::DEVICE_TYPE_IPAD => array(
51
  Mage_XmlConnect_Model_Device_Ipad::IMAGE_TYPE_LANDSCAPE_BANNER,
52
  Mage_XmlConnect_Model_Device_Ipad::IMAGE_TYPE_PORTRAIT_BANNER,
53
+ )
54
+ );
55
  }
56
 
57
  /**
69
  /** @var $imagesModel Mage_XmlConnect_Model_Images */
70
  $imagesModel = Mage::getModel('xmlconnect/images');
71
 
72
+ $bannerTypeCollection = $this->getBannerTypeCollection();
73
  $deviceType = $deviceHelper->getDeviceType();
74
  foreach ($bannerTypeCollection[$deviceType] as $bannerType) {
75
 
app/code/core/Mage/XmlConnect/Block/Localization.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Localization extends Mage_Core_Block_Abstract
35
  {
36
  /**
37
  * Render home category list xml
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Localization extends Mage_Core_Block_Template
35
  {
36
  /**
37
  * Render home category list xml
app/code/core/Mage/XmlConnect/Block/Review/Form.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Block_Review_Form extends Mage_Core_Block_Abstract
35
  {
36
  /**
37
  * Collection of ratings
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Block_Review_Form extends Mage_Core_Block_Template
35
  {
36
  /**
37
  * Collection of ratings
app/code/core/Mage/XmlConnect/Block/Wishlist.php CHANGED
@@ -69,7 +69,6 @@ class Mage_XmlConnect_Block_Wishlist extends Mage_Wishlist_Block_Customer_Wishli
69
  foreach ($this->getWishlistItems() as $item) {
70
  /** @var $item Mage_Wishlist_Model_Item */
71
  $itemXmlObj = $wishlistXmlObj->addChild('item');
72
-
73
  $itemXmlObj->addChild('item_id', $item->getWishlistItemId());
74
  $itemXmlObj->addChild('entity_id', $item->getProductId());
75
  $itemXmlObj->addChild('entity_type_id', $item->getTypeId());
@@ -103,7 +102,8 @@ class Mage_XmlConnect_Block_Wishlist extends Mage_Wishlist_Block_Customer_Wishli
103
  }
104
 
105
  if (!$item->getRatingSummary()) {
106
- Mage::getModel('review/review')->getEntitySummary($item, Mage::app()->getStore()->getId());
 
107
  }
108
  $ratingSummary = (int)$item->getRatingSummary()->getRatingSummary();
109
  $itemXmlObj->addChild('rating_summary', round($ratingSummary / 10));
69
  foreach ($this->getWishlistItems() as $item) {
70
  /** @var $item Mage_Wishlist_Model_Item */
71
  $itemXmlObj = $wishlistXmlObj->addChild('item');
 
72
  $itemXmlObj->addChild('item_id', $item->getWishlistItemId());
73
  $itemXmlObj->addChild('entity_id', $item->getProductId());
74
  $itemXmlObj->addChild('entity_type_id', $item->getTypeId());
102
  }
103
 
104
  if (!$item->getRatingSummary()) {
105
+ Mage::getModel('review/review')
106
+ ->getEntitySummary($item, Mage::app()->getStore()->getId());
107
  }
108
  $ratingSummary = (int)$item->getRatingSummary()->getRatingSummary();
109
  $itemXmlObj->addChild('rating_summary', round($ratingSummary / 10));
app/code/core/Mage/XmlConnect/Controller/AdminAction.php CHANGED
@@ -33,11 +33,6 @@
33
  */
34
  abstract class Mage_XmlConnect_Controller_AdminAction extends Mage_Adminhtml_Controller_Action
35
  {
36
- /**
37
- * Admin application device type cookie
38
- */
39
- const DEVICE_TYPE_COOKIE_NAME = 'device_type';
40
-
41
  /**
42
  * Controller pre-dispatch method
43
  *
@@ -51,8 +46,7 @@ abstract class Mage_XmlConnect_Controller_AdminAction extends Mage_Adminhtml_Con
51
  ->setPackageName((string)Mage::getConfig()->getNode('stores/admin/design/package/name'))
52
  ->setTheme((string)Mage::getConfig()->getNode('stores/admin/design/theme/default'));
53
  foreach (array('layout', 'template', 'skin', 'locale') as $type) {
54
- $value = (string)Mage::getConfig()->getNode("stores/admin/design/theme/{$type}");
55
- if ($value) {
56
  Mage::getDesign()->setTheme($type, $value);
57
  }
58
  }
@@ -63,8 +57,7 @@ abstract class Mage_XmlConnect_Controller_AdminAction extends Mage_Adminhtml_Con
63
  Mage_Core_Controller_Varien_Action::preDispatch();
64
 
65
  if ($this->getRequest()->isDispatched() && $this->getRequest()->getActionName() !== 'denied'
66
- && !$this->_isAllowed()
67
- ) {
68
  $this->_forward('denied');
69
  $this->setFlag('', self::FLAG_NO_DISPATCH, true);
70
  return $this;
@@ -89,7 +82,7 @@ abstract class Mage_XmlConnect_Controller_AdminAction extends Mage_Adminhtml_Con
89
  */
90
  public function _checkCookie()
91
  {
92
- $AdminDeviceCookie = self::DEVICE_TYPE_COOKIE_NAME;
93
  $currentDevice = isset($_COOKIE[$AdminDeviceCookie]) ? (string) $_COOKIE[$AdminDeviceCookie] : '';
94
  if (!array_key_exists($currentDevice, Mage_XmlConnect_Helper_Data::getSupportedDevices())) {
95
  $this->_message(
33
  */
34
  abstract class Mage_XmlConnect_Controller_AdminAction extends Mage_Adminhtml_Controller_Action
35
  {
 
 
 
 
 
36
  /**
37
  * Controller pre-dispatch method
38
  *
46
  ->setPackageName((string)Mage::getConfig()->getNode('stores/admin/design/package/name'))
47
  ->setTheme((string)Mage::getConfig()->getNode('stores/admin/design/theme/default'));
48
  foreach (array('layout', 'template', 'skin', 'locale') as $type) {
49
+ if ($value = (string)Mage::getConfig()->getNode("stores/admin/design/theme/{$type}")) {
 
50
  Mage::getDesign()->setTheme($type, $value);
51
  }
52
  }
57
  Mage_Core_Controller_Varien_Action::preDispatch();
58
 
59
  if ($this->getRequest()->isDispatched() && $this->getRequest()->getActionName() !== 'denied'
60
+ && !$this->_isAllowed()) {
 
61
  $this->_forward('denied');
62
  $this->setFlag('', self::FLAG_NO_DISPATCH, true);
63
  return $this;
82
  */
83
  public function _checkCookie()
84
  {
85
+ $AdminDeviceCookie = Mage_XmlConnect_Model_AdminApplication::DEVICE_TYPE_COOKIE_NAME;
86
  $currentDevice = isset($_COOKIE[$AdminDeviceCookie]) ? (string) $_COOKIE[$AdminDeviceCookie] : '';
87
  if (!array_key_exists($currentDevice, Mage_XmlConnect_Helper_Data::getSupportedDevices())) {
88
  $this->_message(
app/code/core/Mage/XmlConnect/Helper/AdminApplication.php CHANGED
@@ -95,7 +95,7 @@ class Mage_XmlConnect_Helper_AdminApplication extends Mage_Core_Helper_Abstract
95
  }
96
  $storeIds = array_keys($params['store_list']);
97
  foreach ($storeIds as $storeId) {
98
- $this->_storeIdList[] = $storeId;
99
  }
100
  }
101
  sort($this->_storeIdList);
@@ -123,7 +123,7 @@ class Mage_XmlConnect_Helper_AdminApplication extends Mage_Core_Helper_Abstract
123
  }
124
  $viewIds = array_keys($storeData['view_list']);
125
  foreach ($viewIds as $viewId) {
126
- $this->_viewIdList[] = $viewId;
127
  }
128
  }
129
  }
95
  }
96
  $storeIds = array_keys($params['store_list']);
97
  foreach ($storeIds as $storeId) {
98
+ $this->_storeIdList[] = $storeId;
99
  }
100
  }
101
  sort($this->_storeIdList);
123
  }
124
  $viewIds = array_keys($storeData['view_list']);
125
  foreach ($viewIds as $viewId) {
126
+ $this->_viewIdList[] = $viewId;
127
  }
128
  }
129
  }
app/code/core/Mage/XmlConnect/Helper/Android.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Helper_Android extends Mage_XmlConnect_Helper_Device_Abstract
35
  {
36
  /**
37
  * Submission title length
@@ -43,18 +43,6 @@ class Mage_XmlConnect_Helper_Android extends Mage_XmlConnect_Helper_Device_Abstr
43
  */
44
  const SUBMISSION_DESCRIPTION_LENGTH = 4000;
45
 
46
- /**
47
- * Android preview banner width
48
- * @deprecated
49
- */
50
- const PREVIEW_BANNER_WIDTH = 320;
51
-
52
- /**
53
- * Android preview banner image height
54
- * @deprecated
55
- */
56
- const PREVIEW_BANNER_HEIGHT = 258;
57
-
58
  /**
59
  * Tags identifier for title bar
60
  */
@@ -67,26 +55,14 @@ class Mage_XmlConnect_Helper_Android extends Mage_XmlConnect_Helper_Device_Abstr
67
 
68
  /**
69
  * Country renderer for submission
70
- *
71
- * @deprecated
72
  */
73
  const SUBMISSION_COUNTRY_RENDERER = 'androidmarket';
74
 
75
  /**
76
  * Country columns for submission
77
- *
78
- * @deprecated
79
  */
80
  const SUBMISSION_COUNTRY_COLUMNS = 2;
81
 
82
- /**
83
- * Submission columns count
84
- *
85
- * @var int
86
- */
87
- protected $_countryColumnsCount = 2;
88
-
89
-
90
  /**
91
  * Submit images that are stored in "params" field of history table
92
  *
@@ -95,14 +71,14 @@ class Mage_XmlConnect_Helper_Android extends Mage_XmlConnect_Helper_Device_Abstr
95
  protected $_imageIds = array('icon', 'android_loader_image', 'android_logo', 'big_logo');
96
 
97
  /**
98
- * Country renderer block
99
  *
100
- * @var string
101
  */
102
- protected $_countryRendererBlock = 'xmlconnect/adminhtml_mobile_submission_renderer_country_androidmarket';
103
 
104
  /**
105
- * List of countries that allowed in Androidmarket by Google
106
  *
107
  * array(
108
  * 'country name' => 'country id at directory model'
@@ -142,6 +118,16 @@ class Mage_XmlConnect_Helper_Android extends Mage_XmlConnect_Helper_Device_Abstr
142
  'United States' => 'US',
143
  );
144
 
 
 
 
 
 
 
 
 
 
 
145
  /**
146
  * Default images list
147
  *
@@ -154,13 +140,13 @@ class Mage_XmlConnect_Helper_Android extends Mage_XmlConnect_Helper_Device_Abstr
154
  'count' => Mage_XmlConnect_Model_Device_Android::IMAGE_TYPE_ICON_COUNT,
155
  'label' => $this->__('Logo in Header'),
156
  'sortable' => false,
157
- 'sizeTip' => $this->__('Recommended size %spx x %spx.', 35, 35)
158
  ),
159
  Mage_XmlConnect_Model_Device_Android::IMAGE_TYPE_PORTRAIT_BANNER => array(
160
  'count' => Mage_XmlConnect_Model_Device_Android::IMAGE_TYPE_BANNER_COUNT,
161
  'label' => $this->__('Banners on Home Screen'),
162
  'sortable' => true,
163
- 'sizeTip' => $this->__('Recommended size %spx x %spx.', 320, 258) . $this->__('Note: Image size affects the performance of your app.') . $this->__('Keep your image size below %s KB for optimal performance.', 50)
164
  ));
165
  }
166
 
@@ -506,7 +492,22 @@ class Mage_XmlConnect_Helper_Android extends Mage_XmlConnect_Helper_Device_Abstr
506
  array(
507
  'value' => 'STHeitiK-Light',
508
  'label' => 'STHeitiK-Light',
509
- ));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
510
  }
511
 
512
  /**
@@ -604,6 +605,21 @@ class Mage_XmlConnect_Helper_Android extends Mage_XmlConnect_Helper_Device_Abstr
604
  return $errors;
605
  }
606
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
607
  /**
608
  * Get label for submission country
609
  *
@@ -614,6 +630,16 @@ class Mage_XmlConnect_Helper_Android extends Mage_XmlConnect_Helper_Device_Abstr
614
  return Mage::helper('xmlconnect')->__('Locations');
615
  }
616
 
 
 
 
 
 
 
 
 
 
 
617
  /**
618
  * Get placement of Country Names for submission country
619
  *
@@ -631,14 +657,12 @@ class Mage_XmlConnect_Helper_Android extends Mage_XmlConnect_Helper_Device_Abstr
631
  */
632
  public function getCountryClass()
633
  {
634
- return 'androidmarket';
635
  }
636
 
637
  /**
638
  * Get list of countries that allowed by Magento Inc. for Android
639
  *
640
- * @deprecated
641
- * @see $this->getAllowedCountriesArray()
642
  * @return array
643
  */
644
  public function getAndroidMarketCountriesArray()
@@ -695,4 +719,31 @@ class Mage_XmlConnect_Helper_Android extends Mage_XmlConnect_Helper_Device_Abstr
695
  Mage::throwException(Mage::helper('xmlconnect')->__('Banner on Home Screen image missing.'));
696
  }
697
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
698
  }
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Helper_Android extends Mage_Core_Helper_Abstract
35
  {
36
  /**
37
  * Submission title length
43
  */
44
  const SUBMISSION_DESCRIPTION_LENGTH = 4000;
45
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  /**
47
  * Tags identifier for title bar
48
  */
55
 
56
  /**
57
  * Country renderer for submission
 
 
58
  */
59
  const SUBMISSION_COUNTRY_RENDERER = 'androidmarket';
60
 
61
  /**
62
  * Country columns for submission
 
 
63
  */
64
  const SUBMISSION_COUNTRY_COLUMNS = 2;
65
 
 
 
 
 
 
 
 
 
66
  /**
67
  * Submit images that are stored in "params" field of history table
68
  *
71
  protected $_imageIds = array('icon', 'android_loader_image', 'android_logo', 'big_logo');
72
 
73
  /**
74
+ * Country field renderer
75
  *
76
+ * @var Mage_XmlConnect_Block_Adminhtml_Mobile_Submission_Renderer_Country_Androidmarket
77
  */
78
+ protected $_countryRenderer = null;
79
 
80
  /**
81
+ * List of coutries that allowed in Ituens by Apple Store
82
  *
83
  * array(
84
  * 'country name' => 'country id at directory model'
118
  'United States' => 'US',
119
  );
120
 
121
+ /**
122
+ * Get submit images that are required for application submit
123
+ *
124
+ * @return array
125
+ */
126
+ public function getSubmitImages()
127
+ {
128
+ return $this->_imageIds;
129
+ }
130
+
131
  /**
132
  * Default images list
133
  *
140
  'count' => Mage_XmlConnect_Model_Device_Android::IMAGE_TYPE_ICON_COUNT,
141
  'label' => $this->__('Logo in Header'),
142
  'sortable' => false,
143
+ 'sizeTip' => $this->__('Recommended size 35px x 35px.')
144
  ),
145
  Mage_XmlConnect_Model_Device_Android::IMAGE_TYPE_PORTRAIT_BANNER => array(
146
  'count' => Mage_XmlConnect_Model_Device_Android::IMAGE_TYPE_BANNER_COUNT,
147
  'label' => $this->__('Banners on Home Screen'),
148
  'sortable' => true,
149
+ 'sizeTip' => $this->__('Recommended size 320px x 258px. Note: Image size affects the performance of your app. Keep your image size below 50 KB for optimal performance.')
150
  ));
151
  }
152
 
492
  array(
493
  'value' => 'STHeitiK-Light',
494
  'label' => 'STHeitiK-Light',
495
+ ),
496
+ );
497
+ }
498
+
499
+ /**
500
+ * List of allowed font sizes for Android application
501
+ *
502
+ * @return array
503
+ */
504
+ public function getFontSizes()
505
+ {
506
+ $result = array();
507
+ for ($i = 6; $i < 32; $i++) {
508
+ $result[] = array('value' => $i, 'label' => $i . ' pt');
509
+ }
510
+ return $result;
511
  }
512
 
513
  /**
605
  return $errors;
606
  }
607
 
608
+ /**
609
+ * Get renderer for submission country
610
+ *
611
+ * @return Mage_XmlConnect_Block_Adminhtml_Mobile_Submission_Renderer_Country_Androidmarket
612
+ */
613
+ public function getCountryRenderer()
614
+ {
615
+ if (empty($this->_countryRenderer)) {
616
+ $renderer = 'xmlconnect/adminhtml_mobile_submission_renderer_country_'
617
+ . self::SUBMISSION_COUNTRY_RENDERER;
618
+ $this->_countryRenderer = Mage::app()->getLayout()->createBlock($renderer);
619
+ }
620
+ return $this->_countryRenderer;
621
+ }
622
+
623
  /**
624
  * Get label for submission country
625
  *
630
  return Mage::helper('xmlconnect')->__('Locations');
631
  }
632
 
633
+ /**
634
+ * Get columns for submission country
635
+ *
636
+ * @return int
637
+ */
638
+ public function getCountryColumns()
639
+ {
640
+ return self::SUBMISSION_COUNTRY_COLUMNS;
641
+ }
642
+
643
  /**
644
  * Get placement of Country Names for submission country
645
  *
657
  */
658
  public function getCountryClass()
659
  {
660
+ return self::SUBMISSION_COUNTRY_RENDERER;
661
  }
662
 
663
  /**
664
  * Get list of countries that allowed by Magento Inc. for Android
665
  *
 
 
666
  * @return array
667
  */
668
  public function getAndroidMarketCountriesArray()
719
  Mage::throwException(Mage::helper('xmlconnect')->__('Banner on Home Screen image missing.'));
720
  }
721
  }
722
+
723
+ /**
724
+ * Check the notifications are allowed for current type of application
725
+ *
726
+ * @return bool
727
+ */
728
+ public function isNotificationsAllowed()
729
+ {
730
+ return true;
731
+ }
732
+
733
+ /**
734
+ * Get image count for image type
735
+ *
736
+ * @param string $imageType
737
+ * @return int
738
+ */
739
+ public function getImageCount($imageType)
740
+ {
741
+ $imagesTypesList = $this->getImagesTypesList();
742
+ if (array_key_exists($imageType, $imagesTypesList)) {
743
+ $count = !empty($imagesTypesList[$imageType]['count']) ? $imagesTypesList[$imageType]['count'] : 0;
744
+ } else {
745
+ Mage::throwException(Mage::helper('xmlconnect')->__('Image type doesn\'t recognized: "%s".', $imageType));
746
+ }
747
+ return $count;
748
+ }
749
  }
app/code/core/Mage/XmlConnect/Helper/Customer/Form/Renderer.php CHANGED
@@ -95,11 +95,11 @@ class Mage_XmlConnect_Helper_Customer_Form_Renderer extends Mage_Core_Helper_Abs
95
  *
96
  * @param Mage_XmlConnect_Model_Simplexml_Form_Abstract $fieldset
97
  * @param Mage_Core_Model_Layout $layout
98
- * @return Mage_XmlConnect_Helper_Customer_Form_Renderer
99
  */
100
- public function addCustomAttributes(Mage_XmlConnect_Model_Simplexml_Form_Abstract $fieldset, $layout)
101
- {
102
  if (is_object(Mage::getConfig()->getNode('modules/Enterprise_Customer'))) {
 
103
  $attrBlock = $layout->addBlock('enterprise_customer/form', $this->getAttributesBlockName());
104
  $attrBlock->setFormCode($this->getFormCode());
105
  $attrBlock->setEntity($this->getBlockEntity());
95
  *
96
  * @param Mage_XmlConnect_Model_Simplexml_Form_Abstract $fieldset
97
  * @param Mage_Core_Model_Layout $layout
98
+ * @return Mage_XmlConnect_Block_Customer_Form
99
  */
100
+ public function addCustomAttributes(Mage_XmlConnect_Model_Simplexml_Form_Abstract $fieldset, $layout) {
 
101
  if (is_object(Mage::getConfig()->getNode('modules/Enterprise_Customer'))) {
102
+
103
  $attrBlock = $layout->addBlock('enterprise_customer/form', $this->getAttributesBlockName());
104
  $attrBlock->setFormCode($this->getFormCode());
105
  $attrBlock->setEntity($this->getBlockEntity());
app/code/core/Mage/XmlConnect/Helper/Customer/Order.php CHANGED
@@ -66,14 +66,14 @@ class Mage_XmlConnect_Helper_Customer_Order extends Mage_Core_Helper_Abstract
66
  */
67
  public function addPriceAndSubtotalToXml(Mage_Core_Block_Template $renderer, Mage_Sales_Model_Order_Item $item,
68
  Mage_XmlConnect_Model_Simplexml_Element $priceXml, Mage_XmlConnect_Model_Simplexml_Element $subtotalXml,
69
- $isIncludeTax = false)
70
- {
71
  $weeeParams = array();
72
 
73
  $typesOfDisplay = $renderer->getTypesOfDisplay();
74
  if ($isIncludeTax) {
75
  $nodeName = self::INCLUDING_TAX_ID;
76
- $nodeLabel = $this->__('Incl. Tax');
77
 
78
  $inclPrice = $renderer->helper('checkout')->getPriceInclTax($item);
79
  $inclSubtotal = $renderer->helper('checkout')->getSubtotalInclTax($item);
@@ -88,7 +88,7 @@ class Mage_XmlConnect_Helper_Customer_Order extends Mage_Core_Helper_Abstract
88
  $weeeParams['include'] = $inclPrice;
89
  } else {
90
  $nodeName = self::EXCLUDING_TAX_ID;
91
- $nodeLabel = $this->__('Excl. Tax');
92
 
93
  if ($typesOfDisplay[self::PRICE_DISPLAY_TYPE_14]) {
94
  $price = $item->getPrice() + $renderer->getWeeeTaxAppliedAmount()
@@ -140,7 +140,7 @@ class Mage_XmlConnect_Helper_Customer_Order extends Mage_Core_Helper_Abstract
140
  $typesOfDisplay = $renderer->getTypesOfDisplay();
141
  if ($isIncludeTax) {
142
  $nodeId = self::INCLUDING_TAX_ID;
143
- $nodeLabel = $this->__('Incl. Tax');
144
 
145
  $inclPrice = $renderer->helper('checkout')->getPriceInclTax($item);
146
  $inclSubtotal = $renderer->helper('checkout')->getSubtotalInclTax($item);
@@ -155,7 +155,7 @@ class Mage_XmlConnect_Helper_Customer_Order extends Mage_Core_Helper_Abstract
155
  $weeeParams['include'] = $inclPrice;
156
  } else {
157
  $nodeId = self::EXCLUDING_TAX_ID;
158
- $nodeLabel = $this->__('Excl. Tax');
159
 
160
  if ($typesOfDisplay[self::PRICE_DISPLAY_TYPE_14]) {
161
  $price = $item->getPrice() + $renderer->getWeeeTaxAppliedAmount()
@@ -383,19 +383,19 @@ class Mage_XmlConnect_Helper_Customer_Order extends Mage_Core_Helper_Abstract
383
  ) {
384
  $qty = 1 * $item->getQtyOrdered();
385
  if ($qty > 0) {
386
- $quantityXml->addCustomChild('value', $qty, array('label' => $this->__('Ordered')));
387
  }
388
  $qty = 1 * $item->getQtyShipped();
389
  if ($qty > 0) {
390
- $quantityXml->addCustomChild('value', $qty, array('label' => $this->__('Shipped')));
391
  }
392
  $qty = 1 * $item->getQtyCanceled();
393
  if ($qty > 0) {
394
- $quantityXml->addCustomChild('value', $qty, array('label' => $this->__('Canceled')));
395
  }
396
  $qty = 1 * $item->getQtyRefunded();
397
  if ($qty > 0) {
398
- $quantityXml->addCustomChild('value', $qty, array('label' => $this->__('Refunded')));
399
  }
400
  }
401
 
66
  */
67
  public function addPriceAndSubtotalToXml(Mage_Core_Block_Template $renderer, Mage_Sales_Model_Order_Item $item,
68
  Mage_XmlConnect_Model_Simplexml_Element $priceXml, Mage_XmlConnect_Model_Simplexml_Element $subtotalXml,
69
+ $isIncludeTax = false
70
+ ) {
71
  $weeeParams = array();
72
 
73
  $typesOfDisplay = $renderer->getTypesOfDisplay();
74
  if ($isIncludeTax) {
75
  $nodeName = self::INCLUDING_TAX_ID;
76
+ $nodeLabel = $renderer->__('Incl. Tax');
77
 
78
  $inclPrice = $renderer->helper('checkout')->getPriceInclTax($item);
79
  $inclSubtotal = $renderer->helper('checkout')->getSubtotalInclTax($item);
88
  $weeeParams['include'] = $inclPrice;
89
  } else {
90
  $nodeName = self::EXCLUDING_TAX_ID;
91
+ $nodeLabel = $renderer->__('Excl. Tax');
92
 
93
  if ($typesOfDisplay[self::PRICE_DISPLAY_TYPE_14]) {
94
  $price = $item->getPrice() + $renderer->getWeeeTaxAppliedAmount()
140
  $typesOfDisplay = $renderer->getTypesOfDisplay();
141
  if ($isIncludeTax) {
142
  $nodeId = self::INCLUDING_TAX_ID;
143
+ $nodeLabel = $renderer->__('Incl. Tax');
144
 
145
  $inclPrice = $renderer->helper('checkout')->getPriceInclTax($item);
146
  $inclSubtotal = $renderer->helper('checkout')->getSubtotalInclTax($item);
155
  $weeeParams['include'] = $inclPrice;
156
  } else {
157
  $nodeId = self::EXCLUDING_TAX_ID;
158
+ $nodeLabel = $renderer->__('Excl. Tax');
159
 
160
  if ($typesOfDisplay[self::PRICE_DISPLAY_TYPE_14]) {
161
  $price = $item->getPrice() + $renderer->getWeeeTaxAppliedAmount()
383
  ) {
384
  $qty = 1 * $item->getQtyOrdered();
385
  if ($qty > 0) {
386
+ $quantityXml->addCustomChild('value', $qty, array('label' => $renderer->__('Ordered')));
387
  }
388
  $qty = 1 * $item->getQtyShipped();
389
  if ($qty > 0) {
390
+ $quantityXml->addCustomChild('value', $qty, array('label' => $renderer->__('Shipped')));
391
  }
392
  $qty = 1 * $item->getQtyCanceled();
393
  if ($qty > 0) {
394
+ $quantityXml->addCustomChild('value', $qty, array('label' => $renderer->__('Canceled')));
395
  }
396
  $qty = 1 * $item->getQtyRefunded();
397
  if ($qty > 0) {
398
+ $quantityXml->addCustomChild('value', $qty, array('label' => $renderer->__('Refunded')));
399
  }
400
  }
401
 
app/code/core/Mage/XmlConnect/Helper/Data.php CHANGED
@@ -273,14 +273,15 @@ class Mage_XmlConnect_Helper_Data extends Mage_Core_Helper_Abstract
273
  {
274
  Varien_Profiler::start('TEST: ' . __METHOD__);
275
  $deviceType = $this->getDeviceType();
276
- $deviceCountries = $this->getDeviceHelper()->getAllowedCountriesArray();
277
  switch ($deviceType) {
278
  case self::DEVICE_TYPE_IPHONE:
279
  case self::DEVICE_TYPE_IPAD:
280
  $cacheKey = 'XMLCONNECT_COUNTRY_ITUNES_SELECT_STORE_' . Mage::app()->getStore()->getCode();
 
281
  break;
282
  case self::DEVICE_TYPE_ANDROID:
283
  $cacheKey = 'XMLCONNECT_COUNTRY_ANDROID_SELECT_STORE_' . Mage::app()->getStore()->getCode();
 
284
  break;
285
  default:
286
  Mage::throwException(
273
  {
274
  Varien_Profiler::start('TEST: ' . __METHOD__);
275
  $deviceType = $this->getDeviceType();
 
276
  switch ($deviceType) {
277
  case self::DEVICE_TYPE_IPHONE:
278
  case self::DEVICE_TYPE_IPAD:
279
  $cacheKey = 'XMLCONNECT_COUNTRY_ITUNES_SELECT_STORE_' . Mage::app()->getStore()->getCode();
280
+ $deviceCountries = $this->getDeviceHelper()->getItunesCountriesArray();
281
  break;
282
  case self::DEVICE_TYPE_ANDROID:
283
  $cacheKey = 'XMLCONNECT_COUNTRY_ANDROID_SELECT_STORE_' . Mage::app()->getStore()->getCode();
284
+ $deviceCountries = $this->getDeviceHelper()->getAndroidMarketCountriesArray();
285
  break;
286
  default:
287
  Mage::throwException(
app/code/core/Mage/XmlConnect/Helper/Image.php CHANGED
@@ -35,15 +35,13 @@ class Mage_XmlConnect_Helper_Image extends Mage_Core_Helper_Abstract
35
  {
36
  /**
37
  * Xml connect glue
38
- *
39
- * @deprecated will delete in the next version
40
  */
41
  const XMLCONNECT_GLUE = Mage_XmlConnect_Model_ImageLimits::SCREEN_SIZE_UPDATE_TYPE_GLUE;
42
 
43
  /**
44
  * Image limits for content
45
  *
46
- * @deprecated will delete in the next version
47
  * @var array|null
48
  */
49
  protected $_content = null;
35
  {
36
  /**
37
  * Xml connect glue
38
+ * @deprecated
 
39
  */
40
  const XMLCONNECT_GLUE = Mage_XmlConnect_Model_ImageLimits::SCREEN_SIZE_UPDATE_TYPE_GLUE;
41
 
42
  /**
43
  * Image limits for content
44
  *
 
45
  * @var array|null
46
  */
47
  protected $_content = null;
app/code/core/Mage/XmlConnect/Helper/Iphone.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Helper_Iphone extends Mage_XmlConnect_Helper_Device_Abstract
35
  {
36
  /**
37
  * Submission title length
@@ -45,14 +45,11 @@ class Mage_XmlConnect_Helper_Iphone extends Mage_XmlConnect_Helper_Device_Abstra
45
 
46
  /**
47
  * Country renderer for submission page
48
- *
49
- * @deprecated
50
  */
51
  const SUBMISSION_COUNTRY_RENDERER = 'istore';
52
 
53
  /**
54
  * Country columns for submission page
55
- * @deprecated
56
  */
57
  const SUBMISSION_COUNTRY_COLUMNS = 4;
58
 
@@ -65,6 +62,125 @@ class Mage_XmlConnect_Helper_Iphone extends Mage_XmlConnect_Helper_Device_Abstra
65
  'icon', 'loader_image', 'loader_image_i4', 'logo', 'logo_i4', 'big_logo', 'big_logo_i4'
66
  );
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  /**
69
  * Get default application tabs
70
  *
@@ -126,19 +242,19 @@ class Mage_XmlConnect_Helper_Iphone extends Mage_XmlConnect_Helper_Device_Abstra
126
  'count' => Mage_XmlConnect_Model_Device_Iphone::IMAGE_TYPE_ICON_COUNT,
127
  'label' => $this->__('Logo in Header'),
128
  'sortable' => false,
129
- 'sizeTip' => $this->__('Recommended size %spx x %spx.', 35, 35)
130
  ),
131
  Mage_XmlConnect_Model_Device_Iphone::IMAGE_TYPE_PORTRAIT_BACKGROUND => array(
132
  'count' => Mage_XmlConnect_Model_Device_Iphone::IMAGE_TYPE_BACKGROUND_COUNT,
133
  'label' => $this->__('App Background'),
134
  'sortable' => false,
135
- 'sizeTip' => $this->__('Recommended size %spx x %spx.', 320, 367) . $this->__('Note: Image size affects the performance of your app.') . $this->__('Keep your image size below %s KB for optimal performance.', 75)
136
  ),
137
  Mage_XmlConnect_Model_Device_Iphone::IMAGE_TYPE_PORTRAIT_BANNER => array(
138
  'count' => Mage_XmlConnect_Model_Device_Iphone::IMAGE_TYPE_BANNER_COUNT,
139
  'label' => $this->__('Banners on Home Screen'),
140
  'sortable' => true,
141
- 'sizeTip' => $this->__('Recommended size %spx x %spx.', 320, 230) . $this->__('Note: Image size affects the performance of your app.') . $this->__('Keep your image size below %s KB for optimal performance.', 50)
142
  ));
143
  }
144
 
@@ -434,15 +550,30 @@ class Mage_XmlConnect_Helper_Iphone extends Mage_XmlConnect_Helper_Device_Abstra
434
  array(
435
  'value' => 'STHeitiK-Light',
436
  'label' => 'STHeitiK-Light',
437
- ));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
438
  }
439
 
440
  /**
441
  * Get list of countries that allowed in Itunes by Apple Store for Iphone
442
- * (we get info from Iphone helper)
443
  *
444
- * @deprecated
445
- * @see $this->getAllowedCountriesArray()
446
  * @return array
447
  */
448
  public function getItunesCountriesArray()
@@ -550,6 +681,61 @@ class Mage_XmlConnect_Helper_Iphone extends Mage_XmlConnect_Helper_Device_Abstra
550
  return $errors;
551
  }
552
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
553
  /**
554
  * Check image fields
555
  *
@@ -609,4 +795,33 @@ class Mage_XmlConnect_Helper_Iphone extends Mage_XmlConnect_Helper_Device_Abstra
609
  Mage::throwException(Mage::helper('xmlconnect')->__('App Background image missing.'));
610
  }
611
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
612
  }
31
  * @package Mage_XmlConnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Helper_Iphone extends Mage_Core_Helper_Abstract
35
  {
36
  /**
37
  * Submission title length
45
 
46
  /**
47
  * Country renderer for submission page
 
 
48
  */
49
  const SUBMISSION_COUNTRY_RENDERER = 'istore';
50
 
51
  /**
52
  * Country columns for submission page
 
53
  */
54
  const SUBMISSION_COUNTRY_COLUMNS = 4;
55
 
62
  'icon', 'loader_image', 'loader_image_i4', 'logo', 'logo_i4', 'big_logo', 'big_logo_i4'
63
  );
64
 
65
+ /**
66
+ * List of coutries that allowed in Ituens by Apple Store
67
+ *
68
+ * array(
69
+ * 'country name' => 'country id at directory model'
70
+ * )
71
+ *
72
+ * @var array
73
+ */
74
+ protected $_allowedCountries = array(
75
+ 'Argentina' => 'AR',
76
+ 'Armenia' => 'AM',
77
+ 'Australia' => 'AU',
78
+ 'Austria' => 'AT',
79
+ 'Belgium' => 'BE',
80
+ 'Botswana' => 'BW',
81
+ 'Brazil' => 'BR',
82
+ 'Bulgaria' => 'BG',
83
+ 'Canada' => 'CA',
84
+ 'Chile' => 'CL',
85
+ 'China' => 'CN',
86
+ 'Colombia' => 'CO',
87
+ 'Costa Rica' => 'CR',
88
+ 'Croatia' => 'HR',
89
+ 'Czech Republic' => 'CZ',
90
+ 'Denmark' => 'DK',
91
+ 'Dominican Republic' => 'DO',
92
+ 'Ecuador' => 'EC',
93
+ 'Egypt' => 'EG',
94
+ 'El Salvador' => 'SV',
95
+ 'Estonia' => 'EE',
96
+ 'Finland' => 'FI',
97
+ 'France' => 'FR',
98
+ 'Germany' => 'DE',
99
+ 'Greece' => 'GR',
100
+ 'Guatemala' => 'GT',
101
+ 'Honduras' => 'HN',
102
+ 'Hong Kong SAR China' => 'HK',
103
+ 'Hungary' => 'HU',
104
+ 'India' => 'IN',
105
+ 'Indonesia' => 'ID',
106
+ 'Ireland' => 'IE',
107
+ 'Israel' => 'IL',
108
+ 'Italy' => 'IT',
109
+ 'Jamaica' => 'JM',
110
+ 'Japan' => 'JP',
111
+ 'Jordan' => 'JO',
112
+ 'Kazakstan' => 'KZ',
113
+ 'Kenya' => 'KE',
114
+ 'South Korea' => 'KR',
115
+ 'Kuwait' => 'KW',
116
+ 'Latvia' => 'LV',
117
+ 'Lebanon' => 'LB',
118
+ 'Lithuania' => 'LT',
119
+ 'Luxembourg' => 'LU',
120
+ 'Macau SAR China' => 'MO',
121
+ 'Macedonia' => 'MK',
122
+ 'Madagascar' => 'MG',
123
+ 'Malaysia' => 'MY',
124
+ 'Mali' => 'ML',
125
+ 'Malta' => 'MT',
126
+ 'Mauritius' => 'MU',
127
+ 'Mexico' => 'MX',
128
+ 'Moldova' => 'MD',
129
+ 'Netherlands' => 'NL',
130
+ 'New Zealand' => 'NZ',
131
+ 'Nicaragua' => 'NI',
132
+ 'Niger' => 'NE',
133
+ 'Norway' => 'NO',
134
+ 'Pakistan' => 'PK',
135
+ 'Panama' => 'PA',
136
+ 'Paraguay' => 'PY',
137
+ 'Peru' => 'PE',
138
+ 'Philippines' => 'PH',
139
+ 'Poland' => 'PL',
140
+ 'Portugal' => 'PT',
141
+ 'Qatar' => 'QA',
142
+ 'Romania' => 'RO',
143
+ 'Russia' => 'RU',
144
+ 'Saudi Arabia' => 'SA',
145
+ 'Senegal' => 'SN',
146
+ 'Singapore' => 'SG',
147
+ 'Slovakia' => 'SK',
148
+ 'Slovenia' => 'SI',
149
+ 'South Africa' => 'ZA',
150
+ 'Spain' => 'ES',
151
+ 'Sri Lanka' => 'LK',
152
+ 'Sweden' => 'SE',
153
+ 'Switzerland' => 'CH',
154
+ 'Taiwan' => 'TW',
155
+ 'Thailand' => 'TH',
156
+ 'Tunisia' => 'TN',
157
+ 'Turkey' => 'TR',
158
+ 'Uganda' => 'UG',
159
+ 'United Arab Emirates' => 'AE',
160
+ 'United Kingdom' => 'GB',
161
+ 'United States' => 'US',
162
+ 'Uruguay' => 'UY',
163
+ 'Venezuela' => 'VE',
164
+ 'Vietnam' => 'VN',
165
+ );
166
+
167
+ /**
168
+ * Country field renderer
169
+ *
170
+ * @var Mage_XmlConnect_Block_Adminhtml_Mobile_Submission_Renderer_Country_Istore
171
+ */
172
+ protected $_countryRenderer = null;
173
+
174
+ /**
175
+ * Get submit images that are required for application submit
176
+ *
177
+ * @return array
178
+ */
179
+ public function getSubmitImages()
180
+ {
181
+ return $this->_imageIds;
182
+ }
183
+
184
  /**
185
  * Get default application tabs
186
  *
242
  'count' => Mage_XmlConnect_Model_Device_Iphone::IMAGE_TYPE_ICON_COUNT,
243
  'label' => $this->__('Logo in Header'),
244
  'sortable' => false,
245
+ 'sizeTip' => $this->__('Recommended size 35px x 35px.')
246
  ),
247
  Mage_XmlConnect_Model_Device_Iphone::IMAGE_TYPE_PORTRAIT_BACKGROUND => array(
248
  'count' => Mage_XmlConnect_Model_Device_Iphone::IMAGE_TYPE_BACKGROUND_COUNT,
249
  'label' => $this->__('App Background'),
250
  'sortable' => false,
251
+ 'sizeTip' => $this->__('Recommended size 320px x 367px. Note: Image size affects the performance of your app. Keep your image size below 75 KB for optimal performance.')
252
  ),
253
  Mage_XmlConnect_Model_Device_Iphone::IMAGE_TYPE_PORTRAIT_BANNER => array(
254
  'count' => Mage_XmlConnect_Model_Device_Iphone::IMAGE_TYPE_BANNER_COUNT,
255
  'label' => $this->__('Banners on Home Screen'),
256
  'sortable' => true,
257
+ 'sizeTip' => $this->__('Recommended size 320px x 230px. Note: Image size affects the performance of your app. Keep your image size below 50 KB for optimal performance.')
258
  ));
259
  }
260
 
550
  array(
551
  'value' => 'STHeitiK-Light',
552
  'label' => 'STHeitiK-Light',
553
+ ),
554
+ );
555
+ }
556
+
557
+ /**
558
+ * List of allowed font sizes for iPhone application
559
+ *
560
+ * @return array
561
+ */
562
+ public function getFontSizes()
563
+ {
564
+ $result = array();
565
+ for ($i = 6; $i < 32; $i++) {
566
+ $result[] = array(
567
+ 'value' => $i,
568
+ 'label' => $i . ' pt',
569
+ );
570
+ }
571
+ return $result;
572
  }
573
 
574
  /**
575
  * Get list of countries that allowed in Itunes by Apple Store for Iphone
 
576
  *
 
 
577
  * @return array
578
  */
579
  public function getItunesCountriesArray()
681
  return $errors;
682
  }
683
 
684
+ /**
685
+ * Get renderer for submission country
686
+ *
687
+ * @return Mage_XmlConnect_Block_Adminhtml_Mobile_Submission_Renderer_Country_Istore
688
+ */
689
+ public function getCountryRenderer()
690
+ {
691
+ if (empty($this->_countryRenderer)) {
692
+ $renderer = 'xmlconnect/adminhtml_mobile_submission_renderer_country_'
693
+ . self::SUBMISSION_COUNTRY_RENDERER;
694
+ $this->_countryRenderer = Mage::app()->getLayout()->createBlock($renderer);
695
+ }
696
+ return $this->_countryRenderer;
697
+ }
698
+
699
+ /**
700
+ * Get label for submission country
701
+ *
702
+ * @return string
703
+ */
704
+ public function getCountryLabel()
705
+ {
706
+ return Mage::helper('xmlconnect')->__('App Stores');
707
+ }
708
+
709
+ /**
710
+ * Get columns for submission country
711
+ *
712
+ * @return int
713
+ */
714
+ public function getCountryColumns()
715
+ {
716
+ return self::SUBMISSION_COUNTRY_COLUMNS;
717
+ }
718
+
719
+ /**
720
+ * Get placement of Country Names for submission country
721
+ *
722
+ * @return bool
723
+ */
724
+ public function isCountryNamePlaceLeft()
725
+ {
726
+ return true;
727
+ }
728
+
729
+ /**
730
+ * Get class name for submission country
731
+ *
732
+ * @return string
733
+ */
734
+ public function getCountryClass()
735
+ {
736
+ return self::SUBMISSION_COUNTRY_RENDERER . ' stripy';
737
+ }
738
+
739
  /**
740
  * Check image fields
741
  *
795
  Mage::throwException(Mage::helper('xmlconnect')->__('App Background image missing.'));
796
  }
797
  }
798
+
799
+ /**
800
+ * Check the notifications are allowed for current type of application
801
+ *
802
+ * @return bool
803
+ */
804
+ public function isNotificationsAllowed()
805
+ {
806
+ return true;
807
+ }
808
+
809
+ /**
810
+ * Get image count for image type
811
+ *
812
+ * @param string $imageType
813
+ * @return int
814
+ */
815
+ public function getImageCount($imageType)
816
+ {
817
+ $imagesTypesList = $this->getImagesTypesList();
818
+ if (array_key_exists($imageType, $imagesTypesList)) {
819
+ $count = !empty($imagesTypesList[$imageType]['count']) ? $imagesTypesList[$imageType]['count'] : 0;
820
+ } else {
821
+ Mage::throwException(
822
+ Mage::helper('xmlconnect')->__('Image type doesn\'t recognized: "%s".', $imageType)
823
+ );
824
+ }
825
+ return $count;
826
+ }
827
  }
app/code/core/Mage/XmlConnect/Helper/Theme.php CHANGED
@@ -209,8 +209,7 @@ EOT;
209
  protected function _checkDefaultThemes($fileList)
210
  {
211
  $cacheKey = 'MAGENTO_MOBILE_DEFAULT_THEMES_CACHE_KEY';
212
- $cache = Mage::app()->loadCache($cacheKey);
213
- if (Mage::app()->useCache('config') && $cache) {
214
  $defaultFiles = unserialize($cache);
215
  } else {
216
  $ioFile = new Varien_Io_File();
209
  protected function _checkDefaultThemes($fileList)
210
  {
211
  $cacheKey = 'MAGENTO_MOBILE_DEFAULT_THEMES_CACHE_KEY';
212
+ if (Mage::app()->useCache('config') && $cache = Mage::app()->loadCache($cacheKey)) {
 
213
  $defaultFiles = unserialize($cache);
214
  } else {
215
  $ioFile = new Varien_Io_File();
app/code/core/Mage/XmlConnect/Model/AdminApplication.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_XmlConnect
23
+ * @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Admin Application model
29
+ *
30
+ * @category Mage
31
+ * @package Mage_Xmlconnect
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+ class Mage_XmlConnect_Model_AdminApplication extends Mage_Core_Model_Abstract
35
+ {
36
+ /**
37
+ * Admin application device type cookie
38
+ */
39
+ const DEVICE_TYPE_COOKIE_NAME = 'device_type';
40
+ }
app/code/core/Mage/XmlConnect/Model/Application.php CHANGED
@@ -213,7 +213,7 @@ class Mage_XmlConnect_Model_Application extends Mage_Core_Model_Abstract
213
  /**
214
  * XML path to config for paypal business account
215
  */
216
- const XML_PATH_PAYPAL_BUSINESS_ACCOUNT = 'paypal/wps/business_account';
217
 
218
  /**
219
  * XML path to config for default cache time
@@ -500,18 +500,14 @@ class Mage_XmlConnect_Model_Application extends Mage_Core_Model_Abstract
500
  /**
501
  * Set flag is allowed guest checkout if quote contain downloadable product(s)
502
  */
503
- if ($this->isGuestBuyDownloadableProduct()) {
504
- $result['general']['isAllowedGuestCheckoutForDownloadableProducts'] = '0';
505
- } else {
506
- $result['general']['isAllowedGuestCheckoutForDownloadableProducts'] = '1';
507
- }
508
 
509
  /**
510
  * Is enabled Store credit functionality
511
  */
512
  $isStoreCreditEnable = $canShowHistoryFlag = 0;
513
  if (is_object(Mage::getConfig()->getNode('modules/Enterprise_CustomerBalance'))) {
514
- $storeCreditFlag = Mage::getStoreConfig('customer/enterprise_customerbalance/is_enabled');
515
  $isStoreCreditEnable = (int)$storeCreditFlag;
516
  $canShowHistoryFlag = (int)Mage::getStoreConfigFlag('customer/enterprise_customerbalance/show_history');
517
  }
@@ -529,7 +525,7 @@ class Mage_XmlConnect_Model_Application extends Mage_Core_Model_Abstract
529
  /**
530
  * PayPal configuration
531
  */
532
- $result['paypal']['businessAccount'] = Mage::getStoreConfig(self::XML_PATH_PAYPAL_BUSINESS_ACCOUNT);
533
  $result['paypal']['merchantLabel'] = $this->getData('conf/special/merchantLabel');
534
 
535
  $isActive = 0;
@@ -581,11 +577,11 @@ class Mage_XmlConnect_Model_Application extends Mage_Core_Model_Abstract
581
  /**
582
  * Check is allowed guest checkout if quote contain downloadable product(s)
583
  *
584
- * @return bool
585
  */
586
  public function isGuestBuyDownloadableProduct()
587
  {
588
- return (bool)Mage::getStoreConfigFlag(
589
  Mage_Downloadable_Model_Observer::XML_PATH_DISABLE_GUEST_CHECKOUT, $this->getStoreId()
590
  );
591
  }
213
  /**
214
  * XML path to config for paypal business account
215
  */
216
+ const XML_PATH_PAYPAL_BUSINESS_ACCOUNT = 'paypal/general/business_account';
217
 
218
  /**
219
  * XML path to config for default cache time
500
  /**
501
  * Set flag is allowed guest checkout if quote contain downloadable product(s)
502
  */
503
+ $result['general']['isAllowedGuestCheckoutForDownloadableProducts'] = $this->isGuestBuyDownloadableProduct();
 
 
 
 
504
 
505
  /**
506
  * Is enabled Store credit functionality
507
  */
508
  $isStoreCreditEnable = $canShowHistoryFlag = 0;
509
  if (is_object(Mage::getConfig()->getNode('modules/Enterprise_CustomerBalance'))) {
510
+ $storeCreditFlag = Mage::getStoreConfig(Enterprise_CustomerBalance_Helper_Data::XML_PATH_ENABLED);
511
  $isStoreCreditEnable = (int)$storeCreditFlag;
512
  $canShowHistoryFlag = (int)Mage::getStoreConfigFlag('customer/enterprise_customerbalance/show_history');
513
  }
525
  /**
526
  * PayPal configuration
527
  */
528
+ $result['paypal']['businessAccount'] = Mage::getModel('paypal/config')->businessAccount;
529
  $result['paypal']['merchantLabel'] = $this->getData('conf/special/merchantLabel');
530
 
531
  $isActive = 0;
577
  /**
578
  * Check is allowed guest checkout if quote contain downloadable product(s)
579
  *
580
+ * @return int
581
  */
582
  public function isGuestBuyDownloadableProduct()
583
  {
584
+ return (int) Mage::getStoreConfigFlag(
585
  Mage_Downloadable_Model_Observer::XML_PATH_DISABLE_GUEST_CHECKOUT, $this->getStoreId()
586
  );
587
  }
app/code/core/Mage/XmlConnect/Model/ConfigData.php CHANGED
@@ -292,14 +292,17 @@ class Mage_XmlConnect_Model_ConfigData extends Mage_Core_Model_Abstract
292
  public function pagesUpgradeOldConfig($records)
293
  {
294
  $newConfig = array();
 
295
  /** @var $applicationModel Mage_XmlConnect_Model_Application */
296
  $applicationModel = Mage::getModel('xmlconnect/application');
 
297
  $deprecatedFlag = Mage_XmlConnect_Model_Application::DEPRECATED_CONFIG_FLAG;
298
 
299
- foreach ($records as $applicationId) {
 
300
  /** @var $applicationModel Mage_XmlConnect_Model_Application */
301
- $applicationModel->load($applicationId);
302
- $configData = $this->loadApplicationData($applicationId);
303
 
304
  foreach ($configData[$deprecatedFlag] as $deprecatedConfigKey => $deprecatedConfigValue) {
305
  $pagesConfigPath = 'native/pages/';
@@ -308,7 +311,7 @@ class Mage_XmlConnect_Model_ConfigData extends Mage_Core_Model_Abstract
308
  list($id, $type) = explode('/', $pagePath);
309
  $newConfig[$id][$type] = $deprecatedConfigValue;
310
 
311
- $this->deleteConfig($applicationId, $deprecatedFlag, $deprecatedConfigKey);
312
  }
313
  }
314
 
@@ -319,7 +322,7 @@ class Mage_XmlConnect_Model_ConfigData extends Mage_Core_Model_Abstract
319
  $path = 'staticpage/' . $id;
320
 
321
  $this->getResource()->saveConfig(
322
- $applicationId, Mage_XmlConnect_Model_Application::STATIC_PAGE_CATEGORY, $path, serialize($page)
323
  );
324
  }
325
  }
292
  public function pagesUpgradeOldConfig($records)
293
  {
294
  $newConfig = array();
295
+
296
  /** @var $applicationModel Mage_XmlConnect_Model_Application */
297
  $applicationModel = Mage::getModel('xmlconnect/application');
298
+
299
  $deprecatedFlag = Mage_XmlConnect_Model_Application::DEPRECATED_CONFIG_FLAG;
300
 
301
+ foreach ($records as $application_id) {
302
+
303
  /** @var $applicationModel Mage_XmlConnect_Model_Application */
304
+ $applicationModel->load($application_id);
305
+ $configData = $this->loadApplicationData($application_id);
306
 
307
  foreach ($configData[$deprecatedFlag] as $deprecatedConfigKey => $deprecatedConfigValue) {
308
  $pagesConfigPath = 'native/pages/';
311
  list($id, $type) = explode('/', $pagePath);
312
  $newConfig[$id][$type] = $deprecatedConfigValue;
313
 
314
+ $this->deleteConfig($application_id, $deprecatedFlag, $deprecatedConfigKey);
315
  }
316
  }
317
 
322
  $path = 'staticpage/' . $id;
323
 
324
  $this->getResource()->saveConfig(
325
+ $application_id, Mage_XmlConnect_Model_Application::STATIC_PAGE_CATEGORY, $path, serialize($page)
326
  );
327
  }
328
  }
app/code/core/Mage/XmlConnect/Model/Configuration.php CHANGED
@@ -133,7 +133,7 @@ class Mage_XmlConnect_Model_Configuration extends Mage_Core_Model_Abstract
133
  protected function _getConfigDataCollection()
134
  {
135
  if (null === $this->_configDataCollection) {
136
- $this->_configDataCollection = Mage::getModel('core/mysql4_config_data_collection');
137
  } else {
138
  $this->_configDataCollection->clear()->getSelect()->reset();
139
  }
133
  protected function _getConfigDataCollection()
134
  {
135
  if (null === $this->_configDataCollection) {
136
+ $this->_configDataCollection = Mage::getModel('core/resource_config_data_collection');
137
  } else {
138
  $this->_configDataCollection->clear()->getSelect()->reset();
139
  }
app/code/core/Mage/XmlConnect/Model/Corefix/Checkout/Session.php ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_XmlConnect
23
+ * @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Override the original Checkout session model
29
+ * The represented methods are overridden to fix Core bug:
30
+ * Order review - no data verifying in "Billing address" and "Shiping address" fields
31
+ *
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+ class Mage_XmlConnect_Model_Corefix_Checkout_Session extends Mage_Checkout_Model_Session
35
+ {
36
+ /**
37
+ * Get checkout quote instance by current session
38
+ * Core fix
39
+ *
40
+ * @return Mage_XmlConnect_Model_Corefix_Sales_Quote
41
+ */
42
+ public function getQuote()
43
+ {
44
+ if ($this->_quote === null) {
45
+ $quote = Mage::getModel('xmlconnect/corefix_sales_quote')
46
+ ->setStoreId(Mage::app()->getStore()->getId());
47
+
48
+ /** @var $quote Mage_XmlConnect_Model_Corefix_Sales_Quote */
49
+ if ($this->getQuoteId()) {
50
+ $quote->loadActive($this->getQuoteId());
51
+ if ($quote->getId()) {
52
+ /**
53
+ * If current currency code of quote is not equal current currency code of store,
54
+ * need recalculate totals of quote. It is possible if customer use currency switcher or
55
+ * store switcher.
56
+ */
57
+ if ($quote->getQuoteCurrencyCode() != Mage::app()->getStore()->getCurrentCurrencyCode()) {
58
+ $quote->setStore(Mage::app()->getStore());
59
+ $quote->collectTotals()->save();
60
+ /**
61
+ * We mast to create new quote object, because collectTotals()
62
+ * can to create links with other objects.
63
+ */
64
+ $quote = Mage::getModel('xmlconnect/corefix_sales_quote')
65
+ ->setStoreId(Mage::app()->getStore()->getId());
66
+ $quote->load($this->getQuoteId());
67
+ }
68
+ } else {
69
+ $this->setQuoteId(null);
70
+ }
71
+ }
72
+
73
+ $customerSession = Mage::getSingleton('customer/session');
74
+
75
+ if (!$this->getQuoteId()) {
76
+ if ($customerSession->isLoggedIn()) {
77
+ $quote->loadByCustomer($customerSession->getCustomer());
78
+ $this->setQuoteId($quote->getId());
79
+ } else {
80
+ $quote->setIsCheckoutCart(true);
81
+ Mage::dispatchEvent('checkout_quote_init', array('quote' => $quote));
82
+ }
83
+ }
84
+
85
+ if ($this->getQuoteId()) {
86
+ if ($customerSession->isLoggedIn()) {
87
+ $quote->setCustomer($customerSession->getCustomer());
88
+ }
89
+ }
90
+
91
+ $quote->setStore(Mage::app()->getStore());
92
+ $this->_quote = $quote;
93
+ }
94
+
95
+ if ($remoteAddr = Mage::helper('core/http')->getRemoteAddr()) {
96
+ $this->_quote->setRemoteIp($remoteAddr);
97
+ $xForwardIp = Mage::app()->getRequest()->getServer('HTTP_X_FORWARDED_FOR');
98
+ $this->_quote->setXForwardedFor($xForwardIp);
99
+ }
100
+ return $this->_quote;
101
+ }
102
+
103
+ /**
104
+ * Load data for customer quote and merge with current quote
105
+ * Core fix
106
+ *
107
+ * @return Mage_XmlConnect_Model_Corefix_Checkout_Session
108
+ */
109
+ public function loadCustomerQuote()
110
+ {
111
+ if (!Mage::getSingleton('customer/session')->getCustomerId()) {
112
+ return $this;
113
+ }
114
+ $customerQuote = Mage::getModel('xmlconnect/corefix_sales_quote')
115
+ ->setStoreId(Mage::app()->getStore()->getId())
116
+ ->loadByCustomer(Mage::getSingleton('customer/session')->getCustomerId());
117
+
118
+ if ($customerQuote->getId() && $this->getQuoteId() != $customerQuote->getId()) {
119
+ if ($this->getQuoteId()) {
120
+ $customerQuote->merge($this->getQuote())
121
+ ->collectTotals()
122
+ ->save();
123
+ }
124
+
125
+ $this->setQuoteId($customerQuote->getId());
126
+
127
+ if ($this->_quote) {
128
+ $this->_quote->delete();
129
+ }
130
+ $this->_quote = $customerQuote;
131
+ } else {
132
+ $this->getQuote()->setCustomer(Mage::getSingleton('customer/session')->getCustomer())
133
+ ->save();
134
+ }
135
+ return $this;
136
+ }
137
+ }
app/code/core/Mage/XmlConnect/Model/Corefix/Checkout/Type/Onepage.php ADDED
@@ -0,0 +1,465 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_XmlConnect
23
+ * @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Override the original One page checkout processing model
29
+ * The represented methods are overridden to fix Core bug:
30
+ * Order review - no data verifying in "Billing address" and "Shiping address" fields
31
+ *
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+ class Mage_XmlConnect_Model_Corefix_Checkout_Type_Onepage extends Mage_Checkout_Model_Type_Onepage
35
+ {
36
+ /**
37
+ * Class constructor
38
+ * Set customer already exists message
39
+ * Core fix
40
+ */
41
+ public function __construct()
42
+ {
43
+ $this->_helper = Mage::helper('checkout');
44
+ $this->_customerEmailExistsMessage = $this->_helper->__('There is already a customer registered using this email address. Please login using this email address or enter a different email address to register your account.');
45
+ $this->_checkoutSession = Mage::getSingleton('xmlconnect/corefix_checkout_session');
46
+ $this->_customerSession = Mage::getSingleton('customer/session');
47
+ }
48
+
49
+ /**
50
+ * Save billing address information to quote
51
+ * This method is called by One Page Checkout JS (AJAX) while saving the billing information.
52
+ * Core fix
53
+ *
54
+ * @param array $data
55
+ * @param int $customerAddressId
56
+ * @return array
57
+ */
58
+ public function saveBilling($data, $customerAddressId)
59
+ {
60
+ if (empty($data)) {
61
+ return array('error' => -1, 'message' => $this->_helper->__('Invalid data.'));
62
+ }
63
+
64
+ $address = $this->getQuote()->getBillingAddress();
65
+ /** @var $addressForm Mage_Customer_Model_Form */
66
+ $addressForm = Mage::getModel('customer/form');
67
+ $addressForm->setFormCode('customer_address_edit')
68
+ ->setEntityType('customer_address')
69
+ ->setIsAjaxRequest(Mage::app()->getRequest()->isAjax());
70
+
71
+ if (!empty($customerAddressId)) {
72
+ $customerAddress = Mage::getModel('customer/address')->load($customerAddressId);
73
+ if ($customerAddress->getId()) {
74
+ if ($customerAddress->getCustomerId() != $this->getQuote()->getCustomerId()) {
75
+ return array(
76
+ 'error' => 1,
77
+ 'message' => $this->_helper->__('Customer Address is not valid.')
78
+ );
79
+ }
80
+
81
+ $address->importCustomerAddress($customerAddress)->setSaveInAddressBook(0);
82
+ $addressForm->setEntity($address);
83
+ $addressErrors = $addressForm->validateData($address->getData());
84
+ if ($addressErrors !== true) {
85
+ return array('error' => 1, 'message' => $addressErrors);
86
+ }
87
+ }
88
+ } else {
89
+ $addressForm->setEntity($address);
90
+ // emulate request object
91
+ $addressData = $addressForm->extractData($addressForm->prepareRequest($data));
92
+ $addressErrors = $addressForm->validateData($addressData);
93
+ if ($addressErrors !== true) {
94
+ return array('error' => 1, 'message' => $addressErrors);
95
+ }
96
+ $addressForm->compactData($addressData);
97
+
98
+ // Additional form data, not fetched by extractData (as it fetches only attributes)
99
+ $address->setSaveInAddressBook(empty($data['save_in_address_book']) ? 0 : 1);
100
+ }
101
+
102
+ // validate billing address
103
+ if (($validateRes = $address->validate()) !== true) {
104
+ return array('error' => 1, 'message' => $validateRes);
105
+ }
106
+
107
+ $address->implodeStreetAddress();
108
+
109
+ if (true !== ($result = $this->_validateCustomerData($data))) {
110
+ return $result;
111
+ }
112
+
113
+ if (!$this->getQuote()->getCustomerId() && self::METHOD_REGISTER == $this->getQuote()->getCheckoutMethod()) {
114
+ if ($this->_customerEmailExists($address->getEmail(), Mage::app()->getWebsite()->getId())) {
115
+ return array('error' => 1, 'message' => $this->_customerEmailExistsMessage);
116
+ }
117
+ }
118
+
119
+ if (!$this->getQuote()->isVirtual()) {
120
+ /**
121
+ * Billing address using otions
122
+ */
123
+ $usingCase = isset($data['use_for_shipping']) ? (int)$data['use_for_shipping'] : 0;
124
+
125
+ switch($usingCase) {
126
+ case 0:
127
+ $shipping = $this->getQuote()->getShippingAddress();
128
+ $shipping->setSameAsBilling(0);
129
+ break;
130
+ case 1:
131
+ $billing = clone $address;
132
+ $billing->unsAddressId()->unsAddressType();
133
+ $shipping = $this->getQuote()->getShippingAddress();
134
+ $shippingMethod = $shipping->getShippingMethod();
135
+ $shipping->addData($billing->getData())
136
+ ->setSameAsBilling(1)
137
+ ->setSaveInAddressBook(0)
138
+ ->setShippingMethod($shippingMethod)
139
+ ->setCollectShippingRates(true);
140
+ $this->getCheckout()->setStepData('shipping', 'complete', true);
141
+ break;
142
+ }
143
+ }
144
+
145
+ $this->getQuote()->collectTotals();
146
+ $this->getQuote()->save();
147
+
148
+ $this->getCheckout()
149
+ ->setStepData('billing', 'allow', true)
150
+ ->setStepData('billing', 'complete', true)
151
+ ->setStepData('shipping', 'allow', true);
152
+
153
+ return array();
154
+ }
155
+
156
+ /**
157
+ * Validate customer data and set some its data for further usage in quote
158
+ * Will return either true or array with error messages
159
+ * Core fix
160
+ *
161
+ * @param array $data
162
+ * @return bool | array
163
+ */
164
+ protected function _validateCustomerData(array $data)
165
+ {
166
+ /** @var $customerForm Mage_Customer_Model_Form */
167
+ $customerForm = Mage::getModel('customer/form');
168
+ $customerForm->setFormCode('checkout_register')
169
+ ->setIsAjaxRequest(Mage::app()->getRequest()->isAjax());
170
+
171
+ $quote = $this->getQuote();
172
+ if ($quote->getCustomerId()) {
173
+ $customer = $quote->getCustomer();
174
+ $customerForm->setEntity($customer);
175
+ $customerData = $quote->getCustomer()->getData();
176
+ } else {
177
+ /** @var $customer Mage_Customer_Model_Customer */
178
+ $customer = Mage::getModel('customer/customer');
179
+ $customerForm->setEntity($customer);
180
+ $customerRequest = $customerForm->prepareRequest($data);
181
+ $customerData = $customerForm->extractData($customerRequest);
182
+ }
183
+
184
+ $customerErrors = $customerForm->validateData($customerData);
185
+ if ($customerErrors !== true) {
186
+ return array(
187
+ 'error' => -1,
188
+ 'message' => implode(', ', $customerErrors)
189
+ );
190
+ }
191
+
192
+ if ($quote->getCustomerId()) {
193
+ return true;
194
+ }
195
+
196
+ $customerForm->compactData($customerData);
197
+
198
+ if ($quote->getCheckoutMethod() == self::METHOD_REGISTER) {
199
+ // set customer password
200
+ $customer->setPassword($customerRequest->getParam('customer_password'));
201
+ $customer->setConfirmation($customerRequest->getParam('confirm_password'));
202
+ } else {
203
+ // emulate customer password for quest
204
+ $password = $customer->generatePassword();
205
+ $customer->setPassword($password);
206
+ $customer->setConfirmation($password);
207
+ }
208
+
209
+ $result = $customer->validate();
210
+ if (true !== $result && is_array($result)) {
211
+ return array(
212
+ 'error' => -1,
213
+ 'message' => implode(', ', $result)
214
+ );
215
+ }
216
+
217
+ if ($quote->getCheckoutMethod() == self::METHOD_REGISTER) {
218
+ // save customer encrypted password in quote
219
+ $quote->setPasswordHash($customer->encryptPassword($customer->getPassword()));
220
+ }
221
+
222
+ // copy customer/guest email to address
223
+ $quote->getBillingAddress()->setEmail($customer->getEmail());
224
+
225
+ // copy customer data to quote
226
+ Mage::helper('core')->copyFieldset('customer_account', 'to_quote', $customer, $quote);
227
+
228
+ return true;
229
+ }
230
+
231
+ /**
232
+ * Save checkout shipping address
233
+ * Core fix
234
+ *
235
+ * @param array $data
236
+ * @param int $customerAddressId
237
+ * @return array
238
+ */
239
+ public function saveShipping($data, $customerAddressId)
240
+ {
241
+ if (empty($data)) {
242
+ return array('error' => -1, 'message' => $this->_helper->__('Invalid data.'));
243
+ }
244
+ $address = $this->getQuote()->getShippingAddress();
245
+
246
+ /** @var $addressForm Mage_Customer_Model_Form */
247
+ $addressForm = Mage::getModel('customer/form');
248
+ $addressForm->setFormCode('customer_address_edit')
249
+ ->setEntityType('customer_address')
250
+ ->setIsAjaxRequest(Mage::app()->getRequest()->isAjax());
251
+
252
+ if (!empty($customerAddressId)) {
253
+ /** @var $customerAddress Mage_Customer_Model_Address */
254
+ $customerAddress = Mage::getModel('customer/address')->load($customerAddressId);
255
+ if ($customerAddress->getId()) {
256
+ if ($customerAddress->getCustomerId() != $this->getQuote()->getCustomerId()) {
257
+ return array(
258
+ 'error' => 1,
259
+ 'message' => $this->_helper->__('Customer Address is not valid.')
260
+ );
261
+ }
262
+
263
+ $address->importCustomerAddress($customerAddress)->setSaveInAddressBook(0);
264
+ $addressForm->setEntity($address);
265
+ $addressErrors = $addressForm->validateData($address->getData());
266
+ if ($addressErrors !== true) {
267
+ return array('error' => 1, 'message' => $addressErrors);
268
+ }
269
+ }
270
+ } else {
271
+ $addressForm->setEntity($address);
272
+ // emulate request object
273
+ $addressData = $addressForm->extractData($addressForm->prepareRequest($data));
274
+ $addressErrors = $addressForm->validateData($addressData);
275
+ if ($addressErrors !== true) {
276
+ return array('error' => 1, 'message' => $addressErrors);
277
+ }
278
+ $addressForm->compactData($addressData);
279
+
280
+ // Additional form data, not fetched by extractData (as it fetches only attributes)
281
+ $address->setSaveInAddressBook(empty($data['save_in_address_book']) ? 0 : 1);
282
+ $address->setSameAsBilling(empty($data['same_as_billing']) ? 0 : 1);
283
+ }
284
+
285
+ $address->implodeStreetAddress();
286
+ $address->setCollectShippingRates(true);
287
+
288
+ if (($validateRes = $address->validate()) !== true) {
289
+ return array('error' => 1, 'message' => $validateRes);
290
+ }
291
+
292
+ $this->getQuote()->collectTotals()->save();
293
+
294
+ $this->getCheckout()
295
+ ->setStepData('shipping', 'complete', true)
296
+ ->setStepData('shipping_method', 'allow', true);
297
+
298
+ return array();
299
+ }
300
+
301
+ /**
302
+ * Specify quote payment method
303
+ * Core fix
304
+ *
305
+ * @param array $data
306
+ * @return array
307
+ */
308
+ public function savePayment($data)
309
+ {
310
+ if (empty($data)) {
311
+ return array('error' => -1, 'message' => $this->_helper->__('Invalid data.'));
312
+ }
313
+ $quote = $this->getQuote();
314
+ if ($quote->isVirtual()) {
315
+ $quote->getBillingAddress()->setPaymentMethod(isset($data['method']) ? $data['method'] : null);
316
+ } else {
317
+ $quote->getShippingAddress()->setPaymentMethod(isset($data['method']) ? $data['method'] : null);
318
+ }
319
+
320
+ // shipping totals may be affected by payment method
321
+ if (!$quote->isVirtual() && $quote->getShippingAddress()) {
322
+ $quote->getShippingAddress()->setCollectShippingRates(true);
323
+ }
324
+
325
+ $payment = $quote->getPayment();
326
+ $payment->importData($data);
327
+
328
+ $quote->save();
329
+
330
+ $this->getCheckout()
331
+ ->setStepData('payment', 'complete', true)
332
+ ->setStepData('review', 'allow', true);
333
+
334
+ return array();
335
+ }
336
+
337
+ /**
338
+ * Prepare quote for customer order submit
339
+ * Core fix
340
+ *
341
+ * @return void
342
+ */
343
+ protected function _prepareCustomerQuote()
344
+ {
345
+ $quote = $this->getQuote();
346
+ $billing = $quote->getBillingAddress();
347
+ $shipping = $quote->isVirtual() ? null : $quote->getShippingAddress();
348
+
349
+ $customer = $this->getCustomerSession()->getCustomer();
350
+ if (!$billing->getCustomerId() || $billing->getSaveInAddressBook()) {
351
+ $customerBilling = $billing->exportCustomerAddress();
352
+ $customer->addAddress($customerBilling);
353
+ $billing->setCustomerAddress($customerBilling);
354
+ }
355
+ if ($shipping && !$shipping->getSameAsBilling()
356
+ && (!$shipping->getCustomerId() || $shipping->getSaveInAddressBook())
357
+ ) {
358
+ $customerShipping = $shipping->exportCustomerAddress();
359
+ $customer->addAddress($customerShipping);
360
+ $shipping->setCustomerAddress($customerShipping);
361
+ }
362
+
363
+ if (isset($customerBilling) && !$customer->getDefaultBilling()) {
364
+ $customerBilling->setIsDefaultBilling(true);
365
+ }
366
+ if ($shipping && isset($customerShipping) && !$customer->getDefaultShipping()) {
367
+ $customerShipping->setIsDefaultShipping(true);
368
+ } elseif (isset($customerBilling) && !$customer->getDefaultShipping()) {
369
+ $customerBilling->setIsDefaultShipping(true);
370
+ }
371
+ $quote->setCustomer($customer);
372
+ }
373
+
374
+ /**
375
+ * Create order based on checkout type. Create customer if necessary.
376
+ *
377
+ * @return Mage_XmlConnect_Model_Corefix_Checkout_Type_Onepage
378
+ */
379
+ public function saveOrder()
380
+ {
381
+ $this->validate();
382
+ $isNewCustomer = false;
383
+ switch ($this->getCheckoutMethod()) {
384
+ case self::METHOD_GUEST:
385
+ $this->_prepareGuestQuote();
386
+ break;
387
+ case self::METHOD_REGISTER:
388
+ $this->_prepareNewCustomerQuote();
389
+ $isNewCustomer = true;
390
+ break;
391
+ default:
392
+ $this->_prepareCustomerQuote();
393
+ break;
394
+ }
395
+
396
+ /** @var $service Mage_Sales_Model_Service_Quote */
397
+ $service = Mage::getModel('sales/service_quote', $this->getQuote());
398
+ $service->submitAll();
399
+
400
+ if ($isNewCustomer) {
401
+ try {
402
+ $this->_involveNewCustomer();
403
+ } catch (Exception $e) {
404
+ Mage::logException($e);
405
+ }
406
+ }
407
+
408
+ $this->_checkoutSession->setLastQuoteId($this->getQuote()->getId())
409
+ ->setLastSuccessQuoteId($this->getQuote()->getId())
410
+ ->clearHelperData();
411
+
412
+ $order = $service->getOrder();
413
+ if ($order) {
414
+ Mage::dispatchEvent(
415
+ 'checkout_type_onepage_save_order_after',
416
+ array('order' => $order, 'quote' => $this->getQuote())
417
+ );
418
+
419
+ /**
420
+ * a flag to set that there will be redirect to third party after confirmation
421
+ * eg: paypal standard ipn
422
+ */
423
+ $redirectUrl = $this->getQuote()->getPayment()->getOrderPlaceRedirectUrl();
424
+ /**
425
+ * we only want to send to customer about new order when there is no redirect to third party
426
+ */
427
+ if (!$redirectUrl) {
428
+ try {
429
+ $order->sendNewOrderEmail();
430
+ } catch (Exception $e) {
431
+ Mage::logException($e);
432
+ }
433
+ }
434
+
435
+ // add order information to the session
436
+ $this->_checkoutSession->setLastOrderId($order->getId())
437
+ ->setRedirectUrl($redirectUrl)
438
+ ->setLastRealOrderId($order->getIncrementId());
439
+
440
+ // as well a billing agreement can be created
441
+ $agreement = $order->getPayment()->getBillingAgreement();
442
+ if ($agreement) {
443
+ $this->_checkoutSession->setLastBillingAgreementId($agreement->getId());
444
+ }
445
+ }
446
+
447
+ // add recurring profiles information to the session
448
+ $profiles = $service->getRecurringPaymentProfiles();
449
+ if ($profiles) {
450
+ $ids = array();
451
+ foreach ($profiles as $profile) {
452
+ $ids[] = $profile->getId();
453
+ }
454
+ $this->_checkoutSession->setLastRecurringProfileIds($ids);
455
+ // TODO: send recurring profile emails
456
+ }
457
+
458
+ Mage::dispatchEvent(
459
+ 'checkout_submit_all_after',
460
+ array('order' => $order, 'quote' => $this->getQuote(), 'recurring_profiles' => $profiles)
461
+ );
462
+
463
+ return $this;
464
+ }
465
+ }
app/code/core/Mage/XmlConnect/Model/Corefix/Sales/Quote.php ADDED
@@ -0,0 +1,427 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_XmlConnect
23
+ * @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Override the original Quote model
29
+ * The represented methods are overridden to fix Core bug:
30
+ * Order review - no data verifying in "Billing address" and "Shiping address" fields
31
+ *
32
+ * Supported events:
33
+ * sales_quote_load_after
34
+ * sales_quote_save_before
35
+ * sales_quote_save_after
36
+ * sales_quote_delete_before
37
+ * sales_quote_delete_after
38
+ *
39
+ * @author Magento Core Team <core@magentocommerce.com>
40
+ */
41
+ class Mage_XmlConnect_Model_Corefix_Sales_Quote extends Mage_Sales_Model_Quote
42
+ {
43
+ /**
44
+ * Loading quote by identifier
45
+ * Core fix
46
+ *
47
+ * @param int $quoteId
48
+ * @return Mage_XmlConnect_Model_Corefix_Sales_Quote
49
+ */
50
+ public function loadByIdWithoutStore($quoteId)
51
+ {
52
+ $this->_getResource()->loadByIdWithoutStore($this, $quoteId);
53
+ $this->_afterLoad();
54
+ return $this;
55
+ }
56
+
57
+ /**
58
+ * Assign customer model object data to quote
59
+ * Core fix
60
+ *
61
+ * @param Mage_Customer_Model_Customer $customer
62
+ * @return Mage_XmlConnect_Model_Corefix_Sales_Quote
63
+ */
64
+ public function assignCustomer(Mage_Customer_Model_Customer $customer)
65
+ {
66
+ return $this->assignCustomerWithAddressChange($customer);
67
+ }
68
+
69
+ /**
70
+ * Assign customer model to quote with billing and shipping address change
71
+ * Core fix
72
+ *
73
+ * @param Mage_Customer_Model_Customer $customer
74
+ * @param Mage_Sales_Model_Quote_Address $billingAddress
75
+ * @param Mage_Sales_Model_Quote_Address $shippingAddress
76
+ * @return Mage_XmlConnect_Model_Corefix_Sales_Quote
77
+ */
78
+ public function assignCustomerWithAddressChange(
79
+ Mage_Customer_Model_Customer $customer,
80
+ Mage_Sales_Model_Quote_Address $billingAddress = null,
81
+ Mage_Sales_Model_Quote_Address $shippingAddress = null
82
+ )
83
+ {
84
+ if ($customer->getId()) {
85
+ $this->setCustomer($customer);
86
+
87
+ if (!is_null($billingAddress)) {
88
+ $this->setBillingAddress($billingAddress);
89
+ } else {
90
+ $defaultBillingAddress = $customer->getDefaultBillingAddress();
91
+ if ($defaultBillingAddress && $defaultBillingAddress->getId()) {
92
+ $billingAddress = Mage::getModel('sales/quote_address')
93
+ ->importCustomerAddress($defaultBillingAddress);
94
+ $this->setBillingAddress($billingAddress);
95
+ }
96
+ }
97
+
98
+ if (is_null($shippingAddress)) {
99
+ $defaultShippingAddress = $customer->getDefaultShippingAddress();
100
+ if ($defaultShippingAddress && $defaultShippingAddress->getId()) {
101
+ $shippingAddress = Mage::getModel('sales/quote_address')
102
+ ->importCustomerAddress($defaultShippingAddress);
103
+ } else {
104
+ $shippingAddress = Mage::getModel('sales/quote_address');
105
+ }
106
+ }
107
+ $this->setShippingAddress($shippingAddress);
108
+ }
109
+
110
+ return $this;
111
+ }
112
+
113
+ /**
114
+ * Retrieve customer group id
115
+ * Core fix
116
+ *
117
+ * @return int
118
+ */
119
+ public function getCustomerGroupId()
120
+ {
121
+ if ($this->getCustomerId()) {
122
+ return ($this->getData('customer_group_id'))
123
+ ? $this->getData('customer_group_id')
124
+ : $this->getCustomer()->getGroupId();
125
+ } else {
126
+ return Mage_Customer_Model_Group::NOT_LOGGED_IN_ID;
127
+ }
128
+ }
129
+
130
+ /**
131
+ * Checking product exist in Quote
132
+ * Core fix
133
+ *
134
+ * @param int $productId
135
+ * @return bool
136
+ */
137
+ public function hasProductId($productId)
138
+ {
139
+ foreach ($this->getAllItems() as $item) {
140
+ if ($item->getProductId() == $productId) {
141
+ return true;
142
+ }
143
+ }
144
+ return false;
145
+ }
146
+
147
+ /**
148
+ * Remove quote item by item identifier
149
+ * Core fix
150
+ *
151
+ * @param int $itemId
152
+ * @return Mage_XmlConnect_Model_Corefix_Sales_Quote
153
+ */
154
+ public function removeItem($itemId)
155
+ {
156
+ $item = $this->getItemById($itemId);
157
+ if ($item) {
158
+ $item->setQuote($this);
159
+ /**
160
+ * If we remove item from quote - we can't use multishipping mode
161
+ */
162
+ $this->setIsMultiShipping(false);
163
+ $item->isDeleted(true);
164
+ if ($item->getHasChildren()) {
165
+ foreach ($item->getChildren() as $child) {
166
+ $child->isDeleted(true);
167
+ }
168
+ }
169
+ Mage::dispatchEvent('sales_quote_remove_item', array('quote_item' => $item));
170
+ }
171
+ return $this;
172
+ }
173
+
174
+ /**
175
+ * Advanced func to add product to quote - processing mode can be specified there.
176
+ * Returns error message if product type instance can't prepare product.
177
+ * Core fix
178
+ *
179
+ * @param Mage_Catalog_Model_Product $product
180
+ * @param null | float | Varien_Object $request
181
+ * @param null | string $processMode
182
+ * @throws Mage_Core_Exception
183
+ * @return Mage_Sales_Model_Quote_Item | string
184
+ */
185
+ public function addProductAdvanced(Mage_Catalog_Model_Product $product, $request = null, $processMode = null)
186
+ {
187
+ if ($request === null) {
188
+ $request = 1;
189
+ }
190
+ if (is_numeric($request)) {
191
+ $request = new Varien_Object(array('qty' => $request));
192
+ }
193
+ if (!($request instanceof Varien_Object)) {
194
+ Mage::throwException(Mage::helper('sales')->__('Invalid request for adding product to quote.'));
195
+ }
196
+
197
+ $cartCandidates = $product->getTypeInstance(true)
198
+ ->prepareForCartAdvanced($request, $product, $processMode);
199
+
200
+ /**
201
+ * Error message
202
+ */
203
+ if (is_string($cartCandidates)) {
204
+ return $cartCandidates;
205
+ }
206
+
207
+ /**
208
+ * If prepare process return one object
209
+ */
210
+ if (!is_array($cartCandidates)) {
211
+ $cartCandidates = array($cartCandidates);
212
+ }
213
+
214
+ $parentItem = null;
215
+ $errors = array();
216
+ $items = array();
217
+ foreach ($cartCandidates as $candidate) {
218
+ $item = $this->_addCatalogProduct($candidate, $candidate->getCartQty());
219
+ $items[] = $item;
220
+
221
+ /**
222
+ * As parent item we should always use the item of first added product
223
+ */
224
+ if (!$parentItem) {
225
+ $parentItem = $item;
226
+ }
227
+ if ($parentItem && $candidate->getParentProductId() && !$item->getId()) {
228
+ $item->setParentItem($parentItem);
229
+ }
230
+
231
+ /**
232
+ * We specify qty after we know about parent (for stock)
233
+ */
234
+ $item->addQty($candidate->getCartQty());
235
+
236
+ // collect errors instead of throwing first one
237
+ if ($item->getHasError()) {
238
+ $errors[] = $item->getMessage();
239
+ }
240
+ }
241
+ if (!empty($errors)) {
242
+ Mage::throwException(implode("\n", $errors));
243
+ }
244
+
245
+ Mage::dispatchEvent('sales_quote_product_add_after', array('items' => $items));
246
+
247
+ return $item;
248
+ }
249
+
250
+
251
+ /**
252
+ * Add product to quote
253
+ * return error message if product type instance can't prepare product
254
+ * Core fix
255
+ *
256
+ * @param mixed $product
257
+ * @param null | float | Varien_Object $request
258
+ * @return Mage_Sales_Model_Quote_Item | string
259
+ */
260
+ public function addProduct(Mage_Catalog_Model_Product $product, $request = null)
261
+ {
262
+ return $this->addProductAdvanced($product, $request, Mage_Catalog_Model_Product_Type_Abstract::PROCESS_MODE_FULL);
263
+ }
264
+
265
+ /**
266
+ * Adding catalog product object data to quote
267
+ * Core fix
268
+ *
269
+ * @param Mage_Catalog_Model_Product $product
270
+ * @return Mage_Sales_Model_Quote_Item
271
+ */
272
+ protected function _addCatalogProduct(Mage_Catalog_Model_Product $product, $qty = 1)
273
+ {
274
+ $newItem = false;
275
+ $item = $this->getItemByProduct($product);
276
+ if (!$item) {
277
+ $item = Mage::getModel('sales/quote_item');
278
+ $item->setQuote($this);
279
+ if (Mage::app()->getStore()->isAdmin()) {
280
+ $item->setStoreId($this->getStore()->getId());
281
+ } else {
282
+ $item->setStoreId(Mage::app()->getStore()->getId());
283
+ }
284
+ $newItem = true;
285
+ }
286
+
287
+ /**
288
+ * We can't modify existing child items
289
+ */
290
+ if ($item->getId() && $product->getParentProductId()) {
291
+ return $item;
292
+ }
293
+
294
+ $item->setOptions($product->getCustomOptions())
295
+ ->setProduct($product);
296
+
297
+ // Add only item that is not in quote already (there can be other new or already saved item
298
+ if ($newItem) {
299
+ $this->addItem($item);
300
+ }
301
+
302
+ return $item;
303
+ }
304
+
305
+ /**
306
+ * Updates quote item with new configuration
307
+ *
308
+ * $params sets how current item configuration must be taken into account and additional options.
309
+ * It's passed to Mage_Catalog_Helper_Product->addParamsToBuyRequest() to compose resulting buyRequest.
310
+ *
311
+ * Basically it can hold
312
+ * - 'current_config', Varien_Object or array - current buyRequest that configures product in this item,
313
+ * used to restore currently attached files
314
+ * - 'files_prefix': string[a-z0-9_] - prefix that was added at frontend to names of file options (file inputs), so they won't
315
+ * intersect with other submitted options
316
+ *
317
+ * For more options see Mage_Catalog_Helper_Product->addParamsToBuyRequest()
318
+ *
319
+ * Core fix
320
+ *
321
+ * @param int $itemId
322
+ * @param Varien_Object $buyRequest
323
+ * @param null | array | Varien_Object $params
324
+ * @throws Mage_Core_Exception
325
+ * @return Mage_Sales_Model_Quote_Item
326
+ *
327
+ * @see Mage_Catalog_Helper_Product::addParamsToBuyRequest()
328
+ */
329
+ public function updateItem($itemId, $buyRequest, $params = null)
330
+ {
331
+ $item = $this->getItemById($itemId);
332
+ if (!$item) {
333
+ Mage::throwException(Mage::helper('sales')->__('Wrong quote item id to update configuration.'));
334
+ }
335
+ $productId = $item->getProduct()->getId();
336
+
337
+ //We need to create new clear product instance with same $productId
338
+ //to set new option values from $buyRequest
339
+ $product = Mage::getModel('catalog/product')
340
+ ->setStoreId($this->getStore()->getId())
341
+ ->load($productId);
342
+
343
+ if (!$params) {
344
+ $params = new Varien_Object();
345
+ } elseif (is_array($params)) {
346
+ $params = new Varien_Object($params);
347
+ }
348
+ $params->setCurrentConfig($item->getBuyRequest());
349
+ $buyRequest = Mage::helper('catalog/product')->addParamsToBuyRequest($buyRequest, $params);
350
+
351
+ $resultItem = $this->addProduct($product, $buyRequest);
352
+
353
+ if (is_string($resultItem)) {
354
+ Mage::throwException($resultItem);
355
+ }
356
+
357
+ if ($resultItem->getParentItem()) {
358
+ $resultItem = $resultItem->getParentItem();
359
+ }
360
+
361
+ if ($resultItem->getId() != $itemId) {
362
+ /**
363
+ * Product configuration didn't stick to original quote item
364
+ * It either has same configuration as some other quote item's product or completely new configuration
365
+ */
366
+ $this->removeItem($itemId);
367
+
368
+ $items = $this->getAllItems();
369
+ foreach ($items as $item) {
370
+ if (($item->getProductId() == $productId) && ($item->getId() != $resultItem->getId())) {
371
+ if ($resultItem->compare($item)) {
372
+ // Product configuration is same as in other quote item
373
+ $resultItem->setQty($resultItem->getQty() + $item->getQty());
374
+ $this->removeItem($item->getId());
375
+ break;
376
+ }
377
+ }
378
+ }
379
+ } else {
380
+ $resultItem->setQty($buyRequest->getQty());
381
+ }
382
+
383
+ return $resultItem;
384
+ }
385
+
386
+ /**
387
+ * Retrieve quote item by product id
388
+ * Core fix
389
+ *
390
+ * @param Mage_Catalog_Model_Product $product
391
+ * @return Mage_Sales_Model_Quote_Item | false
392
+ */
393
+ public function getItemByProduct($product)
394
+ {
395
+ foreach ($this->getAllItems() as $item) {
396
+ if ($item->representProduct($product)) {
397
+ return $item;
398
+ }
399
+ }
400
+ return false;
401
+ }
402
+
403
+ /**
404
+ * Check quote for virtual product only
405
+ * Core fix
406
+ *
407
+ * @return bool
408
+ */
409
+ public function isVirtual()
410
+ {
411
+ $isVirtual = true;
412
+ $countItems = 0;
413
+ foreach ($this->getItemsCollection() as $_item) {
414
+ /** @var $_item Mage_Sales_Model_Quote_Item */
415
+ if ($_item->isDeleted() || $_item->getParentItemId()) {
416
+ continue;
417
+ }
418
+ $countItems ++;
419
+ if (!$_item->getProduct()->getIsVirtual()) {
420
+ $isVirtual = false;
421
+ break;
422
+ }
423
+ }
424
+ return $countItems == 0 ? false : $isVirtual;
425
+ }
426
+
427
+ }
app/code/core/Mage/XmlConnect/Model/ImageLimits.php CHANGED
@@ -204,16 +204,21 @@ class Mage_XmlConnect_Model_ImageLimits extends Mage_Core_Model_Abstract
204
 
205
  if ($this->_screenSize && $this->_screenSize != $defaultScreenSize) {
206
  if (!$this->getSizeModel()) {
207
- $modelClass = Mage::getConfig()->getModelClassName('xmlconnect/imageLimits_' . $this->_screenSize);
208
- if (class_exists($modelClass, false) || mageFindClassFile($modelClass)) {
209
- $sizeModel = Mage::getModel('xmlconnect/imageLimits_' . $this->_screenSize, $this->_updateType);
210
  $this->setSizeModel($sizeModel);
 
 
 
 
 
211
  }
212
  }
213
  $this->_calculateImageLimits()->_afterCalculate();
214
  } else {
215
  $this->_setScreenSize($defaultScreenSize)->_setDefaultSizeModel();
216
  }
 
217
  return $this;
218
  }
219
 
204
 
205
  if ($this->_screenSize && $this->_screenSize != $defaultScreenSize) {
206
  if (!$this->getSizeModel()) {
207
+ try {
208
+ @$sizeModel = Mage::getModel('xmlconnect/imageLimits_' . $this->_screenSize, $this->_updateType);
 
209
  $this->setSizeModel($sizeModel);
210
+ } catch (Mage_Core_Exception $e) {
211
+ Mage::throwException($e->getMessage());
212
+ Mage::logException($e);
213
+ } catch (Exception $e) {
214
+ // if image limits update not found, continue calculation based on default screen size
215
  }
216
  }
217
  $this->_calculateImageLimits()->_afterCalculate();
218
  } else {
219
  $this->_setScreenSize($defaultScreenSize)->_setDefaultSizeModel();
220
  }
221
+
222
  return $this;
223
  }
224
 
app/code/core/Mage/XmlConnect/Model/Images.php CHANGED
@@ -76,10 +76,9 @@ class Mage_XmlConnect_Model_Images extends Mage_Core_Model_Abstract
76
  * Remove all image files
77
  *
78
  * @param string $imageFile
79
- * @param bool $deleteOriginal
80
  * @return Mage_XmlConnect_Model_Images
81
  */
82
- protected function _deleteImageFiles($imageFile, $deleteOriginal = true)
83
  {
84
  $convertedImageFile = $this->_convertFileExtensionToPng($imageFile);
85
  $ioAdapter = new Varien_Io_File();
@@ -90,12 +89,10 @@ class Mage_XmlConnect_Model_Images extends Mage_Core_Model_Abstract
90
  if (!is_dir($baseImageDir . DS . $item)) {
91
  continue;
92
  }
93
- $ioAdapter->rm($baseImageDir . DS . $item . DS . basename($convertedImageFile));
94
  }
95
  }
96
- if ($deleteOriginal) {
97
- $ioAdapter->rm(self::getBasePath() . DS . basename($imageFile));
98
- }
99
  return $this;
100
  }
101
 
@@ -443,28 +440,23 @@ class Mage_XmlConnect_Model_Images extends Mage_Core_Model_Abstract
443
  $configModel = $applicationModel->getConfigModel();
444
  $deprecatedFlag = Mage_XmlConnect_Model_Application::DEPRECATED_CONFIG_FLAG;
445
 
446
- foreach ($records as $application_id) {
 
 
 
 
 
 
 
 
 
 
 
 
447
  /** @var $applicationModel Mage_XmlConnect_Model_Application */
448
- $applicationModel->load($application_id);
449
  $configPathList = $oldConfigPathByDeviceType[$applicationModel->getType()];
450
- $configData = $configModel->loadApplicationData($application_id);
451
-
452
- // old icon config path
453
- $iconConfigPath = 'native/navigationBar/icon';
454
- if (!empty($configData[$deprecatedFlag][$iconConfigPath])) {
455
- // Add icon to image table
456
- $iconFile = basename($configData[$deprecatedFlag][$iconConfigPath]);
457
- $this->saveImage(
458
- $application_id, $iconFile, Mage_XmlConnect_Model_Device_Abstract::IMAGE_TYPE_ICON, 1
459
- );
460
-
461
- // delete old icon record from config_data table
462
- $configModel->deleteConfig($application_id, $deprecatedFlag, $iconConfigPath);
463
-
464
- // delete all icon files from file system
465
- $this->_deleteImageFiles($iconFile, false);
466
- }
467
-
468
  $i = 0;
469
  // old config path prefix native/body/
470
  $configPrefix = 'native/body/';
@@ -474,13 +466,13 @@ class Mage_XmlConnect_Model_Images extends Mage_Core_Model_Abstract
474
  }
475
  $fileName = basename($configData[$deprecatedFlag][$configPrefix . $configPath]);
476
  // add new record to image table
477
- $this->saveImage($application_id, $fileName, $imageType, ++$i);
478
 
479
  // delete all image files from file system
480
- $this->_deleteImageFiles($fileName, false);
481
 
482
  // remove old record from config_data table
483
- $configModel->deleteConfig($application_id, $deprecatedFlag, $configPrefix . $configPath);
484
  }
485
  }
486
  return $this;
76
  * Remove all image files
77
  *
78
  * @param string $imageFile
 
79
  * @return Mage_XmlConnect_Model_Images
80
  */
81
+ protected function _deleteImageFiles($imageFile)
82
  {
83
  $convertedImageFile = $this->_convertFileExtensionToPng($imageFile);
84
  $ioAdapter = new Varien_Io_File();
89
  if (!is_dir($baseImageDir . DS . $item)) {
90
  continue;
91
  }
92
+ $ioAdapter->rm($baseImageDir . DS . $item . DS . $convertedImageFile);
93
  }
94
  }
95
+ $ioAdapter->rm(self::getBasePath() . DS . $imageFile);
 
 
96
  return $this;
97
  }
98
 
440
  $configModel = $applicationModel->getConfigModel();
441
  $deprecatedFlag = Mage_XmlConnect_Model_Application::DEPRECATED_CONFIG_FLAG;
442
 
443
+ foreach ($records as $rows) {
444
+ // Add icon to image table
445
+ $iconFile = basename($rows['value']);
446
+ $this->saveImage(
447
+ $rows['application_id'], $iconFile, Mage_XmlConnect_Model_Device_Abstract::IMAGE_TYPE_ICON, 1
448
+ );
449
+
450
+ // delete old icon record from config_data table
451
+ $configModel->deleteConfig($rows['application_id'], $deprecatedFlag, 'native/navigationBar/icon');
452
+
453
+ // delete all icon files from file system
454
+ $this->_deleteImageFiles($iconFile);
455
+
456
  /** @var $applicationModel Mage_XmlConnect_Model_Application */
457
+ $applicationModel->load($rows['application_id']);
458
  $configPathList = $oldConfigPathByDeviceType[$applicationModel->getType()];
459
+ $configData = $configModel->loadApplicationData($rows['application_id']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
460
  $i = 0;
461
  // old config path prefix native/body/
462
  $configPrefix = 'native/body/';
466
  }
467
  $fileName = basename($configData[$deprecatedFlag][$configPrefix . $configPath]);
468
  // add new record to image table
469
+ $this->saveImage($rows['application_id'], $fileName, $imageType, ++$i);
470
 
471
  // delete all image files from file system
472
+ $this->_deleteImageFiles($fileName);
473
 
474
  // remove old record from config_data table
475
+ $configModel->deleteConfig($rows['application_id'], $deprecatedFlag, $configPrefix . $configPath);
476
  }
477
  }
478
  return $this;
app/code/core/Mage/XmlConnect/Model/Payment/Method/Paypal/Mecl.php CHANGED
@@ -36,7 +36,7 @@ class Mage_XmlConnect_Model_Payment_Method_Paypal_Mecl extends Mage_Paypal_Model
36
  /**
37
  * Store MECL payment method code
38
  */
39
- const MECL_METHOD_CODE = Mage_Paypal_Model_Config::METHOD_WPP_EXPRESS;
40
 
41
  /**
42
  * Payment method code
@@ -45,27 +45,6 @@ class Mage_XmlConnect_Model_Payment_Method_Paypal_Mecl extends Mage_Paypal_Model
45
  */
46
  protected $_code = self::MECL_METHOD_CODE;
47
 
48
- /**
49
- * Can use method for a frontend checkout
50
- *
51
- * @var bool
52
- */
53
- protected $_canUseCheckout = false;
54
-
55
- /**
56
- * Can method be used for multishipping checkout type
57
- *
58
- * @var bool
59
- */
60
- protected $_canUseForMultishipping = false;
61
-
62
- /**
63
- * Can method manage recurring profiles
64
- *
65
- * @var bool
66
- */
67
- protected $_canManageRecurringProfiles = false;
68
-
69
  /**
70
  * Check whether payment method can be used
71
  *
@@ -85,12 +64,8 @@ class Mage_XmlConnect_Model_Payment_Method_Paypal_Mecl extends Mage_Paypal_Model
85
  $storeId = $quote ? $quote->getStoreId() : Mage::app()->getStore()->getId();
86
  }
87
 
88
- $path = Mage_Payment_Helper_Data::XML_PATH_PAYMENT_METHODS
89
- . '/'
90
- . Mage_Paypal_Model_Config::METHOD_WPP_EXPRESS
91
- . '/active';
92
-
93
- return (bool) Mage::getStoreConfigFlag($path, $storeId);
94
  }
95
 
96
  /**
36
  /**
37
  * Store MECL payment method code
38
  */
39
+ const MECL_METHOD_CODE = 'paypal_mecl';
40
 
41
  /**
42
  * Payment method code
45
  */
46
  protected $_code = self::MECL_METHOD_CODE;
47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  /**
49
  * Check whether payment method can be used
50
  *
64
  $storeId = $quote ? $quote->getStoreId() : Mage::app()->getStore()->getId();
65
  }
66
 
67
+ return (bool) Mage::getModel('paypal/config')->setStoreId($storeId)
68
+ ->isMethodAvailable(Mage_Paypal_Model_Config::METHOD_WPP_EXPRESS);
 
 
 
 
69
  }
70
 
71
  /**
app/code/core/Mage/XmlConnect/Model/Payment/Method/Paypal/Mep.php CHANGED
@@ -81,12 +81,8 @@ class Mage_XmlConnect_Model_Payment_Method_Paypal_Mep extends Mage_Paypal_Model_
81
  $storeId = $quote ? $quote->getStoreId() : Mage::app()->getStore()->getId();
82
  }
83
 
84
- $path = Mage_Payment_Helper_Data::XML_PATH_PAYMENT_METHODS
85
- . '/'
86
- . Mage_Paypal_Model_Config::METHOD_WPP_EXPRESS
87
- . '/active';
88
-
89
- return (bool) Mage::getStoreConfigFlag($path, $storeId);
90
  }
91
 
92
  /**
81
  $storeId = $quote ? $quote->getStoreId() : Mage::app()->getStore()->getId();
82
  }
83
 
84
+ return (bool) Mage::getModel('paypal/config')->setStoreId($storeId)
85
+ ->isMethodAvailable(Mage_Paypal_Model_Config::METHOD_WPP_EXPRESS);
 
 
 
 
86
  }
87
 
88
  /**
app/code/core/Mage/XmlConnect/Model/Paypal/Mecl/Checkout.php CHANGED
@@ -39,4 +39,28 @@ class Mage_XmlConnect_Model_Paypal_Mecl_Checkout extends Mage_Paypal_Model_Expre
39
  * @var string
40
  */
41
  protected $_methodType = Mage_XmlConnect_Model_Payment_Method_Paypal_Config::METHOD_WPP_MECL;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  }
39
  * @var string
40
  */
41
  protected $_methodType = Mage_XmlConnect_Model_Payment_Method_Paypal_Config::METHOD_WPP_MECL;
42
+
43
+ /**
44
+ * Set sandbox flag and get api
45
+ *
46
+ * @return Mage_Paypal_Model_Api_Nvp
47
+ */
48
+ protected function _getApi()
49
+ {
50
+ $this->_setSandboxFlag();
51
+ return parent::_getApi();
52
+ }
53
+
54
+ /**
55
+ * Set sandbox flag
56
+ *
57
+ * @return Mage_XmlConnect_Model_Paypal_Mecl_Checkout
58
+ */
59
+ protected function _setSandboxFlag()
60
+ {
61
+ $this->_config->sandboxFlag = Mage::helper('payment')
62
+ ->getMethodInstance(Mage_XmlConnect_Model_Payment_Method_Paypal_Config::METHOD_WPP_EXPRESS)
63
+ ->getConfigData('sandbox_flag');
64
+ return $this;
65
+ }
66
  }
app/code/core/Mage/XmlConnect/Model/Paypal/Mep/Checkout.php CHANGED
@@ -74,10 +74,11 @@ class Mage_XmlConnect_Model_Paypal_Mep_Checkout
74
  *
75
  * @throws Mage_Core_Exception
76
  * @param array $params
 
77
  */
78
  public function __construct($params = array())
79
  {
80
- $this->_checkoutSession = Mage::getSingleton('checkout/session');
81
  if (isset($params['quote']) && $params['quote'] instanceof Mage_Sales_Model_Quote) {
82
  $this->_quote = $params['quote'];
83
  } else {
@@ -114,7 +115,7 @@ class Mage_XmlConnect_Model_Paypal_Mep_Checkout
114
  $this->_quote->assignCustomer($customer);
115
  }
116
  if (!Mage::getSingleton('customer/session')->isLoggedIn()
117
- && Mage::getSingleton('checkout/session')->getQuote()->isAllowedGuestCheckout()
118
  ) {
119
  $this->_prepareGuestQuote();
120
  }
74
  *
75
  * @throws Mage_Core_Exception
76
  * @param array $params
77
+ * @return void
78
  */
79
  public function __construct($params = array())
80
  {
81
+ $this->_checkoutSession = Mage::getSingleton('xmlconnect/corefix_checkout_session');
82
  if (isset($params['quote']) && $params['quote'] instanceof Mage_Sales_Model_Quote) {
83
  $this->_quote = $params['quote'];
84
  } else {
115
  $this->_quote->assignCustomer($customer);
116
  }
117
  if (!Mage::getSingleton('customer/session')->isLoggedIn()
118
+ && Mage::getSingleton('xmlconnect/corefix_checkout_session')->getQuote()->isAllowedGuestCheckout()
119
  ) {
120
  $this->_prepareGuestQuote();
121
  }
app/code/core/Mage/XmlConnect/Model/Queue.php CHANGED
@@ -31,7 +31,7 @@
31
  * @package Mage_Xmlconnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Model_Queue extends Mage_Core_Model_Abstract
35
  {
36
  /**
37
  * Status in queue identifier
@@ -89,16 +89,10 @@ class Mage_XmlConnect_Model_Queue extends Mage_Core_Model_Abstract
89
  protected $_appCode;
90
 
91
  /**
92
- * Types of template
93
  *
94
  * @return null
95
  */
96
- const TYPE_TEXT = 1;
97
- const TYPE_HTML = 2;
98
-
99
- /**
100
- * Initialize queue message
101
- */
102
  protected function _construct()
103
  {
104
  $this->_init('xmlconnect/queue');
31
  * @package Mage_Xmlconnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Model_Queue extends Mage_Core_Model_Template
35
  {
36
  /**
37
  * Status in queue identifier
89
  protected $_appCode;
90
 
91
  /**
92
+ * Initialize queue message
93
  *
94
  * @return null
95
  */
 
 
 
 
 
 
96
  protected function _construct()
97
  {
98
  $this->_init('xmlconnect/queue');
app/code/core/Mage/XmlConnect/Model/Resource/Application.php CHANGED
@@ -96,11 +96,11 @@ class Mage_XmlConnect_Model_Resource_Application extends Mage_Core_Model_Mysql4_
96
  return parent::_afterSave($object);
97
  }
98
 
99
- /**
100
- * Collect existing stores and type unique pairs
101
- *
102
- * @return array
103
- */
104
  public function getExistingStoreDeviceType()
105
  {
106
  $select = $this->_getWriteAdapter()->select()->from($this->getMainTable(), array('store_id', 'type'))
96
  return parent::_afterSave($object);
97
  }
98
 
99
+ /**
100
+ * Collect existing stores and type unique pairs
101
+ *
102
+ * @return array
103
+ */
104
  public function getExistingStoreDeviceType()
105
  {
106
  $select = $this->_getWriteAdapter()->select()->from($this->getMainTable(), array('store_id', 'type'))
app/code/core/Mage/XmlConnect/Model/Resource/ConfigData.php CHANGED
@@ -61,11 +61,7 @@ class Mage_XmlConnect_Model_Resource_ConfigData extends Mage_Core_Model_Mysql4_A
61
  'value' => $value
62
  );
63
 
64
- $this->_getWriteAdapter()->insertOnDuplicate(
65
- $this->getMainTable(),
66
- $newData,
67
- array('value')
68
- );
69
  return $this;
70
  }
71
 
@@ -73,12 +69,12 @@ class Mage_XmlConnect_Model_Resource_ConfigData extends Mage_Core_Model_Mysql4_A
73
  * Delete config value
74
  *
75
  * @param int $applicationId
76
- * @param bool $category
77
- * @param bool $path
78
  * @param bool $pathLike
79
  * @return Mage_XmlConnect_Model_Mysql4_ConfigData
80
  */
81
- public function deleteConfig($applicationId, $category = false, $path = false, $pathLike = true)
82
  {
83
  try {
84
  $this->_getWriteAdapter()->beginTransaction();
@@ -88,8 +84,7 @@ class Mage_XmlConnect_Model_Resource_ConfigData extends Mage_Core_Model_Mysql4_A
88
  $deleteWhere[] = $writeAdapter->quoteInto('category=?', $category);
89
  }
90
  if ($path) {
91
- $deleteWhere[] = $pathLike
92
- ? $writeAdapter->quoteInto('path like ?', $path . '/%')
93
  : $writeAdapter->quoteInto('path=?', $path);
94
  }
95
  $writeAdapter->delete($this->getMainTable(), $deleteWhere);
61
  'value' => $value
62
  );
63
 
64
+ $this->_getWriteAdapter()->insertOnDuplicate($this->getMainTable(), $newData, array('value'));
 
 
 
 
65
  return $this;
66
  }
67
 
69
  * Delete config value
70
  *
71
  * @param int $applicationId
72
+ * @param string $category
73
+ * @param string $path
74
  * @param bool $pathLike
75
  * @return Mage_XmlConnect_Model_Mysql4_ConfigData
76
  */
77
+ public function deleteConfig($applicationId, $category = '', $path = '', $pathLike = true)
78
  {
79
  try {
80
  $this->_getWriteAdapter()->beginTransaction();
84
  $deleteWhere[] = $writeAdapter->quoteInto('category=?', $category);
85
  }
86
  if ($path) {
87
+ $deleteWhere[] = $pathLike ? $writeAdapter->quoteInto('path like ?', $path . '/%')
 
88
  : $writeAdapter->quoteInto('path=?', $path);
89
  }
90
  $writeAdapter->delete($this->getMainTable(), $deleteWhere);
app/code/core/Mage/XmlConnect/Model/Resource/History.php CHANGED
@@ -77,10 +77,8 @@ class Mage_XmlConnect_Model_Resource_History extends Mage_Core_Model_Mysql4_Abst
77
  {
78
  $paramArray = array();
79
  $idFieldName = Mage::getModel('xmlconnect/application')->getIdFieldName();
80
- $select = $this->_getReadAdapter()->select()
81
- ->from($this->getMainTable(), 'params')
82
- ->where($idFieldName . '=?', $id)
83
- ->order(array('created_at DESC'));
84
 
85
  $params = $this->_getReadAdapter()->fetchOne($select);
86
 
77
  {
78
  $paramArray = array();
79
  $idFieldName = Mage::getModel('xmlconnect/application')->getIdFieldName();
80
+ $select = $this->_getReadAdapter()->select()->from($this->getMainTable(), 'params')
81
+ ->where($idFieldName . '=?', $id)->order(array('created_at ' . Zend_Db_Select::SQL_DESC));
 
 
82
 
83
  $params = $this->_getReadAdapter()->fetchOne($select);
84
 
app/code/core/Mage/XmlConnect/Model/Simplexml/Form/Element/Validator/Abstract.php CHANGED
@@ -71,21 +71,22 @@ class Mage_XmlConnect_Model_Simplexml_Form_Element_Validator_Abstract
71
  */
72
  protected function _setDefaultValidatorTypeMessages()
73
  {
 
74
  $this->_validatorTypeMessages = array(
75
- 'min_length' => Mage::helper('xmlconnect')->__('Text length does not satisfy specified min text range.'),
76
- 'max_length' => Mage::helper('xmlconnect')->__('Text length does not satisfy specified max text range.'),
77
- 'alphanumeric' => Mage::helper('xmlconnect')->__('Please use only letters (a-z or A-Z) or numbers (0-9) only in this field. No spaces or other characters are allowed.'),
78
- 'email' => Mage::helper('xmlconnect')->__('Please enter a valid email address. For example johndoe@domain.com.'),
79
- 'required' => Mage::helper('xmlconnect')->__('This is a required field.'),
80
- 'required_select' => Mage::helper('xmlconnect')->__('Please select an option.'),
81
- 'numeric' => Mage::helper('xmlconnect')->__('Please use numbers only in this field. Please avoid spaces or other characters such as dots or commas.'),
82
- 'alpha' => Mage::helper('xmlconnect')->__('Please use letters only (a-z or A-Z) in this field.'),
83
- 'url' => Mage::helper('xmlconnect')->__('Please enter a valid URL. Protocol is required (http://, https:// or ftp://)'),
84
- 'date' => Mage::helper('xmlconnect')->__('Please enter a valid date.'),
85
- 'max_file_size' => Mage::helper('xmlconnect')->__('\'%s\' exceeds the allowed file size: %d (bytes)', $this->getFieldLabel(), $this->getValue()),
86
- 'file_extensions' => Mage::helper('xmlconnect')->__('\'%s\' is not a valid file extension. Allowed extensions: %s', $this->getFieldLabel(), $this->getValue()),
87
- 'max_image_width' => Mage::helper('xmlconnect')->__('\'%s\' width exceeds allowed value of %d px', $this->getFieldLabel(), $this->getValue()),
88
- 'max_image_height' => Mage::helper('xmlconnect')->__('\'%s\' height exceeds allowed value of %d px', $this->getFieldLabel(), $this->getValue())
89
  );
90
  return $this;
91
  }
71
  */
72
  protected function _setDefaultValidatorTypeMessages()
73
  {
74
+ $helper = Mage::helper('xmlconnect');
75
  $this->_validatorTypeMessages = array(
76
+ 'min_length' => $helper->__('Text length does not satisfy specified min text range.'),
77
+ 'max_length' => $helper->__('Text length does not satisfy specified max text range.'),
78
+ 'alphanumeric' => $helper->__('Please use only letters (a-z or A-Z) or numbers (0-9) only in this field. No spaces or other characters are allowed.'),
79
+ 'email' => $helper->__('Please enter a valid email address. For example johndoe@domain.com.'),
80
+ 'required' => $helper->__('This is a required field.'),
81
+ 'required_select' => $helper->__('Please select an option.'),
82
+ 'numeric' => $helper->__('Please use numbers only in this field. Please avoid spaces or other characters such as dots or commas.'),
83
+ 'alpha' => $helper->__('Please use letters only (a-z or A-Z) in this field.'),
84
+ 'url' => $helper->__('Please enter a valid URL. Protocol is required (http://, https:// or ftp://)'),
85
+ 'date' => $helper->__('Please enter a valid date.'),
86
+ 'max_file_size' => $helper->__('\'%s\' exceeds the allowed file size: %d (bytes)', $this->getFieldLabel(), $this->getValue()),
87
+ 'file_extensions' => $helper->__('\'%s\' is not a valid file extension. Allowed extensions: %s', $this->getFieldLabel(), $this->getValue()),
88
+ 'max_image_width' => $helper->__('\'%s\' width exceeds allowed value of %d px', $this->getFieldLabel(), $this->getValue()),
89
+ 'max_image_height' => $helper->__('\'%s\' height exceeds allowed value of %d px', $this->getFieldLabel(), $this->getValue())
90
  );
91
  return $this;
92
  }
app/code/core/Mage/XmlConnect/Model/Simplexml/Message/Error.php CHANGED
@@ -85,9 +85,10 @@ class Mage_XmlConnect_Model_Simplexml_Message_Error extends Mage_XmlConnect_Mode
85
  */
86
  protected function _getCustomMessageList()
87
  {
 
88
  return array(
89
- self::ERROR_CLIENT_SP_SESSION_EXPIRED => Mage::helper('xmlconnect')->__('User session is expired'),
90
- self::ERROR_USER_SP_ACCESS_FORBIDDEN => Mage::helper('xmlconnect')->__('Access forbidden')
91
  );
92
  }
93
 
85
  */
86
  protected function _getCustomMessageList()
87
  {
88
+ $helper = Mage::helper('xmlconnect');
89
  return array(
90
+ self::ERROR_CLIENT_SP_SESSION_EXPIRED => $helper->__('User session is expired'),
91
+ self::ERROR_USER_SP_ACCESS_FORBIDDEN => $helper->__('Access forbidden')
92
  );
93
  }
94
 
app/code/core/Mage/XmlConnect/Model/Tabs.php CHANGED
@@ -126,6 +126,7 @@ class Mage_XmlConnect_Model_Tabs
126
  $tab->image = Mage::getDesign()->getSkinUrl('images/xmlconnect/' . $tab->image);
127
  $result[] = $tab;
128
  }
 
129
  return $result;
130
  }
131
  }
126
  $tab->image = Mage::getDesign()->getSkinUrl('images/xmlconnect/' . $tab->image);
127
  $result[] = $tab;
128
  }
129
+
130
  return $result;
131
  }
132
  }
app/code/core/Mage/XmlConnect/Model/Template.php CHANGED
@@ -31,14 +31,8 @@
31
  * @package Mage_Xmlconnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
- class Mage_XmlConnect_Model_Template extends Mage_Core_Model_Abstract
35
  {
36
- /**
37
- * Types of template
38
- */
39
- const TYPE_TEXT = 1;
40
- const TYPE_HTML = 2;
41
-
42
  /**
43
  * Model constructor
44
  *
31
  * @package Mage_Xmlconnect
32
  * @author Magento Core Team <core@magentocommerce.com>
33
  */
34
+ class Mage_XmlConnect_Model_Template extends Mage_Core_Model_Template
35
  {
 
 
 
 
 
 
36
  /**
37
  * Model constructor
38
  *
app/code/core/Mage/XmlConnect/controllers/Adminhtml/Connect/ConfigController.php CHANGED
@@ -87,8 +87,8 @@ class Mage_XmlConnect_Adminhtml_Connect_ConfigController extends Mage_XmlConnect
87
  {
88
  $cookieToSetArray = array(
89
  array(
90
- 'cookieName' => self::DEVICE_TYPE_COOKIE_NAME,
91
- 'paramName' => self::DEVICE_TYPE_COOKIE_NAME,
92
  ),
93
  array(
94
  'cookieName' => Mage_XmlConnect_Model_Application::APP_SCREEN_SIZE_NAME,
87
  {
88
  $cookieToSetArray = array(
89
  array(
90
+ 'cookieName' => Mage_XmlConnect_Model_AdminApplication::DEVICE_TYPE_COOKIE_NAME,
91
+ 'paramName' => Mage_XmlConnect_Model_AdminApplication::DEVICE_TYPE_COOKIE_NAME,
92
  ),
93
  array(
94
  'cookieName' => Mage_XmlConnect_Model_Application::APP_SCREEN_SIZE_NAME,
app/code/core/Mage/XmlConnect/controllers/CartController.php CHANGED
@@ -456,7 +456,7 @@ class Mage_XmlConnect_CartController extends Mage_XmlConnect_Controller_Action
456
  */
457
  protected function _getSession()
458
  {
459
- return Mage::getSingleton('checkout/session');
460
  }
461
 
462
  /**
@@ -575,7 +575,7 @@ class Mage_XmlConnect_CartController extends Mage_XmlConnect_Controller_Action
575
  */
576
  public function updateItemOptionsAction()
577
  {
578
- $cart = $this->_getCart();
579
  $id = (int) $this->getRequest()->getParam('id');
580
  $params = $this->getRequest()->getParams();
581
 
456
  */
457
  protected function _getSession()
458
  {
459
+ return Mage::getSingleton('xmlconnect/corefix_checkout_session');
460
  }
461
 
462
  /**
575
  */
576
  public function updateItemOptionsAction()
577
  {
578
+ $cart = $this->_getCart();
579
  $id = (int) $this->getRequest()->getParam('id');
580
  $params = $this->getRequest()->getParams();
581
 
app/code/core/Mage/XmlConnect/controllers/CatalogController.php CHANGED
@@ -103,7 +103,9 @@ class Mage_XmlConnect_CatalogController extends Mage_XmlConnect_Controller_Actio
103
  return;
104
  }
105
  try {
 
106
  $this->loadLayout(false);
 
107
  $this->renderLayout();
108
  return;
109
  } catch (Mage_Core_Exception $e) {
@@ -122,7 +124,9 @@ class Mage_XmlConnect_CatalogController extends Mage_XmlConnect_Controller_Actio
122
  public function productViewAction()
123
  {
124
  try {
 
125
  $this->loadLayout(false);
 
126
  $this->renderLayout();
127
  return;
128
  } catch (Mage_Core_Exception $e) {
@@ -220,7 +224,7 @@ class Mage_XmlConnect_CatalogController extends Mage_XmlConnect_Controller_Actio
220
  }
221
  /** @var $_helper Mage_CatalogSearch_Helper_Data */
222
  $_helper = Mage::helper('catalogsearch');
223
- $queryParam = str_replace('%20', ' ', urldecode($this->getRequest()->getParam('query')));
224
  $this->getRequest()->setParam($_helper->getQueryParamName(), $queryParam);
225
  /** @var $query Mage_CatalogSearch_Model_Query */
226
  $query = $_helper->getQuery();
@@ -277,7 +281,7 @@ class Mage_XmlConnect_CatalogController extends Mage_XmlConnect_Controller_Actio
277
  {
278
  /** @var $_helper Mage_CatalogSearch_Helper_Data */
279
  $_helper = Mage::helper('catalogsearch');
280
- $queryParam = str_replace('%20', ' ', urldecode($this->getRequest()->getParam('query')));
281
  $this->getRequest()->setParam($_helper->getQueryParamName(), $queryParam);
282
  /** @var $query Mage_CatalogSearch_Model_Query */
283
  $query = $_helper->getQuery();
@@ -450,4 +454,60 @@ class Mage_XmlConnect_CatalogController extends Mage_XmlConnect_Controller_Actio
450
  }
451
  return $this;
452
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
453
  }
103
  return;
104
  }
105
  try {
106
+ $product = $this->_initProduct();
107
  $this->loadLayout(false);
108
+ $this->getLayout()->getBlock('xmlconnect.catalog.product')->setProduct($product);
109
  $this->renderLayout();
110
  return;
111
  } catch (Mage_Core_Exception $e) {
124
  public function productViewAction()
125
  {
126
  try {
127
+ $product = $this->_initProduct();
128
  $this->loadLayout(false);
129
+ $this->getLayout()->getBlock('xmlconnect.catalog.product')->setProduct($product);
130
  $this->renderLayout();
131
  return;
132
  } catch (Mage_Core_Exception $e) {
224
  }
225
  /** @var $_helper Mage_CatalogSearch_Helper_Data */
226
  $_helper = Mage::helper('catalogsearch');
227
+ $queryParam = str_replace('%20', ' ', $this->getRequest()->getParam('query'));
228
  $this->getRequest()->setParam($_helper->getQueryParamName(), $queryParam);
229
  /** @var $query Mage_CatalogSearch_Model_Query */
230
  $query = $_helper->getQuery();
281
  {
282
  /** @var $_helper Mage_CatalogSearch_Helper_Data */
283
  $_helper = Mage::helper('catalogsearch');
284
+ $queryParam = str_replace('%20', ' ', $this->getRequest()->getParam('query'));
285
  $this->getRequest()->setParam($_helper->getQueryParamName(), $queryParam);
286
  /** @var $query Mage_CatalogSearch_Model_Query */
287
  $query = $_helper->getQuery();
454
  }
455
  return $this;
456
  }
457
+
458
+ /**
459
+ * Initialize requested product object
460
+ *
461
+ * @return Mage_Catalog_Model_Product
462
+ */
463
+ protected function _initProduct()
464
+ {
465
+ Mage::dispatchEvent('catalog_controller_product_init_before', array('controller_action' => $this));
466
+ $categoryId = (int) $this->getRequest()->getParam('category', false);
467
+ $productId = (int) $this->getRequest()->getParam('id');
468
+
469
+ if (!$productId) {
470
+ return false;
471
+ }
472
+
473
+ $product = Mage::getModel('catalog/product')->setStoreId(Mage::app()->getStore()->getId())->load($productId);
474
+
475
+ if (!Mage::helper('catalog/product')->canShow($product)) {
476
+ return false;
477
+ }
478
+
479
+ if (!in_array(Mage::app()->getStore()->getWebsiteId(), $product->getWebsiteIds())) {
480
+ return false;
481
+ }
482
+
483
+ $category = null;
484
+ if ($categoryId) {
485
+ $category = Mage::getModel('catalog/category')->load($categoryId);
486
+ $product->setCategory($category);
487
+ Mage::register('current_category', $category);
488
+ } elseif (Mage::getSingleton('catalog/session')->getLastVisitedCategoryId()) {
489
+ $categoryId = Mage::getSingleton('catalog/session')->getLastVisitedCategoryId();
490
+ if ($product->canBeShowInCategory($categoryId)) {
491
+ $category = Mage::getModel('catalog/category')->load($categoryId);
492
+ $product->setCategory($category);
493
+ Mage::register('current_category', $category);
494
+ }
495
+ }
496
+
497
+
498
+ Mage::register('current_product', $product);
499
+ Mage::register('product', $product);
500
+
501
+ try {
502
+ Mage::dispatchEvent('catalog_controller_product_init', array('product' => $product));
503
+ Mage::dispatchEvent(
504
+ 'catalog_controller_product_init_after', array('product' => $product, 'controller_action' => $this)
505
+ );
506
+ } catch (Mage_Core_Exception $e) {
507
+ Mage::logException($e);
508
+ return false;
509
+ }
510
+
511
+ return $product;
512
+ }
513
  }
app/code/core/Mage/XmlConnect/controllers/CheckoutController.php CHANGED
@@ -369,6 +369,7 @@ class Mage_XmlConnect_CheckoutController extends Mage_XmlConnect_Controller_Acti
369
  'request' => $this->getRequest(),
370
  'quote' => $this->getOnepage()->getQuote()
371
  ));
 
372
  $this->_message(implode('. ', $result['message']), self::MESSAGE_STATUS_ERROR);
373
  }
374
  }
369
  'request' => $this->getRequest(),
370
  'quote' => $this->getOnepage()->getQuote()
371
  ));
372
+ $this->getOnepage()->getQuote()->collectTotals()->save();
373
  $this->_message(implode('. ', $result['message']), self::MESSAGE_STATUS_ERROR);
374
  }
375
  }
app/code/core/Mage/XmlConnect/controllers/CustomerController.php CHANGED
@@ -139,40 +139,29 @@ class Mage_XmlConnect_CustomerController extends Mage_XmlConnect_Controller_Acti
139
  */
140
  public function editAction()
141
  {
142
- if (!$this->_getSession()->isLoggedIn()) {
143
- $this->_message(
144
- $this->__('Customer not logged in.'),
145
- self::MESSAGE_STATUS_ERROR,
146
- array('logged_in' => '0')
147
- );
148
  return;
149
  }
150
  if ($this->getRequest()->isPost()) {
151
- $customer = Mage::getModel('customer/customer')
152
- ->setId($this->_getSession()->getCustomerId())
153
- ->setWebsiteId($this->_getSession()->getCustomer()->getWebsiteId());
154
 
155
- $fields = Mage::getConfig()->getFieldset('customer_account');
156
- $data = $this->_filterPostData($this->getRequest()->getPost());
 
 
157
 
158
- foreach ($fields as $code=>$node) {
159
- if ($node->is('update') && isset($data[$code])) {
160
- $customer->setData($code, $data[$code]);
 
 
 
 
 
 
161
  }
162
  }
163
 
164
- $errors = $customer->validate();
165
- if (!is_array($errors)) {
166
- $errors = array();
167
- }
168
-
169
- /**
170
- * we would like to preserver the existing group id
171
- */
172
- if ($this->_getSession()->getCustomerGroupId()) {
173
- $customer->setGroupId($this->_getSession()->getCustomerGroupId());
174
- }
175
-
176
  if ($this->getRequest()->getParam('change_password')) {
177
  $currPass = $this->getRequest()->getPost('current_password');
178
  $newPass = $this->getRequest()->getPost('password');
@@ -246,18 +235,24 @@ class Mage_XmlConnect_CustomerController extends Mage_XmlConnect_Controller_Acti
246
  if ($request->isPost()) {
247
  $errors = array();
248
 
249
- if (!$customer = Mage::registry('current_customer')) {
250
- $customer = Mage::getModel('customer/customer')->setId(null);
 
 
251
  }
252
 
253
- foreach (Mage::getConfig()->getFieldset('customer_account') as $code => $node) {
254
- if ($node->is('create') && ($value = $this->getRequest()->getParam($code)) !== null) {
255
- if ($code == 'email') {
256
- $value = trim($value);
257
- }
258
- $customer->setData($code, $value);
259
- }
 
260
  }
 
 
 
261
 
262
  if ($this->getRequest()->getParam('is_subscribed', false)) {
263
  $customer->setIsSubscribed(1);
@@ -269,10 +264,17 @@ class Mage_XmlConnect_CustomerController extends Mage_XmlConnect_Controller_Acti
269
  $customer->getGroupId();
270
 
271
  try {
272
-
273
- $validationCustomer = $customer->validate();
274
- if (is_array($validationCustomer)) {
275
- $errors = array_merge($validationCustomer, $errors);
 
 
 
 
 
 
 
276
  }
277
 
278
  $validationResult = count($errors) == 0;
@@ -472,29 +474,44 @@ class Mage_XmlConnect_CustomerController extends Mage_XmlConnect_Controller_Acti
472
  if (!$this->_isCustomerLoggedIn()) {
473
  return;
474
  }
 
475
  // Save data
476
  if ($this->getRequest()->isPost()) {
477
- $address = Mage::getModel('customer/address')
478
- ->setData($this->getRequest()->getPost())
479
- ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
480
- ->setIsDefaultBilling($this->getRequest()->getParam('default_billing', false))
481
- ->setIsDefaultShipping($this->getRequest()->getParam('default_shipping', false));
482
- $addressId = $this->getRequest()->getParam('id');
483
  if ($addressId) {
484
- $customerAddress = $this->_getSession()->getCustomer()->getAddressById($addressId);
485
- if ($customerAddress->getId()
486
- && $customerAddress->getCustomerId() == $this->_getSession()->getCustomerId()
487
- ) {
488
- $address->setId($addressId);
489
- } else {
490
- $address->setId(null);
491
  }
492
  }
493
 
494
  $errors = array();
495
 
 
 
 
 
 
 
 
 
 
496
  try {
497
- $addressValidation = $address->validate();
 
 
 
 
 
 
 
 
 
 
 
498
  if (true === $addressValidation) {
499
  $address->save();
500
  /** @var $message Mage_XmlConnect_Model_Simplexml_Element */
@@ -514,8 +531,8 @@ class Mage_XmlConnect_CustomerController extends Mage_XmlConnect_Controller_Acti
514
  } catch (Mage_Core_Exception $e) {
515
  $this->_message($e->getMessage(), self::MESSAGE_STATUS_ERROR);
516
  } catch (Exception $e) {
517
- Mage::logException($e);
518
  $this->_message($this->__('Can\'t save address.'), self::MESSAGE_STATUS_ERROR);
 
519
  }
520
  } else {
521
  $this->_message($this->__('Address data not specified.'), self::MESSAGE_STATUS_ERROR);
139
  */
140
  public function editAction()
141
  {
142
+ if (!$this->_isCustomerLoggedIn()) {
 
 
 
 
 
143
  return;
144
  }
145
  if ($this->getRequest()->isPost()) {
146
+ $customer = $this->_getSession()->getCustomer();
 
 
147
 
148
+ /* @var $customerForm Mage_Customer_Model_Form */
149
+ $customerForm = Mage::getModel('customer/form');
150
+ $customerForm->setFormCode('customer_account_edit')->setEntity($customer);
151
+ $customerData = $customerForm->extractData($this->getRequest());
152
 
153
+ $errors = array();
154
+ $customerErrors = $customerForm->validateData($customerData);
155
+ if ($customerErrors !== true) {
156
+ $errors = array_merge($customerErrors, $errors);
157
+ } else {
158
+ $customerForm->compactData($customerData);
159
+ $customerErrors = $customer->validate();
160
+ if (is_array($customerErrors)) {
161
+ $errors = array_merge($customerErrors, $errors);
162
  }
163
  }
164
 
 
 
 
 
 
 
 
 
 
 
 
 
165
  if ($this->getRequest()->getParam('change_password')) {
166
  $currPass = $this->getRequest()->getPost('current_password');
167
  $newPass = $this->getRequest()->getPost('password');
235
  if ($request->isPost()) {
236
  $errors = array();
237
 
238
+ /** @var $customer Mage_Customer_Model_Customer */
239
+ $customer = Mage::registry('current_customer');
240
+ if (is_null($customer)) {
241
+ $customer = Mage::getModel('customer/customer');
242
  }
243
 
244
+ /** @var $customerForm Mage_Customer_Model_Form */
245
+ $customerForm = Mage::getModel('customer/form');
246
+
247
+ /** Check if registration from checkout page */
248
+ if ($this->getRequest()->getParam('checkout_page_registration', false)) {
249
+ $formCode = 'checkout_register';
250
+ } else {
251
+ $formCode = 'customer_account_create';
252
  }
253
+ $customerForm->setFormCode($formCode)->setEntity($customer);
254
+
255
+ $customerData = $customerForm->extractData($this->getRequest());
256
 
257
  if ($this->getRequest()->getParam('is_subscribed', false)) {
258
  $customer->setIsSubscribed(1);
264
  $customer->getGroupId();
265
 
266
  try {
267
+ $customerErrors = $customerForm->validateData($customerData);
268
+ if ($customerErrors !== true) {
269
+ $errors = array_merge($customerErrors, $errors);
270
+ } else {
271
+ $customerForm->compactData($customerData);
272
+ $customer->setPassword($this->getRequest()->getPost('password'));
273
+ $customer->setConfirmation($this->getRequest()->getPost('confirmation'));
274
+ $customerErrors = $customer->validate();
275
+ if (is_array($customerErrors)) {
276
+ $errors = array_merge($customerErrors, $errors);
277
+ }
278
  }
279
 
280
  $validationResult = count($errors) == 0;
474
  if (!$this->_isCustomerLoggedIn()) {
475
  return;
476
  }
477
+
478
  // Save data
479
  if ($this->getRequest()->isPost()) {
480
+ $customer = $this->_getSession()->getCustomer();
481
+ /* @var $address Mage_Customer_Model_Address */
482
+ $address = Mage::getModel('customer/address');
483
+ $addressId = $this->getRequest()->getParam('id');
 
 
484
  if ($addressId) {
485
+ $existsAddress = $customer->getAddressById($addressId);
486
+ if ($existsAddress->getId() && $existsAddress->getCustomerId() == $customer->getId()) {
487
+ $address->setId($existsAddress->getId());
 
 
 
 
488
  }
489
  }
490
 
491
  $errors = array();
492
 
493
+ /* @var $addressForm Mage_Customer_Model_Form */
494
+ $addressForm = Mage::getModel('customer/form');
495
+ $addressForm->setFormCode('customer_address_edit')->setEntity($address);
496
+ $addressData = $addressForm->extractData($this->getRequest());
497
+ $addressErrors = $addressForm->validateData($addressData);
498
+ if ($addressErrors !== true) {
499
+ $errors = $addressErrors;
500
+ }
501
+
502
  try {
503
+ $addressForm->compactData($addressData);
504
+ $address->setCustomerId($customer->getId())
505
+ ->setIsDefaultBilling($this->getRequest()->getParam('default_billing', false))
506
+ ->setIsDefaultShipping($this->getRequest()->getParam('default_shipping', false));
507
+
508
+ $addressErrors = $address->validate();
509
+ if ($addressErrors !== true) {
510
+ $errors = array_merge($errors, $addressErrors);
511
+ }
512
+
513
+ $addressValidation = count($errors) == 0;
514
+
515
  if (true === $addressValidation) {
516
  $address->save();
517
  /** @var $message Mage_XmlConnect_Model_Simplexml_Element */
531
  } catch (Mage_Core_Exception $e) {
532
  $this->_message($e->getMessage(), self::MESSAGE_STATUS_ERROR);
533
  } catch (Exception $e) {
 
534
  $this->_message($this->__('Can\'t save address.'), self::MESSAGE_STATUS_ERROR);
535
+ Mage::logException($e);
536
  }
537
  } else {
538
  $this->_message($this->__('Address data not specified.'), self::MESSAGE_STATUS_ERROR);
app/code/core/Mage/XmlConnect/controllers/Paypal/MeclController.php CHANGED
@@ -111,12 +111,16 @@ class Mage_XmlConnect_Paypal_MeclController extends Mage_XmlConnect_Controller_A
111
  try {
112
  $this->_initCheckout();
113
 
114
- $token = $this->_checkout->start(
115
- Mage::getUrl('*/*/return'),
116
- Mage::getUrl('*/*/cancel')
117
- );
 
 
 
 
118
 
119
- if ($token && $this->_checkout->getRedirectUrl()) {
120
  $this->_initToken($token);
121
  /** @var $message Mage_XmlConnect_Model_Simplexml_Element */
122
  $message = Mage::getModel('xmlconnect/simplexml_element', '<message></message>');
@@ -124,18 +128,12 @@ class Mage_XmlConnect_Paypal_MeclController extends Mage_XmlConnect_Controller_A
124
  $message->addChild('token', $token);
125
  $this->getResponse()->setBody($message->asNiceXml());
126
  } else {
127
- $this->_message(
128
- $this->__('Token has not been set.'),
129
- self::MESSAGE_STATUS_ERROR
130
- );
131
  }
132
  } catch (Mage_Core_Exception $e) {
133
  $this->_message($e->getMessage(), self::MESSAGE_STATUS_ERROR);
134
  } catch (Exception $e) {
135
- $this->_message(
136
- $this->__('Unable to start Mobile Express Checkout.'),
137
- self::MESSAGE_STATUS_ERROR
138
- );
139
  Mage::logException($e);
140
  }
141
  }
@@ -294,8 +292,34 @@ class Mage_XmlConnect_Paypal_MeclController extends Mage_XmlConnect_Controller_A
294
  }
295
 
296
  $this->_initCheckout();
297
- $order = $this->_checkout->placeOrder($this->_initToken());
298
- $this->_getCheckoutSession()->clear();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
299
  $this->_initToken(false); // no need in token anymore
300
 
301
  /** @var $message Mage_XmlConnect_Model_Simplexml_Element */
@@ -303,10 +327,10 @@ class Mage_XmlConnect_Paypal_MeclController extends Mage_XmlConnect_Controller_A
303
  $message->addChild('status', self::MESSAGE_STATUS_SUCCESS);
304
 
305
  $text = $this->__('Thank you for your purchase! ');
306
- $text .= $this->__('Your order # is: %s. ', $order->getIncrementId());
307
  $text .= $this->__('You will receive an order confirmation email with details of your order and a link to track its progress.');
308
  $message->addChild('text', $text);
309
- $message->addChild('order_id', $order->getId());
310
  $this->getResponse()->setBody($message->asNiceXml());
311
  return;
312
  } catch (Mage_Core_Exception $e) {
@@ -351,9 +375,14 @@ class Mage_XmlConnect_Paypal_MeclController extends Mage_XmlConnect_Controller_A
351
  protected function _initCheckout()
352
  {
353
  $quote = $this->_getQuote();
354
- if (!$quote->hasItems()) {
355
  Mage::throwException($this->__('Unable to initialize PayPal Mobile Express Checkout.'));
356
  }
 
 
 
 
 
357
 
358
  $this->_checkout = Mage::getSingleton($this->_checkoutType, array(
359
  'config' => $this->_config, 'quote' => $quote
111
  try {
112
  $this->_initCheckout();
113
 
114
+ $customer = Mage::getSingleton('customer/session')->getCustomer();
115
+ if ($customer && $customer->getId()) {
116
+ $this->_checkout->setCustomerWithAddressChange(
117
+ $customer, null, $this->_getQuote()->getShippingAddress()
118
+ );
119
+ }
120
+
121
+ $token = $this->_checkout->start(Mage::getUrl('*/*/return'), Mage::getUrl('*/*/cancel'));
122
 
123
+ if ($token) {
124
  $this->_initToken($token);
125
  /** @var $message Mage_XmlConnect_Model_Simplexml_Element */
126
  $message = Mage::getModel('xmlconnect/simplexml_element', '<message></message>');
128
  $message->addChild('token', $token);
129
  $this->getResponse()->setBody($message->asNiceXml());
130
  } else {
131
+ $this->_message($this->__('Token has not been set.'), self::MESSAGE_STATUS_ERROR);
 
 
 
132
  }
133
  } catch (Mage_Core_Exception $e) {
134
  $this->_message($e->getMessage(), self::MESSAGE_STATUS_ERROR);
135
  } catch (Exception $e) {
136
+ $this->_message($this->__('Unable to start Mobile Express Checkout.'), self::MESSAGE_STATUS_ERROR);
 
 
 
137
  Mage::logException($e);
138
  }
139
  }
292
  }
293
 
294
  $this->_initCheckout();
295
+ $this->_checkout->place($this->_initToken());
296
+
297
+ // prepare session to success or cancellation page
298
+ $session = $this->_getCheckoutSession();
299
+ $session->clearHelperData();
300
+
301
+ // "last successful quote"
302
+ $quoteId = $this->_getQuote()->getId();
303
+ $session->setLastQuoteId($quoteId)->setLastSuccessQuoteId($quoteId);
304
+
305
+ // an order may be created
306
+ $order = $this->_checkout->getOrder();
307
+ if ($order) {
308
+ $orderId = $order->getId();
309
+ $realOrderId = $order->getIncrementId();
310
+ $session->setLastOrderId($order->getId())->setLastRealOrderId($order->getIncrementId());
311
+ }
312
+
313
+ // recurring profiles may be created along with the order or without it
314
+ $profiles = $this->_checkout->getRecurringPaymentProfiles();
315
+ if ($profiles) {
316
+ $ids = array();
317
+ foreach($profiles as $profile) {
318
+ $ids[] = $profile->getId();
319
+ }
320
+ $session->setLastRecurringProfileIds($ids);
321
+ }
322
+
323
  $this->_initToken(false); // no need in token anymore
324
 
325
  /** @var $message Mage_XmlConnect_Model_Simplexml_Element */
327
  $message->addChild('status', self::MESSAGE_STATUS_SUCCESS);
328
 
329
  $text = $this->__('Thank you for your purchase! ');
330
+ $text .= $this->__('Your order # is: %s. ', $realOrderId);
331
  $text .= $this->__('You will receive an order confirmation email with details of your order and a link to track its progress.');
332
  $message->addChild('text', $text);
333
+ $message->addChild('order_id', $orderId);
334
  $this->getResponse()->setBody($message->asNiceXml());
335
  return;
336
  } catch (Mage_Core_Exception $e) {
375
  protected function _initCheckout()
376
  {
377
  $quote = $this->_getQuote();
378
+ if (!$quote->hasItems() || $quote->getHasError()) {
379
  Mage::throwException($this->__('Unable to initialize PayPal Mobile Express Checkout.'));
380
  }
381
+ if (!$quote->validateMinimumAmount()) {
382
+ $error = Mage::getStoreConfig('sales/minimum_order/error_message');
383
+ Mage::throwException($error);
384
+ }
385
+ $this->_getCheckoutSession()->setCartWasUpdated(false);
386
 
387
  $this->_checkout = Mage::getSingleton($this->_checkoutType, array(
388
  'config' => $this->_config, 'quote' => $quote
app/code/core/Mage/XmlConnect/controllers/Paypal/MepController.php CHANGED
@@ -56,7 +56,7 @@ class Mage_XmlConnect_Paypal_MepController extends Mage_XmlConnect_Controller_Ac
56
  {
57
  parent::preDispatch();
58
  if (!Mage::getSingleton('customer/session')->isLoggedIn()
59
- && !Mage::getSingleton('checkout/session')->getQuote()->isAllowedGuestCheckout()
60
  ) {
61
  $this->setFlag('', self::FLAG_NO_DISPATCH, true);
62
  $this->_message(
@@ -179,6 +179,10 @@ class Mage_XmlConnect_Paypal_MepController extends Mage_XmlConnect_Controller_Ac
179
  $data = $this->getRequest()->getPost('shipping_method', '');
180
  $this->_getQuote()->getShippingAddress()->setShippingMethod($data)->setCollectShippingRates(true)->save();
181
 
 
 
 
 
182
  $result = $this->_checkout->saveShippingMethod($data);
183
 
184
  if (!isset($result['error'])) {
@@ -276,7 +280,6 @@ class Mage_XmlConnect_Paypal_MepController extends Mage_XmlConnect_Controller_Ac
276
  $text .= $this->__('Your order # is: %s. ', $orderId);
277
  $text .= $this->__('You will receive an order confirmation email with details of your order and a link to track its progress.');
278
  $message->addChild('text', $text);
279
-
280
  $message->addChild('order_id', $orderId);
281
  $this->getResponse()->setBody($message->asNiceXml());
282
  return;
@@ -296,7 +299,6 @@ class Mage_XmlConnect_Paypal_MepController extends Mage_XmlConnect_Controller_Ac
296
  */
297
  protected function _initCheckout()
298
  {
299
-
300
  $quote = $this->_getQuote();
301
  if (!$quote->hasItems() || $quote->getHasError()) {
302
  Mage::throwException($this->__('Unable to initialize MEP Checkout.'));
@@ -317,7 +319,7 @@ class Mage_XmlConnect_Paypal_MepController extends Mage_XmlConnect_Controller_Ac
317
  */
318
  protected function _getCheckoutSession()
319
  {
320
- return Mage::getSingleton('checkout/session');
321
  }
322
 
323
  /**
56
  {
57
  parent::preDispatch();
58
  if (!Mage::getSingleton('customer/session')->isLoggedIn()
59
+ && !Mage::getSingleton('xmlconnect/corefix_checkout_session')->getQuote()->isAllowedGuestCheckout()
60
  ) {
61
  $this->setFlag('', self::FLAG_NO_DISPATCH, true);
62
  $this->_message(
179
  $data = $this->getRequest()->getPost('shipping_method', '');
180
  $this->_getQuote()->getShippingAddress()->setShippingMethod($data)->setCollectShippingRates(true)->save();
181
 
182
+ if (isset($data['region'])) {
183
+ $data['region_id'] = $data['region'];
184
+ }
185
+
186
  $result = $this->_checkout->saveShippingMethod($data);
187
 
188
  if (!isset($result['error'])) {
280
  $text .= $this->__('Your order # is: %s. ', $orderId);
281
  $text .= $this->__('You will receive an order confirmation email with details of your order and a link to track its progress.');
282
  $message->addChild('text', $text);
 
283
  $message->addChild('order_id', $orderId);
284
  $this->getResponse()->setBody($message->asNiceXml());
285
  return;
299
  */
300
  protected function _initCheckout()
301
  {
 
302
  $quote = $this->_getQuote();
303
  if (!$quote->hasItems() || $quote->getHasError()) {
304
  Mage::throwException($this->__('Unable to initialize MEP Checkout.'));
319
  */
320
  protected function _getCheckoutSession()
321
  {
322
+ return Mage::getSingleton('xmlconnect/corefix_checkout_session');
323
  }
324
 
325
  /**
app/code/core/Mage/XmlConnect/controllers/WishlistController.php CHANGED
@@ -151,16 +151,16 @@ class Mage_XmlConnect_WishlistController extends Mage_XmlConnect_Controller_Acti
151
  }
152
 
153
  try {
154
- $item = $wishlist->addNewItem($product->getId());
155
  if (strlen(trim((string)$request->getParam('description')))) {
156
- $item->setDescription($request->getParam('description'))->save();
157
  }
158
  $wishlist->save();
159
 
160
  Mage::dispatchEvent('wishlist_add_product', array(
161
  'wishlist' => $wishlist,
162
  'product' => $product,
163
- 'item' => $item
164
  ));
165
 
166
  Mage::helper('wishlist')->calculate();
@@ -172,7 +172,6 @@ class Mage_XmlConnect_WishlistController extends Mage_XmlConnect_Controller_Acti
172
  } catch (Mage_Core_Exception $e) {
173
  $this->_message($e->getMessage(), self::MESSAGE_STATUS_ERROR);
174
  } catch (Exception $e) {
175
- Mage::logException($e);
176
  $this->_message(
177
  $this->__('An error occurred while adding item to wishlist.'), self::MESSAGE_STATUS_ERROR
178
  );
151
  }
152
 
153
  try {
154
+ $result = $wishlist->addNewItem($product->getId());
155
  if (strlen(trim((string)$request->getParam('description')))) {
156
+ $result->setDescription($request->getParam('description'))->save();
157
  }
158
  $wishlist->save();
159
 
160
  Mage::dispatchEvent('wishlist_add_product', array(
161
  'wishlist' => $wishlist,
162
  'product' => $product,
163
+ 'item' => $result
164
  ));
165
 
166
  Mage::helper('wishlist')->calculate();
172
  } catch (Mage_Core_Exception $e) {
173
  $this->_message($e->getMessage(), self::MESSAGE_STATUS_ERROR);
174
  } catch (Exception $e) {
 
175
  $this->_message(
176
  $this->__('An error occurred while adding item to wishlist.'), self::MESSAGE_STATUS_ERROR
177
  );
app/code/core/Mage/XmlConnect/etc/config.xml CHANGED
@@ -233,10 +233,8 @@
233
  <paypal_mecl>
234
  <active>1</active>
235
  <model>xmlconnect/payment_method_paypal_mecl</model>
236
- <payment_action>Sale</payment_action>
237
  <title>PayPal Mobile Express Checkout Library</title>
238
  <allowspecific>0</allowspecific>
239
- <solution_type>Sole</solution_type>
240
  <group>paypal</group>
241
  <line_items_enabled>1</line_items_enabled>
242
  </paypal_mecl>
233
  <paypal_mecl>
234
  <active>1</active>
235
  <model>xmlconnect/payment_method_paypal_mecl</model>
 
236
  <title>PayPal Mobile Express Checkout Library</title>
237
  <allowspecific>0</allowspecific>
 
238
  <group>paypal</group>
239
  <line_items_enabled>1</line_items_enabled>
240
  </paypal_mecl>
app/code/core/Mage/XmlConnect/sql/xmlconnect_setup/mysql4-data-upgrade-1.6.0.0-1.6.0.0.1.php CHANGED
@@ -39,11 +39,12 @@ $installer = $this;
39
 
40
  /** @var $configModel Mage_XmlConnect_Model_Application */
41
  $configModel = Mage::getModel('xmlconnect/configData');
42
- $select = $configModel->getResource()->getReadConnection()->select()->from(
43
- $configTableName, array('application_id')
44
- )->group('application_id')->where('category=?', Mage_XmlConnect_Model_Application::DEPRECATED_CONFIG_FLAG);
 
45
 
46
- $result = $configModel->getResource()->getReadConnection()->fetchCol($select);
47
 
48
  if (count($result)) {
49
  Mage::getModel('xmlconnect/images')->dataUpgradeOldConfig($result);
39
 
40
  /** @var $configModel Mage_XmlConnect_Model_Application */
41
  $configModel = Mage::getModel('xmlconnect/configData');
42
+ $select = $configModel->getResource()->getReadConnection()->select()->from($configTableName, array(
43
+ 'application_id', 'value'
44
+ ))->where('category=?', Mage_XmlConnect_Model_Application::DEPRECATED_CONFIG_FLAG)
45
+ ->where('path=?', 'native/navigationBar/icon');
46
 
47
+ $result = $configModel->getResource()->getReadConnection()->fetchAll($select);
48
 
49
  if (count($result)) {
50
  Mage::getModel('xmlconnect/images')->dataUpgradeOldConfig($result);
app/code/core/Mage/XmlConnect/sql/xmlconnect_setup/mysql4-upgrade-1.5.9.9-1.6.0.0.php CHANGED
@@ -36,6 +36,7 @@ $historyTableName = $installer->getTable('xmlconnect/history');
36
  $templateTableName = $installer->getTable('xmlconnect/template');
37
  $queueTableName = $installer->getTable('xmlconnect/queue');
38
  $storeTableName = $installer->getTable('core/store');
 
39
  /**
40
  * Drop foreign keys
41
  */
@@ -355,7 +356,7 @@ $installer->run("ALTER TABLE `{$appTableName}` ADD UNIQUE `UNQ_XMLCONNECT_APPLIC
355
 
356
  $installer->run("
357
  ALTER TABLE `{$configTableName}`
358
- ADD UNIQUE KEY `UNQ_XMLCONNECT_CONFIG` (`application_id`,`category`,`path`)
359
  ");
360
 
361
  $installer->run("
@@ -376,7 +377,7 @@ ALTER TABLE `{$configTableName}`
376
  ADD CONSTRAINT `FK_APPLICATION_ID` FOREIGN KEY (`application_id`)
377
  REFERENCES `{$appTableName}` (`application_id`)
378
  ON DELETE CASCADE
379
- ON UPDATE CASCADE;
380
  ");
381
 
382
  $installer->run("
@@ -384,7 +385,7 @@ ALTER TABLE `{$configTableName}`
384
  ADD CONSTRAINT `FK_31EE36D814216200D7C0723145AC510E` FOREIGN KEY (`application_id`)
385
  REFERENCES `{$appTableName}` (`application_id`)
386
  ON DELETE CASCADE
387
- ON UPDATE CASCADE;
388
  ");
389
 
390
  $installer->run("
36
  $templateTableName = $installer->getTable('xmlconnect/template');
37
  $queueTableName = $installer->getTable('xmlconnect/queue');
38
  $storeTableName = $installer->getTable('core/store');
39
+
40
  /**
41
  * Drop foreign keys
42
  */
356
 
357
  $installer->run("
358
  ALTER TABLE `{$configTableName}`
359
+ ADD UNIQUE `UNQ_XMLCONNECT_CONFIG` (`application_id`,`category`,`path`)
360
  ");
361
 
362
  $installer->run("
377
  ADD CONSTRAINT `FK_APPLICATION_ID` FOREIGN KEY (`application_id`)
378
  REFERENCES `{$appTableName}` (`application_id`)
379
  ON DELETE CASCADE
380
+ ON UPDATE CASCADE
381
  ");
382
 
383
  $installer->run("
385
  ADD CONSTRAINT `FK_31EE36D814216200D7C0723145AC510E` FOREIGN KEY (`application_id`)
386
  REFERENCES `{$appTableName}` (`application_id`)
387
  ON DELETE CASCADE
388
+ ON UPDATE CASCADE
389
  ");
390
 
391
  $installer->run("
app/design/adminhtml/default/default/template/xmlconnect/edit/tab/content.phtml CHANGED
@@ -40,7 +40,7 @@
40
  <tr class="headings">
41
  <th><?php echo $this->__('Label') ?></th>
42
  <th><?php echo $this->__('Get Content from CMS Page') ?></th>
43
- <th><?php echo $this->getChildHtml('add_button') ?></th>
44
  </tr>
45
  </thead>
46
  <tbody id='content_pages'>
@@ -71,7 +71,7 @@
71
  '</span>' +
72
  '</td>' +
73
  '<td class="label">' +
74
- '<?php echo $this->getChildHtml('delete_button') ?>' +
75
  '</td>' +
76
  '</tr>';
77
 
@@ -90,7 +90,7 @@
90
  '</span>' +
91
  '</td>' +
92
  '<td class="label">' +
93
- '<?php echo $this->getChildHtml('delete_button') ?>' +
94
  '</td>' +
95
  '</tr>';
96
 
40
  <tr class="headings">
41
  <th><?php echo $this->__('Label') ?></th>
42
  <th><?php echo $this->__('Get Content from CMS Page') ?></th>
43
+ <th><?php echo $this->getAddButtonHtml() ?></th>
44
  </tr>
45
  </thead>
46
  <tbody id='content_pages'>
71
  '</span>' +
72
  '</td>' +
73
  '<td class="label">' +
74
+ '<?php echo $this->getDeleteButtonHtml() ?>' +
75
  '</td>' +
76
  '</tr>';
77
 
90
  '</span>' +
91
  '</td>' +
92
  '<td class="label">' +
93
+ '<?php echo $this->getDeleteButtonHtml() ?>' +
94
  '</td>' +
95
  '</tr>';
96
 
app/design/adminhtml/default/default/template/xmlconnect/edit/tab/design/autocomplete.phtml CHANGED
@@ -32,11 +32,11 @@
32
  <img src="<?php echo Mage::getSingleton('catalog/product_media_config')->getMediaUrl($item['image']); ?>" width="45" height="45" alt="" />
33
  </div>
34
  <?php endif; ?>
35
- <input type="hidden" name="<?php echo $item['id']; ?>" value="<?php echo $this->escapeHtml($item['name']) ?>">
36
- <strong><?php echo $this->escapeHtml($this->__('%s id:', $item['label']) . ' ' . $item['item_id']); ?></strong>
37
  <p><?php echo $this->escapeHtml($item['name']) ?></p>
38
  <span class="informal"><?php echo $this->escapeHtml($item['description']) ?></span>
39
- <span class="informal"><a onclick="event.stopPropagation();" href="<?php echo $item['url'] ?>" target="_blank"/><?php echo $this->__('Edit') ?></a></span>
40
  </li>
41
  <?php endforeach ?>
42
  </ul>
32
  <img src="<?php echo Mage::getSingleton('catalog/product_media_config')->getMediaUrl($item['image']); ?>" width="45" height="45" alt="" />
33
  </div>
34
  <?php endif; ?>
35
+ <input type="hidden" name="<?php echo $item['id']; ?>" value="<?php echo $this->htmlEscape($item['name']) ?>">
36
+ <strong><?php echo $this->__('%s id:', $item['label']) . ' ' . $item['item_id']; ?></strong>
37
  <p><?php echo $this->escapeHtml($item['name']) ?></p>
38
  <span class="informal"><?php echo $this->escapeHtml($item['description']) ?></span>
39
+ <span class="informal"><a onclick="event.stopPropagation();" href="<?php echo $item['url'] ?>" target="_blank"/>Edit</a></span>
40
  </li>
41
  <?php endforeach ?>
42
  </ul>
app/design/adminhtml/default/default/template/xmlconnect/form/element/addrow.phtml CHANGED
@@ -153,4 +153,4 @@ function observeButtonField(element) {
153
  }
154
 
155
  // ]]>
156
- </script>
153
  }
154
 
155
  // ]]>
156
+ </script>
app/design/adminhtml/default/default/template/xmlconnect/submission/app_icons_preview.phtml CHANGED
@@ -27,6 +27,8 @@
27
 
28
  <script type="text/javascript">
29
  // <![CDATA[
 
 
30
  <?php $images = $this->getImages(); ?>
31
  <?php if (is_array($images)) : ?>
32
  <?php foreach($images as $id => $src) : ?>
27
 
28
  <script type="text/javascript">
29
  // <![CDATA[
30
+
31
+ <?php //$images = array ('conf/submit/loaderImage' => '/media/xmlconnect/home_screen.png'); ?>
32
  <?php $images = $this->getImages(); ?>
33
  <?php if (is_array($images)) : ?>
34
  <?php foreach($images as $id => $src) : ?>
package.xml CHANGED
@@ -1,19 +1,19 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Magento_Mobile</name>
4
- <version>1.4.1.0.23.0</version>
5
  <stability>stable</stability>
6
  <license>mixed</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Magento Mobile Xml Interface</summary>
10
  <description>An integration magento with mobile applications (e.g. iPhone, Android, iPad)</description>
11
- <notes>1.4.1.0.23.0 version of package
12
  internal svn revision #3cd616975d5927903d4f34bde0d9e5e2e727e9ba</notes>
13
  <authors><author><name>Magento Core Team</name><user>auto-converted</user><email>core@magentocommerce.com</email></author></authors>
14
  <date>2012-05-31</date>
15
- <time>14:47:59</time>
16
- <contents><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="images"><dir name="xmlconnect"><dir name="design_default"><file name="accordion_open.png" hash="4c89d903ebbc61ee295ef64a60724b10"/><file name="accordion_open_android.png" hash="7ef2f1d193990c3f4c2c90aae9ab3281"/><file name="accordion_open_android_l.png" hash="bc27688afbfd866c618477ea2c7bf0ee"/><file name="accordion_open_android_p.png" hash="2e4549cba575c12ef2a39c12e9ffe173"/><file name="accordion_open_ipad_l.png" hash="dcdda97da6556393b972d6dae8d6bac5"/><file name="accordion_open_ipad_p.png" hash="55cca08a0ab79047961858789ff8c3a7"/><file name="banner_1_2.png" hash="0637d31df6b5a434c9a332ee46122ef4"/><file name="banner_android.png" hash="02695661b8e50e1a001c3369622f322f"/><file name="banner_ipad.png" hash="c1d59a6ec67da1bb76c5142453da7acf"/><file name="banner_ipad_l.png" hash="04e850d481a9ae902f33fd8c1f89cbf0"/><file name="smallIcon_1_6.png" hash="c1ce9e289eaf2c0504d502928693bd89"/></dir><dir name="mobile_preview"><dir name="android"><file name="background_home_landscape.jpg" hash="1f79a1f42ca4e2cf6010ab6c3ef66aa4"/><file name="background_portrait.jpg" hash="197b15e6455ad1a85e1bad6595371fa3"/><file name="bg_button_up.gif" hash="204f590a88933c930b7fc92963accfab"/><file name="bg_catalog_filters.png" hash="7464191ebaf576b73a3c021eb1cfcc25"/><file name="bg_catalog_filters_shadow.png" hash="5021ad60917190026d85fae1d33bdaa9"/><file name="bg_cat_item.png" hash="2859b45c387b66243d4af2ba973b2ae1"/><file name="bg_frame.gif" hash="7062ed9b7563fc658f49ce7cfdd34f1c"/><file name="bg_header.png" hash="d4a46c8850d1d89259921b1c28b5bce1"/><file name="bg_header_catalog.png" hash="c1080cd18a89e21da18fdc6955bf6230"/><file name="bg_header_home.png" hash="dfce0445ca7c7a45c7914a986b596ce0"/><file name="bg_home_header.png" hash="8bc1887a0c5760cc47b77b8a7a320426"/><file name="bg_logo.png" hash="02695661b8e50e1a001c3369622f322f"/><file name="bg_page.png" hash="d65f1d123655c2eaf3bb4a1e6035a08d"/><file name="bg_star.png" hash="fc6de6c4e0ed3478b8840e1ab81da725"/><file name="bg_star_empty.png" hash="3f0421fb8c8f6c4be6ca501168a881e8"/><file name="bg_status_bar.png" hash="52b41106451ac34672f82338bbc5370c"/><file name="ico_account.png" hash="c1fd338c74fcf483155acbd37c430807"/><file name="ico_home.png" hash="2de37f640463b354d68945320bfe3e4f"/><file name="ico_search.png" hash="8b0dd17a3e9c3328e66204fe379c66aa"/><file name="product_image.png" hash="dd975b128ba303e0ae2adc9772e0433c"/><file name="product_image_1.jpg" hash="8994979d4dcc1f339c73cd1f44398a7d"/><file name="product_image_2.jpg" hash="26d6599bdb35d80b25a1e903b40cfa19"/><file name="product_image_3.jpg" hash="d7c6d05196a84341afe0025d01b9dc61"/><file name="product_image_4.jpg" hash="2a88ead3dbbeff1d40168db692841f2f"/></dir><dir name="custom_icons"><file name="account.png" hash="0498d73e47ed47179e5546dc15c17dc7"/><file name="actionsBg.jpg" hash="ee3db742cbec9a436ba46118c8a01303"/><file name="addToCart.png" hash="e33876648546e99d875ca92bd2cd78e9"/><file name="addToWishlist.png" hash="1018602b7c5e0e11f0427ace96fd7d52"/><file name="background.gif" hash="bd92833eb2eb32e4a0282cea153ac13f"/><file name="buttons.gif" hash="0cd19a9d9178976906161ea100cba958"/><file name="cart.png" hash="815b4c64fae21b4c162525ece76dc44d"/><file name="home.png" hash="9e473791b022b7c2dfc7d29b1b6de887"/><file name="image-bg.png" hash="14bde5cf8b00dc5f6c60e52a0fa964dc"/><file name="logo-small.png" hash="9b3477a4552bcb878b4943aae5351622"/><file name="rowBgIcon.gif" hash="9ee89b961ae2bb047672ba5d2d2677c6"/><file name="search.png" hash="10bfa7ec3361ce7cbcc5d25087f181eb"/><file name="shop.png" hash="e6639a9fdc143363da82a7d78e126f1c"/><file name="star-active.png" hash="d4ab959a92bda610527a3e3942c4c0b0"/><file name="star-inactive.png" hash="f7fb99710be4c03ac23b1206f20e761d"/><file name="tellAFriend.png" hash="46f8ef48b29f245977d66d9312d87e70"/><file name="viewDetails.png" hash="9bacc63bcc483d3db5614a026d9391f6"/><file name="viewGallery.png" hash="304f3d03949d07055bc056359fe17763"/></dir><dir name="gradients"><file name="footer.png" hash="31a2feed50ef9c8637b412c4211f8300"/><file name="header.png" hash="5386da930a944cd75562216249cce08a"/><file name="header2.png" hash="ad5a2dc6ec93914e925cfe2d43fb30a2"/><file name="header3.png" hash="920ad8c6903e90323a57fb02dca37280"/><file name="item-bg.png" hash="a14886d1f9e14284ac6b4f1b61e68646"/><file name="sort-bg.png" hash="b8053bb772e849909e5b87e4fd1ebbe4"/></dir><dir name="icons"><file name="account.png" hash="0498d73e47ed47179e5546dc15c17dc7"/><file name="cart.png" hash="815b4c64fae21b4c162525ece76dc44d"/><file name="home.png" hash="9e473791b022b7c2dfc7d29b1b6de887"/><file name="more.png" hash="f3662ae29923b87eba3a729192aa3df3"/><file name="page.png" hash="2291d77f21de042040bc0864be40138b"/><file name="search.png" hash="10bfa7ec3361ce7cbcc5d25087f181eb"/><file name="shop.png" hash="e6639a9fdc143363da82a7d78e126f1c"/></dir><dir name="ipad"><file name="background_home_landscape.jpg" hash="9e3ef117985113b804531142d539b60a"/><file name="background_portrait.jpg" hash="bdf9e034fd30b923086e6c622ea10451"/><file name="banner_image.png" hash="693bb9d118155a146b21ce9fcfba08da"/><file name="banner_image_l.png" hash="a070a40d57610b5cc7160fe894482a1c"/><file name="bg_catalog_header_hor.png" hash="f61a67aa288e1b8a8df7b4d4527c662e"/><file name="bg_content.jpg" hash="70ddfc8959d878d1231dc7cbee4a063c"/><file name="bg_filters_buttons.png" hash="02fcb0ed7a7268e9f64ebaf06235bc09"/><file name="bg_filters_tooltip.png" hash="3b05ca6e585acd3d766be01eeaa23d47"/><file name="bg_filters_wrap.png" hash="31288784fe95c67de9b45b44458b4155"/><file name="bg_filter_button.png" hash="728f1cd358446881ffd863eff12204a1"/><file name="bg_header.png" hash="e2cf5a575a27e6e4533e3c85e3472a82"/><file name="bg_home_content.jpg" hash="1d55a198279e4f2b163c98c18f699646"/><file name="bg_home_header.png" hash="00f2fbf96d2b915dcbcd921b0301ef3f"/><file name="bg_home_header_hor.png" hash="9bfef728ece003d5b3433d2623ea168c"/><file name="bg_home_products.png" hash="ac6a8a79b959a0c8298b1f607c0f0af8"/><file name="bg_home_shadow.png" hash="c54b071ca3e97a6ee67588ef74b7b44e"/><file name="bg_home_shadow_hor.png" hash="0d21a99c5c749d0e5070e3585ff4a23f"/><file name="bg_product_image.png" hash="4da74325c1a4ee1ca19b414e5d590f75"/><file name="bg_search.png" hash="6ee08d05d0c4ef9ed64b9914b821f408"/><file name="bg_sections.jpg" hash="0ee90005663aced09a9ce6385bdbce2c"/><file name="bg_status_bar.png" hash="17124d9d392bb8e37b202c80a595df54"/><file name="bg_status_bar_hor.png" hash="bd4a9f11ecb1c896145267731d8a951d"/><file name="i_cart.png" hash="1bbe0a0e54eed5bb14b9bfcce83da758"/><file name="i_info.png" hash="3f0fda8b294b67bf698badbcaa99150b"/><file name="i_login.png" hash="deb4089bdc61582c78c90ef192d577e8"/><file name="i_remove.png" hash="4923eb5e76b3c6ba6df5c667db816a0c"/><file name="logo.png" hash="49c19f59b459b6c0b3b99daa3fe7f932"/><file name="logo_big.png" hash="693bb9d118155a146b21ce9fcfba08da"/><file name="product_image.jpg" hash="2bb6c69129bcb18dc93e9f48605647c6"/><file name="sections_arrow.png" hash="7db7144083a31882e8a62cb9579f478f"/><file name="stars.png" hash="70d38cd9883d70e4f6b21ac4874b9868"/></dir><dir name="slider"><file name="actionsBg.jpg" hash="ee3db742cbec9a436ba46118c8a01303"/><file name="addToCart.png" hash="2a146be4bc63713df19cc353e030d44f"/><file name="addToWishlist.png" hash="9b23a4e0d9acfc79f314e9082f14c4de"/><file name="tellAFriend.png" hash="b7600fa2ae52bdb1d6bb86fe4d9f1773"/><file name="viewDetails.png" hash="90cf37c6dbbee1861350b4c05469e3ae"/><file name="viewGallery.png" hash="304f3d03949d07055bc056359fe17763"/></dir><dir name="sort_buttons"><file name="bg_button.png" hash="87d0f1b123f01c3aea3cb8a2b146306e"/><file name="buttons.gif" hash="2f14f1a3f0fb38790779c992a58654ae"/><file name="buttons.png" hash="b4a3f17370e03bf5d2a5cdf7800c25a7"/><file name="button_up.gif" hash="7ad527f99b9975d5634fb2d5cc99e6b3"/><file name="center-active.png" hash="5903988cd458cd794f23a212d51aa725"/><file name="center-inactive.png" hash="135b46aaa5c3b131a5a7e9c45c004e06"/><file name="filters.png" hash="3837ab6fcfe959833dd998533db1ca7f"/><file name="left-active.png" hash="86e94441b96a0d27d0b0a7e5108f86ed"/><file name="left-inactive.png" hash="0ddcb75aa9971cca39a5a65b4bdff8c4"/><file name="right-active.png" hash="320740ff608187301b06a96eab2f9e8e"/><file name="right-inactive.png" hash="cac4b39ab380353ffd5fdbcedb6e0a0a"/></dir><file name="1.gif" hash="817fd84187db3eee00799b0acf316457"/><file name="2.gif" hash="1a842d8f3ac25cfcdeab6c86dd8fea89"/><file name="3.gif" hash="207cd55e968c284bd52c86efdcdda1c7"/><file name="actionsBackground.png" hash="11faa8baee72f3e6a9a02a83915c8658"/><file name="actionsBg.png" hash="9acccd1980f17006942d74a718ebd7da"/><file name="arrow.png" hash="837259a7c365e46034dca728bffe9070"/><file name="background.gif" hash="bd92833eb2eb32e4a0282cea153ac13f"/><file name="background.png" hash="3717f4b4ba725701e2a0604129a3a815"/><file name="banner.png" hash="0637d31df6b5a434c9a332ee46122ef4"/><file name="btn-l.png" hash="92b2454528e9d39119038777cf53329c"/><file name="btn-r.png" hash="8c6aa9fd9203bc10822e0505f11e0c4d"/><file name="circle.png" hash="f4c116cb0554bf936d3b9ee38b7f3d1f"/><file name="grid.png" hash="23faa3f5572cdeb597c2bceedd93a7f8"/><file name="image-bg.png" hash="a588b9cced95a25fc18e28c775d9a001"/><file name="info.png" hash="3f0d2ed85b81e8251f294457c6bfa404"/><file name="lightStar.png" hash="b5dc40d5b793dae6a069357f49cccc24"/><file name="lightStar2.png" hash="75928926a6112540c9cb073157cb7d95"/><file name="lines-h.png" hash="ea3d95812c9838affc6df2f3a3cb1977"/><file name="lines-v.png" hash="9e3ffee29ba28477d50da9642019bc0a"/><file name="login-btn-left-alt.png" hash="71bb6c7d24252aace27bee711d7616f4"/><file name="login-btn-left.png" hash="cbbf9afc6e9fc433f57270e88b63f351"/><file name="login-btn-right.png" hash="438fcc598d012bf6d33184e95accfd24"/><file name="login-btn.png" hash="051ee2c1a8ce3f7b8de3293cd2e2ed85"/><file name="logo-small.png" hash="9b3477a4552bcb878b4943aae5351622"/><file name="logo_25.png" hash="ba41ed568d916175c32803b614442447"/><file name="men.png" hash="46d7d1773118ef0a27353e8a9f6719fe"/><file name="mm-frame.gif" hash="eebf30806f1dbf2118e7ec39a016c86d"/><file name="mobile-catalog.css" hash="80cbd74984354df2d86f4ad68b9123a3"/><file name="mobile-home.css" hash="b57641c73c4eae08e0a02cd7291d9465"/><file name="rowBgIcon.gif" hash="9ee89b961ae2bb047672ba5d2d2677c6"/><file name="slider.gif" hash="c6b87bf15b85b18c0515e2cbefaabe60"/><file name="smallIcon.png" hash="e76d2a6364042f41b3f35fc8cdc9c0ee"/><file name="star-active.png" hash="d4ab959a92bda610527a3e3942c4c0b0"/><file name="star-inactive.png" hash="f7fb99710be4c03ac23b1206f20e761d"/><file name="t-shirt.gif" hash="7505efdaabf13c4f8e26f7cfe15c8c96"/><file name="t-shirt.png" hash="46d7d1773118ef0a27353e8a9f6719fe"/><file name="women.png" hash="46d7d1773118ef0a27353e8a9f6719fe"/><file name="youth.png" hash="46d7d1773118ef0a27353e8a9f6719fe"/></dir><file name="btn_edit.gif" hash="e7ecc9fea5c3813957814050508507a5"/><file name="dropdown-arrow.gif" hash="332e99ca6b4d1e0d39972e04fb0b2395"/><file name="empty.png" hash="23dc9dc3c4751f83c2df7a5c42668824"/><file name="full-arrow-left.gif" hash="8ec91b60d38d1a16cba7670f2088a5c7"/><file name="full-arrow.gif" hash="36ddff0fca1c7d8900cb3633e0a30cea"/><file name="gel_green.png" hash="591959d831e8e42c9175d12a88f0bae2"/><file name="gel_red.png" hash="db442c023014df9da32b84bc1bb5a39f"/><file name="l-arrow.gif" hash="ee49f7eab64657b5131953acef0238fd"/><file name="loading.gif" hash="5d25806dac7cbee5f894b13144783866"/><file name="r-arrow.gif" hash="d0429a9781e915fc9d9ca8875c470d32"/><file name="remove.png" hash="ee9497c5f31933eaab3e9e352495ee12"/><file name="small_logo.gif" hash="d5c8be7c0f16aac2549759c0228492d6"/><file name="swatch_black.gif" hash="fd31d6a3a435c8ad1f7c43f346bb47e4"/><file name="swatch_custom.gif" hash="fb34791a48366957a141e12b563888c2"/><file name="swatch_default.gif" hash="fb34791a48366957a141e12b563888c2"/><file name="swatch_funk_leaf.gif" hash="f1d3ba87efb742b47da879a6f48909c4"/><file name="swatch_hot_red.gif" hash="d9363d45dc2993c2fdc3ea43c5b6f71c"/><file name="swatch_sky_blue.gif" hash="ded1455db119d09a3aedd7474fd1875a"/><file name="swatch_user_custom.gif" hash="a24f31421a1ff56d1be0845f9a7c7020"/><file name="switch-arrow.gif" hash="dc7243962b341f366cd072d486687e6a"/><file name="tab_account.png" hash="27101fbaa78a07426be4768acc4c53ff"/><file name="tab_account_android.png" hash="77605cbc87f75ca17e91a5393765ceb1"/><file name="tab_account_ipad.png" hash="2997de5402195d0720309b73c6446fab"/><file name="tab_cart.png" hash="e803f760ee81cb35183f1122f388b774"/><file name="tab_cart_android.png" hash="477e97f8d03ea8aa674e952709f86578"/><file name="tab_empty.png" hash="bdd4cc355566e8861b2c45424ad94516"/><file name="tab_home.png" hash="dfa104e4da74e4a55d3c98d6ee0f7122"/><file name="tab_home_active.png" hash="bba5eb9bb724c84c1ede9e6f4bec3575"/><file name="tab_home_android.png" hash="1fefc6b070cc21b31b43194a7d85f9d9"/><file name="tab_info_android.png" hash="67fc19d8d926f7aede482f5a7083fc71"/><file name="tab_more.png" hash="2803359cb3e795bf67457e727aa16020"/><file name="tab_page.png" hash="ca05dbc42f944b8d4255f6675f6dd93a"/><file name="tab_search.png" hash="2cf29dbe325558353621b4241543204f"/><file name="tab_search_android.png" hash="932c2c568872fd9e119367c887f0539a"/><file name="tab_shop.png" hash="f36be0d3d27f2b37626247d3f6a55e2a"/><file name="tab_shop_active.png" hash="de907d6a52d477d4319649f9b0e2e4aa"/><file name="tab_shop_android.png" hash="e119fcd20f8cba856d550a64d775ddbb"/><file name="tmp-icon.gif" hash="58b759aecf3bdae26d5aaff7a0be5c90"/><file name="xmlconnect_tab.png" hash="cd99a7e01a42a6c82d866f7684faeb95"/></dir></dir><dir name="xmlconnect"><dir name="fonts"><file name="android_icons-webfont.eot" hash="2fc917efbfb3c933ccfddc108ef05f33"/><file name="android_icons-webfont.svg" hash="e8cb2b5ef019bbc2885c97ed0caaf2a0"/><file name="android_icons-webfont.ttf" hash="bc567dd7a381093fbb652c58cbad9430"/><file name="android_icons-webfont.woff" hash="8310b54d55bf84a8a3f3a86c22a51aef"/><file name="stars-webfont.eot" hash="019beb4b8ec19447657cf3106138bbe3"/><file name="stars-webfont.svg" hash="20cf0312c0b951d173d4531ea18abc6f"/><file name="stars-webfont.ttf" hash="d63d95e9adaf775f410437535622bf60"/><file name="stars-webfont.woff" hash="526d9756131c94139f0f1df5272197fd"/></dir><file name="boxes.css" hash="a3648c3516608a34ee7f53e447b1d9f4"/><file name="dropdown.css" hash="e5388a1fd90df2a2e3860516adef0367"/><file name="iestyles.css" hash="3e8a316291621eee4147373bd3003eb9"/><file name="mobile-android.css" hash="c932d2898a1ffd5545cfd76699260125"/><file name="mobile-catalog.css" hash="ca7c4c2c7643ca1249e00bbd45980fd2"/><file name="mobile-home.css" hash="b10c97acf5ac07c40d1db72b9d413841"/><file name="mobile-ipad-catalog.css" hash="2b35f47bb153c659640dd37beac277f1"/><file name="mobile-ipad-home.css" hash="270c8e4c8111de6c6173f9b6883c85ec"/><file name="remove.png" hash="b4903936d44dc498d2f32b72d9161ff0"/><file name="styles.css" hash="c87a56ddc3001a2e357d648695855f5f"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="images"><dir name="xmlconnect"><dir name="catalog"><dir name="category"><dir name="placeholder"><file name="image.jpg" hash="097ab8a3051bc037ea3de0e17f440540"/><file name="small_image.jpg" hash="f825d16f97a640453553c79c48ebaa73"/><file name="thumbnail.jpg" hash="b2b682d28a08a748a73d2cda70ab5a57"/></dir></dir></dir><file name="tab_account.png" hash="0498d73e47ed47179e5546dc15c17dc7"/><file name="tab_cart.png" hash="9055ba76e256a51d3fee53a8c41d5226"/><file name="tab_home.png" hash="07d0af93e167b9366d3d4fb3d6cdb31c"/><file name="tab_more.png" hash="b9fc21feb8d7655bc9c2985c37b0de2f"/><file name="tab_page.png" hash="ca05dbc42f944b8d4255f6675f6dd93a"/><file name="tab_search.png" hash="25e880eb2a4d06828e2e1c3f32d22400"/><file name="tab_shop.png" hash="fe602fc2e7093efef5ecc0b027a32d91"/></dir></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="xmlconnect.xml" hash="67820e2adb2d74a4f0c62efc01b18ecb"/></dir><dir name="template"><dir name="xmlconnect"><dir name="edit"><dir name="tab"><dir name="design"><dir name="preview"><file name="banner_rotator.phtml" hash="89da7cb3dabb72de16c95cd5bd6cc935"/><file name="catalog_android.phtml" hash="591050ccc493b364fb895055c986cd86"/><file name="catalog_hor_ipad.phtml" hash="cc81292b0dfa7aa3e6f39f792b74b80e"/><file name="catalog_ipad.phtml" hash="8cc888f4bbae4ab9fb10f4b70e8b8515"/><file name="catalog_iphone.phtml" hash="7112c646bd841a71877eb621e68614e6"/><file name="home_android.phtml" hash="096341a4da1d21ef2c9ed3a6c054977a"/><file name="home_hor_ipad.phtml" hash="486989d25e68d88b6d4132789a14ce0a"/><file name="home_ipad.phtml" hash="93c4a6a124cfdaebde3abadb9f087bce"/><file name="home_iphone.phtml" hash="c15fdeef53ce2c1f2fdb53e5894feaae"/><file name="productinfo_iphone.phtml" hash="99c2fd2107ad06e625384b56182fd316"/><file name="tab_items_android.phtml" hash="d0b925bbc89f510aac004ffc1b33062a"/><file name="tab_items_ipad.phtml" hash="8ca8d864408bb880b6f6a9999b0e4d26"/><file name="tab_items_iphone.phtml" hash="406b98b55565fb58c1a3e3dc90922d6e"/></dir><file name="autocomplete.phtml" hash="2f7eda6609862fb56e6b2907c350eb9b"/><file name="images_android.phtml" hash="325f5377c2dc03c67fc6d8518b06f23a"/><file name="images_ipad.phtml" hash="c143fc2fffae5798c17e98b8ea95ee5d"/><file name="images_iphone.phtml" hash="662948af12653a8ae48414dfbb0e9527"/><file name="image_edit.phtml" hash="4362113375c916fd5b30956a77f5c03e"/><file name="preview_android.phtml" hash="484f96d74d8e196296d5498582a27106"/><file name="preview_ipad.phtml" hash="4475acfd140a51c884b447bbfce9ba61"/><file name="preview_iphone.phtml" hash="5672019ff2f83f4e4baeab6ff9755c7f"/></dir><file name="content.phtml" hash="31afc11e11770c91669768b19be389d7"/><file name="design.phtml" hash="a38fbdd0387b167230e6745fc9a5ee7d"/></dir></dir><dir name="form"><dir name="element"><dir name="country"><file name="androidmarket.phtml" hash="053e69572e7b8850f3f96f22c5d5f9f7"/><file name="istore.phtml" hash="275af872365061838828011b0398db02"/></dir><file name="addrow.phtml" hash="0a3d7fb6fc6bce86f9a9ec4c05e404cd"/><file name="app_tabs_android.phtml" hash="7f01e540dc7f88fe69d91b758069a826"/><file name="app_tabs_ipad.phtml" hash="ae6ed3ef1d8bcf7bfbcc8a525002da35"/><file name="app_tabs_iphone.phtml" hash="330a5325e1bed894e12400939d5f5ff2"/><file name="themes.phtml" hash="106356a554f5a6e0910e5b35eda0323d"/></dir></dir><dir name="mobile"><file name="notification_helper.phtml" hash="342fc4bff0154f93555e6d8418018951"/></dir><dir name="submission"><file name="app_icons_preview.phtml" hash="0f78504fbcd7878ab339a4cfacc6de8e"/><file name="container.phtml" hash="c576009dd87ddd55ce8b023587128806"/></dir><dir name="template"><file name="preview.phtml" hash="bd26b9a350f430e4a6905133db031bfc"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="xmlconnect.xml" hash="f166ab0a4ea2c769839410ba0ef04c40"/></dir><dir name="template"><dir name="xmlconnect"><dir name="centinel"><file name="authentication.phtml" hash="17420b60e21faff408abf1fcc8a83d31"/></dir><dir name="pbridge"><file name="result.phtml" hash="412b98ba988d6049098414f8cbce09b6"/></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Mage_XmlConnect.csv" hash="28ea9a9ae90f0c270f85ebdbf2b60565"/></dir></target><target name="mageweb"><dir name="js"><dir name="jscolor"><file name="arrow.gif" hash="5034704a76cd55c1cbcbc58ea6bf523f"/><file name="cross.gif" hash="ba9a274b9323753cd95bc3b1eb2f4e5f"/><file name="demo.html" hash="edf71251cb2be20322d2efb00aee86a6"/><file name="hs.png" hash="fefa1a03d92ebad25c88dca94a0b63db"/><file name="hv.png" hash="990d71cada17da100653636cf8490884"/><file name="jscolor.js" hash="b65a1505390592ac6c0177d6b84774e0"/></dir><dir name="scriptaculous"><file name="builder.js" hash="1174f6fc34ca5d54ba10b0c719386e7c"/><file name="controls.js" hash="8c414e1787c0ac9f10b16b252361c8b2"/><file name="dragdrop.js" hash="95c24654dce8433dee51731efa7b9a04"/><file name="effects.js" hash="d795089f95a22306cca9b337c439c65a"/><file name="scriptaculous.js" hash="d59eba4e0b14b672208b0862ae1c2196"/><file name="slider.js" hash="6043f96a71d2685fecd02e2ab99e84d9"/><file name="sound.js" hash="0f0fab23fa2cb1bc7717fd2bdf45402e"/><file name="unittest.js" hash="99969698b22272f77bdf4c64586862b3"/></dir></dir></target><target name="magecore"><dir name="Mage"><dir name="XmlConnect"><dir name="Block"><dir name="Adminhtml"><dir name="Admin"><dir name="Application"><dir name="Edit"><dir name="Tab"><file name="Settings.php" hash="a8e0037e9dc768aabce0e597923e3007"/></dir><file name="Form.php" hash="476d53d53aae676d873a8e558873296f"/><file name="Tabs.php" hash="3ee5becdfd696c2f6a1853042119e190"/></dir><file name="Edit.php" hash="ad214481079e0bac647fc3aed802e035"/></dir></dir><dir name="Connect"><dir name="Dashboard"><file name="BestSellers.php" hash="f7a6937309e1e154659a1bd3a8e0024d"/><file name="Customers.php" hash="a569d57ba6946aa95dbb9709eb49061e"/><file name="GraphAmountsData.php" hash="96faf08a7ae5d64a4df65adbe172930c"/><file name="GraphDataAbstract.php" hash="3463bb1397125bb9632f77d5bcecc747"/><file name="GraphInfo.php" hash="b422503a0e5d1b0cf9814c6805570ffd"/><file name="GraphOrderData.php" hash="ee34310eb99a996fec35676c26a5eaa6"/><file name="GraphTotalsData.php" hash="8337a20bf339b765a4de07a1ec7c1226"/><file name="LastOrders.php" hash="2b85d9464a13d7c2c27774a22e1941a8"/><file name="LastSearchTerms.php" hash="8d32b368c9e05b6c6220f83231cac1f3"/><file name="MostViewedProducts.php" hash="a2eaa67c2a862d363a9e6c921492b3b6"/><file name="NewCustomers.php" hash="9d9d635f0250cf39f0d916f1b87742f5"/><file name="SalesInfo.php" hash="5a4d3888e93f0a39a8ed3d9fff87907a"/><file name="StoreSwitcher.php" hash="5237ff6b5d540a1bc5d61961d63cd018"/><file name="TopSearchTerms.php" hash="0d96bcbe3b96402d55e8c5a8768d07cb"/></dir><file name="Config.php" hash="8cf232c664c238da4a4892c254386ffd"/><file name="Dashboard.php" hash="3f8d8a18cef99e95d28410eb805ee944"/><file name="Loginform.php" hash="f72c1f3da749ec75ba524eba48012d7a"/></dir><dir name="History"><file name="Grid.php" hash="6308d26ad2e05740eb6991e3257000bb"/></dir><dir name="Mobile"><dir name="Edit"><dir name="Tab"><dir name="Design"><dir name="Accordion"><file name="Images.php" hash="c9f251ac77b9689c9c381303be8032f8"/><file name="Tabs.php" hash="caf8302b277ea18303213d43764ed28e"/><file name="Themes.php" hash="9d6dec2260396ad8798202ee1ba6eddc"/></dir><file name="Accordion.php" hash="5b545ce26cbf7452723591cd4c3d250b"/><file name="Images.php" hash="7c5737b833caf7953baf4bb7c2ff10c6"/><file name="Preview.php" hash="d4a5bccbcfc7f2885917c7082692451e"/><file name="Themes.php" hash="6ae0e49f82cc094f5dd9315887f9e14d"/></dir><dir name="Notification"><file name="Helper.php" hash="81a9ead32cbfc4e5a4fefa97199c337a"/></dir><dir name="Submission"><file name="History.php" hash="e48ed8d20f12e56a08beb5afcfd954b8"/></dir><file name="Cache.php" hash="607618d233c5dab9415475b4ad61bb59"/><file name="Content.php" hash="e6b0832faf44ea2389491718cabf8783"/><file name="Design.php" hash="f90d65ffa27e94916da616afc8e221f2"/><file name="Flurryanalytics.php" hash="89ad25f1adf60b1e4232ba29f7f5ad64"/><file name="General.php" hash="1c311c8ca86381df53c570870a20f259"/><file name="Notification.php" hash="beae607b96d8b6f98cd7022185cc8bdd"/><file name="Payment.php" hash="4cb1f8f6c03a1c4a649055faa1e088d5"/><file name="Settings.php" hash="e17af0c14089ec02c46c39369d35ea9f"/><file name="Social.php" hash="3657d0e59e519a23ef71b2ea892aa6c1"/></dir><file name="Form.php" hash="9e9957b476bbd1fb3952c4e4b706b2df"/><file name="Submission.php" hash="b8e1008535fe0c52ebddd0124cb1e15d"/><file name="Tabs.php" hash="b7de5cfa115506fddaf0ea05adbedca6"/></dir><dir name="Form"><dir name="Element"><file name="Addrow.php" hash="331985b65aceb180f82828d6bfda7e8f"/><file name="Color.php" hash="5b3e0678201cb7e88c8c78cd4b9b5173"/><file name="Country.php" hash="77f9bffa5f95cbb230b1e35ab463a08c"/><file name="Datetime.php" hash="1c3904734ec337c5b61bc740a2ade01c"/><file name="Font.php" hash="97fe8057781e10c299430a0cd15eb176"/><file name="Image.php" hash="9a02015de1a57559403f7dc656771ad3"/><file name="Page.php" hash="c3b1ac3639341f84ed95c5807e2188ab"/><file name="Tabs.php" hash="afb7ba2119332ac4382b6b1226d44958"/><file name="Theme.php" hash="4569541d38e137de716069f66ca93656"/></dir></dir><dir name="Grid"><dir name="Renderer"><file name="Bool.php" hash="8e9be8e177a8ea4368fe92fe0f466a60"/><file name="Type.php" hash="b6337cfe77db1a45ff431143055e405f"/></dir></dir><dir name="Preview"><file name="Content.php" hash="771869a996b1630b8bba3293eae9d768"/><file name="Tabitems.php" hash="b9e66e1c2d30c70b353fcbbddabcd13a"/></dir><dir name="Submission"><dir name="Renderer"><dir name="Country"><file name="Androidmarket.php" hash="cc5322cad4892b477d23ff8798ac885d"/><file name="Istore.php" hash="83f84cf61a3b2dab063773c57270c215"/></dir></dir><dir name="Tab"><dir name="Container"><file name="Submission.php" hash="ca8589c9acf5c370ba641cddd8a860bd"/></dir><file name="Container.php" hash="bd10d3d94dbe4d422e84be6fe2c1ace6"/></dir><file name="Form.php" hash="a1338b97c57150a7e1a3a7516b421438"/><file name="Tabs.php" hash="0e75e7c201f2639ee73618a90ea9a487"/></dir><dir name="Widget"><file name="Form.php" hash="2bd91c9af96eaf42d1484b263857772b"/></dir><file name="Edit.php" hash="ef6d5a5b9db8e01f38ed3b164bbb9258"/><file name="Grid.php" hash="8ca26959087f2a12d5f9aa3bf1fc650b"/><file name="Submission.php" hash="f15232c6891c6699dfc89b826b54c74d"/></dir><dir name="Queue"><dir name="Edit"><file name="Form.php" hash="77809e160faec639d4e570b46c85c8df"/></dir><dir name="Grid"><dir name="Renderer"><file name="Action.php" hash="2de3d991818d5add59e109ac5f0e26ba"/><file name="Application.php" hash="c563b1f5d6cb4fff511bc6cbfdcebe7c"/><file name="Id.php" hash="5a3bd6f7130ff4354884635d1246452c"/><file name="Msgtitle.php" hash="4d89f7f6a6252260f61b673c6cac1e34"/><file name="Pushtitle.php" hash="c411360431127611c84da7690b5c48c2"/><file name="Status.php" hash="78c46092eb556a263dfca7d5bc4941db"/><file name="Template.php" hash="a36ed9dcdc7f3f331452cee2bb508482"/></dir></dir><file name="Edit.php" hash="1610c2fd1b9fcf552fd0f80a0ecdd3b0"/><file name="Grid.php" hash="f34b4443bb916da032b3780834cb0b2d"/></dir><dir name="Template"><dir name="Edit"><file name="Form.php" hash="f9b618292fe83e9bfc2d404b88a81036"/></dir><dir name="Grid"><dir name="Renderer"><file name="Application.php" hash="cdae7056f704834da9e400277411ac0b"/></dir></dir><dir name="Preview"><file name="Form.php" hash="99d036e0da9c43dc125b30536fb4e9d5"/></dir><file name="Edit.php" hash="9dfdaa4321d280b27236e007f92e3159"/><file name="Grid.php" hash="22f94f5d0dd944b4c78690cd04092a18"/><file name="Preview.php" hash="2a73ca6565940c477dd2a8012bae8a1e"/></dir><file name="History.php" hash="d00a4acfccbd558e64ffe4eecb731d9a"/><file name="Mobile.php" hash="e23e9e74e7843c2fd07ab3230069c99f"/><file name="Queue.php" hash="e13f7f2fa44867d5580b7d0e38542bae"/><file name="Template.php" hash="2a577c9a452528e44f69b730cef9f9a1"/></dir><dir name="Cart"><dir name="CartTotals"><dir name="Nodes"><file name="Default.php" hash="13b937bdd961d8ebc5e5c65b985f2952"/><file name="Giftcardaccount.php" hash="fcd19d01ad211d5b4a01d58eefeb9020"/></dir><file name="Default.php" hash="b71795f830500dd143a6d508e430183f"/><file name="Grandtotal.php" hash="b59199ee6d44441e3bbd5eed1e7db5b5"/><file name="Shipping.php" hash="28c3bbe92b56d919fead660489c5891f"/><file name="Subtotal.php" hash="8d26443059e865e70076ccb5423d1312"/></dir><dir name="Item"><dir name="Renderer"><file name="Configurable.php" hash="b2c2a3b93ab7bdaa2c6043f5159cf946"/><file name="Grouped.php" hash="46290fe4e7338f0640022f591f0dfb25"/></dir><file name="Renderer.php" hash="4905f3e3f895df2bcee10f34fc6ce834"/></dir><dir name="Paypal"><dir name="Mecl"><file name="Details.php" hash="b9738caf96ef491a5c980febc4ed262c"/><file name="OrderDetails.php" hash="2ef0e74677fd8efc928809b335b1f7d2"/><file name="Review.php" hash="e4f7192d3411042a9d2fc4c6f2f4647e"/><file name="Shippingmethods.php" hash="811c9f77cf9153f3f3b0eaa8ad99658f"/></dir><dir name="Mep"><file name="Totals.php" hash="15027484087388109276df7ffed9a0e3"/></dir></dir><file name="CartTotals.php" hash="dfaf11c9810c68d85eb707156b0a6294"/><file name="Crosssell.php" hash="5644046ee3555cdeeee472f1b753b128"/><file name="Info.php" hash="fd227e03835a46895163bda3d5f2d957"/><file name="Items.php" hash="b54b2f28b6e19702bad5fbecde46ad3a"/><file name="Totals.php" hash="249bfe08ca5de8aa8c9a199085a2fd49"/></dir><dir name="Catalog"><dir name="Category"><file name="Info.php" hash="9dd1d0109dd30edb081e8102c0edc0ab"/></dir><dir name="Product"><dir name="ItemPrice"><file name="Bundle.php" hash="ac457ee3905283123af2609e7476edc5"/><file name="Default.php" hash="47f31b8590fc9d259aab1efc8a5289e0"/><file name="Giftcard.php" hash="96397ea38700be477270ecaa435f196e"/></dir><dir name="Options"><file name="Bundle.php" hash="1ecf5d4032c9cc57bc51775e880d14af"/><file name="Configurable.php" hash="3fa88079105587a8d1cfd6ed8b50bcd7"/><file name="Downloadable.php" hash="94525919da37103bb0f23a94f7b2543f"/><file name="Giftcard.php" hash="7bee9924059801a49940cb13b14f0052"/><file name="Grouped.php" hash="5161fb43ddb26cc9fa8b7bce48e8f2b5"/><file name="Simple.php" hash="bfae595197a2d1f8fc57d963606156f5"/><file name="Virtual.php" hash="f62f8257375d00b44c198b7a2b206a68"/></dir><dir name="Price"><file name="Bundle.php" hash="5e3a739b16134411f0258215e35fed34"/><file name="Default.php" hash="4a872c7eacca9892bd36b473a8abb2b0"/><file name="Giftcard.php" hash="d4047d0565e31a873714debe2975d416"/></dir><dir name="Review"><file name="List.php" hash="69da6bc8d8b7f24a789b68f579d467d9"/></dir><file name="Attributes.php" hash="7a8ddf4dd3bb20fa523fec37bf819172"/><file name="Gallery.php" hash="9741f5487e804e500a69235f213981a9"/><file name="ItemPrice.php" hash="56fe6c68fca2d7b4629376241550af5f"/><file name="List.php" hash="9449a5bb46e220f737bd234e9daf66eb"/><file name="Options.php" hash="52e0b4c17dbd069608d31220c9e11b4b"/><file name="Price.php" hash="0d2a385ad233ddc0d8396b5ca518c1f7"/><file name="Related.php" hash="0bf2a068cafdff7bfae04c220b5ba075"/><file name="Review.php" hash="4376d0136df5f28d91e1ce79408dfb0e"/></dir><dir name="Search"><file name="Suggest.php" hash="13eb66cd0e6ce373c250f725e3aefc94"/></dir><file name="Category.php" hash="9f2cf762f4c620f0160f075784397011"/><file name="Filters.php" hash="0737e7fa51f4c28fb1af5e97f03d407a"/><file name="Product.php" hash="7403bdf627c47dd055b17f0d28b8d301"/><file name="Search.php" hash="cdb7d74270a7b5d26ede9d1567262577"/></dir><dir name="Checkout"><dir name="Address"><file name="Billing.php" hash="4615ae45f7f1495236fee6ab974d080d"/><file name="Form.php" hash="b31df337a74efb202a0bbc3fe6e92083"/><file name="Shipping.php" hash="75a7a08f740a3d84a911e9fcddd9009f"/></dir><dir name="Cart"><dir name="Item"><dir name="Renderer"><file name="Bundle.php" hash="1b668000cfc2ebde728cf47d3c8cf3c6"/><file name="Configurable.php" hash="94af5542af9ac4a63a511b8e3602eb38"/><file name="Downloadable.php" hash="77f0db4579c50d314c49944cf8e82ff8"/><file name="Giftcard.php" hash="35e740c9159fb7c4d844c58ee1632a51"/><file name="Grouped.php" hash="08d61b590ba690537c9272790ce1236c"/></dir><file name="Renderer.php" hash="983ef17f535df61b104d467a4dc38e11"/></dir></dir><dir name="Onepage"><dir name="Address"><file name="Form.php" hash="90fd9a2d6eb6845b567cea7b9dafbe75"/><file name="List.php" hash="b25b0cebcea23809542b232f6717133e"/></dir><file name="Address.php" hash="89b4bddb247b0e97f7ae3a85a655516c"/><file name="Review.php" hash="3076ca4cf6cf74382b1ea55c6958c67e"/></dir><dir name="Order"><dir name="Review"><file name="Info.php" hash="f03c0f02e9e1ff1e2c6f764f4df249c0"/></dir><file name="Review.php" hash="8ff677073d7ed80c5b3a614f081525c3"/></dir><dir name="Payment"><dir name="Method"><dir name="Info"><dir name="Paypal"><file name="Abstract.php" hash="f84c2b40c674478599c035e4e4a44e5c"/><file name="Express.php" hash="39ca54d07363a21ebf229aaebec3b43b"/><file name="Mecl.php" hash="b9b729c007d612130a18f5dc7ba86ffc"/></dir><dir name="Pbridge"><dir name="Paypal"><file name="Direct.php" hash="11e9b36e36405e189d1c06fec7636c1f"/></dir><dir name="Paypaluk"><file name="Direct.php" hash="c38fcd3cd36895aa497f1219a6dec898"/></dir><file name="Authorizenet.php" hash="cf5211dedc06d6b04846afbb4b4d4d63"/><file name="Verisign.php" hash="460da67badc7b7443257139dcdcc28a1"/></dir><file name="Authorizenet.php" hash="e49ef865c9f3b91d6ad8c49520e4730c"/><file name="Ccsave.php" hash="73f94999e12295f768ba5de9d0f157b7"/><file name="Checkmo.php" hash="f7972790bc528511b022a2301dbfddc8"/><file name="Free.php" hash="034edad300ff336fd44e38eeef1603b5"/><file name="Purchaseorder.php" hash="70cc06eaeda3046c298377763b657524"/></dir><dir name="Paypal"><file name="Direct.php" hash="05c0d9c1b3d8f57517b884840df0e3bb"/><file name="Payflow.php" hash="243c5d865ae7b3095549a8bab5a9adef"/></dir><dir name="Pbridge"><file name="Abstract.php" hash="dbb02cdcb87999369b4a1943b6bc937b"/><file name="Authorizenet.php" hash="162304f1a2fcfb2bc9c92dc237609c7e"/><file name="Paypal.php" hash="696dc7a3f6c2ae3dbfeed07d202950b8"/><file name="Paypaluk.php" hash="0a536fb05595ca453f61206460290673"/><file name="Verisign.php" hash="ac966ac970a2682f5a2e6550b38234b4"/></dir><file name="Authorizenet.php" hash="b5759b2cc22e8a3af770d30ab2a5e4a5"/><file name="Ccsave.php" hash="cbc8ce37010a3677ec06487cc14c4c89"/><file name="Checkmo.php" hash="58f6daa861715458e1cfcb78367c9058"/><file name="List.php" hash="93758373e2f13607a6d1e219eb20f7ea"/><file name="ListApi23.php" hash="ed498fa3fab026a7e98a737a079c2c35"/><file name="Purchaseorder.php" hash="69d66e0bc581777757fcf21eb7c83fe5"/></dir></dir><dir name="Pbridge"><file name="Result.php" hash="bd5f9c45fdc8dff1bac3e7236ee419c7"/></dir><dir name="Shipping"><dir name="Method"><file name="Available.php" hash="df8fc796cd338f84b5ec311388fb8427"/><file name="AvailableList.php" hash="5b13a94645e63980e3d63bb2a9111fbd"/><file name="Avaliable.php" hash="3deb4bd60e6a67e0c2a2ad34b71acb73"/></dir></dir><file name="Agreements.php" hash="fb12f4f1860377603dfaf3e8ea77800c"/></dir><dir name="Cms"><file name="Page.php" hash="c313dfacd7ec573fd368dd16f6b27e77"/></dir><dir name="Customer"><dir name="Address"><file name="Form.php" hash="e9edebdcdd56da6c6b52b055fc7a6608"/><file name="List.php" hash="ab71f64c51c1391043a5e858feb413b2"/></dir><dir name="Form"><dir name="Renderer"><file name="Boolean.php" hash="97984783ca2e5725e0ee874a79b5d494"/><file name="Date.php" hash="95d6834bce7d72be7963bfea8bd0abae"/><file name="File.php" hash="38fca3a34090531ab380f6de0293407e"/><file name="Image.php" hash="b08fd3111a864ae9c8d968060796d83c"/><file name="Multiline.php" hash="39e37db8c8cf4aa12ef1f01c6922a315"/><file name="Multiselect.php" hash="42593dfde88fccbef918f3fbc251857b"/><file name="Select.php" hash="b0f2ebeef7c9eb0f5497ceea29f41500"/><file name="Text.php" hash="dc042eb425257b775258408cde5dbe67"/><file name="Textarea.php" hash="08d59b7ee634b548833a6ba3db6e10ad"/></dir></dir><dir name="Order"><dir name="Item"><dir name="Renderer"><file name="Bundle.php" hash="46bf4bde88a23157cde006884d9f02c5"/><file name="Default.php" hash="c189184e6177add4394c3e3cbc685445"/><file name="Downloadable.php" hash="cc7024f239b8e4b4e090449de512977c"/><file name="Giftcard.php" hash="1e1541616acf5c5d96e61e83a3e795e7"/><file name="Grouped.php" hash="ac2e1bbd54c002e41f545c077e46dc97"/></dir></dir><dir name="Totals"><dir name="Customerbalance"><file name="Refunded.php" hash="c3d5a807fac5b1eaac8c2800b3247346"/></dir><file name="Customerbalance.php" hash="a8a415eda418b5169d443ca69c4c511e"/><file name="Giftcards.php" hash="cd895470473384667f393ece7b159771"/><file name="Tax.php" hash="c65c42b1d55aba00d419a48496d69a00"/></dir><file name="Details.php" hash="c95e47526df1095c14389ce34069b9e2"/><file name="Items.php" hash="92a3776111ec3bd69d1d805549c5ff67"/><file name="List.php" hash="f36e2fc5f3236bfae51b140343c56045"/><file name="Totals.php" hash="3778e19e0ef18d36cdfbc590d45e3236"/></dir><file name="Downloads.php" hash="42fc55769c91d0bf18891fc2b1745811"/><file name="Form.php" hash="02812884e99c802eee5d18178afa37d3"/><file name="GiftcardCheck.php" hash="8d9e4127a7d7345664e4807793132516"/><file name="Storecredit.php" hash="88ce4306d04a263c4f0350a3d7921f5a"/></dir><dir name="Review"><file name="Form.php" hash="fe488993d56ef335693099d35ce86cbb"/></dir><file name="Cart.php" hash="3d96109e1e7d294fa0281c7c98c5160a"/><file name="Catalog.php" hash="0c99c53915ae51c9bf2f24a922ad9a38"/><file name="Configuration.php" hash="cf428dca1ff89197bc88b110b8a2a11e"/><file name="Home.php" hash="4300629b872be16210da5668bd14001d"/><file name="Homebanners.php" hash="f571f4bb6bbed761c951fe4bddab067e"/><file name="Localization.php" hash="9a0a3bfe872b96cf0a131ee24ac5cfd9"/><file name="ShoppingCart.php" hash="7c09d6e398f0f0d6e1474e0202198955"/><file name="Wishlist.php" hash="ac4171ea459444b9baf5f1761688a304"/></dir><dir name="Controller"><file name="Action.php" hash="3e2e8e918d3e7065afda31c0bfc1eefe"/><file name="AdminAction.php" hash="c032e0ab29fe601522793d1c91f145fd"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Admin"><file name="ApplicationController.php" hash="1c7325f6cdf42516f2f628a7df4007c1"/></dir><dir name="Connect"><file name="ConfigController.php" hash="1a919b0121bb28224fd69cedb2d1bfc6"/><file name="DashboardController.php" hash="e94b99a018acfa0f396e19ea5e6fb8ae"/><file name="UserController.php" hash="ce81c0c544c9c50d99aef7dc35d23eb9"/></dir><file name="MobileController.php" hash="6f05abc8564ee04cae1d1a758536248e"/></dir><dir name="Paypal"><file name="MeclController.php" hash="94867067f3dcbd4ae1f362a0e9cfe534"/><file name="MepController.php" hash="1e88760a98b8db33fefb72c8663d6c67"/></dir><file name="CartController.php" hash="8328fe491faf3cf57259ce24377f74d8"/><file name="CatalogController.php" hash="5cc6fea862bf81e38cf3a320bcfe33ac"/><file name="CheckoutController.php" hash="15db7b5aad4fceba4ed109474f6e1c78"/><file name="CmsController.php" hash="97fab23c06e52fd7d6c6a2ca0ce99113"/><file name="ConfigurationController.php" hash="c91bb04de49318851c6969eb2de361cd"/><file name="CustomerController.php" hash="6347779c756407a3590ae9315d460a62"/><file name="HomebannersController.php" hash="8d458c7ae50133f57fd44f3ad92f30f4"/><file name="IndexController.php" hash="5aa7a5b60904e3e693bc43285a6b6b5b"/><file name="LocalizationController.php" hash="4b268a95fd62957a4e73b68af36765a0"/><file name="PbridgeController.php" hash="0b9576db18d870416e3a4b25b80c625a"/><file name="ReviewController.php" hash="bfd0de81d2f10e13749966248149968a"/><file name="WishlistController.php" hash="efb7db9e316786ec6f4475446deae5e7"/></dir><dir name="etc"><dir name="themes"><file name="custom.xml" hash="cba253341e035e5892cc3ed577fae710"/><file name="default.xml" hash="7a23e5840bd5a7a1f3cf4b9d16c30d63"/><file name="funk_leaf.xml" hash="d143fb6570214bdf5489e5f53770eded"/><file name="hot_red.xml" hash="f6480993958f16e4206048172985ca06"/><file name="sky_blue.xml" hash="cb128be3f0ef9088b23d3947daf29cf8"/></dir><file name="adminhtml.xml" hash="37d58188b6bbaff839b625f340bc4871"/><file name="config.xml" hash="53ffb8dd6780a4f718a30057b529bab6"/><file name="system.xml" hash="759fbe862cf96d79eca093de0dd68320"/></dir><dir name="Helper"><dir name="Adminhtml"><dir name="Dashboard"><file name="Order.php" hash="e4d6074df05a8c625117f2808b006185"/></dir></dir><dir name="Catalog"><dir name="Category"><file name="Image.php" hash="d213940270e8ade95a69443a3ca6a261"/></dir><dir name="Product"><file name="Image.php" hash="ffdc43c2fb53414ef96fc6ab966907bb"/></dir></dir><dir name="Customer"><dir name="Form"><file name="Renderer.php" hash="94d503489f7f49ff5d89016651e13edd"/></dir><file name="Order.php" hash="28889493432775ec7c6644c58cb80c04"/></dir><dir name="Device"><file name="Abstract.php" hash="93ea7193f4706d820f24f384a193900d"/></dir><file name="AdminApplication.php" hash="7f865c39dd5051d4771de7996924ec7c"/><file name="Android.php" hash="af57fcc239e84084b7aa0bb7e15a3398"/><file name="Data.php" hash="d950f724015b89d16f39c020bd35643c"/><file name="Image.php" hash="8ead1d5304f1473f7fafff92afb6bf74"/><file name="Ipad.php" hash="f6092a7251429298cf6f215f58f5eee0"/><file name="Iphone.php" hash="e2c408ec83a017c7f958c5eef5495b14"/><file name="Payment.php" hash="5b54eccc95ea5c57d8c9ef5d934bc094"/><file name="Theme.php" hash="1142a66b2224130c5f66d70c6dfa4ee1"/><file name="Translate.php" hash="fbc31e8be6b2f9d17595a55cee1946a4"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="Search"><file name="Catalog.php" hash="b3d65a22980adadbe77dbf23c726b2ed"/><file name="Category.php" hash="4e473cd813eb955c82477c6edf72e605"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Currency"><file name="Default.php" hash="6c99a20069f641856d5bf65853488907"/></dir><file name="Baseurl.php" hash="5e015aa79db0e904d816064bc242147f"/></dir></dir></dir></dir><dir name="Catalog"><dir name="Category"><dir name="Media"><file name="Config.php" hash="fd88aeb90a45d8c0c6392cf5f8f70dc8"/></dir><file name="Image.php" hash="fc5086acd0bef36eceb2bdf6e035a998"/></dir></dir><dir name="Device"><file name="Abstract.php" hash="b651e9f00fdf0fd73e95597c3c90bbc2"/><file name="Android.php" hash="edd798c7b7451ca0eacfcdeebb87f143"/><file name="Ipad.php" hash="98094893388d88c085e2a09e9f115cee"/><file name="Iphone.php" hash="97fe91f028b1887c9762ff9b9c8e4eee"/></dir><dir name="ImageLimits"><file name="Abstract.php" hash="031b93b3a6be36504dbdfcd2b42037e6"/></dir><dir name="Input"><dir name="Filter"><file name="MaliciousCode.php" hash="d5d500781af7b07e11baf5cbef0eb0ce"/></dir></dir><dir name="Mysql4"><dir name="Application"><file name="Collection.php" hash="22fbd44c97d1341eec2316d88cdd615e"/></dir><dir name="CategorySearch"><file name="Collection.php" hash="5c4024edb8005637be5b05bf745dc0b4"/></dir><dir name="Cms"><dir name="Page"><file name="Collection.php" hash="87d245dcf99541c3f87f9bf1e8114307"/></dir></dir><dir name="ConfigData"><file name="Collection.php" hash="daa0613586622c3cdd862f89c5cf6c32"/></dir><dir name="Filter"><file name="Collection.php" hash="3b820fa4fc65de422b40b90479ddd977"/></dir><dir name="History"><file name="Collection.php" hash="ac16db40a3f709981a0225bdd23badb9"/></dir><dir name="Images"><file name="Collection.php" hash="b600ff4516ca6d4d3c261f214c7ee8ae"/></dir><dir name="Queue"><file name="Collection.php" hash="5d975b1556e1f692e3e3ee8d4c3ae400"/></dir><dir name="Template"><file name="Collection.php" hash="b9937ca4d53b92e3a40a8e21bfd19a00"/></dir><file name="Application.php" hash="1cdcd21de7029fb1465bca854950f493"/><file name="ConfigData.php" hash="336e3efe5a1b04350d4c7ca0f73326b9"/><file name="History.php" hash="b8265853f335e44fba51ea1fbc7e7d18"/><file name="Images.php" hash="0af2c93d8000f41dc27df41d3064c114"/><file name="Queue.php" hash="5a8fc030e809b0382f5c016a147d577f"/><file name="Setup.php" hash="779fbf35b0332d076c940013fd480777"/><file name="Template.php" hash="7aa204a046c07ad13ba86e6ef2405bae"/></dir><dir name="Payment"><dir name="Method"><dir name="Paypal"><file name="Config.php" hash="5c3c65374748273093bab7d4bfb012a9"/><file name="Mecl.php" hash="0a38f8abf97a7c094f633735ee5782b3"/><file name="Mep.php" hash="769b5ffe4c1bbbacca0345cfd104f213"/></dir></dir></dir><dir name="Paypal"><dir name="Mecl"><file name="Checkout.php" hash="7ade034912745974e1e13f2013064249"/></dir><dir name="Mep"><file name="Checkout.php" hash="363013017df11a413f7cc1425bc9984e"/></dir></dir><dir name="Preview"><file name="Abstract.php" hash="95ae2224861c47cae17d286ab0b59444"/><file name="Android.php" hash="a58af778ff2baeabc8318c299fd9af51"/><file name="Ipad.php" hash="ae6aa389e953a9b2e307eab098693644"/><file name="Iphone.php" hash="199a076c592ce599b38049dc9b12d8de"/></dir><dir name="Resource"><dir name="Application"><file name="Collection.php" hash="4e6343b15bef0d8d03ff812534d6b0a0"/></dir><dir name="CategorySearch"><file name="Collection.php" hash="ec6eed47c5ef234e596baf7b361e2049"/></dir><dir name="Cms"><dir name="Page"><file name="Collection.php" hash="0e6f862fc1bf51a0073552e4ff9f12af"/></dir></dir><dir name="ConfigData"><file name="Collection.php" hash="f6e504022bfdfda1a0c930837533076b"/></dir><dir name="Filter"><file name="Collection.php" hash="501f8d89767152a3132c083b2bae3d89"/></dir><dir name="History"><file name="Collection.php" hash="e7d5df7e7c2198cb618c0facfdc603cd"/></dir><dir name="Images"><file name="Collection.php" hash="ffccb03fe49e9a1a49d96cca0aca162d"/></dir><dir name="Queue"><file name="Collection.php" hash="bb08b05a400392e55e396aa15ab8d360"/></dir><dir name="Template"><file name="Collection.php" hash="8e316fd73d5c981985c4d37f1b4b1d86"/></dir><file name="Application.php" hash="e85c72a9d1a19a03cf62fc6c85b3fbb4"/><file name="ConfigData.php" hash="c3da7021cb4e6a9a19ad1657ba94662b"/><file name="History.php" hash="dd881e4c0c028b41b14c8f12f2bb9f33"/><file name="Images.php" hash="1304f72eabcc19ed0f1c0d81dd8443c1"/><file name="Queue.php" hash="0d5448e714caa4cb13963cda2cdcf81a"/><file name="Setup.php" hash="b280e933cf9eda7846adc5fed5d72bf9"/><file name="Template.php" hash="8645648b26fdbed4822185a5cc532bd4"/></dir><dir name="Simplexml"><dir name="Form"><dir name="Element"><dir name="Renderer"><file name="Interface.php" hash="9b314b65fe1eeb81ccfc6ed6047c8e5e"/></dir><dir name="Validator"><file name="Abstract.php" hash="c7183c507611fb44750db227caeaeee8"/><file name="Rule.php" hash="c632915311d7f0913ef76b1d40fac395"/></dir><file name="Abstract.php" hash="cbada33ebe475c1482efe60d6cf9f6c5"/><file name="Checkbox.php" hash="9de46a951f58eaf77328589b91da2fef"/><file name="Collection.php" hash="7ee2575d3dfd6800da0df80bfeab55f5"/><file name="CountryListSelect.php" hash="c04b8df868e75fe5bef3b1195780391e"/><file name="Custom.php" hash="02b868b0885671ec31a06c62121275e2"/><file name="Date.php" hash="da33febe93bc5e79ee83c95b50fdc374"/><file name="Email.php" hash="5e75b3d6767a644b1026aa72cbc02d2a"/><file name="Fieldset.php" hash="772ba5340959516771edc4b1281cfb01"/><file name="File.php" hash="7adf9f3573740cbc69f0977f08bc062d"/><file name="Image.php" hash="4a249c60bfa12ecbffee2ea37f1ce7e1"/><file name="Multiline.php" hash="c04d28d557366d1d48034d5df57d913a"/><file name="Multiselect.php" hash="3566643c9295cc7ad0d7f84180bc1970"/><file name="Password.php" hash="7493a4ff4e57ae63c23fa06b49fd69a6"/><file name="Select.php" hash="d1d10f3482a819d281f8d7f30071f833"/><file name="Text.php" hash="b4ca84ab3a7848c9b711487b418c9d89"/><file name="Textarea.php" hash="e82df346b8046ae24a8efe23ea965069"/><file name="Validator.php" hash="00870fbba161e9a2d49a69d4f3229d1d"/></dir><file name="Abstract.php" hash="6919f553820cdc5f96667e0ec83d66f4"/></dir><dir name="Message"><file name="Abstract.php" hash="d84f4a0db726e3dd2bd3800c6d619888"/><file name="Error.php" hash="9190edb92b1627146fe079f38fd8901e"/><file name="Success.php" hash="416c64d2a613c3e4ca7b2a95e0ac6635"/></dir><file name="Element.php" hash="ce30e4ec6087bfdb7041922034de8481"/><file name="Form.php" hash="a9771b8058522d208e0c834e1681cabe"/><file name="Message.php" hash="d74c7ab082ec225043fe3d8eb69914bb"/></dir><file name="Application.php" hash="ba8c1e9604ab5c9c6251a76be6e5dd49"/><file name="ConfigData.php" hash="3dbf4a5f33d9755279ba3724629b0c7e"/><file name="Configuration.php" hash="204c30a0e1b830b4a4f814fd91c20335"/><file name="History.php" hash="824e1a700cf1f4ae3b5c7e1b6950686e"/><file name="ImageAction.php" hash="e7938376838177879e465a3b6cf8e76b"/><file name="ImageLimits.php" hash="feb96ef9eb6a9b2954eafd23d6a43d71"/><file name="Images.php" hash="075cf669768045b8b6d486887c10e99b"/><file name="Observer.php" hash="7c44b84c94f2e3b30e0cd84d82e10494"/><file name="Queue.php" hash="a7422d8b84ea9d8ef8a6faefac9c5d39"/><file name="Tabs.php" hash="fd8da86eb4ea07f5211dd0925ad691ce"/><file name="Template.php" hash="cfb77dd82dd17558bb47f49c7ff64f0c"/><file name="Theme.php" hash="368f7c0a13491d939b8e6bf55d01b61a"/></dir><dir name="sql"><dir name="xmlconnect_setup"><file name="mysql4-data-upgrade-1.4.0.13-1.4.0.14.php" hash="0ad84adbf29371e0a7b96fb3e1da2caf"/><file name="mysql4-data-upgrade-1.5.9.9-1.6.0.0.php" hash="9fd3a52a4f03c4ad8fbad031f6745c4a"/><file name="mysql4-data-upgrade-1.6.0.0-1.6.0.0.1.php" hash="b691f9ca036ae009638ee1bc0b8ed8a8"/><file name="mysql4-install-1.4.0.8.php" hash="d722f3f741af029773ebaf514c522b0f"/><file name="mysql4-upgrade-1.4.0.8-1.4.0.9.php" hash="7f6bc966e741f00c44919aa6d4307b8c"/><file name="mysql4-upgrade-1.4.0.9-1.4.0.10.php" hash="b7fec601f2bf620e60c7284c2cf6634e"/><file name="mysql4-upgrade-1.4.0.10-1.4.0.11.php" hash="cf2afadfee0b21d1c2d02071303edfc1"/><file name="mysql4-upgrade-1.4.0.11-1.4.0.12.php" hash="a1333a0c415cbc398cdd0671ab539102"/><file name="mysql4-upgrade-1.4.0.12-1.4.0.13.php" hash="a07f66c79bb1df1208c9000c3496ada1"/><file name="mysql4-upgrade-1.4.0.13-1.4.0.14.php" hash="3852cdcfa482f19981a2e8e1092909bf"/><file name="mysql4-upgrade-1.5.9.9-1.6.0.0.php" hash="d1cd542cb99cc5fe402312bf96dfeb75"/><file name="mysql4-upgrade-1.6.0.0-1.6.0.0.1.php" hash="8edcc9324df055ff544b9abc1744031c"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Mage_XmlConnect.xml" hash="f57b14eccad90152c221e4f090a8801b"/></dir></target></contents>
17
  <compatible/>
18
- <dependencies><required><package><name>Mage_Core_Modules</name><channel>community</channel><min>1.4.1.0</min><max>1.4.2.0</max></package></required></dependencies>
19
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Magento_Mobile</name>
4
+ <version>1.4.2.0.23.0</version>
5
  <stability>stable</stability>
6
  <license>mixed</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Magento Mobile Xml Interface</summary>
10
  <description>An integration magento with mobile applications (e.g. iPhone, Android, iPad)</description>
11
+ <notes>1.4.2.0.23.0 version of package
12
  internal svn revision #3cd616975d5927903d4f34bde0d9e5e2e727e9ba</notes>
13
  <authors><author><name>Magento Core Team</name><user>auto-converted</user><email>core@magentocommerce.com</email></author></authors>
14
  <date>2012-05-31</date>
15
+ <time>14:52:51</time>
16
+ <contents><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="images"><dir name="xmlconnect"><dir name="design_default"><file name="accordion_open.png" hash="4c89d903ebbc61ee295ef64a60724b10"/><file name="accordion_open_android.png" hash="7ef2f1d193990c3f4c2c90aae9ab3281"/><file name="accordion_open_android_l.png" hash="bc27688afbfd866c618477ea2c7bf0ee"/><file name="accordion_open_android_p.png" hash="2e4549cba575c12ef2a39c12e9ffe173"/><file name="accordion_open_ipad_l.png" hash="dcdda97da6556393b972d6dae8d6bac5"/><file name="accordion_open_ipad_p.png" hash="55cca08a0ab79047961858789ff8c3a7"/><file name="banner_1_2.png" hash="0637d31df6b5a434c9a332ee46122ef4"/><file name="banner_android.png" hash="02695661b8e50e1a001c3369622f322f"/><file name="banner_ipad.png" hash="c1d59a6ec67da1bb76c5142453da7acf"/><file name="banner_ipad_l.png" hash="04e850d481a9ae902f33fd8c1f89cbf0"/><file name="smallIcon_1_6.png" hash="c1ce9e289eaf2c0504d502928693bd89"/></dir><dir name="mobile_preview"><dir name="android"><file name="background_home_landscape.jpg" hash="1f79a1f42ca4e2cf6010ab6c3ef66aa4"/><file name="background_portrait.jpg" hash="197b15e6455ad1a85e1bad6595371fa3"/><file name="bg_button_up.gif" hash="204f590a88933c930b7fc92963accfab"/><file name="bg_catalog_filters.png" hash="7464191ebaf576b73a3c021eb1cfcc25"/><file name="bg_catalog_filters_shadow.png" hash="5021ad60917190026d85fae1d33bdaa9"/><file name="bg_cat_item.png" hash="2859b45c387b66243d4af2ba973b2ae1"/><file name="bg_frame.gif" hash="7062ed9b7563fc658f49ce7cfdd34f1c"/><file name="bg_header.png" hash="d4a46c8850d1d89259921b1c28b5bce1"/><file name="bg_header_catalog.png" hash="c1080cd18a89e21da18fdc6955bf6230"/><file name="bg_header_home.png" hash="dfce0445ca7c7a45c7914a986b596ce0"/><file name="bg_home_header.png" hash="8bc1887a0c5760cc47b77b8a7a320426"/><file name="bg_logo.png" hash="02695661b8e50e1a001c3369622f322f"/><file name="bg_page.png" hash="d65f1d123655c2eaf3bb4a1e6035a08d"/><file name="bg_star.png" hash="fc6de6c4e0ed3478b8840e1ab81da725"/><file name="bg_star_empty.png" hash="3f0421fb8c8f6c4be6ca501168a881e8"/><file name="bg_status_bar.png" hash="52b41106451ac34672f82338bbc5370c"/><file name="ico_account.png" hash="c1fd338c74fcf483155acbd37c430807"/><file name="ico_home.png" hash="2de37f640463b354d68945320bfe3e4f"/><file name="ico_search.png" hash="8b0dd17a3e9c3328e66204fe379c66aa"/><file name="product_image.png" hash="dd975b128ba303e0ae2adc9772e0433c"/><file name="product_image_1.jpg" hash="8994979d4dcc1f339c73cd1f44398a7d"/><file name="product_image_2.jpg" hash="26d6599bdb35d80b25a1e903b40cfa19"/><file name="product_image_3.jpg" hash="d7c6d05196a84341afe0025d01b9dc61"/><file name="product_image_4.jpg" hash="2a88ead3dbbeff1d40168db692841f2f"/></dir><dir name="custom_icons"><file name="account.png" hash="0498d73e47ed47179e5546dc15c17dc7"/><file name="actionsBg.jpg" hash="ee3db742cbec9a436ba46118c8a01303"/><file name="addToCart.png" hash="e33876648546e99d875ca92bd2cd78e9"/><file name="addToWishlist.png" hash="1018602b7c5e0e11f0427ace96fd7d52"/><file name="background.gif" hash="bd92833eb2eb32e4a0282cea153ac13f"/><file name="buttons.gif" hash="0cd19a9d9178976906161ea100cba958"/><file name="cart.png" hash="815b4c64fae21b4c162525ece76dc44d"/><file name="home.png" hash="9e473791b022b7c2dfc7d29b1b6de887"/><file name="image-bg.png" hash="14bde5cf8b00dc5f6c60e52a0fa964dc"/><file name="logo-small.png" hash="9b3477a4552bcb878b4943aae5351622"/><file name="rowBgIcon.gif" hash="9ee89b961ae2bb047672ba5d2d2677c6"/><file name="search.png" hash="10bfa7ec3361ce7cbcc5d25087f181eb"/><file name="shop.png" hash="e6639a9fdc143363da82a7d78e126f1c"/><file name="star-active.png" hash="d4ab959a92bda610527a3e3942c4c0b0"/><file name="star-inactive.png" hash="f7fb99710be4c03ac23b1206f20e761d"/><file name="tellAFriend.png" hash="46f8ef48b29f245977d66d9312d87e70"/><file name="viewDetails.png" hash="9bacc63bcc483d3db5614a026d9391f6"/><file name="viewGallery.png" hash="304f3d03949d07055bc056359fe17763"/></dir><dir name="gradients"><file name="footer.png" hash="31a2feed50ef9c8637b412c4211f8300"/><file name="header.png" hash="5386da930a944cd75562216249cce08a"/><file name="header2.png" hash="ad5a2dc6ec93914e925cfe2d43fb30a2"/><file name="header3.png" hash="920ad8c6903e90323a57fb02dca37280"/><file name="item-bg.png" hash="a14886d1f9e14284ac6b4f1b61e68646"/><file name="sort-bg.png" hash="b8053bb772e849909e5b87e4fd1ebbe4"/></dir><dir name="icons"><file name="account.png" hash="0498d73e47ed47179e5546dc15c17dc7"/><file name="cart.png" hash="815b4c64fae21b4c162525ece76dc44d"/><file name="home.png" hash="9e473791b022b7c2dfc7d29b1b6de887"/><file name="more.png" hash="f3662ae29923b87eba3a729192aa3df3"/><file name="page.png" hash="2291d77f21de042040bc0864be40138b"/><file name="search.png" hash="10bfa7ec3361ce7cbcc5d25087f181eb"/><file name="shop.png" hash="e6639a9fdc143363da82a7d78e126f1c"/></dir><dir name="ipad"><file name="background_home_landscape.jpg" hash="9e3ef117985113b804531142d539b60a"/><file name="background_portrait.jpg" hash="bdf9e034fd30b923086e6c622ea10451"/><file name="banner_image.png" hash="693bb9d118155a146b21ce9fcfba08da"/><file name="banner_image_l.png" hash="a070a40d57610b5cc7160fe894482a1c"/><file name="bg_catalog_header_hor.png" hash="f61a67aa288e1b8a8df7b4d4527c662e"/><file name="bg_content.jpg" hash="70ddfc8959d878d1231dc7cbee4a063c"/><file name="bg_filters_buttons.png" hash="02fcb0ed7a7268e9f64ebaf06235bc09"/><file name="bg_filters_tooltip.png" hash="3b05ca6e585acd3d766be01eeaa23d47"/><file name="bg_filters_wrap.png" hash="31288784fe95c67de9b45b44458b4155"/><file name="bg_filter_button.png" hash="728f1cd358446881ffd863eff12204a1"/><file name="bg_header.png" hash="e2cf5a575a27e6e4533e3c85e3472a82"/><file name="bg_home_content.jpg" hash="1d55a198279e4f2b163c98c18f699646"/><file name="bg_home_header.png" hash="00f2fbf96d2b915dcbcd921b0301ef3f"/><file name="bg_home_header_hor.png" hash="9bfef728ece003d5b3433d2623ea168c"/><file name="bg_home_products.png" hash="ac6a8a79b959a0c8298b1f607c0f0af8"/><file name="bg_home_shadow.png" hash="c54b071ca3e97a6ee67588ef74b7b44e"/><file name="bg_home_shadow_hor.png" hash="0d21a99c5c749d0e5070e3585ff4a23f"/><file name="bg_product_image.png" hash="4da74325c1a4ee1ca19b414e5d590f75"/><file name="bg_search.png" hash="6ee08d05d0c4ef9ed64b9914b821f408"/><file name="bg_sections.jpg" hash="0ee90005663aced09a9ce6385bdbce2c"/><file name="bg_status_bar.png" hash="17124d9d392bb8e37b202c80a595df54"/><file name="bg_status_bar_hor.png" hash="bd4a9f11ecb1c896145267731d8a951d"/><file name="i_cart.png" hash="1bbe0a0e54eed5bb14b9bfcce83da758"/><file name="i_info.png" hash="3f0fda8b294b67bf698badbcaa99150b"/><file name="i_login.png" hash="deb4089bdc61582c78c90ef192d577e8"/><file name="i_remove.png" hash="4923eb5e76b3c6ba6df5c667db816a0c"/><file name="logo.png" hash="49c19f59b459b6c0b3b99daa3fe7f932"/><file name="logo_big.png" hash="693bb9d118155a146b21ce9fcfba08da"/><file name="product_image.jpg" hash="2bb6c69129bcb18dc93e9f48605647c6"/><file name="sections_arrow.png" hash="7db7144083a31882e8a62cb9579f478f"/><file name="stars.png" hash="70d38cd9883d70e4f6b21ac4874b9868"/></dir><dir name="slider"><file name="actionsBg.jpg" hash="ee3db742cbec9a436ba46118c8a01303"/><file name="addToCart.png" hash="2a146be4bc63713df19cc353e030d44f"/><file name="addToWishlist.png" hash="9b23a4e0d9acfc79f314e9082f14c4de"/><file name="tellAFriend.png" hash="b7600fa2ae52bdb1d6bb86fe4d9f1773"/><file name="viewDetails.png" hash="90cf37c6dbbee1861350b4c05469e3ae"/><file name="viewGallery.png" hash="304f3d03949d07055bc056359fe17763"/></dir><dir name="sort_buttons"><file name="bg_button.png" hash="87d0f1b123f01c3aea3cb8a2b146306e"/><file name="buttons.gif" hash="2f14f1a3f0fb38790779c992a58654ae"/><file name="buttons.png" hash="b4a3f17370e03bf5d2a5cdf7800c25a7"/><file name="button_up.gif" hash="7ad527f99b9975d5634fb2d5cc99e6b3"/><file name="center-active.png" hash="5903988cd458cd794f23a212d51aa725"/><file name="center-inactive.png" hash="135b46aaa5c3b131a5a7e9c45c004e06"/><file name="filters.png" hash="3837ab6fcfe959833dd998533db1ca7f"/><file name="left-active.png" hash="86e94441b96a0d27d0b0a7e5108f86ed"/><file name="left-inactive.png" hash="0ddcb75aa9971cca39a5a65b4bdff8c4"/><file name="right-active.png" hash="320740ff608187301b06a96eab2f9e8e"/><file name="right-inactive.png" hash="cac4b39ab380353ffd5fdbcedb6e0a0a"/></dir><file name="1.gif" hash="817fd84187db3eee00799b0acf316457"/><file name="2.gif" hash="1a842d8f3ac25cfcdeab6c86dd8fea89"/><file name="3.gif" hash="207cd55e968c284bd52c86efdcdda1c7"/><file name="actionsBackground.png" hash="11faa8baee72f3e6a9a02a83915c8658"/><file name="actionsBg.png" hash="9acccd1980f17006942d74a718ebd7da"/><file name="arrow.png" hash="837259a7c365e46034dca728bffe9070"/><file name="background.gif" hash="bd92833eb2eb32e4a0282cea153ac13f"/><file name="background.png" hash="3717f4b4ba725701e2a0604129a3a815"/><file name="banner.png" hash="0637d31df6b5a434c9a332ee46122ef4"/><file name="btn-l.png" hash="92b2454528e9d39119038777cf53329c"/><file name="btn-r.png" hash="8c6aa9fd9203bc10822e0505f11e0c4d"/><file name="circle.png" hash="f4c116cb0554bf936d3b9ee38b7f3d1f"/><file name="grid.png" hash="23faa3f5572cdeb597c2bceedd93a7f8"/><file name="image-bg.png" hash="a588b9cced95a25fc18e28c775d9a001"/><file name="info.png" hash="3f0d2ed85b81e8251f294457c6bfa404"/><file name="lightStar.png" hash="b5dc40d5b793dae6a069357f49cccc24"/><file name="lightStar2.png" hash="75928926a6112540c9cb073157cb7d95"/><file name="lines-h.png" hash="ea3d95812c9838affc6df2f3a3cb1977"/><file name="lines-v.png" hash="9e3ffee29ba28477d50da9642019bc0a"/><file name="login-btn-left-alt.png" hash="71bb6c7d24252aace27bee711d7616f4"/><file name="login-btn-left.png" hash="cbbf9afc6e9fc433f57270e88b63f351"/><file name="login-btn-right.png" hash="438fcc598d012bf6d33184e95accfd24"/><file name="login-btn.png" hash="051ee2c1a8ce3f7b8de3293cd2e2ed85"/><file name="logo-small.png" hash="9b3477a4552bcb878b4943aae5351622"/><file name="logo_25.png" hash="ba41ed568d916175c32803b614442447"/><file name="men.png" hash="46d7d1773118ef0a27353e8a9f6719fe"/><file name="mm-frame.gif" hash="eebf30806f1dbf2118e7ec39a016c86d"/><file name="mobile-catalog.css" hash="80cbd74984354df2d86f4ad68b9123a3"/><file name="mobile-home.css" hash="b57641c73c4eae08e0a02cd7291d9465"/><file name="rowBgIcon.gif" hash="9ee89b961ae2bb047672ba5d2d2677c6"/><file name="slider.gif" hash="c6b87bf15b85b18c0515e2cbefaabe60"/><file name="smallIcon.png" hash="e76d2a6364042f41b3f35fc8cdc9c0ee"/><file name="star-active.png" hash="d4ab959a92bda610527a3e3942c4c0b0"/><file name="star-inactive.png" hash="f7fb99710be4c03ac23b1206f20e761d"/><file name="t-shirt.gif" hash="7505efdaabf13c4f8e26f7cfe15c8c96"/><file name="t-shirt.png" hash="46d7d1773118ef0a27353e8a9f6719fe"/><file name="women.png" hash="46d7d1773118ef0a27353e8a9f6719fe"/><file name="youth.png" hash="46d7d1773118ef0a27353e8a9f6719fe"/></dir><file name="btn_edit.gif" hash="e7ecc9fea5c3813957814050508507a5"/><file name="dropdown-arrow.gif" hash="332e99ca6b4d1e0d39972e04fb0b2395"/><file name="empty.png" hash="23dc9dc3c4751f83c2df7a5c42668824"/><file name="full-arrow-left.gif" hash="8ec91b60d38d1a16cba7670f2088a5c7"/><file name="full-arrow.gif" hash="36ddff0fca1c7d8900cb3633e0a30cea"/><file name="gel_green.png" hash="591959d831e8e42c9175d12a88f0bae2"/><file name="gel_red.png" hash="db442c023014df9da32b84bc1bb5a39f"/><file name="l-arrow.gif" hash="ee49f7eab64657b5131953acef0238fd"/><file name="loading.gif" hash="5d25806dac7cbee5f894b13144783866"/><file name="r-arrow.gif" hash="d0429a9781e915fc9d9ca8875c470d32"/><file name="remove.png" hash="ee9497c5f31933eaab3e9e352495ee12"/><file name="small_logo.gif" hash="d5c8be7c0f16aac2549759c0228492d6"/><file name="swatch_black.gif" hash="fd31d6a3a435c8ad1f7c43f346bb47e4"/><file name="swatch_custom.gif" hash="fb34791a48366957a141e12b563888c2"/><file name="swatch_default.gif" hash="fb34791a48366957a141e12b563888c2"/><file name="swatch_funk_leaf.gif" hash="f1d3ba87efb742b47da879a6f48909c4"/><file name="swatch_hot_red.gif" hash="d9363d45dc2993c2fdc3ea43c5b6f71c"/><file name="swatch_sky_blue.gif" hash="ded1455db119d09a3aedd7474fd1875a"/><file name="swatch_user_custom.gif" hash="a24f31421a1ff56d1be0845f9a7c7020"/><file name="switch-arrow.gif" hash="dc7243962b341f366cd072d486687e6a"/><file name="tab_account.png" hash="27101fbaa78a07426be4768acc4c53ff"/><file name="tab_account_android.png" hash="77605cbc87f75ca17e91a5393765ceb1"/><file name="tab_account_ipad.png" hash="2997de5402195d0720309b73c6446fab"/><file name="tab_cart.png" hash="e803f760ee81cb35183f1122f388b774"/><file name="tab_cart_android.png" hash="477e97f8d03ea8aa674e952709f86578"/><file name="tab_empty.png" hash="bdd4cc355566e8861b2c45424ad94516"/><file name="tab_home.png" hash="dfa104e4da74e4a55d3c98d6ee0f7122"/><file name="tab_home_active.png" hash="bba5eb9bb724c84c1ede9e6f4bec3575"/><file name="tab_home_android.png" hash="1fefc6b070cc21b31b43194a7d85f9d9"/><file name="tab_info_android.png" hash="67fc19d8d926f7aede482f5a7083fc71"/><file name="tab_more.png" hash="2803359cb3e795bf67457e727aa16020"/><file name="tab_page.png" hash="ca05dbc42f944b8d4255f6675f6dd93a"/><file name="tab_search.png" hash="2cf29dbe325558353621b4241543204f"/><file name="tab_search_android.png" hash="932c2c568872fd9e119367c887f0539a"/><file name="tab_shop.png" hash="f36be0d3d27f2b37626247d3f6a55e2a"/><file name="tab_shop_active.png" hash="de907d6a52d477d4319649f9b0e2e4aa"/><file name="tab_shop_android.png" hash="e119fcd20f8cba856d550a64d775ddbb"/><file name="tmp-icon.gif" hash="58b759aecf3bdae26d5aaff7a0be5c90"/><file name="xmlconnect_tab.png" hash="cd99a7e01a42a6c82d866f7684faeb95"/></dir></dir><dir name="xmlconnect"><dir name="fonts"><file name="android_icons-webfont.eot" hash="2fc917efbfb3c933ccfddc108ef05f33"/><file name="android_icons-webfont.svg" hash="e8cb2b5ef019bbc2885c97ed0caaf2a0"/><file name="android_icons-webfont.ttf" hash="bc567dd7a381093fbb652c58cbad9430"/><file name="android_icons-webfont.woff" hash="8310b54d55bf84a8a3f3a86c22a51aef"/><file name="stars-webfont.eot" hash="019beb4b8ec19447657cf3106138bbe3"/><file name="stars-webfont.svg" hash="20cf0312c0b951d173d4531ea18abc6f"/><file name="stars-webfont.ttf" hash="d63d95e9adaf775f410437535622bf60"/><file name="stars-webfont.woff" hash="526d9756131c94139f0f1df5272197fd"/></dir><file name="boxes.css" hash="a3648c3516608a34ee7f53e447b1d9f4"/><file name="dropdown.css" hash="e5388a1fd90df2a2e3860516adef0367"/><file name="iestyles.css" hash="3e8a316291621eee4147373bd3003eb9"/><file name="mobile-android.css" hash="c932d2898a1ffd5545cfd76699260125"/><file name="mobile-catalog.css" hash="ca7c4c2c7643ca1249e00bbd45980fd2"/><file name="mobile-home.css" hash="b10c97acf5ac07c40d1db72b9d413841"/><file name="mobile-ipad-catalog.css" hash="2b35f47bb153c659640dd37beac277f1"/><file name="mobile-ipad-home.css" hash="270c8e4c8111de6c6173f9b6883c85ec"/><file name="remove.png" hash="b4903936d44dc498d2f32b72d9161ff0"/><file name="styles.css" hash="c87a56ddc3001a2e357d648695855f5f"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="images"><dir name="xmlconnect"><dir name="catalog"><dir name="category"><dir name="placeholder"><file name="image.jpg" hash="097ab8a3051bc037ea3de0e17f440540"/><file name="small_image.jpg" hash="f825d16f97a640453553c79c48ebaa73"/><file name="thumbnail.jpg" hash="b2b682d28a08a748a73d2cda70ab5a57"/></dir></dir></dir><file name="tab_account.png" hash="0498d73e47ed47179e5546dc15c17dc7"/><file name="tab_cart.png" hash="9055ba76e256a51d3fee53a8c41d5226"/><file name="tab_home.png" hash="07d0af93e167b9366d3d4fb3d6cdb31c"/><file name="tab_more.png" hash="b9fc21feb8d7655bc9c2985c37b0de2f"/><file name="tab_page.png" hash="ca05dbc42f944b8d4255f6675f6dd93a"/><file name="tab_search.png" hash="25e880eb2a4d06828e2e1c3f32d22400"/><file name="tab_shop.png" hash="fe602fc2e7093efef5ecc0b027a32d91"/></dir></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="xmlconnect.xml" hash="67820e2adb2d74a4f0c62efc01b18ecb"/></dir><dir name="template"><dir name="xmlconnect"><dir name="edit"><dir name="tab"><dir name="design"><dir name="preview"><file name="banner_rotator.phtml" hash="89da7cb3dabb72de16c95cd5bd6cc935"/><file name="catalog_android.phtml" hash="591050ccc493b364fb895055c986cd86"/><file name="catalog_hor_ipad.phtml" hash="cc81292b0dfa7aa3e6f39f792b74b80e"/><file name="catalog_ipad.phtml" hash="8cc888f4bbae4ab9fb10f4b70e8b8515"/><file name="catalog_iphone.phtml" hash="7112c646bd841a71877eb621e68614e6"/><file name="home_android.phtml" hash="096341a4da1d21ef2c9ed3a6c054977a"/><file name="home_hor_ipad.phtml" hash="486989d25e68d88b6d4132789a14ce0a"/><file name="home_ipad.phtml" hash="93c4a6a124cfdaebde3abadb9f087bce"/><file name="home_iphone.phtml" hash="c15fdeef53ce2c1f2fdb53e5894feaae"/><file name="productinfo_iphone.phtml" hash="99c2fd2107ad06e625384b56182fd316"/><file name="tab_items_android.phtml" hash="d0b925bbc89f510aac004ffc1b33062a"/><file name="tab_items_ipad.phtml" hash="8ca8d864408bb880b6f6a9999b0e4d26"/><file name="tab_items_iphone.phtml" hash="406b98b55565fb58c1a3e3dc90922d6e"/></dir><file name="autocomplete.phtml" hash="899405427f3311f745e2a4e48a626de0"/><file name="images_android.phtml" hash="325f5377c2dc03c67fc6d8518b06f23a"/><file name="images_ipad.phtml" hash="c143fc2fffae5798c17e98b8ea95ee5d"/><file name="images_iphone.phtml" hash="662948af12653a8ae48414dfbb0e9527"/><file name="image_edit.phtml" hash="4362113375c916fd5b30956a77f5c03e"/><file name="preview_android.phtml" hash="484f96d74d8e196296d5498582a27106"/><file name="preview_ipad.phtml" hash="4475acfd140a51c884b447bbfce9ba61"/><file name="preview_iphone.phtml" hash="5672019ff2f83f4e4baeab6ff9755c7f"/></dir><file name="content.phtml" hash="0e020e28c74c977c8690ad366886cf95"/><file name="design.phtml" hash="a38fbdd0387b167230e6745fc9a5ee7d"/></dir></dir><dir name="form"><dir name="element"><dir name="country"><file name="androidmarket.phtml" hash="053e69572e7b8850f3f96f22c5d5f9f7"/><file name="istore.phtml" hash="275af872365061838828011b0398db02"/></dir><file name="addrow.phtml" hash="46fddf6c4b452a6c529499de2c2f1323"/><file name="app_tabs_android.phtml" hash="7f01e540dc7f88fe69d91b758069a826"/><file name="app_tabs_ipad.phtml" hash="ae6ed3ef1d8bcf7bfbcc8a525002da35"/><file name="app_tabs_iphone.phtml" hash="330a5325e1bed894e12400939d5f5ff2"/><file name="themes.phtml" hash="106356a554f5a6e0910e5b35eda0323d"/></dir></dir><dir name="mobile"><file name="notification_helper.phtml" hash="342fc4bff0154f93555e6d8418018951"/></dir><dir name="submission"><file name="app_icons_preview.phtml" hash="4d4f0f78338338d15605777df69be0e7"/><file name="container.phtml" hash="c576009dd87ddd55ce8b023587128806"/></dir><dir name="template"><file name="preview.phtml" hash="bd26b9a350f430e4a6905133db031bfc"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="xmlconnect.xml" hash="f166ab0a4ea2c769839410ba0ef04c40"/></dir><dir name="template"><dir name="xmlconnect"><dir name="centinel"><file name="authentication.phtml" hash="17420b60e21faff408abf1fcc8a83d31"/></dir><dir name="pbridge"><file name="result.phtml" hash="412b98ba988d6049098414f8cbce09b6"/></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Mage_XmlConnect.csv" hash="28ea9a9ae90f0c270f85ebdbf2b60565"/></dir></target><target name="mageweb"><dir name="js"><dir name="jscolor"><file name="arrow.gif" hash="5034704a76cd55c1cbcbc58ea6bf523f"/><file name="cross.gif" hash="ba9a274b9323753cd95bc3b1eb2f4e5f"/><file name="demo.html" hash="edf71251cb2be20322d2efb00aee86a6"/><file name="hs.png" hash="fefa1a03d92ebad25c88dca94a0b63db"/><file name="hv.png" hash="990d71cada17da100653636cf8490884"/><file name="jscolor.js" hash="b65a1505390592ac6c0177d6b84774e0"/></dir><dir name="scriptaculous"><file name="builder.js" hash="1174f6fc34ca5d54ba10b0c719386e7c"/><file name="controls.js" hash="8c414e1787c0ac9f10b16b252361c8b2"/><file name="dragdrop.js" hash="95c24654dce8433dee51731efa7b9a04"/><file name="effects.js" hash="d795089f95a22306cca9b337c439c65a"/><file name="scriptaculous.js" hash="d59eba4e0b14b672208b0862ae1c2196"/><file name="slider.js" hash="6043f96a71d2685fecd02e2ab99e84d9"/><file name="sound.js" hash="0f0fab23fa2cb1bc7717fd2bdf45402e"/><file name="unittest.js" hash="99969698b22272f77bdf4c64586862b3"/></dir></dir></target><target name="magecore"><dir name="Mage"><dir name="XmlConnect"><dir name="Block"><dir name="Adminhtml"><dir name="Admin"><dir name="Application"><dir name="Edit"><dir name="Tab"><file name="Settings.php" hash="a47b208a47c76ddf50fbb820fcd59561"/></dir><file name="Form.php" hash="476d53d53aae676d873a8e558873296f"/><file name="Tabs.php" hash="3ee5becdfd696c2f6a1853042119e190"/></dir><file name="Edit.php" hash="ad214481079e0bac647fc3aed802e035"/></dir></dir><dir name="Connect"><dir name="Dashboard"><file name="BestSellers.php" hash="f7a6937309e1e154659a1bd3a8e0024d"/><file name="Customers.php" hash="a569d57ba6946aa95dbb9709eb49061e"/><file name="GraphAmountsData.php" hash="96faf08a7ae5d64a4df65adbe172930c"/><file name="GraphDataAbstract.php" hash="3463bb1397125bb9632f77d5bcecc747"/><file name="GraphInfo.php" hash="21aa1585a48f06037955e7881d05f593"/><file name="GraphOrderData.php" hash="ee34310eb99a996fec35676c26a5eaa6"/><file name="GraphTotalsData.php" hash="2fc1cf4a9b1441dc4c66eed500c34573"/><file name="LastOrders.php" hash="33faf2a032df931fe9e05a327492843d"/><file name="LastSearchTerms.php" hash="b055315ddf33e4213b03dc38cc46e1e6"/><file name="MostViewedProducts.php" hash="a2eaa67c2a862d363a9e6c921492b3b6"/><file name="NewCustomers.php" hash="9d9d635f0250cf39f0d916f1b87742f5"/><file name="SalesInfo.php" hash="bb9152778bc63611409fd6cd95717fb1"/><file name="StoreSwitcher.php" hash="5237ff6b5d540a1bc5d61961d63cd018"/><file name="TopSearchTerms.php" hash="cec4a64ad08d36496ba0586a77f0ea8c"/></dir><file name="Config.php" hash="173da17980f9ca16ecda647c2e404112"/><file name="Dashboard.php" hash="29a6d23dd5353b1adf9e2ca540e5e09c"/><file name="Loginform.php" hash="f7da781b991d3b14d75548133f5876d2"/></dir><dir name="History"><file name="Grid.php" hash="6308d26ad2e05740eb6991e3257000bb"/></dir><dir name="Mobile"><dir name="Edit"><dir name="Tab"><dir name="Design"><dir name="Accordion"><file name="Images.php" hash="c9f251ac77b9689c9c381303be8032f8"/><file name="Tabs.php" hash="caf8302b277ea18303213d43764ed28e"/><file name="Themes.php" hash="9d6dec2260396ad8798202ee1ba6eddc"/></dir><file name="Accordion.php" hash="5b545ce26cbf7452723591cd4c3d250b"/><file name="Images.php" hash="0a72eb16ff861b0e13e3bc3122a4cee3"/><file name="Preview.php" hash="d4a5bccbcfc7f2885917c7082692451e"/><file name="Themes.php" hash="6ae0e49f82cc094f5dd9315887f9e14d"/></dir><dir name="Submission"><file name="History.php" hash="e48ed8d20f12e56a08beb5afcfd954b8"/></dir><file name="Cache.php" hash="607618d233c5dab9415475b4ad61bb59"/><file name="Content.php" hash="c9e6e215c28ebaa0aa5964c19229ae71"/><file name="Design.php" hash="f90d65ffa27e94916da616afc8e221f2"/><file name="Flurryanalytics.php" hash="89ad25f1adf60b1e4232ba29f7f5ad64"/><file name="General.php" hash="1c311c8ca86381df53c570870a20f259"/><file name="Notification.php" hash="beae607b96d8b6f98cd7022185cc8bdd"/><file name="Payment.php" hash="4cb1f8f6c03a1c4a649055faa1e088d5"/><file name="Settings.php" hash="e17af0c14089ec02c46c39369d35ea9f"/><file name="Social.php" hash="3657d0e59e519a23ef71b2ea892aa6c1"/></dir><file name="Form.php" hash="9e9957b476bbd1fb3952c4e4b706b2df"/><file name="Submission.php" hash="b8e1008535fe0c52ebddd0124cb1e15d"/><file name="Tabs.php" hash="b7de5cfa115506fddaf0ea05adbedca6"/></dir><dir name="Form"><dir name="Element"><file name="Addrow.php" hash="331985b65aceb180f82828d6bfda7e8f"/><file name="Color.php" hash="5b3e0678201cb7e88c8c78cd4b9b5173"/><file name="Country.php" hash="77f9bffa5f95cbb230b1e35ab463a08c"/><file name="Datetime.php" hash="1c3904734ec337c5b61bc740a2ade01c"/><file name="Font.php" hash="97fe8057781e10c299430a0cd15eb176"/><file name="Image.php" hash="9a02015de1a57559403f7dc656771ad3"/><file name="Page.php" hash="c3b1ac3639341f84ed95c5807e2188ab"/><file name="Tabs.php" hash="afb7ba2119332ac4382b6b1226d44958"/><file name="Theme.php" hash="4569541d38e137de716069f66ca93656"/></dir></dir><dir name="Grid"><dir name="Renderer"><file name="Bool.php" hash="8e9be8e177a8ea4368fe92fe0f466a60"/><file name="Type.php" hash="b6337cfe77db1a45ff431143055e405f"/></dir></dir><dir name="Preview"><file name="Content.php" hash="771869a996b1630b8bba3293eae9d768"/><file name="Tabitems.php" hash="b9e66e1c2d30c70b353fcbbddabcd13a"/></dir><dir name="Submission"><dir name="Renderer"><dir name="Country"><file name="Androidmarket.php" hash="cc5322cad4892b477d23ff8798ac885d"/><file name="Istore.php" hash="83f84cf61a3b2dab063773c57270c215"/></dir></dir><dir name="Tab"><dir name="Container"><file name="Submission.php" hash="94ec8a46ff9c9271c03df4850690ca89"/></dir><file name="Container.php" hash="bd10d3d94dbe4d422e84be6fe2c1ace6"/></dir><file name="Form.php" hash="a1338b97c57150a7e1a3a7516b421438"/><file name="Tabs.php" hash="0e75e7c201f2639ee73618a90ea9a487"/></dir><dir name="Widget"><file name="Form.php" hash="2bd91c9af96eaf42d1484b263857772b"/></dir><file name="Edit.php" hash="ef6d5a5b9db8e01f38ed3b164bbb9258"/><file name="Grid.php" hash="8ca26959087f2a12d5f9aa3bf1fc650b"/><file name="Submission.php" hash="f15232c6891c6699dfc89b826b54c74d"/></dir><dir name="Queue"><dir name="Edit"><file name="Form.php" hash="77809e160faec639d4e570b46c85c8df"/></dir><dir name="Grid"><dir name="Renderer"><file name="Action.php" hash="2de3d991818d5add59e109ac5f0e26ba"/><file name="Application.php" hash="c563b1f5d6cb4fff511bc6cbfdcebe7c"/><file name="Id.php" hash="5a3bd6f7130ff4354884635d1246452c"/><file name="Msgtitle.php" hash="4d89f7f6a6252260f61b673c6cac1e34"/><file name="Pushtitle.php" hash="c411360431127611c84da7690b5c48c2"/><file name="Status.php" hash="78c46092eb556a263dfca7d5bc4941db"/><file name="Template.php" hash="a36ed9dcdc7f3f331452cee2bb508482"/></dir></dir><file name="Edit.php" hash="1610c2fd1b9fcf552fd0f80a0ecdd3b0"/><file name="Grid.php" hash="f34b4443bb916da032b3780834cb0b2d"/></dir><dir name="Template"><dir name="Edit"><file name="Form.php" hash="f9b618292fe83e9bfc2d404b88a81036"/></dir><dir name="Grid"><dir name="Renderer"><file name="Application.php" hash="cdae7056f704834da9e400277411ac0b"/></dir></dir><dir name="Preview"><file name="Form.php" hash="99d036e0da9c43dc125b30536fb4e9d5"/></dir><file name="Edit.php" hash="9dfdaa4321d280b27236e007f92e3159"/><file name="Grid.php" hash="22f94f5d0dd944b4c78690cd04092a18"/><file name="Preview.php" hash="891acec6c53c94b2f2dbc892c9fb80dc"/></dir><file name="History.php" hash="d00a4acfccbd558e64ffe4eecb731d9a"/><file name="Mobile.php" hash="e23e9e74e7843c2fd07ab3230069c99f"/><file name="Queue.php" hash="e13f7f2fa44867d5580b7d0e38542bae"/><file name="Template.php" hash="2a577c9a452528e44f69b730cef9f9a1"/></dir><dir name="Cart"><dir name="CartTotals"><dir name="Nodes"><file name="Default.php" hash="13b937bdd961d8ebc5e5c65b985f2952"/><file name="Giftcardaccount.php" hash="5acba9af00832fcf9a79c50f80fd69cb"/></dir><file name="Default.php" hash="b71795f830500dd143a6d508e430183f"/><file name="Grandtotal.php" hash="b59199ee6d44441e3bbd5eed1e7db5b5"/><file name="Shipping.php" hash="28c3bbe92b56d919fead660489c5891f"/><file name="Subtotal.php" hash="8d26443059e865e70076ccb5423d1312"/></dir><dir name="Item"><dir name="Renderer"><file name="Configurable.php" hash="4cd9ea96f9d65dd832cc457cf66af8df"/><file name="Grouped.php" hash="46290fe4e7338f0640022f591f0dfb25"/></dir><file name="Renderer.php" hash="4905f3e3f895df2bcee10f34fc6ce834"/></dir><dir name="Paypal"><dir name="Mecl"><file name="Details.php" hash="bf9e5975e8f44052b3de9ca66b1c5028"/><file name="OrderDetails.php" hash="579615f123d2a6c1e707cb6d777300f1"/><file name="Review.php" hash="d1a828730328382d0fe331b4d794535d"/><file name="Shippingmethods.php" hash="155ce6fb2ff7cd0764e3dc19a343a9af"/></dir><dir name="Mep"><file name="Totals.php" hash="0bd49f7088c1f7823bcfd91b4136bee6"/></dir></dir><file name="CartTotals.php" hash="2c08e3717ad64e12a4a0e0bfb37386ce"/><file name="Crosssell.php" hash="5644046ee3555cdeeee472f1b753b128"/><file name="Info.php" hash="fd227e03835a46895163bda3d5f2d957"/><file name="Items.php" hash="39640b245f135f1e352902315b2360da"/><file name="Totals.php" hash="f327ec2b8659816a4004f832cea8a006"/></dir><dir name="Catalog"><dir name="Category"><file name="Info.php" hash="9dd1d0109dd30edb081e8102c0edc0ab"/></dir><dir name="Product"><dir name="ItemPrice"><file name="Bundle.php" hash="ac457ee3905283123af2609e7476edc5"/><file name="Default.php" hash="47f31b8590fc9d259aab1efc8a5289e0"/><file name="Giftcard.php" hash="1380867166c847b4df0b2ebb65baf819"/></dir><dir name="Options"><file name="Bundle.php" hash="8afc89f78810418d6aee2b7990ed9e7c"/><file name="Configurable.php" hash="8457a4df18d94c3eb6e387d378c4932e"/><file name="Downloadable.php" hash="94525919da37103bb0f23a94f7b2543f"/><file name="Giftcard.php" hash="c93c4ff2f38a72aba417f33ab47b184d"/><file name="Grouped.php" hash="18b054d71746c10ac449c8c1b9f5f018"/><file name="Simple.php" hash="848290eb597b773baf7232dbd3a06d5c"/><file name="Virtual.php" hash="4748e41479698b19e9532226707394cd"/></dir><dir name="Price"><file name="Bundle.php" hash="8b2ada82886d95c9a306bcb5d834bd00"/><file name="Default.php" hash="030ab93e037730f84c4042c80373a8ad"/><file name="Giftcard.php" hash="89d9c395060d9a3a50685d33d08d6a61"/></dir><dir name="Review"><file name="List.php" hash="69da6bc8d8b7f24a789b68f579d467d9"/></dir><file name="Attributes.php" hash="7a8ddf4dd3bb20fa523fec37bf819172"/><file name="Gallery.php" hash="9741f5487e804e500a69235f213981a9"/><file name="ItemPrice.php" hash="56fe6c68fca2d7b4629376241550af5f"/><file name="List.php" hash="9449a5bb46e220f737bd234e9daf66eb"/><file name="Options.php" hash="c39ac92911dc333a5a2dd24f1868e063"/><file name="Price.php" hash="0d2a385ad233ddc0d8396b5ca518c1f7"/><file name="Related.php" hash="0bf2a068cafdff7bfae04c220b5ba075"/><file name="Review.php" hash="4376d0136df5f28d91e1ce79408dfb0e"/></dir><dir name="Search"><file name="Suggest.php" hash="13eb66cd0e6ce373c250f725e3aefc94"/></dir><file name="Category.php" hash="9f2cf762f4c620f0160f075784397011"/><file name="Filters.php" hash="0737e7fa51f4c28fb1af5e97f03d407a"/><file name="Product.php" hash="7403bdf627c47dd055b17f0d28b8d301"/><file name="Search.php" hash="cdb7d74270a7b5d26ede9d1567262577"/></dir><dir name="Checkout"><dir name="Address"><file name="Billing.php" hash="4615ae45f7f1495236fee6ab974d080d"/><file name="Form.php" hash="ce1d1c506fae20562ba4c8caf26be2c5"/><file name="Shipping.php" hash="75a7a08f740a3d84a911e9fcddd9009f"/></dir><dir name="Cart"><dir name="Item"><dir name="Renderer"><file name="Bundle.php" hash="1b668000cfc2ebde728cf47d3c8cf3c6"/><file name="Configurable.php" hash="f7a59b17a721a213d3d353bff28a1f6c"/><file name="Downloadable.php" hash="77f0db4579c50d314c49944cf8e82ff8"/><file name="Giftcard.php" hash="35e740c9159fb7c4d844c58ee1632a51"/><file name="Grouped.php" hash="8475905aa4b2b22781da0295812a7053"/></dir><file name="Renderer.php" hash="983ef17f535df61b104d467a4dc38e11"/></dir></dir><dir name="Onepage"><dir name="Address"><file name="Form.php" hash="d8b1bb4d210fd5063a45a4d831636ab9"/><file name="List.php" hash="ae4eee6377c2714adac0b439d6967a37"/></dir><file name="Address.php" hash="83cb2a5d9649042f4bbade46f03ffb32"/><file name="Review.php" hash="3076ca4cf6cf74382b1ea55c6958c67e"/></dir><dir name="Order"><dir name="Review"><file name="Info.php" hash="40ef23086de1c8b4ae6677b3efed13a5"/></dir><file name="Review.php" hash="8ff677073d7ed80c5b3a614f081525c3"/></dir><dir name="Payment"><dir name="Method"><dir name="Info"><dir name="Paypal"><file name="Abstract.php" hash="ab78a8bc3f721290fc0ef091dd428034"/><file name="Express.php" hash="39ca54d07363a21ebf229aaebec3b43b"/><file name="Mecl.php" hash="b9b729c007d612130a18f5dc7ba86ffc"/></dir><dir name="Pbridge"><dir name="Paypal"><file name="Direct.php" hash="11e9b36e36405e189d1c06fec7636c1f"/></dir><dir name="Paypaluk"><file name="Direct.php" hash="c38fcd3cd36895aa497f1219a6dec898"/></dir><file name="Authorizenet.php" hash="cf5211dedc06d6b04846afbb4b4d4d63"/><file name="Verisign.php" hash="60625366e5f209b1961c76e8c42ee6d8"/></dir><file name="Authorizenet.php" hash="e49ef865c9f3b91d6ad8c49520e4730c"/><file name="Ccsave.php" hash="402de4bc500ec54bcba710ff056d7466"/><file name="Checkmo.php" hash="f7972790bc528511b022a2301dbfddc8"/><file name="Free.php" hash="034edad300ff336fd44e38eeef1603b5"/><file name="Purchaseorder.php" hash="70cc06eaeda3046c298377763b657524"/></dir><dir name="Paypal"><file name="Direct.php" hash="05c0d9c1b3d8f57517b884840df0e3bb"/><file name="Payflow.php" hash="6cb58928782e3216e6f497cb26d2cd15"/></dir><dir name="Pbridge"><file name="Abstract.php" hash="dbb02cdcb87999369b4a1943b6bc937b"/><file name="Authorizenet.php" hash="162304f1a2fcfb2bc9c92dc237609c7e"/><file name="Paypal.php" hash="696dc7a3f6c2ae3dbfeed07d202950b8"/><file name="Paypaluk.php" hash="0a536fb05595ca453f61206460290673"/><file name="Verisign.php" hash="ac966ac970a2682f5a2e6550b38234b4"/></dir><file name="Authorizenet.php" hash="b5759b2cc22e8a3af770d30ab2a5e4a5"/><file name="Ccsave.php" hash="390cf89e313fe26c3c2b233f8e05a5b6"/><file name="Checkmo.php" hash="58f6daa861715458e1cfcb78367c9058"/><file name="List.php" hash="6d31e0b5c7e92fcc82d7328877916c3c"/><file name="ListApi23.php" hash="2b7eb89ac81b6eee8cee82f642a5fd4a"/><file name="Purchaseorder.php" hash="69d66e0bc581777757fcf21eb7c83fe5"/></dir></dir><dir name="Pbridge"><file name="Result.php" hash="36e50da241533ff7b6a1723f9380955c"/></dir><dir name="Shipping"><dir name="Method"><file name="Available.php" hash="df8fc796cd338f84b5ec311388fb8427"/><file name="AvailableList.php" hash="5b13a94645e63980e3d63bb2a9111fbd"/><file name="Avaliable.php" hash="3deb4bd60e6a67e0c2a2ad34b71acb73"/></dir></dir><file name="Agreements.php" hash="fb12f4f1860377603dfaf3e8ea77800c"/></dir><dir name="Cms"><file name="Page.php" hash="c313dfacd7ec573fd368dd16f6b27e77"/></dir><dir name="Customer"><dir name="Address"><file name="Form.php" hash="ce581a5ca20c6f60a546f705a74f71eb"/><file name="List.php" hash="1038364f6c300d3eb8edccc87df1692a"/></dir><dir name="Form"><dir name="Renderer"><file name="Boolean.php" hash="97984783ca2e5725e0ee874a79b5d494"/><file name="Date.php" hash="95d6834bce7d72be7963bfea8bd0abae"/><file name="File.php" hash="38fca3a34090531ab380f6de0293407e"/><file name="Image.php" hash="b08fd3111a864ae9c8d968060796d83c"/><file name="Multiline.php" hash="39e37db8c8cf4aa12ef1f01c6922a315"/><file name="Multiselect.php" hash="42593dfde88fccbef918f3fbc251857b"/><file name="Select.php" hash="b0f2ebeef7c9eb0f5497ceea29f41500"/><file name="Text.php" hash="dc042eb425257b775258408cde5dbe67"/><file name="Textarea.php" hash="08d59b7ee634b548833a6ba3db6e10ad"/></dir></dir><dir name="Order"><dir name="Item"><dir name="Renderer"><file name="Bundle.php" hash="827740726bdac53f90bbe3fdf577681c"/><file name="Default.php" hash="c189184e6177add4394c3e3cbc685445"/><file name="Downloadable.php" hash="fa0ee48bcf21c234986fac7f0dfd7b86"/><file name="Giftcard.php" hash="1e1541616acf5c5d96e61e83a3e795e7"/><file name="Grouped.php" hash="ac2e1bbd54c002e41f545c077e46dc97"/></dir></dir><dir name="Totals"><dir name="Customerbalance"><file name="Refunded.php" hash="c3d5a807fac5b1eaac8c2800b3247346"/></dir><file name="Customerbalance.php" hash="a8a415eda418b5169d443ca69c4c511e"/><file name="Giftcards.php" hash="cd895470473384667f393ece7b159771"/><file name="Tax.php" hash="c65c42b1d55aba00d419a48496d69a00"/></dir><file name="Details.php" hash="c95e47526df1095c14389ce34069b9e2"/><file name="Items.php" hash="92a3776111ec3bd69d1d805549c5ff67"/><file name="List.php" hash="f1833dee63ca0ae6530fcd38f6dbbecf"/><file name="Totals.php" hash="3778e19e0ef18d36cdfbc590d45e3236"/></dir><file name="Downloads.php" hash="42fc55769c91d0bf18891fc2b1745811"/><file name="Form.php" hash="53b66473c6ebddc118ee386960aaef07"/><file name="GiftcardCheck.php" hash="8d9e4127a7d7345664e4807793132516"/><file name="Storecredit.php" hash="b8f617dc8ec212e7d669f7b81c39d961"/></dir><dir name="Review"><file name="Form.php" hash="c16f66092dd8e7c87644da96dd739e51"/></dir><file name="Cart.php" hash="617f01c461fbe3e25c8a08a6391dd718"/><file name="Catalog.php" hash="76f1376986a10ebecdd986def8009f2e"/><file name="Configuration.php" hash="8a160440812ebb065f4bf49642a592ac"/><file name="Home.php" hash="5e6219acf2a5d005fa99a168b257a0d5"/><file name="Homebanners.php" hash="072ca68094e89fcba75bd66f8838b57c"/><file name="Localization.php" hash="6477c7bacb2aa62f88ae9074e2f8b4ef"/><file name="ShoppingCart.php" hash="7c09d6e398f0f0d6e1474e0202198955"/><file name="Wishlist.php" hash="1549defc8b6f9e387b06f3913e2fc463"/></dir><dir name="Controller"><file name="Action.php" hash="3e2e8e918d3e7065afda31c0bfc1eefe"/><file name="AdminAction.php" hash="628c81281f11b4c2eb1464755a80922a"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Admin"><file name="ApplicationController.php" hash="1c7325f6cdf42516f2f628a7df4007c1"/></dir><dir name="Connect"><file name="ConfigController.php" hash="eeea12ce5cff984a5495eabafe4c9a41"/><file name="DashboardController.php" hash="e94b99a018acfa0f396e19ea5e6fb8ae"/><file name="UserController.php" hash="ce81c0c544c9c50d99aef7dc35d23eb9"/></dir><file name="MobileController.php" hash="6f05abc8564ee04cae1d1a758536248e"/></dir><dir name="Paypal"><file name="MeclController.php" hash="dfc6f6694c5aa88968b422ebd15c7867"/><file name="MepController.php" hash="78fe71caf7e3e363cd8f5813850700d9"/></dir><file name="CartController.php" hash="e6b8306d893d5acdae12650d2afb71c6"/><file name="CatalogController.php" hash="ef20b50c7ba008673c5b6141e2262be9"/><file name="CheckoutController.php" hash="20d8b3f394557d1a837996187c180803"/><file name="CmsController.php" hash="97fab23c06e52fd7d6c6a2ca0ce99113"/><file name="ConfigurationController.php" hash="c91bb04de49318851c6969eb2de361cd"/><file name="CustomerController.php" hash="f8e1110a90f34c1b2a3d9211068edc58"/><file name="HomebannersController.php" hash="8d458c7ae50133f57fd44f3ad92f30f4"/><file name="IndexController.php" hash="5aa7a5b60904e3e693bc43285a6b6b5b"/><file name="LocalizationController.php" hash="4b268a95fd62957a4e73b68af36765a0"/><file name="PbridgeController.php" hash="0b9576db18d870416e3a4b25b80c625a"/><file name="ReviewController.php" hash="bfd0de81d2f10e13749966248149968a"/><file name="WishlistController.php" hash="66fe0ceccfa8debd45c9e7ae1b6b9309"/></dir><dir name="etc"><dir name="themes"><file name="custom.xml" hash="cba253341e035e5892cc3ed577fae710"/><file name="default.xml" hash="7a23e5840bd5a7a1f3cf4b9d16c30d63"/><file name="funk_leaf.xml" hash="d143fb6570214bdf5489e5f53770eded"/><file name="hot_red.xml" hash="f6480993958f16e4206048172985ca06"/><file name="sky_blue.xml" hash="cb128be3f0ef9088b23d3947daf29cf8"/></dir><file name="adminhtml.xml" hash="37d58188b6bbaff839b625f340bc4871"/><file name="config.xml" hash="23f2a23b89643a303fab55235563450f"/><file name="system.xml" hash="759fbe862cf96d79eca093de0dd68320"/></dir><dir name="Helper"><dir name="Adminhtml"><dir name="Dashboard"><file name="Order.php" hash="e4d6074df05a8c625117f2808b006185"/></dir></dir><dir name="Catalog"><dir name="Category"><file name="Image.php" hash="d213940270e8ade95a69443a3ca6a261"/></dir><dir name="Product"><file name="Image.php" hash="ffdc43c2fb53414ef96fc6ab966907bb"/></dir></dir><dir name="Customer"><dir name="Form"><file name="Renderer.php" hash="07daa66e7bd0abd3f1ff09350f792e60"/></dir><file name="Order.php" hash="1e63498d476648e5b33afe6c388e2119"/></dir><dir name="Device"><file name="Abstract.php" hash="93ea7193f4706d820f24f384a193900d"/></dir><file name="AdminApplication.php" hash="e19120f445861e2c6e51ab03028d8be4"/><file name="Android.php" hash="5d2514483739f89a27235afc7b9fea38"/><file name="Data.php" hash="b31ff5f2887e132841c19a2a366a82dd"/><file name="Image.php" hash="4777ecc52429772bb4265658fd74c9c9"/><file name="Ipad.php" hash="f6092a7251429298cf6f215f58f5eee0"/><file name="Iphone.php" hash="f85ee452f1eaa4a0c5dbc1bd07d80f2a"/><file name="Payment.php" hash="5b54eccc95ea5c57d8c9ef5d934bc094"/><file name="Theme.php" hash="419408f4180aeeab72a82229adcea1d2"/><file name="Translate.php" hash="fbc31e8be6b2f9d17595a55cee1946a4"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="Search"><file name="Catalog.php" hash="b3d65a22980adadbe77dbf23c726b2ed"/><file name="Category.php" hash="4e473cd813eb955c82477c6edf72e605"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Currency"><file name="Default.php" hash="6c99a20069f641856d5bf65853488907"/></dir><file name="Baseurl.php" hash="5e015aa79db0e904d816064bc242147f"/></dir></dir></dir></dir><dir name="Catalog"><dir name="Category"><dir name="Media"><file name="Config.php" hash="fd88aeb90a45d8c0c6392cf5f8f70dc8"/></dir><file name="Image.php" hash="fc5086acd0bef36eceb2bdf6e035a998"/></dir></dir><dir name="Corefix"><dir name="Checkout"><dir name="Type"><file name="Onepage.php" hash="bda31415e3f2dc31e41a4f3ba0ac0bc8"/></dir><file name="Session.php" hash="741c09fdbf105ec0fce818b6fac05eed"/></dir><dir name="Sales"><file name="Quote.php" hash="941ef4c3d2af0c97edb76c7bd20d4a60"/></dir></dir><dir name="Device"><file name="Abstract.php" hash="b651e9f00fdf0fd73e95597c3c90bbc2"/><file name="Android.php" hash="edd798c7b7451ca0eacfcdeebb87f143"/><file name="Ipad.php" hash="98094893388d88c085e2a09e9f115cee"/><file name="Iphone.php" hash="97fe91f028b1887c9762ff9b9c8e4eee"/></dir><dir name="ImageLimits"><file name="Abstract.php" hash="031b93b3a6be36504dbdfcd2b42037e6"/></dir><dir name="Input"><dir name="Filter"><file name="MaliciousCode.php" hash="d5d500781af7b07e11baf5cbef0eb0ce"/></dir></dir><dir name="Mysql4"><dir name="Application"><file name="Collection.php" hash="22fbd44c97d1341eec2316d88cdd615e"/></dir><dir name="CategorySearch"><file name="Collection.php" hash="5c4024edb8005637be5b05bf745dc0b4"/></dir><dir name="Cms"><dir name="Page"><file name="Collection.php" hash="87d245dcf99541c3f87f9bf1e8114307"/></dir></dir><dir name="ConfigData"><file name="Collection.php" hash="daa0613586622c3cdd862f89c5cf6c32"/></dir><dir name="Filter"><file name="Collection.php" hash="3b820fa4fc65de422b40b90479ddd977"/></dir><dir name="History"><file name="Collection.php" hash="ac16db40a3f709981a0225bdd23badb9"/></dir><dir name="Images"><file name="Collection.php" hash="b600ff4516ca6d4d3c261f214c7ee8ae"/></dir><dir name="Queue"><file name="Collection.php" hash="5d975b1556e1f692e3e3ee8d4c3ae400"/></dir><dir name="Template"><file name="Collection.php" hash="b9937ca4d53b92e3a40a8e21bfd19a00"/></dir><file name="Application.php" hash="1cdcd21de7029fb1465bca854950f493"/><file name="ConfigData.php" hash="336e3efe5a1b04350d4c7ca0f73326b9"/><file name="History.php" hash="b8265853f335e44fba51ea1fbc7e7d18"/><file name="Images.php" hash="0af2c93d8000f41dc27df41d3064c114"/><file name="Queue.php" hash="5a8fc030e809b0382f5c016a147d577f"/><file name="Setup.php" hash="779fbf35b0332d076c940013fd480777"/><file name="Template.php" hash="7aa204a046c07ad13ba86e6ef2405bae"/></dir><dir name="Payment"><dir name="Method"><dir name="Paypal"><file name="Config.php" hash="5c3c65374748273093bab7d4bfb012a9"/><file name="Mecl.php" hash="75e1906def3ddcc85b95b1129c8ef5f4"/><file name="Mep.php" hash="ce4386c3e4220c6c3fe7143763468a50"/></dir></dir></dir><dir name="Paypal"><dir name="Mecl"><file name="Checkout.php" hash="4d8f4d3a4c6f3976031fdaa2f9b8611b"/></dir><dir name="Mep"><file name="Checkout.php" hash="1420f7b91a6eb90bb58b3541f82e60d6"/></dir></dir><dir name="Preview"><file name="Abstract.php" hash="95ae2224861c47cae17d286ab0b59444"/><file name="Android.php" hash="a58af778ff2baeabc8318c299fd9af51"/><file name="Ipad.php" hash="ae6aa389e953a9b2e307eab098693644"/><file name="Iphone.php" hash="199a076c592ce599b38049dc9b12d8de"/></dir><dir name="Resource"><dir name="Application"><file name="Collection.php" hash="4e6343b15bef0d8d03ff812534d6b0a0"/></dir><dir name="CategorySearch"><file name="Collection.php" hash="ec6eed47c5ef234e596baf7b361e2049"/></dir><dir name="Cms"><dir name="Page"><file name="Collection.php" hash="0e6f862fc1bf51a0073552e4ff9f12af"/></dir></dir><dir name="ConfigData"><file name="Collection.php" hash="f6e504022bfdfda1a0c930837533076b"/></dir><dir name="Filter"><file name="Collection.php" hash="501f8d89767152a3132c083b2bae3d89"/></dir><dir name="History"><file name="Collection.php" hash="e7d5df7e7c2198cb618c0facfdc603cd"/></dir><dir name="Images"><file name="Collection.php" hash="ffccb03fe49e9a1a49d96cca0aca162d"/></dir><dir name="Queue"><file name="Collection.php" hash="bb08b05a400392e55e396aa15ab8d360"/></dir><dir name="Template"><file name="Collection.php" hash="8e316fd73d5c981985c4d37f1b4b1d86"/></dir><file name="Application.php" hash="fd8a5fd78032e1e926bb97ebf36b707b"/><file name="ConfigData.php" hash="9fbcd1f9158db7f9e78b1585ba524b18"/><file name="History.php" hash="1525ac1b1420f73c6602cc19b576d78c"/><file name="Images.php" hash="1304f72eabcc19ed0f1c0d81dd8443c1"/><file name="Queue.php" hash="0d5448e714caa4cb13963cda2cdcf81a"/><file name="Setup.php" hash="b280e933cf9eda7846adc5fed5d72bf9"/><file name="Template.php" hash="8645648b26fdbed4822185a5cc532bd4"/></dir><dir name="Simplexml"><dir name="Form"><dir name="Element"><dir name="Renderer"><file name="Interface.php" hash="9b314b65fe1eeb81ccfc6ed6047c8e5e"/></dir><dir name="Validator"><file name="Abstract.php" hash="7bfd186b5448c207c63568d87c999617"/><file name="Rule.php" hash="c632915311d7f0913ef76b1d40fac395"/></dir><file name="Abstract.php" hash="cbada33ebe475c1482efe60d6cf9f6c5"/><file name="Checkbox.php" hash="9de46a951f58eaf77328589b91da2fef"/><file name="Collection.php" hash="7ee2575d3dfd6800da0df80bfeab55f5"/><file name="CountryListSelect.php" hash="c04b8df868e75fe5bef3b1195780391e"/><file name="Custom.php" hash="02b868b0885671ec31a06c62121275e2"/><file name="Date.php" hash="da33febe93bc5e79ee83c95b50fdc374"/><file name="Email.php" hash="5e75b3d6767a644b1026aa72cbc02d2a"/><file name="Fieldset.php" hash="772ba5340959516771edc4b1281cfb01"/><file name="File.php" hash="7adf9f3573740cbc69f0977f08bc062d"/><file name="Image.php" hash="4a249c60bfa12ecbffee2ea37f1ce7e1"/><file name="Multiline.php" hash="c04d28d557366d1d48034d5df57d913a"/><file name="Multiselect.php" hash="3566643c9295cc7ad0d7f84180bc1970"/><file name="Password.php" hash="7493a4ff4e57ae63c23fa06b49fd69a6"/><file name="Select.php" hash="d1d10f3482a819d281f8d7f30071f833"/><file name="Text.php" hash="b4ca84ab3a7848c9b711487b418c9d89"/><file name="Textarea.php" hash="e82df346b8046ae24a8efe23ea965069"/><file name="Validator.php" hash="00870fbba161e9a2d49a69d4f3229d1d"/></dir><file name="Abstract.php" hash="6919f553820cdc5f96667e0ec83d66f4"/></dir><dir name="Message"><file name="Abstract.php" hash="d84f4a0db726e3dd2bd3800c6d619888"/><file name="Error.php" hash="b8022e8e3a75cf0d518ceb98297bdaca"/><file name="Success.php" hash="416c64d2a613c3e4ca7b2a95e0ac6635"/></dir><file name="Element.php" hash="ce30e4ec6087bfdb7041922034de8481"/><file name="Form.php" hash="a9771b8058522d208e0c834e1681cabe"/><file name="Message.php" hash="d74c7ab082ec225043fe3d8eb69914bb"/></dir><file name="AdminApplication.php" hash="ec9397fee3ba11e5adbff6772cdd0b3b"/><file name="Application.php" hash="b2163019f3a6b42d022b7ea63250ae50"/><file name="ConfigData.php" hash="b321533eb035cff3c5f3656c1fbd51d5"/><file name="Configuration.php" hash="7de76ee60cfe4b891a2ae089615e4f4e"/><file name="History.php" hash="824e1a700cf1f4ae3b5c7e1b6950686e"/><file name="ImageAction.php" hash="e7938376838177879e465a3b6cf8e76b"/><file name="ImageLimits.php" hash="3ea1ddd0abcd04b9c02aa711d4fca44e"/><file name="Images.php" hash="dadb9fe9cb5a88da750108a6f5bc7643"/><file name="Observer.php" hash="7c44b84c94f2e3b30e0cd84d82e10494"/><file name="Queue.php" hash="d7ace4b050a353b9dccc76c8489c0d88"/><file name="Tabs.php" hash="2b6ea4c0c21dc059990aa2216172412d"/><file name="Template.php" hash="042438993d8155852d741f0febe16dbb"/><file name="Theme.php" hash="368f7c0a13491d939b8e6bf55d01b61a"/></dir><dir name="sql"><dir name="xmlconnect_setup"><file name="mysql4-data-upgrade-1.4.0.13-1.4.0.14.php" hash="0ad84adbf29371e0a7b96fb3e1da2caf"/><file name="mysql4-data-upgrade-1.5.9.9-1.6.0.0.php" hash="9fd3a52a4f03c4ad8fbad031f6745c4a"/><file name="mysql4-data-upgrade-1.6.0.0-1.6.0.0.1.php" hash="69dd77f991561a9e5ca78bb5317b7df5"/><file name="mysql4-install-1.4.0.8.php" hash="d722f3f741af029773ebaf514c522b0f"/><file name="mysql4-upgrade-1.4.0.8-1.4.0.9.php" hash="7f6bc966e741f00c44919aa6d4307b8c"/><file name="mysql4-upgrade-1.4.0.9-1.4.0.10.php" hash="b7fec601f2bf620e60c7284c2cf6634e"/><file name="mysql4-upgrade-1.4.0.10-1.4.0.11.php" hash="cf2afadfee0b21d1c2d02071303edfc1"/><file name="mysql4-upgrade-1.4.0.11-1.4.0.12.php" hash="a1333a0c415cbc398cdd0671ab539102"/><file name="mysql4-upgrade-1.4.0.12-1.4.0.13.php" hash="a07f66c79bb1df1208c9000c3496ada1"/><file name="mysql4-upgrade-1.4.0.13-1.4.0.14.php" hash="3852cdcfa482f19981a2e8e1092909bf"/><file name="mysql4-upgrade-1.5.9.9-1.6.0.0.php" hash="7f582854960b6c46fc8c5cb694150e97"/><file name="mysql4-upgrade-1.6.0.0-1.6.0.0.1.php" hash="8edcc9324df055ff544b9abc1744031c"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Mage_XmlConnect.xml" hash="f57b14eccad90152c221e4f090a8801b"/></dir></target></contents>
17
  <compatible/>
18
+ <dependencies><required><package><name>Mage_Core_Modules</name><channel>community</channel><min>1.4.2.0</min><max>1.5.0.0</max></package></required></dependencies>
19
  </package>