diff --git a/CHANGELOG.md b/CHANGELOG.md index 7adb137e5586baa40c7e85da83344c94320b6d2e..67c355bcc7bd8b2d1b450ebc8240d3e19e9b4cf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,25 @@ +0.74.0-beta6 +============= +* Framework improvements + * Implemented a default exception handler for blocks + * Updated the root composer.json file + * Updated the setup tool to support different editions + * Added an ability to operate with Sales & Checkout APIs as guests and registered users + * Implemented the additional Sales & Checkout APIs for registered customers and guests + * Added unit tests to cover Sales & Checkout services code +* Various + * Standardized the hierarchy of exceptions + * Added bundle product API integration to Catalog +* Fixed bugs + * Fixed an issue where it was impossible to place an order using multiple address checkout + * Fixed an issue where DB timestamp columns with current_timestamp on update were not handled correctly + * Fixed an issue with FPT in partial invoices + * Fixed a performance issue in benchmark test + * Fixed the incorrect Exception class in the Magento_CurrencySymbol module + * Fixed an issue by letting MySQL determine a database table type instead of MyISAM + * Fixed an issue where test failures occurred when the database and the application were in different time zones + * Fixed an issue where \Magento\Framework\Phrase omitted placeholder values if no renderer was set + 0.74.0-beta5 ============= * Various diff --git a/app/code/Magento/AdminNotification/composer.json b/app/code/Magento/AdminNotification/composer.json index a3420f351b9588fbbdcaecd0c03e5ed4dafe1ef3..354ef5fe45ea35de94ce81c1970bbb98e1a889ab 100644 --- a/app/code/Magento/AdminNotification/composer.json +++ b/app/code/Magento/AdminNotification/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "lib-libxml": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Authorization/composer.json b/app/code/Magento/Authorization/composer.json index 7e73256be4e784c664a74d31269a01cc2ac551d2..22341f8d0b4d16e93ce92006994cd36e1fbedb58 100644 --- a/app/code/Magento/Authorization/composer.json +++ b/app/code/Magento/Authorization/composer.json @@ -3,12 +3,12 @@ "description": "Authorization module provides access to Magento ACL functionality.", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-backend": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-backend": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Backend/App/Action/Context.php b/app/code/Magento/Backend/App/Action/Context.php index e6618170e4d6b72683ed960679575649e307dec4..b16e9b05d18047a5420f007e4136cce3177907a5 100644 --- a/app/code/Magento/Backend/App/Action/Context.php +++ b/app/code/Magento/Backend/App/Action/Context.php @@ -5,6 +5,8 @@ */ namespace Magento\Backend\App\Action; +use Magento\Framework\Controller\ResultFactory; + /** * Backend Controller context * @SuppressWarnings(PHPMD.CouplingBetweenObjects) @@ -62,6 +64,7 @@ class Context extends \Magento\Framework\App\Action\Context * @param \Magento\Framework\App\ViewInterface $view * @param \Magento\Framework\Message\ManagerInterface $messageManager * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory + * @param \Magento\Framework\Controller\ResultFactory $resultFactory * @param \Magento\Backend\Model\Session $session * @param \Magento\Framework\AuthorizationInterface $authorization * @param \Magento\Backend\Model\Auth $auth @@ -83,6 +86,7 @@ class Context extends \Magento\Framework\App\Action\Context \Magento\Framework\App\ViewInterface $view, \Magento\Framework\Message\ManagerInterface $messageManager, \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory, + ResultFactory $resultFactory, \Magento\Backend\Model\Session $session, \Magento\Framework\AuthorizationInterface $authorization, \Magento\Backend\Model\Auth $auth, @@ -102,7 +106,8 @@ class Context extends \Magento\Framework\App\Action\Context $actionFlag, $view, $messageManager, - $resultRedirectFactory + $resultRedirectFactory, + $resultFactory ); $this->_session = $session; diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Datetime.php b/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Datetime.php index 4d5255c93cd4187907d0873697444b7d2203af2f..7ff6ce3773c50ef14917a85706ac5d8a0af4d02b 100644 --- a/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Datetime.php +++ b/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Datetime.php @@ -104,7 +104,7 @@ class Datetime extends \Magento\Backend\Block\Widget\Grid\Column\Filter\Date $html = '<div class="range" id="' . $htmlId . '_range"><div class="range-line date">' . '<input type="text" name="' . $this->_getHtmlName() . '[from]" id="' . $htmlId . '_from"' . ' value="' . $this->getEscapedValue('from') - . '" class="input-text no-changes" placeholder="' . __( + . '" class="input-text admin__control-text no-changes" placeholder="' . __( 'From' ) . '" ' . $this->getUiId( 'filter', @@ -114,7 +114,7 @@ class Datetime extends \Magento\Backend\Block\Widget\Grid\Column\Filter\Date $html .= '<div class="range-line date">' . '<input type="text" name="' . $this->_getHtmlName() . '[to]" id="' . $htmlId . '_to"' . ' value="' . $this->getEscapedValue( 'to' - ) . '" class="input-text no-changes" placeholder="' . __( + ) . '" class="input-text admin__control-text no-changes" placeholder="' . __( 'To' ) . '" ' . $this->getUiId( 'filter', diff --git a/app/code/Magento/Backend/composer.json b/app/code/Magento/Backend/composer.json index b6bf9931bf462f34dac09df561c6b74514caecbe..d229a7feb44b54367af4b052d1c43bc2a8f7e517 100644 --- a/app/code/Magento/Backend/composer.json +++ b/app/code/Magento/Backend/composer.json @@ -3,27 +3,27 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-developer": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-cron": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/module-reports": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-user": "0.74.0-beta5", - "magento/module-backup": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-translation": "0.74.0-beta5", - "magento/module-require-js": "0.74.0-beta5", - "magento/module-config": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-developer": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-cron": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/module-reports": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-user": "0.74.0-beta6", + "magento/module-backup": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-translation": "0.74.0-beta6", + "magento/module-require-js": "0.74.0-beta6", + "magento/module-config": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Backend/etc/adminhtml/di.xml b/app/code/Magento/Backend/etc/adminhtml/di.xml index ba52677a683d9ee8e098cdd48bda87ddc128c2e9..553d30e85541f36dbd0a50834d1d146d99b84d5d 100644 --- a/app/code/Magento/Backend/etc/adminhtml/di.xml +++ b/app/code/Magento/Backend/etc/adminhtml/di.xml @@ -90,6 +90,24 @@ <argument name="instanceName" xsi:type="string">Magento\Backend\Model\View\Result\Page</argument> </arguments> </type> + <type name="Magento\Framework\Controller\ResultFactory"> + <arguments> + <argument name="typeMap" xsi:type="array"> + <item name="redirect" xsi:type="array"> + <item name="type" xsi:type="const">Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT</item> + <item name="class" xsi:type="string">Magento\Backend\Model\View\Result\Redirect</item> + </item> + <item name="page" xsi:type="array"> + <item name="type" xsi:type="const">Magento\Framework\Controller\ResultFactory::TYPE_PAGE</item> + <item name="class" xsi:type="string">Magento\Backend\Model\View\Result\Page</item> + </item> + <item name="forward" xsi:type="array"> + <item name="type" xsi:type="const">Magento\Framework\Controller\ResultFactory::TYPE_FORWARD</item> + <item name="class" xsi:type="string">Magento\Backend\Model\View\Result\Forward</item> + </item> + </argument> + </arguments> + </type> <type name="Magento\Framework\View\Layout\BuilderFactory"> <arguments> <argument name="typeMap" xsi:type="array"> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/dashboard/grid.phtml b/app/code/Magento/Backend/view/adminhtml/templates/dashboard/grid.phtml index 78d3d2677e94c705cc86af43d9562ff37aaacc6f..e9a724fdbf857b838c893142f1cd7c88e8276af3 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/dashboard/grid.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/dashboard/grid.phtml @@ -14,7 +14,7 @@ $numColumns = sizeof($block->getColumns()); <?php if ($block->getCollection()): ?> <div class="dashboard-item-content"> <?php if ($block->getCollection()->getSize()>0): ?> - <table class="table-info dashboard-data" id="<?php echo $block->getId() ?>_table"> + <table class="admin__table-primary dashboard-data" id="<?php echo $block->getId() ?>_table"> <?php /* This part is commented to remove all <col> tags from the code. */ /* foreach ($block->getColumns() as $_column): ?> diff --git a/app/code/Magento/Backup/composer.json b/app/code/Magento/Backup/composer.json index 6c0ab82327295bb0ca7c5ef74b812b144f4259c5..f7f9a0371534346f0bc39f7d7087a12200428386 100644 --- a/app/code/Magento/Backup/composer.json +++ b/app/code/Magento/Backup/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-cron": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-cron": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Bundle/composer.json b/app/code/Magento/Bundle/composer.json index 8873d0536f9e9cdb8c708d4657998186c26256ff..a16b4ad6d56cfb1002fae21f984ace5e9a5ea588 100644 --- a/app/code/Magento/Bundle/composer.json +++ b/app/code/Magento/Bundle/composer.json @@ -3,28 +3,28 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-tax": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-catalog-rule": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-config": "0.74.0-beta5", - "magento/module-gift-message": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-tax": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-catalog-rule": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-config": "0.74.0-beta6", + "magento/module-gift-message": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-webapi": "0.74.0-beta5" + "magento/module-webapi": "0.74.0-beta6" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Bundle/view/adminhtml/templates/product/composite/fieldset/options/bundle.phtml b/app/code/Magento/Bundle/view/adminhtml/templates/product/composite/fieldset/options/bundle.phtml index 73d5d50ee6574c39c785bb19b5c59977faf7d54c..c1f89d31bf4b7f5373a4538aa402470328621606 100644 --- a/app/code/Magento/Bundle/view/adminhtml/templates/product/composite/fieldset/options/bundle.phtml +++ b/app/code/Magento/Bundle/view/adminhtml/templates/product/composite/fieldset/options/bundle.phtml @@ -11,7 +11,8 @@ <?php /* @var $block \Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Bundle */ ?> <?php $options = $block->decorateArray($block->getOptions()); ?> <?php if (count($options)): ?> -<fieldset id="catalog_product_composite_configure_fields_bundle" class="fieldset admin__fieldset composite-bundle <?php echo $block->getIsLastFieldset() ? ' last-fieldset' : '' ?>"> +<fieldset id="catalog_product_composite_configure_fields_bundle" + class="fieldset admin__fieldset composite-bundle<?php echo $block->getIsLastFieldset() ? ' last-fieldset' : '' ?>"> <legend class="legend admin__legend"><span><?php echo __('Bundle Items') ?></span></legend><br /> <?php foreach ($options as $option) : ?> <?php if ($option->getSelections()) : ?> diff --git a/app/code/Magento/Bundle/view/adminhtml/templates/sales/creditmemo/create/items/renderer.phtml b/app/code/Magento/Bundle/view/adminhtml/templates/sales/creditmemo/create/items/renderer.phtml index 6986d5ab2953413e6dc7d7ae5a3bd3c168f834f7..1179737cea667d6e059ea35b4add49db3264d4a2 100644 --- a/app/code/Magento/Bundle/view/adminhtml/templates/sales/creditmemo/create/items/renderer.phtml +++ b/app/code/Magento/Bundle/view/adminhtml/templates/sales/creditmemo/create/items/renderer.phtml @@ -50,8 +50,8 @@ <?php if (!$_item->getOrderItem()->getParentItem()): ?> <td class="col-product"> <div class="product-title"><?php echo $block->escapeHtml($_item->getName()) ?></div> - <div> - <strong><?php echo __('SKU') ?>:</strong> + <div class="product-sku-block"> + <span><?php echo __('SKU') ?>:</span> <?php echo implode('<br />', $this->helper('Magento\Catalog\Helper\Data')->splitSku($block->escapeHtml($_item->getSku()))); ?> </div> </td> @@ -67,46 +67,46 @@ </td> <td class="col-ordered-qty"> <?php if ($block->canShowPriceInfo($_item)): ?> - <table cellspacing="0" class="qty-table"> + <table class="data-table qty-table"> <tr> - <td><?php echo __('Ordered') ?></td> - <td><strong><?php echo $_item->getOrderItem()->getQtyOrdered()*1 ?></strong></td> + <th><?php echo __('Ordered') ?></th> + <td><?php echo $_item->getOrderItem()->getQtyOrdered()*1 ?></td> </tr> <?php if ((float) $_item->getOrderItem()->getQtyInvoiced()): ?> <tr> - <td><?php echo __('Invoiced') ?></td> - <td><strong><?php echo $_item->getOrderItem()->getQtyInvoiced()*1 ?></strong></td> + <th><?php echo __('Invoiced') ?></th> + <td><?php echo $_item->getOrderItem()->getQtyInvoiced()*1 ?></td> </tr> <?php endif; ?> <?php if ((float) $_item->getOrderItem()->getQtyShipped() && $block->isShipmentSeparately($_item)): ?> <tr> - <td><?php echo __('Shipped') ?></td> - <td><strong><?php echo $_item->getOrderItem()->getQtyShipped()*1 ?></strong></td> + <th><?php echo __('Shipped') ?></th> + <td><?php echo $_item->getOrderItem()->getQtyShipped()*1 ?></td> </tr> <?php endif; ?> <?php if ((float) $_item->getOrderItem()->getQtyRefunded()): ?> <tr> - <td><?php echo __('Refunded') ?></td> - <td><strong><?php echo $_item->getOrderItem()->getQtyRefunded()*1 ?></strong></td> + <th><?php echo __('Refunded') ?></th> + <td><?php echo $_item->getOrderItem()->getQtyRefunded()*1 ?></td> </tr> <?php endif; ?> <?php if ((float) $_item->getOrderItem()->getQtyCanceled()): ?> <tr> - <td><?php echo __('Canceled') ?></td> - <td><strong><?php echo $_item->getOrderItem()->getQtyCanceled()*1 ?></strong></td> + <th><?php echo __('Canceled') ?></th> + <td><?php echo $_item->getOrderItem()->getQtyCanceled()*1 ?></td> </tr> <?php endif; ?> </table> <?php elseif ($block->isShipmentSeparately($_item)): ?> - <table cellspacing="0" class="qty-table"> + <table class="data-table qty-table"> <tr> - <td><?php echo __('Ordered') ?></td> - <td><strong><?php echo $_item->getOrderItem()->getQtyOrdered()*1 ?></strong></td> + <th><?php echo __('Ordered') ?></th> + <td><?php echo $_item->getOrderItem()->getQtyOrdered()*1 ?></td> </tr> <?php if ((float) $_item->getOrderItem()->getQtyShipped()): ?> <tr> - <td><?php echo __('Shipped') ?></td> - <td><strong><?php echo $_item->getOrderItem()->getQtyShipped()*1 ?></strong></td> + <th><?php echo __('Shipped') ?></th> + <td><?php echo $_item->getOrderItem()->getQtyShipped()*1 ?></td> </tr> <?php endif; ?> </table> @@ -118,17 +118,24 @@ <td class="col-return-to-stock"> <?php if ($block->canShowPriceInfo($_item)): ?> <?php if ($block->canReturnItemToStock($_item)) : ?> - <input type="checkbox" name="creditmemo[items][<?php echo $_item->getOrderItemId() ?>][back_to_stock]" value="1"<?php if ($_item->getBackToStock()):?> checked="checked"<?php endif;?> /> + <input type="checkbox" + class="admin__control-checkbox" + name="creditmemo[items][<?php echo $_item->getOrderItemId() ?>][back_to_stock]" + value="1"<?php if ($_item->getBackToStock()):?> checked="checked"<?php endif;?> /> + <label class="admin__field-label"></label> <?php endif; ?> <?php else: ?> <?php endif; ?> </td> <?php endif; ?> - <td class="col-refund"> + <td class="col-refund col-qty"> <?php if ($block->canShowPriceInfo($_item)): ?> <?php if ($block->canEditQty()) : ?> - <input type="text" class="input-text qty-input" name="creditmemo[items][<?php echo $_item->getOrderItemId() ?>][qty]" value="<?php echo $_item->getQty()*1 ?>" /> + <input type="text" + class="input-text admin__control-text qty-input" + name="creditmemo[items][<?php echo $_item->getOrderItemId() ?>][qty]" + value="<?php echo $_item->getQty()*1 ?>" /> <?php else: ?> <?php echo $_item->getQty()*1 ?> <?php endif; ?> diff --git a/app/code/Magento/Bundle/view/adminhtml/templates/sales/creditmemo/view/items/renderer.phtml b/app/code/Magento/Bundle/view/adminhtml/templates/sales/creditmemo/view/items/renderer.phtml index 37b22d2d43a2b046b225e2a2b247efc230ac5663..339bc32af067a91741ffcf2945265f7696177ecd 100644 --- a/app/code/Magento/Bundle/view/adminhtml/templates/sales/creditmemo/view/items/renderer.phtml +++ b/app/code/Magento/Bundle/view/adminhtml/templates/sales/creditmemo/view/items/renderer.phtml @@ -48,8 +48,8 @@ <?php if (!$_item->getOrderItem()->getParentItem()): ?> <td class="col-product"> <div class="product-title"><?php echo $block->escapeHtml($_item->getName()) ?></div> - <div> - <strong><?php echo __('SKU') ?>:</strong> + <div class="product-sku-block"> + <span><?php echo __('SKU') ?>:</span> <?php echo implode('<br />', $this->helper('Magento\Catalog\Helper\Data')->splitSku($block->escapeHtml($_item->getSku()))); ?> </div> </td> diff --git a/app/code/Magento/Bundle/view/adminhtml/templates/sales/invoice/create/items/renderer.phtml b/app/code/Magento/Bundle/view/adminhtml/templates/sales/invoice/create/items/renderer.phtml index 5ad5c664845271785c65c01e01aa961591b6c333..ffabb6efc13ddf417d9fccb35aacdbec50099598 100644 --- a/app/code/Magento/Bundle/view/adminhtml/templates/sales/invoice/create/items/renderer.phtml +++ b/app/code/Magento/Bundle/view/adminhtml/templates/sales/invoice/create/items/renderer.phtml @@ -49,8 +49,8 @@ <?php if (!$_item->getOrderItem()->getParentItem()): ?> <td class="col-product"> <div class="product-title"><?php echo $block->escapeHtml($_item->getName()) ?></div> - <div> - <strong><?php echo __('SKU') ?>:</strong> + <div class="product-sku-block"> + <span><?php echo __('SKU') ?>:</span> <?php echo implode('<br />', $this->helper('Magento\Catalog\Helper\Data')->splitSku($block->escapeHtml($_item->getSku()))); ?> </div> </td> @@ -68,46 +68,46 @@ </td> <td class="col-qty"> <?php if ($block->canShowPriceInfo($_item)): ?> - <table cellspacing="0" class="qty-table"> + <table class="data-table qty-table"> <tr> - <td><?php echo __('Ordered') ?></td> + <th><?php echo __('Ordered') ?></th> <td><strong><?php echo $_item->getOrderItem()->getQtyOrdered()*1 ?></strong></td> </tr> <?php if ((float) $_item->getOrderItem()->getQtyInvoiced()): ?> <tr> - <td><?php echo __('Invoiced') ?></td> - <td><strong><?php echo $_item->getOrderItem()->getQtyInvoiced()*1 ?></strong></td> + <th><?php echo __('Invoiced') ?></th> + <td><?php echo $_item->getOrderItem()->getQtyInvoiced()*1 ?></td> </tr> <?php endif; ?> <?php if ((float) $_item->getOrderItem()->getQtyShipped() && $block->isShipmentSeparately($_item)): ?> <tr> - <td><?php echo __('Shipped') ?></td> - <td><strong><?php echo $_item->getOrderItem()->getQtyShipped()*1 ?></strong></td> + <th><?php echo __('Shipped') ?></th> + <td><?php echo $_item->getOrderItem()->getQtyShipped()*1 ?></td> </tr> <?php endif; ?> <?php if ((float) $_item->getOrderItem()->getQtyRefunded()): ?> <tr> - <td><?php echo __('Refunded') ?></td> - <td><strong><?php echo $_item->getOrderItem()->getQtyRefunded()*1 ?></strong></td> + <th><?php echo __('Refunded') ?></th> + <td><?php echo $_item->getOrderItem()->getQtyRefunded()*1 ?></td> </tr> <?php endif; ?> <?php if ((float) $_item->getOrderItem()->getQtyCanceled()): ?> <tr> - <td><?php echo __('Canceled') ?></td> - <td><strong><?php echo $_item->getOrderItem()->getQtyCanceled()*1 ?></strong></td> + <th><?php echo __('Canceled') ?></th> + <td><?php echo $_item->getOrderItem()->getQtyCanceled()*1 ?></td> </tr> <?php endif; ?> </table> <?php elseif ($block->isShipmentSeparately($_item)): ?> - <table cellspacing="0" class="qty-table"> + <table class="data-table qty-table"> <tr> - <td><?php echo __('Ordered') ?></td> - <td><strong><?php echo $_item->getOrderItem()->getQtyOrdered()*1 ?></strong></td> + <th><?php echo __('Ordered') ?></th> + <td><?php echo $_item->getOrderItem()->getQtyOrdered()*1 ?></td> </tr> <?php if ((float) $_item->getOrderItem()->getQtyShipped()): ?> <tr> - <td><?php echo __('Shipped') ?></td> - <td><strong><?php echo $_item->getOrderItem()->getQtyShipped()*1 ?></strong></td> + <th><?php echo __('Shipped') ?></th> + <td><?php echo $_item->getOrderItem()->getQtyShipped()*1 ?></td> </tr> <?php endif; ?> </table> @@ -118,7 +118,10 @@ <td class="col-qty-invoice"> <?php if ($block->canShowPriceInfo($_item)): ?> <?php if ($block->canEditQty()) : ?> - <input type="text" class="input-text qty-input" name="invoice[items][<?php echo $_item->getOrderItemId() ?>]" value="<?php echo $_item->getQty()*1 ?>" /> + <input type="text" + class="input-text admin__control-text qty-input" + name="invoice[items][<?php echo $_item->getOrderItemId() ?>]" + value="<?php echo $_item->getQty()*1 ?>" /> <?php else : ?> <?php echo $_item->getQty()*1 ?> <?php endif; ?> diff --git a/app/code/Magento/Bundle/view/adminhtml/templates/sales/invoice/view/items/renderer.phtml b/app/code/Magento/Bundle/view/adminhtml/templates/sales/invoice/view/items/renderer.phtml index 33db5d905cf3acebb353d935c8665e76c5f455fc..904d804580feace61ab761f2daaf284fc712b64c 100644 --- a/app/code/Magento/Bundle/view/adminhtml/templates/sales/invoice/view/items/renderer.phtml +++ b/app/code/Magento/Bundle/view/adminhtml/templates/sales/invoice/view/items/renderer.phtml @@ -48,8 +48,8 @@ <?php if (!$_item->getOrderItem()->getParentItem()): ?> <td class="col-product"> <div class="product-title"><?php echo $block->escapeHtml($_item->getName()) ?></div> - <div> - <strong><?php echo __('SKU') ?>:</strong> + <div class="product-sku-block"> + <span><?php echo __('SKU') ?>:</span> <?php echo implode('<br />', $this->helper('Magento\Catalog\Helper\Data')->splitSku($block->escapeHtml($_item->getSku()))); ?> </div> <?php else: ?> diff --git a/app/code/Magento/Bundle/view/adminhtml/templates/sales/order/view/items/renderer.phtml b/app/code/Magento/Bundle/view/adminhtml/templates/sales/order/view/items/renderer.phtml index 8c89a6e27c5cf1c22168dd930127ad3efb3d97c5..2f31655de1e2eaa36a24aeb73c80812725ba71e0 100644 --- a/app/code/Magento/Bundle/view/adminhtml/templates/sales/order/view/items/renderer.phtml +++ b/app/code/Magento/Bundle/view/adminhtml/templates/sales/order/view/items/renderer.phtml @@ -53,8 +53,8 @@ <div class="product-title" id="order_item_<?php echo $_item->getId() ?>_title"> <?php echo $block->escapeHtml($_item->getName()) ?> </div> - <div> - <strong><?php echo __('SKU') ?>:</strong> + <div class="product-sku-block"> + <span><?php echo __('SKU') ?>:</span> <?php echo implode('<br />', $this->helper('Magento\Catalog\Helper\Data')->splitSku($block->escapeHtml($_item->getSku()))); ?> </div> </td> @@ -86,46 +86,46 @@ </td> <td class="col-ordered-qty"> <?php if ($block->canShowPriceInfo($_item)): ?> - <table cellspacing="0" class="qty-table"> + <table class="data-table qty-table"> <tr> - <td><?php echo __('Ordered') ?></td> - <td><strong><?php echo $_item->getQtyOrdered()*1 ?></strong></td> + <th><?php echo __('Ordered') ?></th> + <td><?php echo $_item->getQtyOrdered()*1 ?></td> </tr> <?php if ((float) $_item->getQtyInvoiced()): ?> <tr> - <td><?php echo __('Invoiced') ?></td> - <td><strong><?php echo $_item->getQtyInvoiced()*1 ?></strong></td> + <th><?php echo __('Invoiced') ?></th> + <td><?php echo $_item->getQtyInvoiced()*1 ?></td> </tr> <?php endif; ?> <?php if ((float) $_item->getQtyShipped() && $block->isShipmentSeparately($_item)): ?> <tr> - <td><?php echo __('Shipped') ?></td> - <td><strong><?php echo $_item->getQtyShipped()*1 ?></strong></td> + <th><?php echo __('Shipped') ?></th> + <td><?php echo $_item->getQtyShipped()*1 ?></td> </tr> <?php endif; ?> <?php if ((float) $_item->getQtyRefunded()): ?> <tr> - <td><?php echo __('Refunded') ?></td> - <td><strong><?php echo $_item->getQtyRefunded()*1 ?></strong></td> + <th><?php echo __('Refunded') ?></th> + <td><?php echo $_item->getQtyRefunded()*1 ?></td> </tr> <?php endif; ?> <?php if ((float) $_item->getQtyCanceled()): ?> <tr> - <td><?php echo __('Canceled') ?></td> - <td><strong><?php echo $_item->getQtyCanceled()*1 ?></strong></td> + <th><?php echo __('Canceled') ?></th> + <td><?php echo $_item->getQtyCanceled()*1 ?></td> </tr> <?php endif; ?> </table> <?php elseif ($block->isShipmentSeparately($_item)): ?> - <table cellspacing="0" class="qty-table"> + <table class="data-table qty-table"> <tr> - <td><?php echo __('Ordered') ?></td> - <td><strong><?php echo $_item->getQtyOrdered()*1 ?></strong></td> + <th><?php echo __('Ordered') ?></th> + <td><?php echo $_item->getQtyOrdered()*1 ?></td> </tr> <?php if ((float) $_item->getQtyShipped()): ?> <tr> - <td><?php echo __('Shipped') ?></td> - <td><strong><?php echo $_item->getQtyShipped()*1 ?></strong></td> + <th><?php echo __('Shipped') ?></th> + <td><?php echo $_item->getQtyShipped()*1 ?></td> </tr> <?php endif; ?> </table> diff --git a/app/code/Magento/Bundle/view/adminhtml/templates/sales/shipment/create/items/renderer.phtml b/app/code/Magento/Bundle/view/adminhtml/templates/sales/shipment/create/items/renderer.phtml index 08ef77d9161508a2601fe4ff14fb2ae2ab093e98..f1555682244ee4ba68b1d7e6202f2d9b66f884bc 100644 --- a/app/code/Magento/Bundle/view/adminhtml/templates/sales/shipment/create/items/renderer.phtml +++ b/app/code/Magento/Bundle/view/adminhtml/templates/sales/shipment/create/items/renderer.phtml @@ -43,8 +43,8 @@ <?php if (!$_item->getOrderItem()->getParentItem()): ?> <td class="col-product"> <div class="product-title"><?php echo $block->escapeHtml($_item->getName()) ?></div> - <div> - <strong><?php echo __('SKU') ?>:</strong> + <div class="product-sku-block"> + <span><?php echo __('SKU') ?>:</span> <?php echo implode('<br />', $this->helper('Magento\Catalog\Helper\Data')->splitSku($block->escapeHtml($_item->getSku()))); ?> </div> </td> @@ -60,7 +60,10 @@ </td> <td class="col-qty last"> <?php if ($block->isShipmentSeparately($_item)): ?> - <input type="text" class="input-text" name="shipment[items][<?php echo $_item->getOrderItemId() ?>]" value="<?php echo $_item->getQty()*1 ?>" /> + <input type="text" + class="input-text admin__control-text" + name="shipment[items][<?php echo $_item->getOrderItemId() ?>]" + value="<?php echo $_item->getQty()*1 ?>" /> <?php else: ?> <?php endif; ?> diff --git a/app/code/Magento/Bundle/view/adminhtml/templates/sales/shipment/view/items/renderer.phtml b/app/code/Magento/Bundle/view/adminhtml/templates/sales/shipment/view/items/renderer.phtml index 16c98a2522059be6648f1c36364584dca4a26ac7..e8a2d69f16530de18698e5808cc57591fb420bb2 100644 --- a/app/code/Magento/Bundle/view/adminhtml/templates/sales/shipment/view/items/renderer.phtml +++ b/app/code/Magento/Bundle/view/adminhtml/templates/sales/shipment/view/items/renderer.phtml @@ -43,8 +43,8 @@ <?php if (!$_item->getParentItem()): ?> <td class="col-product"> <div class="product-title"><?php echo $block->escapeHtml($_item->getName()) ?></div> - <div> - <strong><?php echo __('SKU') ?>:</strong> + <div class="product-sku-block"> + <span><?php echo __('SKU') ?>:</span> <?php echo implode('<br />', $this->helper('Magento\Catalog\Helper\Data')->splitSku($block->escapeHtml($_item->getSku()))); ?> </div> </td> diff --git a/app/code/Magento/CacheInvalidate/composer.json b/app/code/Magento/CacheInvalidate/composer.json index 85636ed03a214e287940522cc1dad44b1eb30d67..4e1062c5a74902db562b9e2c7ed010ff9ab5bdfa 100644 --- a/app/code/Magento/CacheInvalidate/composer.json +++ b/app/code/Magento/CacheInvalidate/composer.json @@ -3,12 +3,12 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-page-cache": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-page-cache": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Captcha/composer.json b/app/code/Magento/Captcha/composer.json index 95638b5822e5f4dc0018ca232f89f0e52d998735..dee103fd89226bade4029e318d5b99fd03bf2b30 100644 --- a/app/code/Magento/Captcha/composer.json +++ b/app/code/Magento/Captcha/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Catalog/composer.json b/app/code/Magento/Catalog/composer.json index ff1d9af0f319ce435b778507018f44d1bf92f526..16e53d937b9199bb77a3828853871a6e287d4060 100644 --- a/app/code/Magento/Catalog/composer.json +++ b/app/code/Magento/Catalog/composer.json @@ -3,37 +3,37 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-cms": "0.74.0-beta5", - "magento/module-indexer": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-log": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-widget": "0.74.0-beta5", - "magento/module-wishlist": "0.74.0-beta5", - "magento/module-tax": "0.74.0-beta5", - "magento/module-msrp": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-catalog-rule": "0.74.0-beta5", - "magento/module-product-alert": "0.74.0-beta5", - "magento/module-url-rewrite": "0.74.0-beta5", - "magento/module-catalog-url-rewrite": "0.74.0-beta5", - "magento/module-page-cache": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/module-config": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-cms": "0.74.0-beta6", + "magento/module-indexer": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-log": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-widget": "0.74.0-beta6", + "magento/module-wishlist": "0.74.0-beta6", + "magento/module-tax": "0.74.0-beta6", + "magento/module-msrp": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-catalog-rule": "0.74.0-beta6", + "magento/module-product-alert": "0.74.0-beta6", + "magento/module-url-rewrite": "0.74.0-beta6", + "magento/module-catalog-url-rewrite": "0.74.0-beta6", + "magento/module-page-cache": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/module-config": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-cookie": "0.74.0-beta5" + "magento/module-cookie": "0.74.0-beta6" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogImportExport/composer.json b/app/code/Magento/CatalogImportExport/composer.json index ea1dd5d998620505acfee1def2956798f4793866..ee8f34355558e63ab22dc08089041e4bdc99c3a4 100644 --- a/app/code/Magento/CatalogImportExport/composer.json +++ b/app/code/Magento/CatalogImportExport/composer.json @@ -3,20 +3,20 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-import-export": "0.74.0-beta5", - "magento/module-indexer": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-import-export": "0.74.0-beta6", + "magento/module-indexer": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "ext-ctype": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogInventory/composer.json b/app/code/Magento/CatalogInventory/composer.json index 8740b2ea137f6385daf408aa4fa61c820d5b8e94..129c2285172ca06dabdd98cb51dcc1a6ba9fdad7 100644 --- a/app/code/Magento/CatalogInventory/composer.json +++ b/app/code/Magento/CatalogInventory/composer.json @@ -3,18 +3,18 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-indexer": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-config": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-indexer": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogRule/composer.json b/app/code/Magento/CatalogRule/composer.json index 352835339794eddfb3d2dabc82ef7cda88bc6e78..321bbcd7334b631b6f630452474b2ae25f5a265c 100644 --- a/app/code/Magento/CatalogRule/composer.json +++ b/app/code/Magento/CatalogRule/composer.json @@ -3,19 +3,19 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-rule": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-indexer": "0.74.0-beta5", - "magento/module-import-export": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-rule": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-indexer": "0.74.0-beta6", + "magento/module-import-export": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogSearch/composer.json b/app/code/Magento/CatalogSearch/composer.json index 0a988ba3be2b861d5508ef2582e21f8a697bd09d..d9f2822e173203097515ba797209fdbb4a4c8a64 100644 --- a/app/code/Magento/CatalogSearch/composer.json +++ b/app/code/Magento/CatalogSearch/composer.json @@ -3,20 +3,20 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-search": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-indexer": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-search": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-indexer": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogUrlRewrite/composer.json b/app/code/Magento/CatalogUrlRewrite/composer.json index cc49b31047ff20939f65f08a266450791b29792f..2488990a45e7570de05a47be2802787cb2fe1395 100644 --- a/app/code/Magento/CatalogUrlRewrite/composer.json +++ b/app/code/Magento/CatalogUrlRewrite/composer.json @@ -3,18 +3,18 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-backend": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-catalog-import-export": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-import-export": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-url-rewrite": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-backend": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-catalog-import-export": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-import-export": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-url-rewrite": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogWidget/composer.json b/app/code/Magento/CatalogWidget/composer.json index 7804885f1155dc5cf7b2885140ccbab81812bae5..e92c896cb1a574e1aa912d5cc378bb8c70aead25 100644 --- a/app/code/Magento/CatalogWidget/composer.json +++ b/app/code/Magento/CatalogWidget/composer.json @@ -3,19 +3,19 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-widget": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-rule": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-wishlist": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-widget": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-rule": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-wishlist": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Centinel/composer.json b/app/code/Magento/Centinel/composer.json index f6c1b2a6459cbcdebea1ae76ce0927355218606c..584771858a87c0b5d497fd4ff33d11d890b28892 100644 --- a/app/code/Magento/Centinel/composer.json +++ b/app/code/Magento/Centinel/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Checkout/composer.json b/app/code/Magento/Checkout/composer.json index 3ff8bfdb0e1e152992f8a393859817f6fc9ad865..266290632764108d9de90c7d0d6a60a447173e5e 100644 --- a/app/code/Magento/Checkout/composer.json +++ b/app/code/Magento/Checkout/composer.json @@ -3,32 +3,32 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-config": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-payment": "0.74.0-beta5", - "magento/module-shipping": "0.74.0-beta5", - "magento/module-tax": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-gift-message": "0.74.0-beta5", - "magento/module-wishlist": "0.74.0-beta5", - "magento/module-page-cache": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/module-msrp": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", - "magento/module-ui": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-config": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-payment": "0.74.0-beta6", + "magento/module-shipping": "0.74.0-beta6", + "magento/module-tax": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-gift-message": "0.74.0-beta6", + "magento/module-wishlist": "0.74.0-beta6", + "magento/module-page-cache": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/module-msrp": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", + "magento/module-ui": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-cookie": "0.74.0-beta5" + "magento/module-cookie": "0.74.0-beta6" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Checkout/view/frontend/web/js/sidebar.js b/app/code/Magento/Checkout/view/frontend/web/js/sidebar.js index d3c3a264b88d814fd8123aa84bc1df10d3828aa6..31e16ff05c81bd932e7250420acce9e270f46aa4 100644 --- a/app/code/Magento/Checkout/view/frontend/web/js/sidebar.js +++ b/app/code/Magento/Checkout/view/frontend/web/js/sidebar.js @@ -60,11 +60,13 @@ define([ * @private */ _isOverflowed: function() { - var list = $(this.options.minicart.list); + var list = $(this.options.minicart.list), + cssOverflowClass = 'overflowed'; + if (this.scrollHeight > list.innerHeight()) { - list.parent().addClass('overflowed'); + list.parent().addClass(cssOverflowClass); } else { - list.parent().removeClass('overflowed'); + list.parent().removeClass(cssOverflowClass); } }, @@ -238,9 +240,9 @@ define([ this.scrollHeight = 0; target.children().each(function() { if (counter-- > 0) { - height += $(this).height() - 15; + height += $(this).height(); } - self.scrollHeight += $(this).height() - 15; + self.scrollHeight += $(this).height(); }); target.remove(); diff --git a/app/code/Magento/CheckoutAgreements/composer.json b/app/code/Magento/CheckoutAgreements/composer.json index 2df471b27277a34a6fe4fe297f57adce503fea55..4693f5b11aa25b57cde6a425594a965b1355de7f 100644 --- a/app/code/Magento/CheckoutAgreements/composer.json +++ b/app/code/Magento/CheckoutAgreements/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Cms/composer.json b/app/code/Magento/Cms/composer.json index fdec1f9aabe0043a939d82a4733de8d4e65a872f..9ee9de410e132ace5520da29bfb9f6edc89fb4c7 100644 --- a/app/code/Magento/Cms/composer.json +++ b/app/code/Magento/Cms/composer.json @@ -3,20 +3,20 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/module-widget": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-email": "0.74.0-beta5", - "magento/module-ui": "0.74.0-beta5", - "magento/module-variable": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/module-widget": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-email": "0.74.0-beta6", + "magento/module-ui": "0.74.0-beta6", + "magento/module-variable": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CmsUrlRewrite/composer.json b/app/code/Magento/CmsUrlRewrite/composer.json index 427b28143c9d1d9b8f0f4bbfe20f5d732430ea77..06f0e19df1fb840dd3dde3e6028ab68dda347b3a 100644 --- a/app/code/Magento/CmsUrlRewrite/composer.json +++ b/app/code/Magento/CmsUrlRewrite/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-cms": "0.74.0-beta5", - "magento/module-url-rewrite": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-cms": "0.74.0-beta6", + "magento/module-url-rewrite": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Config/composer.json b/app/code/Magento/Config/composer.json index 0e2c50498195b943caa93504a716c734e711b04e..04e2fbc1e741c134694fdd2579fc618a3bf132c4 100644 --- a/app/code/Magento/Config/composer.json +++ b/app/code/Magento/Config/composer.json @@ -3,17 +3,17 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/framework": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-cron": "0.74.0-beta5", - "magento/module-email": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", + "magento/framework": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-cron": "0.74.0-beta6", + "magento/module-email": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/ConfigurableImportExport/composer.json b/app/code/Magento/ConfigurableImportExport/composer.json index b316df5f4500302cb6b6a72a185d41468df54f1c..d504ebf2a76d16c9f183cd6419774e822571e6c3 100644 --- a/app/code/Magento/ConfigurableImportExport/composer.json +++ b/app/code/Magento/ConfigurableImportExport/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-catalog-import-export": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-import-export": "0.74.0-beta5", - "magento/module-configurable-product": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-catalog-import-export": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-import-export": "0.74.0-beta6", + "magento/module-configurable-product": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/ConfigurableProduct/composer.json b/app/code/Magento/ConfigurableProduct/composer.json index d7a6e4738064976fcbc4d905dd033f51a6e1a232..507ee995f908bde44cc3f29647133573e35de89c 100644 --- a/app/code/Magento/ConfigurableProduct/composer.json +++ b/app/code/Magento/ConfigurableProduct/composer.json @@ -3,26 +3,26 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-catalog-rule": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-catalog-rule": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-webapi": "0.74.0-beta5" + "magento/module-webapi": "0.74.0-beta6" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Contact/composer.json b/app/code/Magento/Contact/composer.json index ac2fdff06e047a7756a76fbe87f93d13348ef5aa..d2e5971064d0752a9053de71ef835fa13f07b6db 100644 --- a/app/code/Magento/Contact/composer.json +++ b/app/code/Magento/Contact/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-cms": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-config": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-cms": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Cookie/composer.json b/app/code/Magento/Cookie/composer.json index a9cf290b513184022ee15e1519efd17024b822f9..d3d5ef16f597b19653d8a69ff3e597bca16d30bf 100644 --- a/app/code/Magento/Cookie/composer.json +++ b/app/code/Magento/Cookie/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.4.11|~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-backend": "0.74.0-beta5" + "magento/module-backend": "0.74.0-beta6" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Cron/composer.json b/app/code/Magento/Cron/composer.json index ef1fa3050a934823fb612caf437be5ca8712edfb..02fe4b2ed4e83bb3de474176d18e622266e9552d 100644 --- a/app/code/Magento/Cron/composer.json +++ b/app/code/Magento/Cron/composer.json @@ -3,13 +3,13 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-config": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CurrencySymbol/composer.json b/app/code/Magento/CurrencySymbol/composer.json index 722aef23ea946acd5c43ec20ee850ea702e7ddf0..4ef0b1acf67493b6de9ff927c58ba3ad8ae97166 100644 --- a/app/code/Magento/CurrencySymbol/composer.json +++ b/app/code/Magento/CurrencySymbol/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-page-cache": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-config": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-page-cache": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Customer/Model/Resource/GroupRepository.php b/app/code/Magento/Customer/Model/Resource/GroupRepository.php index 73b59ff2dd1e54166d149019ae8585076b46b37d..fe0d52ca471ef7a45f563a5529657d4a189a2b03 100644 --- a/app/code/Magento/Customer/Model/Resource/GroupRepository.php +++ b/app/code/Magento/Customer/Model/Resource/GroupRepository.php @@ -164,6 +164,7 @@ class GroupRepository implements \Magento\Customer\Api\GroupRepositoryInterface /** @var \Magento\Customer\Model\Resource\Group\Collection $collection */ $collection = $this->groupFactory->create()->getCollection(); + $collection->addTaxClass(); //Add filters from root filter group to the collection /** @var FilterGroup $group */ @@ -234,6 +235,8 @@ class GroupRepository implements \Magento\Customer\Api\GroupRepositoryInterface return 'customer_group_code'; case GroupInterface::ID: return 'customer_group_id'; + case GroupInterface::TAX_CLASS_NAME: + return 'class_name'; default: return $field; } diff --git a/app/code/Magento/Customer/Test/Unit/Block/Adminhtml/Edit/Tab/View/PersonalInfoTest.php b/app/code/Magento/Customer/Test/Unit/Block/Adminhtml/Edit/Tab/View/PersonalInfoTest.php index 29adf1a01cca112fc6833837accaef7d1c3864ad..efc9e86abe834e477cb21e77577a6f4358f88fc3 100644 --- a/app/code/Magento/Customer/Test/Unit/Block/Adminhtml/Edit/Tab/View/PersonalInfoTest.php +++ b/app/code/Magento/Customer/Test/Unit/Block/Adminhtml/Edit/Tab/View/PersonalInfoTest.php @@ -171,7 +171,7 @@ class PersonalInfoTest extends \PHPUnit_Framework_TestCase 'customer/online_customers/online_minutes_interval', \Magento\Store\Model\ScopeInterface::SCOPE_STORE ) - ->willReturn(60); //TODO: it's value mocked because unit tests run data providers before all testsuite + ->willReturn(240); //TODO: it's value mocked because unit tests run data providers before all testsuite $this->customerLog->expects($this->any())->method('getLastLoginAt')->willReturn($lastLoginAt); $this->customerLog->expects($this->any())->method('getLastVisitAt')->willReturn($lastVisitAt); diff --git a/app/code/Magento/Customer/composer.json b/app/code/Magento/Customer/composer.json index 43d57a0229b6424f94f719b15ed7960ca14c6688..340ab29eca160e1cca6c80f8426ea2ebe66261cb 100644 --- a/app/code/Magento/Customer/composer.json +++ b/app/code/Magento/Customer/composer.json @@ -3,33 +3,33 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-newsletter": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-wishlist": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-review": "0.74.0-beta5", - "magento/module-tax": "0.74.0-beta5", - "magento/module-page-cache": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", - "magento/module-authorization": "0.74.0-beta5", - "magento/module-integration": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/module-ui": "0.74.0-beta5", - "magento/module-config": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-newsletter": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-wishlist": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-review": "0.74.0-beta6", + "magento/module-tax": "0.74.0-beta6", + "magento/module-page-cache": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", + "magento/module-authorization": "0.74.0-beta6", + "magento/module-integration": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/module-ui": "0.74.0-beta6", + "magento/module-config": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-cookie": "0.74.0-beta5" + "magento/module-cookie": "0.74.0-beta6" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CustomerImportExport/composer.json b/app/code/Magento/CustomerImportExport/composer.json index cab754cc3457e624a37dfeede79d2b7210833e31..3635354b9f3c6e0593281f1465051226cfc8c355 100644 --- a/app/code/Magento/CustomerImportExport/composer.json +++ b/app/code/Magento/CustomerImportExport/composer.json @@ -3,17 +3,17 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-import-export": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-import-export": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/DesignEditor/composer.json b/app/code/Magento/DesignEditor/composer.json index f913fe9609962f88c00152fc389f1fe4e360ead6..7a24e23445b99be4268f881b05eff8013e9553da 100644 --- a/app/code/Magento/DesignEditor/composer.json +++ b/app/code/Magento/DesignEditor/composer.json @@ -3,18 +3,18 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-translation": "0.74.0-beta5", - "magento/module-config": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-translation": "0.74.0-beta6", + "magento/module-config": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Developer/composer.json b/app/code/Magento/Developer/composer.json index 1684bd8ce8cb42e5d07f74d8524c479fa9c02926..2acb479e5e7da4b25ea3e78b4269be86c45fa06c 100644 --- a/app/code/Magento/Developer/composer.json +++ b/app/code/Magento/Developer/composer.json @@ -3,12 +3,12 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Dhl/composer.json b/app/code/Magento/Dhl/composer.json index 9058fc5e562ad74ba84cc36c8336a5ea2db87ba5..9523a52d2f19d36247e9a99814c24cf43e8ee2a5 100644 --- a/app/code/Magento/Dhl/composer.json +++ b/app/code/Magento/Dhl/composer.json @@ -3,22 +3,22 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-shipping": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-config": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-shipping": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "lib-libxml": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Directory/composer.json b/app/code/Magento/Directory/composer.json index eb90b0170052f76bd3e75919e2b3a2ab8e4a67a0..bc25eea4a4f6717ae53a92714ecf462bfa6f0e6d 100644 --- a/app/code/Magento/Directory/composer.json +++ b/app/code/Magento/Directory/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-config": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "lib-libxml": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Downloadable/composer.json b/app/code/Magento/Downloadable/composer.json index cabce5bc9cce6d05f8d2d2ff274610968d89882f..69f7d646d0ffd16100c2deddc801ab123ab375ad 100644 --- a/app/code/Magento/Downloadable/composer.json +++ b/app/code/Magento/Downloadable/composer.json @@ -3,28 +3,28 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-tax": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-wishlist": "0.74.0-beta5", - "magento/module-gift-message": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-msrp": "0.74.0-beta5", - "magento/module-config": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-tax": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-wishlist": "0.74.0-beta6", + "magento/module-gift-message": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-msrp": "0.74.0-beta6", + "magento/module-config": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Downloadable/view/adminhtml/templates/product/edit/downloadable/links.phtml b/app/code/Magento/Downloadable/view/adminhtml/templates/product/edit/downloadable/links.phtml index dada69c3e47a9ba4ee7732276d71affd02ea4667..8196069e692019324ad8295aaa7a6d70be207d0c 100644 --- a/app/code/Magento/Downloadable/view/adminhtml/templates/product/edit/downloadable/links.phtml +++ b/app/code/Magento/Downloadable/view/adminhtml/templates/product/edit/downloadable/links.phtml @@ -39,7 +39,7 @@ <div class="admin__field admin__field-wide"> <div class="admin__field-control"> <div class="admin__control-table-wrapper"> - <table cellspacing="0" class="admin__control-table"> + <table class="admin__control-table"> <thead> <tr> <th class="col-title _required"><span><?php echo __('Title') ?></span></th> @@ -163,7 +163,7 @@ require([ '</td>'+ '<td class="col-sort"><input type="text" name="downloadable[link][<%- data.id %>][sort_order]" value="<%- data.sort_order %>" class="input-text admin__control-text sort" /></td>'+ '<td class="col-action">'+ - '<button id="downloadable_link_<%- data.id %>_delete_button" type="button" class="action-remove"><span><?php echo __('Delete'); ?></span></button>'+ + '<button id="downloadable_link_<%- data.id %>_delete_button" type="button" class="action-delete"><span><?php echo __('Delete'); ?></span></button>'+ '</td>'+ '</tr>'; @@ -310,7 +310,7 @@ require([ } }, bindRemoveButtons : function(){ - var buttons = $$('tbody#link_items_body .action-remove'); + var buttons = $$('tbody#link_items_body .action-delete'); for(var i=0;i<buttons.length;i++){ if(!$(buttons[i]).binded && !$(buttons[i]).hasClassName('disabled')){ $(buttons[i]).binded = true; diff --git a/app/code/Magento/Downloadable/view/adminhtml/templates/product/edit/downloadable/samples.phtml b/app/code/Magento/Downloadable/view/adminhtml/templates/product/edit/downloadable/samples.phtml index 82ba490f0cf862ddce3e8a84944e889443979a62..11f7ee94465e6c143b1a6037c5b3ffebd59a21a7 100644 --- a/app/code/Magento/Downloadable/view/adminhtml/templates/product/edit/downloadable/samples.phtml +++ b/app/code/Magento/Downloadable/view/adminhtml/templates/product/edit/downloadable/samples.phtml @@ -31,7 +31,7 @@ $block->getConfigJson(); <div class="admin__field admin__field-wide"> <div class="admin__field-control"> <div class="admin__control-table-wrapper"> - <table cellspacing="0" class="admin__control-table"> + <table class="admin__control-table"> <thead> <tr> <th class="_required col-title"><span><?php echo __('Title') ?></span></th> @@ -102,7 +102,7 @@ require([ '</td>'+ '<td class="col-sort"><input type="text" name="downloadable[sample][<%- data.id %>][sort_order]" value="<%- data.sort_order %>" class="input-text sort admin__control-text" /></td>'+ '<td class="col-actions">'+ - '<button type="button" class="action-remove"><span>Delete</span></button>'+ + '<button type="button" class="action-delete"><span>Delete</span></button>'+ '</td>'+ '</tr>'; sampleItems = { @@ -183,7 +183,7 @@ require([ } }, bindRemoveButtons: function() { - var buttons = $$('tbody#sample_items_body .action-remove'); + var buttons = $$('tbody#sample_items_body .action-delete'); for(var i=0;i<buttons.length;i++){ if(!$(buttons[i]).binded){ $(buttons[i]).binded = true; diff --git a/app/code/Magento/Downloadable/view/adminhtml/templates/sales/items/column/downloadable/name.phtml b/app/code/Magento/Downloadable/view/adminhtml/templates/sales/items/column/downloadable/name.phtml index 79f67d109af865df0a47bcb29e0003d86b152c83..aa6712c6d459d0938ff92651aa3516465aa69039 100644 --- a/app/code/Magento/Downloadable/view/adminhtml/templates/sales/items/column/downloadable/name.phtml +++ b/app/code/Magento/Downloadable/view/adminhtml/templates/sales/items/column/downloadable/name.phtml @@ -10,11 +10,14 @@ <?php if ($_item = $block->getItem()): ?> <div class="product-title"><?php echo $_item->getName() ?></div> - <div><strong><?php echo __('SKU') ?>:</strong> <?php echo implode('<br />', $this->helper('Magento\Catalog\Helper\Data')->splitSku($block->escapeHtml($block->getSku()))); ?></div> + <div class="product-sku-block"> + <span><?php echo __('SKU') ?>:</span> + <?php echo implode('<br />', $this->helper('Magento\Catalog\Helper\Data')->splitSku($block->escapeHtml($block->getSku()))); ?> + </div> <?php if ($block->getOrderOptions()): ?> <dl class="item-options"> <?php foreach ($block->getOrderOptions() as $_option): ?> - <dt><?php echo $_option['label'] ?></dt> + <dt><?php echo $_option['label'] ?>:</dt> <dd> <?php if (isset($_option['custom_view']) && $_option['custom_view']): ?> <?php echo $_option['value'];?> @@ -39,7 +42,7 @@ require(['prototype'], function(){ <?php endif; ?> <?php if ($block->getLinks()): ?> <dl class="item-options"> - <dt><?php echo $block->getLinksTitle(); ?></dt> + <dt><?php echo $block->getLinksTitle(); ?>:</dt> <?php foreach ($block->getLinks()->getPurchasedItems() as $_link): ?> <dd><?php echo $block->escapeHtml($_link->getLinkTitle()) ?> (<?php echo $_link->getNumberOfDownloadsUsed() . ' / ' . ($_link->getNumberOfDownloadsBought() ? $_link->getNumberOfDownloadsBought() : __('U')) ?>)</dd> <?php endforeach; ?> diff --git a/app/code/Magento/Eav/composer.json b/app/code/Magento/Eav/composer.json index 0c10785c21dc2ea3a16f8f44c5894cb6a74360d6..48ba714ad64dafc7360bb73aa31e87ac3a96ac0d 100644 --- a/app/code/Magento/Eav/composer.json +++ b/app/code/Magento/Eav/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-config": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-config": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Email/composer.json b/app/code/Magento/Email/composer.json index 734bedc62d4af7f6a88aa3bdd5739040ab2671ee..afc6d37eb433e3b75b32196ad86b641530dbb796 100644 --- a/app/code/Magento/Email/composer.json +++ b/app/code/Magento/Email/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-cms": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-variable": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-config": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-cms": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-variable": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Fedex/composer.json b/app/code/Magento/Fedex/composer.json index 0e25a9cef9e08a1fb68bb4bd766907df267332d3..4e2b254631e2af230d799ecfca6b01371e26afcf 100644 --- a/app/code/Magento/Fedex/composer.json +++ b/app/code/Magento/Fedex/composer.json @@ -3,20 +3,20 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-shipping": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/module-config": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-shipping": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/module-config": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "lib-libxml": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GiftMessage/composer.json b/app/code/Magento/GiftMessage/composer.json index 3b3f8bd3286e75382cfe29df8113150d353c8b51..68ce2c1de0918b500fa744563995ea560aa00240 100644 --- a/app/code/Magento/GiftMessage/composer.json +++ b/app/code/Magento/GiftMessage/composer.json @@ -3,20 +3,20 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-multishipping": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-multishipping": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GiftMessage/view/adminhtml/templates/sales/order/create/giftoptions.phtml b/app/code/Magento/GiftMessage/view/adminhtml/templates/sales/order/create/giftoptions.phtml index 3b6710cb9e1450263c494d2ee40e9860b66a4a69..b810ccccd95d8f23085677614fd4b2279705688c 100644 --- a/app/code/Magento/GiftMessage/view/adminhtml/templates/sales/order/create/giftoptions.phtml +++ b/app/code/Magento/GiftMessage/view/adminhtml/templates/sales/order/create/giftoptions.phtml @@ -12,8 +12,8 @@ <?php if ($_item): ?> <?php $_childHtml = trim($block->getChildHtml('', false));?> <?php if ($_childHtml): ?> - <tr class="border"> - <td colspan="8"> + <tr class="row-gift-options"> + <td colspan="7"> <a class="action-link" href="#" id="gift_options_link_<?php echo $_item->getId() ?>"><?php echo __('Gift Options') ?></a> <script> require([ diff --git a/app/code/Magento/GoogleAdwords/composer.json b/app/code/Magento/GoogleAdwords/composer.json index 4281f69da74682acc428f3a6378604d323802293..81dcd88401f817917d78a4ef6c7662e1cef9e6b8 100644 --- a/app/code/Magento/GoogleAdwords/composer.json +++ b/app/code/Magento/GoogleAdwords/composer.json @@ -3,13 +3,13 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GoogleAnalytics/composer.json b/app/code/Magento/GoogleAnalytics/composer.json index 465388ad322c19fc32b2c70780daa33e4c2a07ac..68cfa226900d210e823aae6eb94a46500ba21fd0 100644 --- a/app/code/Magento/GoogleAnalytics/composer.json +++ b/app/code/Magento/GoogleAnalytics/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", - "magento/module-cookie": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", + "magento/module-cookie": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GoogleOptimizer/composer.json b/app/code/Magento/GoogleOptimizer/composer.json index 2b97a33986a56fc2a652b0b198c7393a6b0f1881..a20b62e29cb95b1840d2dfc056c0e6df5b9638a2 100644 --- a/app/code/Magento/GoogleOptimizer/composer.json +++ b/app/code/Magento/GoogleOptimizer/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-google-analytics": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-cms": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-google-analytics": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-cms": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items.php index 1a7253c6c788cf98453a2221537b92fcc7992cae..0ec30477e3866e7d7582241f0892d6fa860d67d1 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items.php @@ -7,12 +7,10 @@ namespace Magento\GoogleShopping\Controller\Adminhtml\Googleshopping; use Magento\Backend\App\Action; use Magento\Framework\Notification\NotifierInterface; +use Magento\Framework\Controller\ResultFactory; /** * GoogleShopping Admin Items Controller - * - * @name \Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\Items - * @author Magento Core Team <core@magentocommerce.com> */ class Items extends \Magento\Backend\App\Action { @@ -55,7 +53,7 @@ class Items extends \Magento\Backend\App\Action * Redirect user to Google Captcha challenge * * @param \Zend_Gdata_App_CaptchaRequiredException $e - * @return void + * @return \Magento\Framework\Controller\ResultInterface */ protected function _redirectToCaptcha($e) { @@ -68,12 +66,13 @@ class Items extends \Magento\Backend\App\Action ] ); if ($this->getRequest()->isAjax()) { - $this->getResponse()->representJson( - $this->_objectManager->get('Magento\Framework\Json\Helper\Data') - ->jsonEncode(['redirect' => $redirectUrl]) - ); + /** @var \Magento\Framework\Controller\Result\Json $resultJson */ + $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON); + return $resultJson->setData(['redirect' => $redirectUrl]); } else { - $this->_redirect($redirectUrl); + /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + return $resultRedirect->setUrl($redirectUrl); } } diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/ConfirmCaptcha.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/ConfirmCaptcha.php index ab9061908528a8d2cc1786b291096e190ae97702..ef6a9807e247bfe195da7c0aad055eb0e1a821ff 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/ConfirmCaptcha.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/ConfirmCaptcha.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -35,39 +34,34 @@ class ConfirmCaptcha extends \Magento\GoogleShopping\Controller\Adminhtml\Google /** * Confirm CAPTCHA * - * @return void + * @return \Magento\Framework\Controller\ResultInterface */ public function execute() { $storeId = $this->_getStore()->getId(); try { - $this->_objectManager->create( - 'Magento\GoogleShopping\Model\Service' - )->getClient( - $storeId, - $this->urlDecoder->decode( - $this->getRequest()->getParam('captcha_token') - ), - $this->getRequest()->getParam('user_confirm') - ); + $this->_objectManager->create('Magento\GoogleShopping\Model\Service') + ->getClient( + $storeId, + $this->urlDecoder->decode($this->getRequest()->getParam('captcha_token')), + $this->getRequest()->getParam('user_confirm') + ); $this->messageManager->addSuccess(__('Captcha has been confirmed.')); } catch (\Zend_Gdata_App_CaptchaRequiredException $e) { $this->messageManager->addError(__('There was a Captcha confirmation error: %1', $e->getMessage())); - $this->_redirectToCaptcha($e); - return; + return $this->_redirectToCaptcha($e); } catch (\Zend_Gdata_App_Exception $e) { $this->messageManager->addError( - $this->_objectManager->get( - 'Magento\GoogleShopping\Helper\Data' - )->parseGdataExceptionMessage( - $e->getMessage() - ) + $this->_objectManager->get('Magento\GoogleShopping\Helper\Data') + ->parseGdataExceptionMessage($e->getMessage()) ); } catch (\Exception $e) { $this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e); $this->messageManager->addError(__('Something went wrong during Captcha confirmation.')); } - $this->_redirect('adminhtml/*/index', ['store' => $storeId]); + /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT); + return $resultRedirect->setPath('adminhtml/*/index', ['store' => $storeId]); } } diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Grid.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Grid.php index 7bd43f98baa86da153c1ad3984d05720acdef6f1..c0565fd7d89b67cbf1ce1bbee6eef31180fdd0d8 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Grid.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Grid.php @@ -6,22 +6,43 @@ */ namespace Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\Items; +use Magento\Backend\App\Action; +use Magento\Framework\Notification\NotifierInterface; + class Grid extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\Items { + /** + * @var \Magento\Framework\View\LayoutFactory + */ + protected $layoutFactory; + + /** + * @param Action\Context $context + * @param NotifierInterface $notifier + * @param \Magento\Framework\Url\EncoderInterface $urlEncoder + * @param \Magento\Framework\View\LayoutFactory $layoutFactory + */ + public function __construct( + Action\Context $context, + NotifierInterface $notifier, + \Magento\Framework\Url\EncoderInterface $urlEncoder, + \Magento\Framework\View\LayoutFactory $layoutFactory + ) { + $this->layoutFactory = $layoutFactory; + parent::__construct($context, $notifier, $urlEncoder); + } + /** * Grid with Google Content items * - * @return void + * @return \Magento\Framework\Controller\Result\Raw */ public function execute() { - $this->_view->loadLayout(); - $this->getResponse()->setBody( - $this->_view->getLayout()->createBlock( - 'Magento\GoogleShopping\Block\Adminhtml\Items\Item' - )->setIndex( - $this->getRequest()->getParam('index') - )->toHtml() - ); + /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */ + $resultRaw = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_RAW); + /** @var \Magento\GoogleShopping\Block\Adminhtml\Items\Item $block */ + $block = $this->layoutFactory->create()->createBlock('Magento\GoogleShopping\Block\Adminhtml\Items\Item'); + return $resultRaw->setContents($block->setIndex($this->getRequest()->getParam('index'))->toHtml()); } } diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Index.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Index.php index 56380c2148cfacfde955603861af9d03fa33fbb4..092ac1d0a4471fb21333cfa312cbeaf090d682cb 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Index.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Index.php @@ -35,54 +35,36 @@ class Index extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\ $this->urlDecoder = $urlDecoder; } - /** - * Initialize general settings for action - * - * @return $this - */ - protected function _initAction() - { - $this->_view->loadLayout(); - $this->_setActiveMenu( - 'Magento_GoogleShopping::catalog_googleshopping_items' - )->_addBreadcrumb( - __('Catalog'), - __('Catalog') - )->_addBreadcrumb( - __('Google Content'), - __('Google Content') - ); - return $this; - } - /** * Manage Items page with two item grids: Magento products and Google Content items * - * @return void + * @return \Magento\Backend\Model\View\Result\Page|\Magento\Backend\Model\View\Result\Redirect */ public function execute() { if (0 === (int)$this->getRequest()->getParam('store')) { - $this->_redirect( + /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT); + return $resultRedirect->setPath( 'adminhtml/*/', [ - 'store' => $this->_objectManager->get( - 'Magento\Store\Model\StoreManagerInterface' - )->getStore()->getId(), + 'store' => $this->_objectManager->get('Magento\Store\Model\StoreManagerInterface') + ->getStore()->getId(), '_current' => true ] ); - return; } - $this->_initAction(); - $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Google Content Items')); + /** @var \Magento\Backend\Model\View\Result\Page $resultPage */ + $resultPage = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_PAGE); + $resultPage->setActiveMenu('Magento_GoogleShopping::catalog_googleshopping_items') + ->addBreadcrumb(__('Catalog'), __('Catalog')) + ->addBreadcrumb(__('Google Content'), __('Google Content')); + $resultPage->getConfig()->getTitle()->prepend(__('Google Content Items')); - $contentBlock = $this->_view->getLayout()->createBlock( - 'Magento\GoogleShopping\Block\Adminhtml\Items' - )->setStore( - $this->_getStore() - ); + $contentBlock = $resultPage->getLayout() + ->createBlock('Magento\GoogleShopping\Block\Adminhtml\Items') + ->setStore($this->_getStore()); if ($this->getRequest()->getParam('captcha_token') && $this->getRequest()->getParam('captcha_url')) { $contentBlock->setGcontentCaptchaToken( @@ -97,11 +79,8 @@ class Index extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\ ); } - if (!$this->_objectManager->get( - 'Magento\GoogleShopping\Model\Config' - )->isValidDefaultCurrencyCode( - $this->_getStore()->getId() - ) + if (!$this->_objectManager->get('Magento\GoogleShopping\Model\Config') + ->isValidDefaultCurrencyCode($this->_getStore()->getId()) ) { $_countryInfo = $this->_objectManager->get( 'Magento\GoogleShopping\Model\Config' @@ -110,14 +89,14 @@ class Index extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\ ); $this->messageManager->addNotice( __( - "The store's currency should be set to %1 for %2 in system configuration. Otherwise item prices won't be correct in Google Content.", + "The store's currency should be set to %1 for %2 in system configuration." + . " Otherwise item prices won't be correct in Google Content.", $_countryInfo['currency_name'], $_countryInfo['name'] ) ); } - $this->_addBreadcrumb(__('Items'), __('Items'))->_addContent($contentBlock); - $this->_view->renderLayout(); + return $resultPage->addBreadcrumb(__('Items'), __('Items'))->addContent($contentBlock); } } diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/MassAdd.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/MassAdd.php index 4af5444a043b464a7403dbf8d73e1e7cd0a93b12..4f101189769876999ba8e662e2bb2f711a653dda 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/MassAdd.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/MassAdd.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -11,13 +10,14 @@ class MassAdd extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshoppin /** * Add (export) several products to Google Content * - * @return void + * @return \Magento\Framework\Controller\ResultInterface + * @throws \Magento\Framework\Exception\LocalizedException */ public function execute() { $flag = $this->_getFlag(); if ($flag->isLocked()) { - return; + return $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_RAW); } session_write_close(); @@ -29,20 +29,14 @@ class MassAdd extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshoppin try { $flag->lock(); - $this->_objectManager->create( - 'Magento\GoogleShopping\Model\MassOperations' - )->setFlag( - $flag - )->addProducts( - $productIds, - $storeId - ); + $this->_objectManager->create('Magento\GoogleShopping\Model\MassOperations') + ->setFlag($flag) + ->addProducts($productIds, $storeId); } catch (\Zend_Gdata_App_CaptchaRequiredException $e) { // Google requires CAPTCHA for login $this->messageManager->addError(__($e->getMessage())); $flag->unlock(); - $this->_redirectToCaptcha($e); - return; + return $this->_redirectToCaptcha($e); } catch (\Exception $e) { $flag->unlock(); $this->notifier->addMajor( @@ -50,9 +44,10 @@ class MassAdd extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshoppin $e->getMessage() ); $this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e); - return; + return $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_RAW); } $flag->unlock(); + return $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_RAW); } } diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Refresh.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Refresh.php index 03fc43a2939797febd4ccdcc5bb1b837a3e9783c..60795768337b509e918aa33877ee4f8b5df2b447 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Refresh.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Refresh.php @@ -1,7 +1,5 @@ <?php /** - * Update items statistics and remove the items which are not available in Google Content - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -10,6 +8,9 @@ namespace Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\Items; +/** + * Update items statistics and remove the items which are not available in Google Content + */ class Refresh extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\Items { /** @@ -20,13 +21,13 @@ class Refresh extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshoppin protected $operation = 'synchronizeItems'; /** - * {@inheritdoc} + * @return \Magento\Framework\Controller\ResultInterface */ public function execute() { $flag = $this->_getFlag(); if ($flag->isLocked()) { - return; + return $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_RAW); } session_write_close(); @@ -38,19 +39,14 @@ class Refresh extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshoppin try { $flag->lock(); $operation = $this->operation; - $this->_objectManager->create( - 'Magento\GoogleShopping\Model\MassOperations' - )->setFlag( - $flag - )->$operation( - $itemIds - ); + $this->_objectManager->create('Magento\GoogleShopping\Model\MassOperations') + ->setFlag($flag) + ->$operation($itemIds); } catch (\Zend_Gdata_App_CaptchaRequiredException $e) { // Google requires CAPTCHA for login $this->messageManager->addError(__($e->getMessage())); $flag->unlock(); - $this->_redirectToCaptcha($e); - return; + return $this->_redirectToCaptcha($e); } catch (\Exception $e) { $flag->unlock(); $this->notifier->addMajor( @@ -60,9 +56,10 @@ class Refresh extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshoppin ) ); $this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e); - return; + return $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_RAW); } $flag->unlock(); + return $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_RAW); } } diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Status.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Status.php index 02e72b6a7ccbd2cacba6d2570eeda4740d0b353e..373b05d547cc4c3818e3558a3242ecd21afeb422 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Status.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Items/Status.php @@ -11,16 +11,16 @@ class Status extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshopping /** * Retrieve background process status * - * @return \Magento\Framework\App\Response\Http + * @return \Magento\Framework\Controller\Result\Json */ public function execute() { if ($this->getRequest()->isAjax()) { $this->getResponse()->setHeader('Content-Type', 'application/json'); $params = ['is_running' => $this->_getFlag()->isLocked()]; - return $this->getResponse()->representJson( - $this->_objectManager->get('Magento\Framework\Json\Helper\Data')->jsonEncode($params) - ); + /** @var \Magento\Framework\Controller\Result\Json $resultJson */ + $resultJson = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_JSON); + return $resultJson->setData($params); } } } diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Selection/Grid.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Selection/Grid.php index a8c5ec7e749d33b799233a0b402fc79f4e9bc065..c3103f9882740b17732fa8946c3d134f75045c8c 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Selection/Grid.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Selection/Grid.php @@ -8,20 +8,35 @@ namespace Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\Selection; class Grid extends \Magento\Backend\App\Action { + /** + * @var \Magento\Framework\View\LayoutFactory + */ + protected $layoutFactory; + + /** + * @param \Magento\Backend\App\Action\Context $context + * @param \Magento\Framework\View\LayoutFactory $layoutFactory + */ + public function __construct( + \Magento\Backend\App\Action\Context $context, + \Magento\Framework\View\LayoutFactory $layoutFactory + ) { + $this->layoutFactory = $layoutFactory; + parent::__construct($context); + } + /** * Grid with available products for Google Content * - * @return void + * @return \Magento\Framework\Controller\Result\Raw */ public function execute() { - $this->_view->loadLayout(); - $this->getResponse()->setBody( - $this->_view->getLayout()->createBlock( - 'Magento\GoogleShopping\Block\Adminhtml\Items\Product' - )->setIndex( - $this->getRequest()->getParam('index') - )->toHtml() + /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */ + $resultRaw = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_RAW); + return $resultRaw->setContents( + $this->layoutFactory->create()->createBlock('Magento\GoogleShopping\Block\Adminhtml\Items\Product') + ->setIndex($this->getRequest()->getParam('index'))->toHtml() ); } } diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Selection/Search.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Selection/Search.php index 487ae3016ae2994d2d142c87cb5dfcd3e7c5b648..8a86f1fd794f8b4fdf8be9127c1a23e49fdb2dab 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Selection/Search.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Selection/Search.php @@ -8,21 +8,35 @@ namespace Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\Selection; class Search extends \Magento\Backend\App\Action { + /** + * @var \Magento\Framework\View\LayoutFactory + */ + protected $layoutFactory; + + /** + * @param \Magento\Backend\App\Action\Context $context + * @param \Magento\Framework\View\LayoutFactory $layoutFactory + */ + public function __construct( + \Magento\Backend\App\Action\Context $context, + \Magento\Framework\View\LayoutFactory $layoutFactory + ) { + $this->layoutFactory = $layoutFactory; + parent::__construct($context); + } + /** * Search result grid with available products for Google Content * - * @return void + * @return \Magento\Framework\Controller\Result\Raw */ public function execute() { - $this->getResponse()->setBody( - $this->_view->getLayout()->createBlock( - 'Magento\GoogleShopping\Block\Adminhtml\Items\Product' - )->setIndex( - $this->getRequest()->getParam('index') - )->setFirstShow( - true - )->toHtml() + /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */ + $resultRaw = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_RAW); + return $resultRaw->setContents( + $this->layoutFactory->create()->createBlock('Magento\GoogleShopping\Block\Adminhtml\Items\Product') + ->setIndex($this->getRequest()->getParam('index'))->setFirstShow(true)->toHtml() ); } } diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types.php index a233721ed9f907b4c715ecd96d7389851b3e6a17..068fa2cdf168fd1e33bb838ca4dfa0508f2724fd 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types.php @@ -68,21 +68,16 @@ class Types extends \Magento\Backend\App\Action /** * Initialize general settings for action * - * @return $this + * @return \Magento\Backend\Model\View\Result\Page */ - protected function _initAction() + protected function initPage() { - $this->_view->loadLayout(); - $this->_setActiveMenu( - 'Magento_GoogleShopping::catalog_googleshopping_types' - )->_addBreadcrumb( - __('Catalog'), - __('Catalog') - )->_addBreadcrumb( - __('Google Content'), - __('Google Content') - ); - return $this; + /** @var \Magento\Backend\Model\View\Result\Page $resultPage */ + $resultPage = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_PAGE); + $resultPage->setActiveMenu('Magento_GoogleShopping::catalog_googleshopping_types') + ->addBreadcrumb(__('Catalog'), __('Catalog')) + ->addBreadcrumb(__('Google Content'), __('Google Content')); + return $resultPage; } /** diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/Edit.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/Edit.php index 89648aa1adabaa42ab4d07e41b667056e25e5fcc..e3f5eb02d2406786e6222f31416041c308bf5f9e 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/Edit.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/Edit.php @@ -11,7 +11,7 @@ class Edit extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\T /** * Edit attribute set mapping * - * @return void + * @return \Magento\Backend\Model\View\Result\Page|\Magento\Backend\Model\View\Result\Redirect */ public function execute() { @@ -21,11 +21,9 @@ class Edit extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\T try { $result = []; if ($typeId) { - $collection = $this->_objectManager->create( - 'Magento\GoogleShopping\Model\Resource\Attribute\Collection' - )->addTypeFilter( - $typeId - )->load(); + $collection = $this->_objectManager + ->create('Magento\GoogleShopping\Model\Resource\Attribute\Collection') + ->addTypeFilter($typeId)->load(); foreach ($collection as $attribute) { $result[] = $attribute->getData(); } @@ -34,19 +32,22 @@ class Edit extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\T $this->_coreRegistry->register('attributes', $result); $breadcrumbLabel = $typeId ? __('Edit attribute set mapping') : __('New attribute set mapping'); - $this->_initAction()->_addBreadcrumb( - $breadcrumbLabel, - $breadcrumbLabel - )->_addContent( - $this->_view->getLayout()->createBlock('Magento\GoogleShopping\Block\Adminhtml\Types\Edit') - ); - $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Google Content Attribute Mapping')); - $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Google Content Attributes')); - $this->_view->renderLayout(); + + $resultPage = $this->initPage(); + $resultPage->addBreadcrumb($breadcrumbLabel, $breadcrumbLabel) + ->addContent( + $resultPage->getLayout()->createBlock('Magento\GoogleShopping\Block\Adminhtml\Types\Edit') + ); + + $resultPage->getConfig()->getTitle()->prepend(__('Google Content Attribute Mapping')); + $resultPage->getConfig()->getTitle()->prepend(__('Google Content Attributes')); + return $resultPage; } catch (\Exception $e) { $this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e); $this->messageManager->addError(__("We can't edit Attribute Set Mapping.")); - $this->_redirect('adminhtml/*/index'); + /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT); + return $resultRedirect->setPath('adminhtml/*/index'); } } } diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/Grid.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/Grid.php index 1418bc0242a11271ec54d23ef3768dc6cce86141..91270934b4154ba019d2766c6c8911b1f8c64964 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/Grid.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/Grid.php @@ -11,11 +11,10 @@ class Grid extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\T /** * Grid for AJAX request * - * @return void + * @return \Magento\Framework\View\Result\Layout */ public function execute() { - $this->_view->loadLayout('false'); - $this->_view->renderLayout(); + return $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_LAYOUT); } } diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/Index.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/Index.php index 30232cbe3d40df6ca6d84739e4d94ba98ce1720d..b6116c7316a0283956bf4f8a049e2509c2f691a6 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/Index.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/Index.php @@ -11,12 +11,12 @@ class Index extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\ /** * List of all maps (items) * - * @return void + * @return \Magento\Backend\Model\View\Result\Page */ public function execute() { - $this->_initAction()->_addBreadcrumb(__('Attribute Maps'), __('Attribute Maps')); - $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Google Content Attributes')); - $this->_view->renderLayout(); + $resultPage = $this->initPage()->addBreadcrumb(__('Attribute Maps'), __('Attribute Maps')); + $resultPage->getConfig()->getTitle()->prepend(__('Google Content Attributes')); + return $resultPage; } } diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/LoadAttributeSets.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/LoadAttributeSets.php index 6cb5d6885d1355e0049abc808c63bc297ea878c4..fc8a1dc2bd6ccf7ed9b86858edf1983d0308de52 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/LoadAttributeSets.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/LoadAttributeSets.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -8,16 +7,37 @@ namespace Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\Types; class LoadAttributeSets extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\Types { + /** + * @var \Magento\Framework\View\LayoutFactory + */ + protected $layoutFactory; + + /** + * @param \Magento\Backend\App\Action\Context $context + * @param \Magento\Framework\Registry $coreRegistry + * @param \Magento\Framework\View\LayoutFactory $layoutFactory + */ + public function __construct( + \Magento\Backend\App\Action\Context $context, + \Magento\Framework\Registry $coreRegistry, + \Magento\Framework\View\LayoutFactory $layoutFactory + ) { + $this->layoutFactory = $layoutFactory; + parent::__construct($context, $coreRegistry); + } + /** * Get available attribute sets * - * @return void + * @return \Magento\Framework\Controller\Result\Raw * @throws \Exception */ public function execute() { - $this->getResponse()->setBody( - $this->_view->getLayout()->getBlockSingleton('Magento\GoogleShopping\Block\Adminhtml\Types\Edit\Form') + /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */ + $resultRaw = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_RAW); + return $resultRaw->setContents( + $this->layoutFactory->create()->getBlockSingleton('Magento\GoogleShopping\Block\Adminhtml\Types\Edit\Form') ->getAttributeSetsSelectElement($this->getRequest()->getParam('target_country')) ->toHtml() ); diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/LoadAttributes.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/LoadAttributes.php index 54a0bce4af48ce45f7c35ced453aff950f94a9f3..0d817329dd869c3b8563c784190729ce2a04a394 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/LoadAttributes.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/LoadAttributes.php @@ -8,29 +8,48 @@ namespace Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\Types; class LoadAttributes extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshopping\Types { + /** + * @var \Magento\Framework\View\LayoutFactory + */ + protected $layoutFactory; + + /** + * @param \Magento\Backend\App\Action\Context $context + * @param \Magento\Framework\Registry $coreRegistry + * @param \Magento\Framework\View\LayoutFactory $layoutFactory + */ + public function __construct( + \Magento\Backend\App\Action\Context $context, + \Magento\Framework\Registry $coreRegistry, + \Magento\Framework\View\LayoutFactory $layoutFactory + ) { + $this->layoutFactory = $layoutFactory; + parent::__construct($context, $coreRegistry); + } + /** * Get Google Content attributes list * - * @return void + * @return \Magento\Framework\Controller\Result\Raw */ public function execute() { + /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */ + $resultRaw = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_RAW); try { - $this->getResponse()->setBody( - $this->_view->getLayout()->createBlock( - 'Magento\GoogleShopping\Block\Adminhtml\Types\Edit\Attributes' - )->setAttributeSetId( - $this->getRequest()->getParam('attribute_set_id') - )->setTargetCountry( - $this->getRequest()->getParam('target_country') - )->setAttributeSetSelected( - true - )->toHtml() + $resultRaw->setContents( + $this->layoutFactory->create() + ->createBlock('Magento\GoogleShopping\Block\Adminhtml\Types\Edit\Attributes') + ->setAttributeSetId($this->getRequest()->getParam('attribute_set_id')) + ->setTargetCountry($this->getRequest()->getParam('target_country')) + ->setAttributeSetSelected(true) + ->toHtml() ); } catch (\Exception $e) { $this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e); // just need to output text with error $this->messageManager->addError(__("We can't load attributes.")); } + return $resultRaw; } } diff --git a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/NewAction.php b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/NewAction.php index ffb8ee171b7f6fc7c7466178b5b67e04f7e481a3..86b62a33b9c033d19c3153b56161a5e769cacb1c 100644 --- a/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/NewAction.php +++ b/app/code/Magento/GoogleShopping/Controller/Adminhtml/Googleshopping/Types/NewAction.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -11,25 +10,31 @@ class NewAction extends \Magento\GoogleShopping\Controller\Adminhtml\Googleshopp /** * Create new attribute set mapping * - * @return void + * @return \Magento\Backend\Model\View\Result\Page|\Magento\Backend\Model\View\Result\Redirect */ public function execute() { try { $this->_initItemType(); - $this->_initAction()->_addBreadcrumb( + + /** @var \Magento\Backend\Model\View\Result\Page $resultPage */ + $resultPage = $this->initPage()->addBreadcrumb( __('New attribute set mapping'), __('New attribute set mapping') - )->_addContent( - $this->_view->getLayout()->createBlock('Magento\GoogleShopping\Block\Adminhtml\Types\Edit') ); - $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Google Content Attributes')); - $this->_view->getPage()->getConfig()->getTitle()->prepend(__('New Google Content Attribute Mapping')); - $this->_view->renderLayout(); + $resultPage->addContent( + $resultPage->getLayout()->createBlock('Magento\GoogleShopping\Block\Adminhtml\Types\Edit') + ); + $resultPage->getConfig()->getTitle()->prepend(__('Google Content Attributes')); + $resultPage->getConfig()->getTitle()->prepend(__('New Google Content Attribute Mapping')); + return $resultPage; } catch (\Exception $e) { $this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e); $this->messageManager->addError(__("We can't create Attribute Set Mapping.")); - $this->_redirect('adminhtml/*/index', ['store' => $this->_getStore()->getId()]); + /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT); + $resultRedirect->setPath('adminhtml/*/index', ['store' => $this->_getStore()->getId()]); + return $resultRedirect; } } } diff --git a/app/code/Magento/GoogleShopping/composer.json b/app/code/Magento/GoogleShopping/composer.json index 691c21c5e5170582f692b3d8ff642d0f87a946cf..267a3c8cb23aeea71338a8532432c3e4a133ce26 100644 --- a/app/code/Magento/GoogleShopping/composer.json +++ b/app/code/Magento/GoogleShopping/composer.json @@ -3,18 +3,18 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-tax": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-tax": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GroupedImportExport/composer.json b/app/code/Magento/GroupedImportExport/composer.json index 6a7c82281d9845133e14500a6df7040ae028c074..2d66faa4f5b3761512df683740754d918999fe0c 100644 --- a/app/code/Magento/GroupedImportExport/composer.json +++ b/app/code/Magento/GroupedImportExport/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-import-export": "0.74.0-beta5", - "magento/module-catalog-import-export": "0.74.0-beta5", - "magento/module-grouped-product": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-import-export": "0.74.0-beta6", + "magento/module-catalog-import-export": "0.74.0-beta6", + "magento/module-grouped-product": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GroupedProduct/composer.json b/app/code/Magento/GroupedProduct/composer.json index 3374488e9aefe2d27165e2537d1179f99eb5a3b1..cdd8818ca6b36d0d881e58e187ae078e61590d0c 100644 --- a/app/code/Magento/GroupedProduct/composer.json +++ b/app/code/Magento/GroupedProduct/composer.json @@ -3,22 +3,22 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/module-msrp": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/module-msrp": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GroupedProduct/view/adminhtml/templates/catalog/product/composite/fieldset/grouped.phtml b/app/code/Magento/GroupedProduct/view/adminhtml/templates/catalog/product/composite/fieldset/grouped.phtml index 0a09bcdf7488f7cc713a1a13a9f8b05e1027262d..08f14bf4c075522f0ef228743d89de74221b1b21 100644 --- a/app/code/Magento/GroupedProduct/view/adminhtml/templates/catalog/product/composite/fieldset/grouped.phtml +++ b/app/code/Magento/GroupedProduct/view/adminhtml/templates/catalog/product/composite/fieldset/grouped.phtml @@ -20,7 +20,7 @@ <?php if ((!$_product->isAvailable() && !$_skipSaleableCheck) || !$_hasAssociatedProducts): ?> <p class="availability out-of-stock"><?php echo __('Availability:') ?> <span><?php echo __('Out of stock') ?></span></p> <?php endif; ?> - <table class="data-table table-info grouped-items-table" id="super-product-table"> + <table class="data-table admin__table-primary grouped-items-table" id="super-product-table"> <thead> <tr class="headings"> <th class="col-id"><?php echo __('ID') ?></th> diff --git a/app/code/Magento/ImportExport/composer.json b/app/code/Magento/ImportExport/composer.json index 61c2c2b3db566f40ce5f5dcfec04e0d29d8e6488..747df1717017a7ddeffb4d80ef8640f23e2f5dfd 100644 --- a/app/code/Magento/ImportExport/composer.json +++ b/app/code/Magento/ImportExport/composer.json @@ -3,17 +3,17 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-indexer": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-indexer": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "ext-ctype": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Indexer/composer.json b/app/code/Magento/Indexer/composer.json index 8f8cb731492cbc26d2e9ae42e1daf0657889854b..1e199e2a193d9de0028b8d9ee4a0c2c62c026580 100644 --- a/app/code/Magento/Indexer/composer.json +++ b/app/code/Magento/Indexer/composer.json @@ -3,13 +3,13 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-backend": "0.74.0-beta5", - "magento/module-page-cache": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-backend": "0.74.0-beta6", + "magento/module-page-cache": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Integration/composer.json b/app/code/Magento/Integration/composer.json index 6d55a11affe41674b996715169b4742df04d9e7a..9fa6582f0d0cd4bb38e11ceed92222616d1abd5a 100644 --- a/app/code/Magento/Integration/composer.json +++ b/app/code/Magento/Integration/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-user": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", - "magento/module-authorization": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-user": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", + "magento/module-authorization": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/LayeredNavigation/composer.json b/app/code/Magento/LayeredNavigation/composer.json index 7f68626650803f5cafd24ae952242a86a5b4e34f..ed19740fa51a2ec85a258179adb1147d47cbe49e 100644 --- a/app/code/Magento/LayeredNavigation/composer.json +++ b/app/code/Magento/LayeredNavigation/composer.json @@ -3,13 +3,13 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-config": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Log/composer.json b/app/code/Magento/Log/composer.json index acb3bafe61980ed0ddc61025239aadfc9264a67b..5179484e4165391b9d64e747c7cde887bacdc2c5 100644 --- a/app/code/Magento/Log/composer.json +++ b/app/code/Magento/Log/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/MediaStorage/composer.json b/app/code/Magento/MediaStorage/composer.json index d451da9eea6a398b075e779ee2c936a41c8a9a17..1a140593019d9982ad679be6ab959f95baf4ac63 100644 --- a/app/code/Magento/MediaStorage/composer.json +++ b/app/code/Magento/MediaStorage/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-config": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-config": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Msrp/composer.json b/app/code/Magento/Msrp/composer.json index 2782d30f5999cfd7e1bf1c07825e97815639cac8..5e288eaebe15fdb2d3d2c35d2fa2ca7de5fd5dae 100644 --- a/app/code/Magento/Msrp/composer.json +++ b/app/code/Magento/Msrp/composer.json @@ -3,19 +3,19 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-bundle": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-downloadable": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-grouped-product": "0.74.0-beta5", - "magento/module-tax": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-bundle": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-downloadable": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-grouped-product": "0.74.0-beta6", + "magento/module-tax": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Multishipping/composer.json b/app/code/Magento/Multishipping/composer.json index cdce6dfcb3c5bc6a1cc4f819199b0f74aa00c371..ebcccdf5ade42bf663bb71b3bf0c100e6800df47 100644 --- a/app/code/Magento/Multishipping/composer.json +++ b/app/code/Magento/Multishipping/composer.json @@ -3,19 +3,19 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-payment": "0.74.0-beta5", - "magento/module-tax": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-payment": "0.74.0-beta6", + "magento/module-tax": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Newsletter/composer.json b/app/code/Magento/Newsletter/composer.json index ae2c1141f0ac99c31210498329899b2e480ef485..2393d31c94a9e4d4840e0276b8d84bff76ea6237 100644 --- a/app/code/Magento/Newsletter/composer.json +++ b/app/code/Magento/Newsletter/composer.json @@ -3,20 +3,20 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-widget": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-cms": "0.74.0-beta5", - "magento/module-email": "0.74.0-beta5", - "magento/module-cron": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-require-js": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-widget": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-cms": "0.74.0-beta6", + "magento/module-email": "0.74.0-beta6", + "magento/module-cron": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-require-js": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/OfflinePayments/composer.json b/app/code/Magento/OfflinePayments/composer.json index 3f861432ea8e2dd449341f8821a9bf4ca94af463..f47d2c7fd2030470d1926ef74a8e7376cf9a4b78 100644 --- a/app/code/Magento/OfflinePayments/composer.json +++ b/app/code/Magento/OfflinePayments/composer.json @@ -3,12 +3,12 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-payment": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-payment": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/OfflineShipping/composer.json b/app/code/Magento/OfflineShipping/composer.json index 0f1aab96e650ba234876c0d41f03c170f913a38f..b3ddea4da64c2a823e492e92649ee945bc126687 100644 --- a/app/code/Magento/OfflineShipping/composer.json +++ b/app/code/Magento/OfflineShipping/composer.json @@ -3,21 +3,21 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-shipping": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-sales-rule": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-config": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-shipping": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-sales-rule": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/PageCache/composer.json b/app/code/Magento/PageCache/composer.json index 3e62d64f6204c23c7da0c34924f3efd9299348c7..b8ad947ba68430c71160dc994e099cc10c073d59 100644 --- a/app/code/Magento/PageCache/composer.json +++ b/app/code/Magento/PageCache/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-config": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Payment/composer.json b/app/code/Magento/Payment/composer.json index cd9e1d94cc5cd62404ef06fdad296b46074393e5..b4e88d864a2b2c0868d6bd2cb685f0b81bcb0d4d 100644 --- a/app/code/Magento/Payment/composer.json +++ b/app/code/Magento/Payment/composer.json @@ -3,17 +3,17 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-centinel": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-config": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-centinel": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Persistent/Controller/Index.php b/app/code/Magento/Persistent/Controller/Index.php index 0232cecb0bc7aa8f35766424f9872f8a037dc4b9..69e283a403112f93401ab4fa6f0a81c5bad6f522 100644 --- a/app/code/Magento/Persistent/Controller/Index.php +++ b/app/code/Magento/Persistent/Controller/Index.php @@ -5,54 +5,69 @@ */ namespace Magento\Persistent\Controller; +use Magento\Framework\App\Action\Action; +use Magento\Framework\App\Action\Context; +use Magento\Persistent\Model\QuoteManager; +use Magento\Checkout\Model\Session as CheckoutSession; +use Magento\Customer\Model\Session as CustomerSession; +use Magento\Persistent\Helper\Session as SessionHelper; + /** * Persistent front controller */ -class Index extends \Magento\Framework\App\Action\Action +class Index extends Action { /** - * Whether clear checkout session when logout + * Persistent observer * - * @var bool + * @var \Magento\Persistent\Model\Observer */ - protected $_clearCheckoutSession = true; + protected $quoteManager; + + /** + * Checkout session + * + * @var \Magento\Checkout\Model\Session + */ + protected $checkoutSession; /** * Customer session * * @var \Magento\Customer\Model\Session */ - protected $_customerSession; + protected $customerSession; /** - * Checkout session - * - * @var \Magento\Checkout\Model\Session + * @var \Magento\Persistent\Helper\Session */ - protected $_checkoutSession; + protected $sessionHelper; /** - * Persistent observer + * Whether clear checkout session when logout * - * @var \Magento\Persistent\Model\Observer + * @var bool */ - protected $quoteManager; + protected $clearCheckoutSession = true; /** * @param \Magento\Framework\App\Action\Context $context * @param \Magento\Persistent\Model\QuoteManager $quoteManager * @param \Magento\Checkout\Model\Session $checkoutSession * @param \Magento\Customer\Model\Session $customerSession + * @param \Magento\Persistent\Helper\Session $sessionHelper */ public function __construct( - \Magento\Framework\App\Action\Context $context, - \Magento\Persistent\Model\QuoteManager $quoteManager, - \Magento\Checkout\Model\Session $checkoutSession, - \Magento\Customer\Model\Session $customerSession + Context $context, + QuoteManager $quoteManager, + CheckoutSession $checkoutSession, + CustomerSession $customerSession, + SessionHelper $sessionHelper ) { $this->quoteManager = $quoteManager; - $this->_checkoutSession = $checkoutSession; - $this->_customerSession = $customerSession; + $this->checkoutSession = $checkoutSession; + $this->customerSession = $customerSession; + $this->sessionHelper = $sessionHelper; parent::__construct($context); } @@ -64,17 +79,7 @@ class Index extends \Magento\Framework\App\Action\Action */ public function setClearCheckoutSession($clear = true) { - $this->_clearCheckoutSession = $clear; + $this->clearCheckoutSession = $clear; return $this; } - - /** - * Retrieve 'persistent session' helper instance - * - * @return \Magento\Persistent\Helper\Session - */ - protected function _getHelper() - { - return $this->_objectManager->get('Magento\Persistent\Helper\Session'); - } } diff --git a/app/code/Magento/Persistent/Controller/Index/ExpressCheckout.php b/app/code/Magento/Persistent/Controller/Index/ExpressCheckout.php index cf0a4884841bf1d38405b47b019e63d3f1ee9795..4a53814bbccb1cae33124197c448fd30b7214a30 100644 --- a/app/code/Magento/Persistent/Controller/Index/ExpressCheckout.php +++ b/app/code/Magento/Persistent/Controller/Index/ExpressCheckout.php @@ -1,21 +1,26 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Persistent\Controller\Index; -class ExpressCheckout extends \Magento\Persistent\Controller\Index +use Magento\Persistent\Controller\Index; +use Magento\Framework\Controller\ResultFactory; + +class ExpressCheckout extends Index { /** * Add appropriate session message and redirect to shopping cart * - * @return void + * @return \Magento\Framework\Controller\Result\Redirect */ public function execute() { $this->messageManager->addNotice(__('Your shopping cart has been updated with new prices.')); - $this->_redirect('checkout/cart'); + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + $resultRedirect->setPath('checkout/cart'); + return $resultRedirect; } } diff --git a/app/code/Magento/Persistent/Controller/Index/SaveMethod.php b/app/code/Magento/Persistent/Controller/Index/SaveMethod.php index d64059a510e3ae66ec5f16348bbe0f0ba49c76c1..64e32cb94724642e429b84d55d61c742e6f0e619 100644 --- a/app/code/Magento/Persistent/Controller/Index/SaveMethod.php +++ b/app/code/Magento/Persistent/Controller/Index/SaveMethod.php @@ -1,35 +1,33 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Persistent\Controller\Index; -class SaveMethod extends \Magento\Persistent\Controller\Index -{ - /** - * @var \Magento\Persistent\Model\QuoteManager - */ - protected $quoteManager; +use Magento\Persistent\Controller\Index; +use Magento\Framework\Controller\ResultFactory; +class SaveMethod extends Index +{ /** * Save onepage checkout method to be register * - * @return void + * @return \Magento\Framework\Controller\Result\Redirect */ public function execute() { - if ($this->_getHelper()->isPersistent()) { - $this->_getHelper()->getSession()->removePersistentCookie(); - if (!$this->_customerSession->isLoggedIn()) { - $this->_customerSession->setCustomerId(null)->setCustomerGroupId(null); + if ($this->sessionHelper->isPersistent()) { + $this->sessionHelper->getSession()->removePersistentCookie(); + if (!$this->customerSession->isLoggedIn()) { + $this->customerSession->setCustomerId(null)->setCustomerGroupId(null); } - $this->quoteManager->setGuest(); } - $checkoutUrl = $this->_redirect->getRefererUrl(); - $this->getResponse()->setRedirect($checkoutUrl . (strpos($checkoutUrl, '?') ? '&' : '?') . 'register'); + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + $resultRedirect->setUrl($checkoutUrl . (strpos($checkoutUrl, '?') ? '&' : '?') . 'register'); + return $resultRedirect; } } diff --git a/app/code/Magento/Persistent/Controller/Index/UnsetCookie.php b/app/code/Magento/Persistent/Controller/Index/UnsetCookie.php index 8f358bc672a0edff0b6857a99b18eb2adfef0b0f..369c63f7de88093d062f2625bab0558d86f4ad15 100644 --- a/app/code/Magento/Persistent/Controller/Index/UnsetCookie.php +++ b/app/code/Magento/Persistent/Controller/Index/UnsetCookie.php @@ -1,40 +1,44 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Persistent\Controller\Index; -class UnsetCookie extends \Magento\Persistent\Controller\Index +use Magento\Persistent\Controller\Index; +use Magento\Framework\Controller\ResultFactory; + +class UnsetCookie extends Index { /** - * Revert all persistent data + * Unset persistent cookie action * - * @return $this + * @return \Magento\Framework\Controller\Result\Redirect */ - protected function _cleanup() + public function execute() { - $this->_eventManager->dispatch('persistent_session_expired'); - $this->_customerSession->setCustomerId(null)->setCustomerGroupId(null); - if ($this->_clearCheckoutSession) { - $this->_checkoutSession->clearStorage(); + if ($this->sessionHelper->isPersistent()) { + $this->cleanup(); } - $this->_getHelper()->getSession()->removePersistentCookie(); - return $this; + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + $resultRedirect->setPath('customer/account/login'); + return $resultRedirect; } /** - * Unset persistent cookie action + * Revert all persistent data * - * @return void + * @return $this */ - public function execute() + protected function cleanup() { - if ($this->_getHelper()->isPersistent()) { - $this->_cleanup(); + $this->_eventManager->dispatch('persistent_session_expired'); + $this->customerSession->setCustomerId(null)->setCustomerGroupId(null); + if ($this->clearCheckoutSession) { + $this->checkoutSession->clearStorage(); } - $this->_redirect('customer/account/login'); - return; + $this->sessionHelper->getSession()->removePersistentCookie(); + return $this; } } diff --git a/app/code/Magento/Persistent/composer.json b/app/code/Magento/Persistent/composer.json index 31b1a279ef4fd0bf45d9e5c72eab10f9269db1cd..6b71977bb0d02f8105c6b0fc6ab5b57c6345fd7b 100644 --- a/app/code/Magento/Persistent/composer.json +++ b/app/code/Magento/Persistent/composer.json @@ -3,17 +3,17 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-cron": "0.74.0-beta5", - "magento/module-page-cache": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-cron": "0.74.0-beta6", + "magento/module-page-cache": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/ProductAlert/composer.json b/app/code/Magento/ProductAlert/composer.json index 62750ea8e688881021ad76e5fe7c1635bd86777a..f6482671da0a929b537d916d2d9960bcf2b24161 100644 --- a/app/code/Magento/ProductAlert/composer.json +++ b/app/code/Magento/ProductAlert/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Quote/Api/CartItemRepositoryInterface.php b/app/code/Magento/Quote/Api/CartItemRepositoryInterface.php index 992a93583b33679287c2e3513f31980e937ea072..96787607500b7216d5826ec63141a12741a564bf 100644 --- a/app/code/Magento/Quote/Api/CartItemRepositoryInterface.php +++ b/app/code/Magento/Quote/Api/CartItemRepositoryInterface.php @@ -28,22 +28,45 @@ interface CartItemRepositoryInterface public function save(\Magento\Quote\Api\Data\CartItemInterface $cartItem); /** - * Remove bundle option + * Removes the specified item from the specified cart. + * + * @param int $cartId The cart ID. + * @param int $itemId The item ID of the item to be removed. + * @return bool + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified item or cart does not exist. + * @throws \Magento\Framework\Exception\CouldNotSaveException The item could not be removed. + */ + public function deleteById($cartId, $itemId); + + /** + * Lists items that are assigned to a specified cart. + * + * @param int $customerId Customer ID. + * @return \Magento\Quote\Api\Data\CartItemInterface[] Array of items. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + */ + public function getListForCustomer($customerId); + + /** + * Adds the specified item to the specified cart. * - * @param \Magento\Quote\Api\Data\CartItemInterface $cartItem - * @return void - * @throws \Magento\Framework\Exception\CouldNotSaveException + * @param int $customerId Customer ID. + * @param \Magento\Quote\Api\Data\CartItemInterface $cartItem The item. + * @return \Magento\Quote\Api\Data\CartItemInterface Item. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + * @throws \Magento\Framework\Exception\CouldNotSaveException The specified item could not be saved to the cart. + * @throws \Magento\Framework\Exception\InputException The specified item or cart is not valid. */ - public function delete(\Magento\Quote\Api\Data\CartItemInterface $cartItem); + public function saveForCustomer($customerId, \Magento\Quote\Api\Data\CartItemInterface $cartItem); /** * Removes the specified item from the specified cart. * - * @param int $cartId The cart ID. + * @param int $customerId Customer ID. * @param int $itemId The item ID of the item to be removed. * @return bool * @throws \Magento\Framework\Exception\NoSuchEntityException The specified item or cart does not exist. * @throws \Magento\Framework\Exception\CouldNotSaveException The item could not be removed. */ - public function deleteById($cartId, $itemId); + public function deleteByIdForCustomer($customerId, $itemId); } diff --git a/app/code/Magento/Quote/Api/CartManagementInterface.php b/app/code/Magento/Quote/Api/CartManagementInterface.php index 4bf49813ac4313319350c774ee038d1f312453da..fdc0d18085cf0a4b0acf0adcd9dfa8366b78190e 100644 --- a/app/code/Magento/Quote/Api/CartManagementInterface.php +++ b/app/code/Magento/Quote/Api/CartManagementInterface.php @@ -8,13 +8,21 @@ namespace Magento\Quote\Api; interface CartManagementInterface { /** - * Enables an administrative or guest user to create an empty cart and quote for an anonymous customer. + * Creates an empty cart and quote for a guest. * - * @param int $storeId + * @return int Cart ID. * @throws \Magento\Framework\Exception\CouldNotSaveException The empty cart and quote could not be created. + */ + public function createEmptyCart(); + + /** + * Creates an empty cart and quote for a specified customer. + * + * @param int $customerId The customer ID. * @return int Cart ID. + * @throws \Magento\Framework\Exception\CouldNotSaveException The empty cart and quote could not be created. */ - public function createEmptyCart($storeId); + public function createEmptyCartForCustomer($customerId); /** * Returns information for the cart for a specified customer. diff --git a/app/code/Magento/Quote/Api/Data/CartItemInterface.php b/app/code/Magento/Quote/Api/Data/CartItemInterface.php index 4951fe1698006419285934bc95c4645537394e1c..7fd33b17342861f61f868535d4baecfcfec46750 100644 --- a/app/code/Magento/Quote/Api/Data/CartItemInterface.php +++ b/app/code/Magento/Quote/Api/Data/CartItemInterface.php @@ -119,14 +119,14 @@ interface CartItemInterface extends \Magento\Framework\Api\ExtensibleDataInterfa /** * Returns Quote id. * - * @return int + * @return string */ public function getQuoteId(); /** * Sets Quote id. * - * @param int $quoteId + * @param string $quoteId * @return $this */ public function setQuoteId($quoteId); diff --git a/app/code/Magento/Quote/Api/GuestBillingAddressManagementInterface.php b/app/code/Magento/Quote/Api/GuestBillingAddressManagementInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..0400edba25ea1ec38f32cc2e4ed20c145485bd4d --- /dev/null +++ b/app/code/Magento/Quote/Api/GuestBillingAddressManagementInterface.php @@ -0,0 +1,32 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Api; + +/** + * Billing address management interface for guest carts. + */ +interface GuestBillingAddressManagementInterface +{ + /** + * Assigns a specified billing address to a specified cart. + * + * @param string $cartId The cart ID. + * @param \Magento\Quote\Api\Data\AddressInterface $address Billing address data. + * @return int Address ID. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + * @throws \Magento\Framework\Exception\InputException The specified cart ID or address data is not valid. + */ + public function assign($cartId, \Magento\Quote\Api\Data\AddressInterface $address); + + /** + * Returns the billing address for a specified quote. + * + * @param string $cartId The cart ID. + * @return \Magento\Quote\Api\Data\AddressInterface Quote billing address object. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + */ + public function get($cartId); +} diff --git a/app/code/Magento/Quote/Api/GuestCartItemRepositoryInterface.php b/app/code/Magento/Quote/Api/GuestCartItemRepositoryInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..40138b5e0cfdcc741a462fd19262df68fbc9c027 --- /dev/null +++ b/app/code/Magento/Quote/Api/GuestCartItemRepositoryInterface.php @@ -0,0 +1,43 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Api; + +/** + * Cart Item repository interface for guest carts. + */ +interface GuestCartItemRepositoryInterface +{ + /** + * Lists items that are assigned to a specified cart. + * + * @param string $cartId The cart ID. + * @return \Magento\Quote\Api\Data\CartItemInterface[] Array of items. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + */ + public function getList($cartId); + + /** + * Adds the specified item to the specified cart. + * + * @param \Magento\Quote\Api\Data\CartItemInterface $cartItem The item. + * @return \Magento\Quote\Api\Data\CartItemInterface Item. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + * @throws \Magento\Framework\Exception\CouldNotSaveException The specified item could not be saved to the cart. + * @throws \Magento\Framework\Exception\InputException The specified item or cart is not valid. + */ + public function save(\Magento\Quote\Api\Data\CartItemInterface $cartItem); + + /** + * Removes the specified item from the specified cart. + * + * @param string $cartId The cart ID. + * @param int $itemId The item ID of the item to be removed. + * @return bool + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified item or cart does not exist. + * @throws \Magento\Framework\Exception\CouldNotSaveException The item could not be removed. + */ + public function deleteById($cartId, $itemId); +} diff --git a/app/code/Magento/Quote/Api/GuestCartManagementInterface.php b/app/code/Magento/Quote/Api/GuestCartManagementInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..7fa298c2d719d7586a81f41ce777502d7d49b60e --- /dev/null +++ b/app/code/Magento/Quote/Api/GuestCartManagementInterface.php @@ -0,0 +1,38 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Api; + +/** + * Cart Management interface for guest carts. + */ +interface GuestCartManagementInterface +{ + /** + * Enables an customer or guest user to create an empty cart and quote for an anonymous customer. + * + * @return string Cart ID. + * @throws \Magento\Framework\Exception\CouldNotSaveException The empty cart and quote could not be created. + */ + public function createEmptyCart(); + + /** + * Assigns a specified customer to a specified shopping cart. + * + * @param string $cartId The cart ID. + * @param int $customerId The customer ID. + * @param int $storeId + * @return boolean + */ + public function assignCustomer($cartId, $customerId, $storeId); + + /** + * Places an order for a specified cart. + * + * @param string $cartId The cart ID. + * @return int Order ID. + */ + public function placeOrder($cartId); +} diff --git a/app/code/Magento/Quote/Api/GuestCartRepositoryInterface.php b/app/code/Magento/Quote/Api/GuestCartRepositoryInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..eb7293e15ee908aa31e5154aa5b86cf630a5cd97 --- /dev/null +++ b/app/code/Magento/Quote/Api/GuestCartRepositoryInterface.php @@ -0,0 +1,21 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Api; + +/** + * Cart Repository interface for guest carts. + */ +interface GuestCartRepositoryInterface +{ + /** + * Enables a guest user to return information for a specified cart. + * + * @param string $cartId + * @return \Magento\Quote\Api\Data\CartInterface + * @throws \Magento\Framework\Exception\NoSuchEntityException + */ + public function get($cartId); +} diff --git a/app/code/Magento/Quote/Api/GuestCartTotalRepositoryInterface.php b/app/code/Magento/Quote/Api/GuestCartTotalRepositoryInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..6384407793a7a5f736751d304292a82a5b212c42 --- /dev/null +++ b/app/code/Magento/Quote/Api/GuestCartTotalRepositoryInterface.php @@ -0,0 +1,22 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Api; + +/** + * Cart totals repository interface for guest carts. + */ +interface GuestCartTotalRepositoryInterface +{ + /** + * Returns quote totals data for a specified cart. + * + * @param string $cartId The cart ID. + * @return \Magento\Quote\Api\Data\TotalsInterface Quote totals data. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + */ + public function get($cartId); +} diff --git a/app/code/Magento/Quote/Api/GuestCouponManagementInterface.php b/app/code/Magento/Quote/Api/GuestCouponManagementInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..14d0a1d5def59cb543f8fc60024ba8f43f155af5 --- /dev/null +++ b/app/code/Magento/Quote/Api/GuestCouponManagementInterface.php @@ -0,0 +1,44 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Api; + +/** + * Coupon management interface for guest carts. + */ +interface GuestCouponManagementInterface +{ + /** + * Returns information for a coupon in a specified cart. + * + * @param string $cartId The cart ID. + * @return string The coupon code data. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + */ + public function get($cartId); + + /** + * Adds a coupon by code to a specified cart. + * + * @param string $cartId The cart ID. + * @param string $couponCode The coupon code data. + * @return bool + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + * @throws \Magento\Framework\Exception\CouldNotSaveException The specified coupon could not be added. + */ + public function set($cartId, $couponCode); + + /** + * Deletes a coupon from a specified cart. + * + * @param string $cartId The cart ID. + * @return bool + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + * @throws \Magento\Framework\Exception\CouldNotDeleteException The specified coupon could not be deleted. + */ + public function remove($cartId); +} diff --git a/app/code/Magento/Quote/Api/GuestPaymentMethodManagementInterface.php b/app/code/Magento/Quote/Api/GuestPaymentMethodManagementInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..e40142b3e2cb2052603955128fad18bfb4aee765 --- /dev/null +++ b/app/code/Magento/Quote/Api/GuestPaymentMethodManagementInterface.php @@ -0,0 +1,42 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Api; + +/** + * Payment method management interface for guest carts. + */ +interface GuestPaymentMethodManagementInterface +{ + /** + * Adds a specified payment method to a specified shopping cart. + * + * @param string $cartId The cart ID. + * @param \Magento\Quote\Api\Data\PaymentInterface $method The payment method. + * @return int Payment method ID. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + * @throws \Magento\Framework\Exception\State\InvalidTransitionException The billing or shipping address + * is not set, or the specified payment method is not available. + */ + public function set($cartId, \Magento\Quote\Api\Data\PaymentInterface $method); + + /** + * Returns the payment method for a specified shopping cart. + * + * @param string $cartId The cart ID. + * @return \Magento\Quote\Api\Data\PaymentInterface Payment method object. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + */ + public function get($cartId); + + /** + * Lists available payment methods for a specified shopping cart. + * + * @param string $cartId The cart ID. + * @return \Magento\Quote\Api\Data\PaymentMethodInterface[] Array of payment methods. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + */ + public function getList($cartId); +} diff --git a/app/code/Magento/Quote/Api/GuestShippingAddressManagementInterface.php b/app/code/Magento/Quote/Api/GuestShippingAddressManagementInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..c208b9a0fe19d91fc60b678eb4e12ab2a95d5b64 --- /dev/null +++ b/app/code/Magento/Quote/Api/GuestShippingAddressManagementInterface.php @@ -0,0 +1,32 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Api; + +/** + * Shipping address management interface for guest carts. + */ +interface GuestShippingAddressManagementInterface +{ + /** + * Assigns a specified shipping address to a specified cart. + * + * @param string $cartId The cart ID. + * @param \Magento\Quote\Api\Data\AddressInterface $address The shipping address data. + * @return int Address ID. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + * @throws \Magento\Framework\Exception\InputException The specified cart ID or address data is not valid. + */ + public function assign($cartId, \Magento\Quote\Api\Data\AddressInterface $address); + + /** + * Returns the shipping address for a specified quote. + * + * @param string $cartId The cart ID. + * @return \Magento\Quote\Api\Data\AddressInterface Shipping address object. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist. + */ + public function get($cartId); +} diff --git a/app/code/Magento/Quote/Api/GuestShippingMethodManagementInterface.php b/app/code/Magento/Quote/Api/GuestShippingMethodManagementInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..0e881009d98567359254ceb57397a0fbb403155b --- /dev/null +++ b/app/code/Magento/Quote/Api/GuestShippingMethodManagementInterface.php @@ -0,0 +1,47 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Api; + +/** + * Shipping method management interface for guest carts. + */ +interface GuestShippingMethodManagementInterface +{ + /** + * Sets the carrier and shipping methods codes for a specified cart. + * + * @param string $cartId The shopping cart ID. + * @param string $carrierCode The carrier code. + * @param string $methodCode The shipping method code. + * @return bool + * @throws \Magento\Framework\Exception\InputException The shipping method is not valid for an empty cart. + * @throws \Magento\Framework\Exception\CouldNotSaveException The shipping method could not be saved. + * @throws \Magento\Framework\Exception\StateException The billing or shipping address is not set. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart contains only virtual products + * so the shipping method does not apply. + */ + public function set($cartId, $carrierCode, $methodCode); + + /** + * Returns selected shipping method for a specified quote. + * + * @param string $cartId The shopping cart ID. + * @return \Magento\Quote\Api\Data\ShippingMethodInterface Shipping method. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified shopping cart does not exist. + * @throws \Magento\Framework\Exception\StateException The shipping address is not set. + */ + public function get($cartId); + + /** + * Lists applicable shipping methods for a specified quote. + * + * @param string $cartId The shopping cart ID. + * @return \Magento\Quote\Api\Data\ShippingMethodInterface[] An array of shipping methods. + * @throws \Magento\Framework\Exception\NoSuchEntityException The specified quote does not exist. + * @throws \Magento\Framework\Exception\StateException The shipping address is not set. + */ + public function getList($cartId); +} diff --git a/app/code/Magento/Quote/Model/Cart/Access/CartManagementPlugin.php b/app/code/Magento/Quote/Model/Cart/Access/CartManagementPlugin.php deleted file mode 100644 index f7ab6e07b0ecd9b135f3b800cd9f05e7c29e3791..0000000000000000000000000000000000000000 --- a/app/code/Magento/Quote/Model/Cart/Access/CartManagementPlugin.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -namespace Magento\Quote\Model\Cart\Access; - -use Magento\Framework\Exception\AuthorizationException; -use Magento\Authorization\Model\UserContextInterface; - -class CartManagementPlugin -{ - /** - * @var UserContextInterface - */ - protected $userContext; - - /** - * @var int[] - */ - protected $allowedUserTypes = [ - UserContextInterface::USER_TYPE_ADMIN, - UserContextInterface::USER_TYPE_INTEGRATION, - ]; - - /** - * @param UserContextInterface $userContext - */ - public function __construct(UserContextInterface $userContext) - { - $this->userContext = $userContext; - } - - /** - * Check whether access is allowed for create cart resource - * - * @param \Magento\Quote\Api\CartManagementInterface $subject - * @param int $cartId - * @param int $customerId - * @param int $storeId - * - * @return void - * @throws AuthorizationException if access denied - * @SuppressWarnings(PHPMD.UnusedFormalParameter) - */ - public function beforeAssignCustomer( - \Magento\Quote\Api\CartManagementInterface $subject, - $cartId, - $customerId, - $storeId - ) { - if (!in_array($this->userContext->getUserType(), $this->allowedUserTypes)) { - throw new AuthorizationException(__('Access denied')); - } - } -} diff --git a/app/code/Magento/Quote/Model/Cart/Access/CartRepositoryPlugin.php b/app/code/Magento/Quote/Model/Cart/Access/CartRepositoryPlugin.php deleted file mode 100644 index 0410af82ca10c736cda6c151f8bd34e81e30d60d..0000000000000000000000000000000000000000 --- a/app/code/Magento/Quote/Model/Cart/Access/CartRepositoryPlugin.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -namespace Magento\Quote\Model\Cart\Access; - -use Magento\Framework\Api\SearchCriteria; -use Magento\Framework\Exception\AuthorizationException; -use Magento\Authorization\Model\UserContextInterface; - -class CartRepositoryPlugin -{ - /** - * @var UserContextInterface - */ - protected $userContext; - - /** - * @var int[] - */ - protected $allowedUserTypes = [ - UserContextInterface::USER_TYPE_ADMIN, - UserContextInterface::USER_TYPE_INTEGRATION, - ]; - - /** - * @param UserContextInterface $userContext - */ - public function __construct(UserContextInterface $userContext) - { - $this->userContext = $userContext; - } - - /** - * Check whether access is allowed for cart resource - * - * @param \Magento\Quote\Api\CartRepositoryInterface $subject - * @param int $cartId - * - * @return void - * @throws AuthorizationException if access denied - * @SuppressWarnings(PHPMD.UnusedFormalParameter) - */ - public function beforeGet( - \Magento\Quote\Api\CartRepositoryInterface $subject, - $cartId - ) { - if (!in_array($this->userContext->getUserType(), $this->allowedUserTypes)) { - throw new AuthorizationException(__('Access denied')); - } - } - - /** - * Check whether access is allowed for cart list resource - * - * @param \Magento\Quote\Api\CartRepositoryInterface $subject - * @param SearchCriteria $searchCriteria - * - * @return void - * @throws AuthorizationException if access denied - * @SuppressWarnings(PHPMD.UnusedFormalParameter) - */ - public function beforeGetList( - \Magento\Quote\Api\CartRepositoryInterface $subject, - SearchCriteria $searchCriteria - ) { - if (!in_array($this->userContext->getUserType(), $this->allowedUserTypes)) { - throw new AuthorizationException(__('Access denied')); - } - } -} diff --git a/app/code/Magento/Quote/Model/GuestCart/GuestBillingAddressManagement.php b/app/code/Magento/Quote/Model/GuestCart/GuestBillingAddressManagement.php new file mode 100644 index 0000000000000000000000000000000000000000..61788f4920def75997a0a12225990c5ba1be89d8 --- /dev/null +++ b/app/code/Magento/Quote/Model/GuestCart/GuestBillingAddressManagement.php @@ -0,0 +1,61 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Model\GuestCart; + +use Magento\Quote\Api\GuestBillingAddressManagementInterface; +use Magento\Quote\Api\BillingAddressManagementInterface; +use Magento\Quote\Model\QuoteIdMask; +use Magento\Quote\Model\QuoteIdMaskFactory; + +/** + * Billing address management service for guest carts. + */ +class GuestBillingAddressManagement implements GuestBillingAddressManagementInterface +{ + /** + * @var QuoteIdMaskFactory + */ + private $quoteIdMaskFactory; + + /** + * @var BillingAddressManagementInterface + */ + private $billingAddressManagement; + + /** + * Constructs a quote billing address service object. + * + * @param BillingAddressManagementInterface $billingAddressManagement + * @param QuoteIdMaskFactory $quoteIdMaskFactory + */ + public function __construct( + BillingAddressManagementInterface $billingAddressManagement, + QuoteIdMaskFactory $quoteIdMaskFactory + ) { + $this->quoteIdMaskFactory = $quoteIdMaskFactory; + $this->billingAddressManagement = $billingAddressManagement; + } + + /** + * {@inheritDoc} + */ + public function assign($cartId, \Magento\Quote\Api\Data\AddressInterface $address) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->billingAddressManagement->assign($quoteIdMask->getId(), $address); + } + + /** + * {@inheritDoc} + */ + public function get($cartId) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->billingAddressManagement->get($quoteIdMask->getId()); + } +} diff --git a/app/code/Magento/Quote/Model/GuestCart/GuestCartItemRepository.php b/app/code/Magento/Quote/Model/GuestCart/GuestCartItemRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..a3750601070b89099292981361a99667a5ec39b7 --- /dev/null +++ b/app/code/Magento/Quote/Model/GuestCart/GuestCartItemRepository.php @@ -0,0 +1,78 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Model\GuestCart; + +use Magento\Quote\Api\Data\CartItemInterface; +use Magento\Quote\Model\Quote\Item\Repository; +use Magento\Quote\Model\QuoteIdMask; +use Magento\Quote\Model\QuoteIdMaskFactory; + +/** + * Cart Item repository class for guest carts. + */ +class GuestCartItemRepository implements \Magento\Quote\Api\GuestCartItemRepositoryInterface +{ + /** + * @var Repository + */ + protected $repository; + + /** + * @var QuoteIdMaskFactory + */ + protected $quoteIdMaskFactory; + + /** + * Constructs a read service object. + * + * @param \Magento\Quote\Model\Quote\Item\Repository $repository + * @param QuoteIdMaskFactory $quoteIdMaskFactory + */ + public function __construct( + \Magento\Quote\Model\Quote\Item\Repository $repository, + QuoteIdMaskFactory $quoteIdMaskFactory + ) { + $this->quoteIdMaskFactory = $quoteIdMaskFactory; + $this->repository = $repository; + } + + /** + * {@inheritdoc} + */ + public function getList($cartId) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + $cartItemList = $this->repository->getList($quoteIdMask->getId()); + /** @var $item CartItemInterface */ + foreach ($cartItemList as $item) { + $item->setQuoteId($quoteIdMask->getMaskedId()); + } + return $cartItemList; + } + + /** + * {@inheritdoc} + */ + public function save(\Magento\Quote\Api\Data\CartItemInterface $cartItem) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartItem->getQuoteId(), 'masked_id'); + $cartItem->setQuoteId($quoteIdMask->getId()); + return $this->repository->save($cartItem); + } + + /** + * {@inheritdoc} + */ + public function deleteById($cartId, $itemId) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->repository->deleteById($quoteIdMask->getId(), $itemId); + } +} diff --git a/app/code/Magento/Quote/Model/GuestCart/GuestCartManagement.php b/app/code/Magento/Quote/Model/GuestCart/GuestCartManagement.php new file mode 100644 index 0000000000000000000000000000000000000000..c62fab57f1bc5bf9328c7bc02cc58745b10377d1 --- /dev/null +++ b/app/code/Magento/Quote/Model/GuestCart/GuestCartManagement.php @@ -0,0 +1,77 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Model\GuestCart; + +use Magento\Quote\Api\GuestCartManagementInterface; +use Magento\Quote\Api\CartManagementInterface; +use Magento\Quote\Model\QuoteIdMask; +use Magento\Quote\Model\QuoteIdMaskFactory; + +/** + * Cart Management class for guest carts. + * + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ +class GuestCartManagement implements GuestCartManagementInterface +{ + /** + * @var CartManagementInterface + */ + protected $quoteManagement; + + /** + * @var QuoteIdMaskFactory + */ + protected $quoteIdMaskFactory; + + /** + * Initialize dependencies. + * + * @param CartManagementInterface $quoteManagement + * @param QuoteIdMaskFactory $quoteIdMaskFactory + * @SuppressWarnings(PHPMD.ExcessiveParameterList) + */ + public function __construct( + CartManagementInterface $quoteManagement, + QuoteIdMaskFactory $quoteIdMaskFactory + ) { + $this->quoteManagement = $quoteManagement; + $this->quoteIdMaskFactory = $quoteIdMaskFactory; + } + + /** + * {@inheritdoc} + */ + public function createEmptyCart() + { + /** @var $quoteIdMask \Magento\Quote\Model\QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create(); + $cartId = $this->quoteManagement->createEmptyCart(); + $quoteIdMask->setId($cartId)->save(); + return $quoteIdMask->getMaskedId(); + } + + /** + * {@inheritdoc} + */ + public function assignCustomer($cartId, $customerId, $storeId) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->quoteManagement->assignCustomer($quoteIdMask->getId(), $customerId, $storeId); + } + + /** + * {@inheritdoc} + */ + public function placeOrder($cartId) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->quoteManagement->placeOrder($quoteIdMask->getId()); + } +} diff --git a/app/code/Magento/Quote/Model/GuestCart/GuestCartRepository.php b/app/code/Magento/Quote/Model/GuestCart/GuestCartRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..577f2b2a76b039477036bfd932f68963b64c217a --- /dev/null +++ b/app/code/Magento/Quote/Model/GuestCart/GuestCartRepository.php @@ -0,0 +1,51 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Model\GuestCart; + +use Magento\Quote\Api\GuestCartRepositoryInterface; +use Magento\Quote\Model\QuoteIdMask; +use Magento\Quote\Api\CartRepositoryInterface; +use Magento\Quote\Model\QuoteIdMaskFactory; + +/** + * Cart Repository class for guest carts. + */ +class GuestCartRepository implements GuestCartRepositoryInterface +{ + /** + * @var QuoteIdMaskFactory + */ + protected $quoteIdMaskFactory; + + /** + * @var CartRepositoryInterface + */ + protected $quoteRepository; + + /** + * Initialize dependencies. + * + * @param CartRepositoryInterface $quoteRepository + * @param QuoteIdMaskFactory $quoteIdMaskFactory + */ + public function __construct( + CartRepositoryInterface $quoteRepository, + QuoteIdMaskFactory $quoteIdMaskFactory + ) { + $this->quoteIdMaskFactory = $quoteIdMaskFactory; + $this->quoteRepository = $quoteRepository; + } + + /** + * {@inheritdoc} + */ + public function get($cartId) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->quoteRepository->get($quoteIdMask->getId()); + } +} diff --git a/app/code/Magento/Quote/Model/GuestCart/GuestCartTotalRepository.php b/app/code/Magento/Quote/Model/GuestCart/GuestCartTotalRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..1ab5f5eeb8c43a88c14705240f17878335b71fce --- /dev/null +++ b/app/code/Magento/Quote/Model/GuestCart/GuestCartTotalRepository.php @@ -0,0 +1,52 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Model\GuestCart; + +use Magento\Quote\Api\CartTotalRepositoryInterface; +use Magento\Quote\Api\GuestCartTotalRepositoryInterface; +use Magento\Quote\Model\QuoteIdMask; +use Magento\Quote\Model\QuoteIdMaskFactory; + +/** + * Cart totals repository class for guest carts. + */ +class GuestCartTotalRepository implements GuestCartTotalRepositoryInterface +{ + /** + * @var QuoteIdMaskFactory + */ + private $quoteIdMaskFactory; + + /** + * @var CartTotalRepositoryInterface + */ + private $cartTotalRepository; + + /** + * Constructs a cart totals data object. + * + * @param CartTotalRepositoryInterface $cartTotalRepository + * @param QuoteIdMaskFactory $quoteIdMaskFactory + */ + public function __construct( + CartTotalRepositoryInterface $cartTotalRepository, + QuoteIdMaskFactory $quoteIdMaskFactory + ) { + $this->cartTotalRepository = $cartTotalRepository; + $this->quoteIdMaskFactory = $quoteIdMaskFactory; + } + + /** + * {@inheritDoc} + */ + public function get($cartId) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->cartTotalRepository->get($quoteIdMask->getId()); + } +} diff --git a/app/code/Magento/Quote/Model/GuestCart/GuestCouponManagement.php b/app/code/Magento/Quote/Model/GuestCart/GuestCouponManagement.php new file mode 100644 index 0000000000000000000000000000000000000000..90b1047ee3c867a5b3a414f42da47469b0b79387 --- /dev/null +++ b/app/code/Magento/Quote/Model/GuestCart/GuestCouponManagement.php @@ -0,0 +1,72 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Model\GuestCart; + +use Magento\Quote\Api\GuestCouponManagementInterface; +use Magento\Quote\Api\CouponManagementInterface; +use Magento\Quote\Model\QuoteIdMask; +use Magento\Quote\Model\QuoteIdMaskFactory; + +/** + * Coupon management class for guest carts. + */ +class GuestCouponManagement implements GuestCouponManagementInterface +{ + /** + * @var QuoteIdMaskFactory + */ + private $quoteIdMaskFactory; + + /** + * @var CouponManagementInterface + */ + private $couponManagement; + + /** + * Constructs a coupon read service object. + * + * @param CouponManagementInterface $couponManagement + * @param QuoteIdMaskFactory $quoteIdMaskFactory + */ + public function __construct( + CouponManagementInterface $couponManagement, + QuoteIdMaskFactory $quoteIdMaskFactory + ) { + $this->quoteIdMaskFactory = $quoteIdMaskFactory; + $this->couponManagement = $couponManagement; + } + + /** + * {@inheritdoc} + */ + public function get($cartId) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->couponManagement->get($quoteIdMask->getId()); + } + + /** + * {@inheritdoc} + */ + public function set($cartId, $couponCode) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->couponManagement->set($quoteIdMask->getId(), $couponCode); + } + + /** + * {@inheritdoc} + */ + public function remove($cartId) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->couponManagement->remove($quoteIdMask->getId()); + } +} diff --git a/app/code/Magento/Quote/Model/GuestCart/GuestPaymentMethodManagement.php b/app/code/Magento/Quote/Model/GuestCart/GuestPaymentMethodManagement.php new file mode 100644 index 0000000000000000000000000000000000000000..b0b99599ef14d631512360cd1e5f9ff1446a1d2b --- /dev/null +++ b/app/code/Magento/Quote/Model/GuestCart/GuestPaymentMethodManagement.php @@ -0,0 +1,71 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Model\GuestCart; + +use Magento\Quote\Api\PaymentMethodManagementInterface; +use Magento\Quote\Api\GuestPaymentMethodManagementInterface; +use Magento\Quote\Model\QuoteIdMask; +use Magento\Quote\Model\QuoteIdMaskFactory; + +/** + * Payment method management class for guest carts. + */ +class GuestPaymentMethodManagement implements GuestPaymentMethodManagementInterface +{ + /** + * @var QuoteIdMaskFactory + */ + protected $quoteIdMaskFactory; + + /** + * @var PaymentMethodManagementInterface + */ + protected $paymentMethodManagement; + + /** + * Initialize dependencies. + * + * @param PaymentMethodManagementInterface $paymentMethodManagement + * @param QuoteIdMaskFactory $quoteIdMaskFactory + */ + public function __construct( + PaymentMethodManagementInterface $paymentMethodManagement, + QuoteIdMaskFactory $quoteIdMaskFactory + ) { + $this->quoteIdMaskFactory = $quoteIdMaskFactory; + $this->paymentMethodManagement = $paymentMethodManagement; + } + + /** + * {@inheritdoc} + */ + public function set($cartId, \Magento\Quote\Api\Data\PaymentInterface $method) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->paymentMethodManagement->set($quoteIdMask->getId(), $method); + } + + /** + * {@inheritdoc} + */ + public function get($cartId) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->paymentMethodManagement->get($quoteIdMask->getId()); + } + + /** + * {@inheritdoc} + */ + public function getList($cartId) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->paymentMethodManagement->getList($quoteIdMask->getId()); + } +} diff --git a/app/code/Magento/Quote/Model/GuestCart/GuestShippingAddressManagement.php b/app/code/Magento/Quote/Model/GuestCart/GuestShippingAddressManagement.php new file mode 100644 index 0000000000000000000000000000000000000000..f2ce3fb46fcf9834d1af86ae5a9e2b311e478eed --- /dev/null +++ b/app/code/Magento/Quote/Model/GuestCart/GuestShippingAddressManagement.php @@ -0,0 +1,61 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Model\GuestCart; + +use Magento\Quote\Api\GuestShippingAddressManagementInterface; +use Magento\Quote\Model\QuoteIdMask; +use Magento\Quote\Model\QuoteIdMaskFactory; +use Magento\Quote\Api\ShippingAddressManagementInterface; + +/** + * Shipping address management class for guest carts. + */ +class GuestShippingAddressManagement implements GuestShippingAddressManagementInterface +{ + /** + * @var QuoteIdMaskFactory + */ + protected $quoteIdMaskFactory; + + /** + * @var ShippingAddressManagementInterface + */ + protected $shippingAddressManagement; + + /** + * Constructs a quote shipping address write service object. + * + * @param ShippingAddressManagementInterface $shippingAddressManagement + * @param QuoteIdMaskFactory $quoteIdMaskFactory + */ + public function __construct( + ShippingAddressManagementInterface $shippingAddressManagement, + QuoteIdMaskFactory $quoteIdMaskFactory + ) { + $this->shippingAddressManagement = $shippingAddressManagement; + $this->quoteIdMaskFactory = $quoteIdMaskFactory; + } + + /** + * {@inheritDoc} + */ + public function assign($cartId, \Magento\Quote\Api\Data\AddressInterface $address) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->shippingAddressManagement->assign($quoteIdMask->getId(), $address); + } + + /** + * {@inheritDoc} + */ + public function get($cartId) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->shippingAddressManagement->get($quoteIdMask->getId()); + } +} diff --git a/app/code/Magento/Quote/Model/GuestCart/GuestShippingMethodManagement.php b/app/code/Magento/Quote/Model/GuestCart/GuestShippingMethodManagement.php new file mode 100644 index 0000000000000000000000000000000000000000..e847e1bd36051c8da0845f0857d53994ce387ec9 --- /dev/null +++ b/app/code/Magento/Quote/Model/GuestCart/GuestShippingMethodManagement.php @@ -0,0 +1,72 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Model\GuestCart; + +use Magento\Quote\Api\GuestShippingMethodManagementInterface; +use Magento\Quote\Api\ShippingMethodManagementInterface; +use Magento\Quote\Model\QuoteIdMask; +use Magento\Quote\Model\QuoteIdMaskFactory; + +/** + * Shipping method management class for guest carts. + */ +class GuestShippingMethodManagement implements GuestShippingMethodManagementInterface +{ + /** + * @var ShippingMethodManagementInterface + */ + private $shippingMethodManagement; + + /** + * @var QuoteIdMaskFactory + */ + private $quoteIdMaskFactory; + + /** + * Constructs a shipping method read service object. + * + * @param ShippingMethodManagementInterface $shippingMethodManagement + * @param QuoteIdMaskFactory $quoteIdMaskFactory + */ + public function __construct( + ShippingMethodManagementInterface $shippingMethodManagement, + QuoteIdMaskFactory $quoteIdMaskFactory + ) { + $this->shippingMethodManagement = $shippingMethodManagement; + $this->quoteIdMaskFactory = $quoteIdMaskFactory; + } + + /** + * {@inheritDoc} + */ + public function get($cartId) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->shippingMethodManagement->get($quoteIdMask->getId()); + } + + /** + * {@inheritDoc} + */ + public function getList($cartId) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->shippingMethodManagement->getList($quoteIdMask->getId()); + } + + /** + * {@inheritDoc} + */ + public function set($cartId, $carrierCode, $methodCode) + { + /** @var $quoteIdMask QuoteIdMask */ + $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id'); + return $this->shippingMethodManagement->set($quoteIdMask->getId(), $carrierCode, $methodCode); + } +} diff --git a/app/code/Magento/Quote/Model/Quote/Item/Repository.php b/app/code/Magento/Quote/Model/Quote/Item/Repository.php index fc4a0f7db7ef47c3b71ea4bbab5be324167a7425..35b928ecb37a05f51135bf34ece53d0ecbd3a07b 100644 --- a/app/code/Magento/Quote/Model/Quote/Item/Repository.php +++ b/app/code/Magento/Quote/Model/Quote/Item/Repository.php @@ -107,10 +107,8 @@ class Repository implements \Magento\Quote\Api\CartItemRepositoryInterface /** * {@inheritdoc} */ - public function delete(\Magento\Quote\Api\Data\CartItemInterface $cartItem) + public function deleteById($cartId, $itemId) { - $cartId = $cartItem->getQuoteId(); - $itemId = $cartItem->getItemId(); /** * Quote. * @@ -129,18 +127,35 @@ class Repository implements \Magento\Quote\Api\CartItemRepositoryInterface } catch (\Exception $e) { throw new CouldNotSaveException(__('Could not remove item from quote')); } + + return true; } /** * {@inheritdoc} */ - public function deleteById($cartId, $itemId) + public function getListForCustomer($customerId) { - $item = $this->itemDataFactory->create() - ->setQuoteId($cartId) - ->setItemId($itemId); + $cart = $this->quoteRepository->getActiveForCustomer($customerId); + return $this->getList($cart->getId()); + } - $this->delete($item); - return true; + /** + * {@inheritdoc} + */ + public function saveForCustomer($customerId, \Magento\Quote\Api\Data\CartItemInterface $cartItem) + { + $cart = $this->quoteRepository->getActiveForCustomer($customerId); + $cartItem->setQuoteId($cart->getId()); + return $this->save($cartItem); + } + + /** + * {@inheritdoc} + */ + public function deleteByIdForCustomer($customerId, $itemId) + { + $cart = $this->quoteRepository->getActiveForCustomer($customerId); + return $this->deleteById($cart->getId(), $itemId); } } diff --git a/app/code/Magento/Quote/Model/QuoteIdMask.php b/app/code/Magento/Quote/Model/QuoteIdMask.php new file mode 100644 index 0000000000000000000000000000000000000000..953fe1d7af87e232fca36fd79b9d79d0e69d367d --- /dev/null +++ b/app/code/Magento/Quote/Model/QuoteIdMask.php @@ -0,0 +1,63 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Model; + +/** + * QuoteIdMask model + * + * @method string getMaskedId() + * @method QuoteIdMask setMaskedId() + */ +class QuoteIdMask extends \Magento\Framework\Model\AbstractModel +{ + /** + * @var \Magento\Framework\Math\Random + */ + protected $randomDataGenerator; + + /** + * @param \Magento\Framework\Model\Context $context + * @param \Magento\Framework\Registry $registry + * @param \Magento\Framework\Math\Random $randomDataGenerator + * @param \Magento\Framework\Model\Resource\AbstractResource $resource + * @param \Magento\Framework\Data\Collection\Db $resourceCollection + * @param array $data + */ + public function __construct( + \Magento\Framework\Model\Context $context, + \Magento\Framework\Registry $registry, + \Magento\Framework\Math\Random $randomDataGenerator, + \Magento\Framework\Model\Resource\AbstractResource $resource = null, + \Magento\Framework\Data\Collection\Db $resourceCollection = null, + array $data = [] + ) { + $this->randomDataGenerator = $randomDataGenerator; + parent::__construct($context, $registry, $resource, $resourceCollection, $data); + } + + /** + * Initialize resource + * + * @return void + */ + protected function _construct() + { + $this->_init('Magento\Quote\Model\Resource\Quote\QuoteIdMask'); + } + + /** + * Initialize quote identifier before save + * + * @return $this + */ + public function beforeSave() + { + parent::beforeSave(); + $this->setMaskedId($this->randomDataGenerator->getUniqueHash()); + return $this; + } +} diff --git a/app/code/Magento/Quote/Model/QuoteManagement.php b/app/code/Magento/Quote/Model/QuoteManagement.php index 241f7d4c5784fee1ee0c48dbb53f94f4c42169a2..c09a32964aa3f3cf9c7c797a7629d55a10e19b21 100644 --- a/app/code/Magento/Quote/Model/QuoteManagement.php +++ b/app/code/Magento/Quote/Model/QuoteManagement.php @@ -6,17 +6,18 @@ namespace Magento\Quote\Model; -use Magento\Quote\Model\Quote as QuoteEntity; +use Magento\Authorization\Model\UserContextInterface; use Magento\Framework\Event\ManagerInterface as EventManager; -use Magento\Sales\Api\Data\OrderInterfaceFactory as OrderFactory; -use Magento\Sales\Api\OrderManagementInterface as OrderManagement; +use Magento\Framework\Exception\CouldNotSaveException; +use Magento\Framework\Exception\StateException; +use Magento\Quote\Model\Quote as QuoteEntity; use Magento\Quote\Model\Quote\Address\ToOrder as ToOrderConverter; use Magento\Quote\Model\Quote\Address\ToOrderAddress as ToOrderAddressConverter; use Magento\Quote\Model\Quote\Item\ToOrderItem as ToOrderItemConverter; use Magento\Quote\Model\Quote\Payment\ToOrderPayment as ToOrderPaymentConverter; -use Magento\Authorization\Model\UserContextInterface; -use Magento\Framework\Exception\CouldNotSaveException; -use Magento\Framework\Exception\StateException; +use Magento\Sales\Api\Data\OrderInterfaceFactory as OrderFactory; +use Magento\Sales\Api\OrderManagementInterface as OrderManagement; +use Magento\Store\Model\StoreManagerInterface; /** * Class QuoteManagement @@ -95,6 +96,11 @@ class QuoteManagement implements \Magento\Quote\Api\CartManagementInterface */ protected $dataObjectHelper; + /** + * @var StoreManagerInterface + */ + protected $storeManager; + /** * @param EventManager $eventManager * @param QuoteValidator $quoteValidator @@ -110,6 +116,7 @@ class QuoteManagement implements \Magento\Quote\Api\CartManagementInterface * @param \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository * @param \Magento\Customer\Model\CustomerFactory $customerModelFactory * @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper + * @param StoreManagerInterface $storeManager * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( @@ -126,7 +133,8 @@ class QuoteManagement implements \Magento\Quote\Api\CartManagementInterface QuoteRepository $quoteRepository, \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository, \Magento\Customer\Model\CustomerFactory $customerModelFactory, - \Magento\Framework\Api\DataObjectHelper $dataObjectHelper + \Magento\Framework\Api\DataObjectHelper $dataObjectHelper, + StoreManagerInterface $storeManager ) { $this->eventManager = $eventManager; $this->quoteValidator = $quoteValidator; @@ -142,16 +150,32 @@ class QuoteManagement implements \Magento\Quote\Api\CartManagementInterface $this->customerRepository = $customerRepository; $this->customerModelFactory = $customerModelFactory; $this->dataObjectHelper = $dataObjectHelper; + $this->storeManager = $storeManager; } /** * {@inheritdoc} */ - public function createEmptyCart($storeId) + public function createEmptyCart() { - $quote = $this->userContext->getUserType() == UserContextInterface::USER_TYPE_CUSTOMER - ? $this->createCustomerCart($storeId) - : $this->createAnonymousCart($storeId); + $storeId = $this->storeManager->getStore()->getStoreId(); + $quote = $this->createAnonymousCart($storeId); + + try { + $this->quoteRepository->save($quote); + } catch (\Exception $e) { + throw new CouldNotSaveException(__('Cannot create quote')); + } + return $quote->getId(); + } + + /** + * {@inheritdoc} + */ + public function createEmptyCartForCustomer($customerId) + { + $storeId = $this->storeManager->getStore()->getStoreId(); + $quote = $this->createCustomerCart($customerId, $storeId); try { $this->quoteRepository->save($quote); @@ -213,16 +237,17 @@ class QuoteManagement implements \Magento\Quote\Api\CartManagementInterface /** * Creates a cart for the currently logged-in customer. * + * @param int $customerId * @param int $storeId * @return \Magento\Quote\Model\Quote Cart object. * @throws CouldNotSaveException The cart could not be created. */ - protected function createCustomerCart($storeId) + protected function createCustomerCart($customerId, $storeId) { - $customer = $this->customerRepository->getById($this->userContext->getUserId()); + $customer = $this->customerRepository->getById($customerId); try { - $this->quoteRepository->getActiveForCustomer($this->userContext->getUserId()); + $this->quoteRepository->getActiveForCustomer($customerId); throw new CouldNotSaveException(__('Cannot create quote')); } catch (\Magento\Framework\Exception\NoSuchEntityException $e) { diff --git a/app/code/Magento/Quote/Model/Resource/Quote/QuoteIdMask.php b/app/code/Magento/Quote/Model/Resource/Quote/QuoteIdMask.php new file mode 100644 index 0000000000000000000000000000000000000000..8fa2507073a2e4e9b86d23bc2c953363ecd5703b --- /dev/null +++ b/app/code/Magento/Quote/Model/Resource/Quote/QuoteIdMask.php @@ -0,0 +1,26 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Model\Resource\Quote; + +use Magento\Framework\Model\Resource\Db\AbstractDb; + +/** + * QuoteIdMask Resource model + * @codeCoverageIgnore + */ +class QuoteIdMask extends AbstractDb +{ + /** + * Main table and field initialization + * + * @return void + */ + protected function _construct() + { + $this->_init('quote_id_mask', 'quote_id'); + $this->_isPkAutoIncrement = false; + } +} diff --git a/app/code/Magento/Quote/Model/Webapi/ParamOverriderCartId.php b/app/code/Magento/Quote/Model/Webapi/ParamOverriderCartId.php new file mode 100644 index 0000000000000000000000000000000000000000..3f5b280d505d2762e48b42c4715f1cdf74aa04a0 --- /dev/null +++ b/app/code/Magento/Quote/Model/Webapi/ParamOverriderCartId.php @@ -0,0 +1,63 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Model\Webapi; + +use Magento\Authorization\Model\UserContextInterface; +use Magento\Framework\Webapi\Rest\Request\ParamOverriderInterface; +use Magento\Framework\Exception\NoSuchEntityException; +use Magento\Quote\Api\CartManagementInterface; + +/** + * Replaces a "%cart_id%" value with the current authenticated customer's cart + */ +class ParamOverriderCartId implements ParamOverriderInterface +{ + /** + * @var UserContextInterface + */ + private $userContext; + + /** + * @var CartManagementInterface + */ + private $cartManagement; + + /** + * Constructs an object to override the cart ID parameter on a request. + * + * @param UserContextInterface $userContext + * @param CartManagementInterface $cartManagement + */ + public function __construct( + UserContextInterface $userContext, + CartManagementInterface $cartManagement + ) { + $this->userContext = $userContext; + $this->cartManagement = $cartManagement; + } + + /** + * {@inheritDoc} + */ + public function getOverriddenValue() + { + try { + if ($this->userContext->getUserType() === UserContextInterface::USER_TYPE_CUSTOMER) { + $customerId = $this->userContext->getUserId(); + + /** @var \Magento\Quote\Api\Data\CartInterface */ + $cart = $this->cartManagement->getCartForCustomer($customerId); + if ($cart) { + return $cart->getId(); + } + } + } catch (NoSuchEntityException $e) { + /* do nothing and just return null */ + } + return null; + } +} diff --git a/app/code/Magento/Quote/Setup/InstallSchema.php b/app/code/Magento/Quote/Setup/InstallSchema.php index 7e9947028060c0ec596393146748c4e5907b7789..905cfba56782664a89b0d33b722e9e43828e7319 100644 --- a/app/code/Magento/Quote/Setup/InstallSchema.php +++ b/app/code/Magento/Quote/Setup/InstallSchema.php @@ -1535,6 +1535,35 @@ class InstallSchema implements InstallSchemaInterface ); $installer->getConnection()->createTable($table); + /** + * Create table to store cartId and obscured UUID based cartId mapping + */ + $table = $installer->getConnection()->newTable( + $installer->getTable('quote_id_mask') + )->addColumn( + 'quote_id', + \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, + null, + ['identity' => true, 'unsigned' => true, 'nullable' => false], + 'Quote ID' + )->addForeignKey( + 'quote_id', + 'quote_id', + $installer->getTable('quote'), + 'entity_id', + \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE + )->addColumn( + 'masked_id', + \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, + 32, + ['nullable' => 'false'], + 'Masked ID' + )->setComment( + 'Quote ID and masked ID mapping' + ); + + $installer->getConnection()->createTable($table); + $installer->endSetup(); } diff --git a/app/code/Magento/Quote/Test/Unit/Model/Cart/Access/CartManagementPluginTest.php b/app/code/Magento/Quote/Test/Unit/Model/Cart/Access/CartManagementPluginTest.php deleted file mode 100644 index 4a900ce7550ec771285259f09d35f2055e6eaeeb..0000000000000000000000000000000000000000 --- a/app/code/Magento/Quote/Test/Unit/Model/Cart/Access/CartManagementPluginTest.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -namespace Magento\Quote\Test\Unit\Model\Cart\Access; - -use \Magento\Quote\Model\Cart\Access\CartManagementPlugin; - -class CartManagementPluginTest extends \PHPUnit_Framework_TestCase -{ - /** - * @var \Magento\Quote\Model\Cart\Access\CartManagementPlugin - */ - protected $model; - - /** - * @var \PHPUnit_Framework_MockObject_MockObject - */ - protected $userContextMock; - - /** - * @var \PHPUnit_Framework_MockObject_MockObject - */ - protected $subjectMock; - - protected function setUp() - { - $this->userContextMock = $this->getMock('Magento\Authorization\Model\UserContextInterface'); - $this->subjectMock = $this->getMock('\Magento\Quote\Api\CartManagementInterface'); - $this->model = new CartManagementPlugin($this->userContextMock); - } - - /** - * @param int $userType - * @dataProvider successTypeDataProvider - */ - public function testBeforeCreateSuccess($userType) - { - $this->userContextMock->expects($this->once())->method('getUserType')->will($this->returnValue($userType)); - $this->model->beforeAssignCustomer($this->subjectMock, 1, 1, 1); - } - - public function successTypeDataProvider() - { - return [ - 'admin' => [\Magento\Authorization\Model\UserContextInterface::USER_TYPE_ADMIN], - 'integration' => [\Magento\Authorization\Model\UserContextInterface::USER_TYPE_INTEGRATION], - ]; - } - - /** - * @expectedException \Magento\Framework\Exception\AuthorizationException - * @expectedExceptionMessage Access denied - */ - public function testBeforeCreateDenied() - { - $this->userContextMock->expects($this->once())->method('getUserType') - ->will($this->returnValue(\Magento\Authorization\Model\UserContextInterface::USER_TYPE_CUSTOMER)); - $this->model->beforeAssignCustomer($this->subjectMock, 1, 1, 1); - } -} diff --git a/app/code/Magento/Quote/Test/Unit/Model/Cart/Access/CartRepositoryPluginTest.php b/app/code/Magento/Quote/Test/Unit/Model/Cart/Access/CartRepositoryPluginTest.php deleted file mode 100644 index d4e5a472c390440024e37095090d777f8b7cf0ba..0000000000000000000000000000000000000000 --- a/app/code/Magento/Quote/Test/Unit/Model/Cart/Access/CartRepositoryPluginTest.php +++ /dev/null @@ -1,90 +0,0 @@ -<?php -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -namespace Magento\Quote\Test\Unit\Model\Cart\Access; - -use \Magento\Quote\Model\Cart\Access\CartRepositoryPlugin; - -class CartRepositoryPluginTest extends \PHPUnit_Framework_TestCase -{ - /** - * @var \Magento\Quote\Model\Cart\Access\CartRepositoryPlugin - */ - protected $model; - - /** - * @var \PHPUnit_Framework_MockObject_MockObject - */ - protected $userContextMock; - - /** - * @var \PHPUnit_Framework_MockObject_MockObject - */ - protected $subjectMock; - - protected function setUp() - { - $this->userContextMock = $this->getMock('Magento\Authorization\Model\UserContextInterface'); - $this->subjectMock = $this->getMock('\Magento\Quote\Api\CartRepositoryInterface'); - $this->model = new CartRepositoryPlugin($this->userContextMock); - } - - /** - * @param int $userType - * @dataProvider successTypeDataProvider - */ - public function testBeforeGetSuccess($userType) - { - $this->userContextMock->expects($this->once())->method('getUserType')->will($this->returnValue($userType)); - $this->model->beforeGet($this->subjectMock, 1); - } - - /** - * @expectedException \Magento\Framework\Exception\AuthorizationException - * @expectedExceptionMessage Access denied - */ - public function testBeforeGetCartDenied() - { - $this->userContextMock->expects($this->once())->method('getUserType') - ->will($this->returnValue(\Magento\Authorization\Model\UserContextInterface::USER_TYPE_CUSTOMER)); - $this->model->beforeGet($this->subjectMock, 1); - } - - public function successTypeDataProvider() - { - return [ - 'admin' => [\Magento\Authorization\Model\UserContextInterface::USER_TYPE_ADMIN], - 'integration' => [\Magento\Authorization\Model\UserContextInterface::USER_TYPE_INTEGRATION], - ]; - } - - /** - * @param int $userType - * @dataProvider successTypeDataProvider - */ - public function testBeforeGetCartSuccess($userType) - { - $this->userContextMock->expects($this->once())->method('getUserType')->will($this->returnValue($userType)); - $this->model->beforeGetList( - $this->subjectMock, - $this->getMock('\Magento\Framework\Api\SearchCriteria', [], [], '', false) - ); - } - - /** - * @expectedException \Magento\Framework\Exception\AuthorizationException - * @expectedExceptionMessage Access denied - */ - public function testBeforeGetListDenied() - { - $this->userContextMock->expects($this->once())->method('getUserType') - ->will($this->returnValue(\Magento\Authorization\Model\UserContextInterface::USER_TYPE_CUSTOMER)); - $this->model->beforeGetList( - $this->subjectMock, - $this->getMock('\Magento\Framework\Api\SearchCriteria', [], [], '', false) - ); - } -} diff --git a/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestBillingAddressManagementTest.php b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestBillingAddressManagementTest.php new file mode 100644 index 0000000000000000000000000000000000000000..4f6a3e63a632df58afc6eadeb44871820866100c --- /dev/null +++ b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestBillingAddressManagementTest.php @@ -0,0 +1,97 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Test\Unit\Model\GuestCart; + +class GuestBillingAddressManagementTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Quote\Model\GuestCart\GuestBillingAddressManagement + */ + protected $model; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskFactoryMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $billingAddressManagementMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $addressMock; + + /** + * @var string + */ + protected $maskedCartId; + + /** + * @var int + */ + protected $cartId; + + /** + * @return void + */ + protected function setUp() + { + $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + $this->addressMock = $this->getMock('\Magento\Quote\Model\Quote\Address', [], [], '', false); + $this->billingAddressManagementMock = $this->getMock( + 'Magento\Quote\Api\BillingAddressManagementInterface', + [], + [], + '', + false + ); + + $this->maskedCartId = 'f216207248d65c789b17be8545e0aa73'; + $this->cartId = 123; + + $guestCartTestHelper = new GuestCartTestHelper($this); + list($this->quoteIdMaskFactoryMock, $this->quoteIdMaskMock) = $guestCartTestHelper->mockQuoteIdMask( + $this->maskedCartId, + $this->cartId + ); + + $this->model = $objectManager->getObject( + 'Magento\Quote\Model\GuestCart\GuestBillingAddressManagement', + [ + 'quoteIdMaskFactory' => $this->quoteIdMaskFactoryMock, + 'billingAddressManagement' => $this->billingAddressManagementMock + ] + ); + } + + /** + * @return void + */ + public function testGet() + { + $this->billingAddressManagementMock->expects($this->once())->method('get')->willReturn($this->addressMock); + $this->assertEquals($this->addressMock, $this->model->get($this->maskedCartId)); + } + + /** + * @return void + */ + public function testAssign() + { + $addressId = 1; + $this->billingAddressManagementMock->expects($this->once())->method('assign')->willReturn($addressId); + $this->assertEquals($addressId, $this->model->assign($this->maskedCartId, $this->addressMock)); + } +} diff --git a/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartItemRepositoryTest.php b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartItemRepositoryTest.php new file mode 100644 index 0000000000000000000000000000000000000000..9535e3c1c7455e063d9fa7770e48e15616ede6a0 --- /dev/null +++ b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartItemRepositoryTest.php @@ -0,0 +1,133 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Test\Unit\Model\GuestCart; + +class GuestCartItemRepositoryTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Quote\Model\GuestCart\GuestCartItemRepository + */ + protected $guestCartItemRepository; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $cartItemRepositoryMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskFactoryMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteItemMock; + + /** + * @var string + */ + protected $maskedCartId; + + /** + * @var string + */ + protected $cartId; + + /** + * @return void + */ + protected function setUp() + { + $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + + $this->maskedCartId = 'f216207248d65c789b17be8545e0aa73'; + $this->cartId = 33; + + /** + * @var \Magento\Quote\Test\Unit\Model\GuestCart\GuestCartTestHelper + */ + $guestCartTestHelper = new \Magento\Quote\Test\Unit\Model\GuestCart\GuestCartTestHelper($this); + list($this->quoteIdMaskFactoryMock, $this->quoteIdMaskMock) = + $guestCartTestHelper->mockQuoteIdMask( + $this->maskedCartId, + $this->cartId + ); + + $this->quoteIdMaskMock->expects($this->any()) + ->method('getMaskedId') + ->willReturn($this->maskedCartId); + + $this->quoteItemMock = $this->getMock('\Magento\Quote\Model\Quote\Item', [], [], '', false); + $this->quoteItemMock->expects($this->any()) + ->method('getItemId') + ->willReturn($this->maskedCartId); + $this->quoteItemMock->expects($this->any()) + ->method('getQuoteId') + ->willReturn($this->maskedCartId); + $this->quoteItemMock->expects($this->any()) + ->method('setQuoteId') + ->with($this->cartId); + + $this->cartItemRepositoryMock = $this->getMock('\Magento\Quote\Model\Quote\Item\Repository', [], [], '', false); + $this->guestCartItemRepository = + $objectManager->getObject( + 'Magento\Quote\Model\GuestCart\GuestCartItemRepository', + [ + 'repository' => $this->cartItemRepositoryMock, + 'quoteIdMaskFactory' => $this->quoteIdMaskFactoryMock, + ] + ); + } + + /** + * @return void + */ + public function testSave() + { + $expectedValue = 'expected value'; + $this->cartItemRepositoryMock->expects($this->once()) + ->method('save') + ->willReturn($expectedValue); + $this->assertEquals($expectedValue, $this->guestCartItemRepository->save($this->quoteItemMock)); + } + + /** + * @return void + */ + public function testGetList() + { + $itemMock = $this->getMock('\Magento\Quote\Model\Quote\Item', [], [], '', false); + $itemMock->expects($this->any()) + ->method('setQuoteId') + ->with($this->maskedCartId); + $this->cartItemRepositoryMock->expects($this->once()) + ->method('getList') + ->with($this->cartId) + ->will($this->returnValue([$itemMock])); + $this->assertEquals([$itemMock], $this->guestCartItemRepository->getList($this->maskedCartId)); + } + + /** + * @return void + */ + public function testDeleteById() + { + $itemId = 5; + $this->cartItemRepositoryMock->expects($this->once()) + ->method('deleteById') + ->with($this->cartId, $itemId) + ->willReturn(true); + $this->assertTrue($this->guestCartItemRepository->deleteById($this->maskedCartId, $itemId)); + } +} diff --git a/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartManagementTest.php b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartManagementTest.php new file mode 100644 index 0000000000000000000000000000000000000000..444aa62322a04a9a039b274755c0e8ab863a2ddc --- /dev/null +++ b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartManagementTest.php @@ -0,0 +1,116 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Test\Unit\Model\GuestCart; + +class GuestCartManagementTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteManagementMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteRepositoryMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskFactoryMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskMock; + + /** + * @var \Magento\Quote\Model\GuestCart\GuestCartManagement + */ + protected $guestCartManagement; + + protected function setUp() + { + $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + + $this->quoteManagementMock = $this->getMockForAbstractClass( + 'Magento\Quote\Api\CartManagementInterface', + [], + '', + false, + true, + true, + [] + ); + $this->quoteIdMaskFactoryMock = $this->getMock( + 'Magento\Quote\Model\QuoteIdMaskFactory', + ['create'], + [], + '', + false + ); + $this->quoteIdMaskMock = $this->getMock( + 'Magento\Quote\Model\QuoteIdMask', + ['getId', 'getMaskedId', 'load', 'save', 'setId'], + [], + '', + false + ); + + $this->guestCartManagement = $objectManager->getObject( + 'Magento\Quote\Model\GuestCart\GuestCartManagement', + [ + 'quoteManagement' => $this->quoteManagementMock, + 'quoteIdMaskFactory' => $this->quoteIdMaskFactoryMock + ] + ); + } + + public function testCreateEmptyCart() + { + $maskedCartId = 'masked1cart2id3'; + $cartId = 1; + + $this->quoteIdMaskMock->expects($this->once())->method('setId')->with($cartId)->willReturnSelf(); + $this->quoteIdMaskMock->expects($this->once())->method('save')->willReturnSelf(); + $this->quoteIdMaskMock->expects($this->once())->method('getMaskedId')->willreturn($maskedCartId); + $this->quoteIdMaskFactoryMock->expects($this->once())->method('create')->willReturn($this->quoteIdMaskMock); + $this->quoteManagementMock->expects($this->once())->method('createEmptyCart')->willReturn($cartId); + + $this->assertEquals($maskedCartId, $this->guestCartManagement->createEmptyCart()); + } + + public function testAssignCustomer() + { + $maskedCartId = 'masked1cart2id3'; + $cartId = 1; + $customerId = 1; + $storeId = 1; + + $this->quoteIdMaskMock->expects($this->once())->method('load')->with($cartId, 'masked_id')->willReturnSelf(); + $this->quoteIdMaskMock->expects($this->once())->method('getId')->willReturn($maskedCartId); + $this->quoteIdMaskFactoryMock->expects($this->once())->method('create')->willReturn($this->quoteIdMaskMock); + $this->quoteManagementMock->expects($this->once())->method('assignCustomer')->willReturn(true); + + $this->assertEquals(true, $this->guestCartManagement->assignCustomer($cartId, $customerId, $storeId)); + } + + public function testPlaceOrder() + { + $maskedCartId = 'masked1cart2id3'; + $cartId = 1; + $orderId = 1; + + $this->quoteIdMaskMock->expects($this->once())->method('load')->with($cartId, 'masked_id')->willReturnSelf(); + $this->quoteIdMaskMock->expects($this->once())->method('getId')->willReturn($maskedCartId); + $this->quoteIdMaskFactoryMock->expects($this->once())->method('create')->willReturn($this->quoteIdMaskMock); + $this->quoteManagementMock->expects($this->once())->method('placeOrder')->willReturn($orderId); + + $this->assertEquals($orderId, $this->guestCartManagement->placeOrder($cartId)); + } +} diff --git a/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartRepositoryTest.php b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartRepositoryTest.php new file mode 100644 index 0000000000000000000000000000000000000000..3a7e2fac3ae37a9fb1d30bdceb39a88616c40ac6 --- /dev/null +++ b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartRepositoryTest.php @@ -0,0 +1,75 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Test\Unit\Model\GuestCart; + +class GuestCartRepositoryTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Quote\Model\GuestCart\GuestCartRepository + */ + protected $model; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteRepositoryMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskFactoryMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskMock; + + /** + * @var string + */ + protected $maskedCartId; + + /** + * @var int + */ + protected $cartId; + + protected function setUp() + { + $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + $this->quoteRepositoryMock = $this->getMock('Magento\Quote\Api\CartRepositoryInterface', [], [], '', false); + $this->quoteMock = $this->getMock('Magento\Quote\Model\Quote', [], [], '', false); + + $this->maskedCartId = 'f216207248d65c789b17be8545e0aa73'; + $this->cartId = 123; + + $guestCartTestHelper = new GuestCartTestHelper($this); + list($this->quoteIdMaskFactoryMock, $this->quoteIdMaskMock) = $guestCartTestHelper->mockQuoteIdMask( + $this->maskedCartId, + $this->cartId + ); + + $this->model = $objectManager->getObject( + 'Magento\Quote\Model\GuestCart\GuestCartRepository', + [ + 'quoteRepository' => $this->quoteRepositoryMock, + 'quoteIdMaskFactory' => $this->quoteIdMaskFactoryMock + ] + ); + } + + public function testGet() + { + $this->quoteRepositoryMock->expects($this->once())->method('get')->willReturn($this->quoteMock); + $this->assertEquals($this->quoteMock, $this->model->get($this->maskedCartId)); + } +} diff --git a/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartTestHelper.php b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartTestHelper.php new file mode 100644 index 0000000000000000000000000000000000000000..25649077b5fd6c9bbe8a478b4987947d59eda4cc --- /dev/null +++ b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartTestHelper.php @@ -0,0 +1,54 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Test\Unit\Model\GuestCart; + +/** + * Class GuestCartTestHelper + * + */ +class GuestCartTestHelper +{ + /** + * @var \PHPUnit_Framework_TestCase + */ + protected $testCase; + + /** + * Initialize helper + * + * @param \PHPUnit_Framework_TestCase $testCase + */ + public function __construct(\PHPUnit_Framework_TestCase $testCase) + { + $this->testCase = $testCase; + } + + /** + * Return mocks with expected invokes + * + * First element is quoteIdMaskFactoryMock, second one is quoteIdMaskMock + * + * @param $maskedCartId + * @param $cartId + * @return array + */ + public function mockQuoteIdMask($maskedCartId, $cartId) + { + $quoteIdMaskMock = $this->testCase->getMock( + 'Magento\Quote\Model\QuoteIdMask', + ['load', 'getId', 'getMaskedId'], + [], + '', + false + ); + $quoteIdMaskFactoryMock = $this->testCase->getMock('Magento\Quote\Model\QuoteIdMaskFactory', [], [], '', false); + $quoteIdMaskFactoryMock->expects($this->testCase->once())->method('create')->willReturn($quoteIdMaskMock); + $quoteIdMaskMock->expects($this->testCase->once())->method('load')->with($maskedCartId)->willReturnSelf(); + $quoteIdMaskMock->expects($this->testCase->once())->method('getId')->willReturn($cartId); + return [$quoteIdMaskFactoryMock, $quoteIdMaskMock]; + } +} diff --git a/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartTotalRepositoryTest.php b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartTotalRepositoryTest.php new file mode 100644 index 0000000000000000000000000000000000000000..a8ef8d94e9fa2f92b324d81931ed87c7cd647e0b --- /dev/null +++ b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCartTotalRepositoryTest.php @@ -0,0 +1,82 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Test\Unit\Model\GuestCart; + +class GuestCartTotalRepositoryTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Quote\Model\GuestCart\GuestCartTotalRepository + */ + protected $model; + + /** + * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager + */ + protected $objectManager; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $cartTotalRepository; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskFactoryMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskMock; + + /** + * @var string + */ + protected $maskedCartId; + + /** + * @var int + */ + protected $cartId; + + public function setUp() + { + $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + + $this->cartTotalRepository = $this->getMockBuilder('Magento\Quote\Api\CartTotalRepositoryInterface') + ->disableOriginalConstructor() + ->getMock(); + + $this->maskedCartId = 'f216207248d65c789b17be8545e0aa73'; + $this->cartId = 123; + + $guestCartTestHelper = new GuestCartTestHelper($this); + list($this->quoteIdMaskFactoryMock, $this->quoteIdMaskMock) = $guestCartTestHelper->mockQuoteIdMask( + $this->maskedCartId, + $this->cartId + ); + + $this->model = $this->objectManager->getObject( + 'Magento\Quote\Model\GuestCart\GuestCartTotalRepository', + [ + 'cartTotalRepository' => $this->cartTotalRepository, + 'quoteIdMaskFactory' => $this->quoteIdMaskFactoryMock, + ] + ); + } + + public function testGetTotals() + { + $retValue = 'retValue'; + + $this->cartTotalRepository->expects($this->once()) + ->method('get') + ->with($this->cartId) + ->will($this->returnValue($retValue)); + $this->assertSame($retValue, $this->model->get($this->maskedCartId)); + } +} diff --git a/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCouponManagementTest.php b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCouponManagementTest.php new file mode 100644 index 0000000000000000000000000000000000000000..74b00ed942f4a1ba2d8e05e4ab678a9ad05c7d3d --- /dev/null +++ b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestCouponManagementTest.php @@ -0,0 +1,87 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Test\Unit\Model\GuestCart; + +class GuestCouponManagementTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Quote\Model\GuestCart\GuestCouponManagement + */ + protected $model; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskFactoryMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $couponManagementMock; + + /** + * @var string + */ + protected $maskedCartId; + + /** + * @var int + */ + protected $cartId; + + /** + * @var string + */ + protected $couponCode; + + protected function setUp() + { + $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + $this->couponManagementMock = $this->getMock('Magento\Quote\Api\CouponManagementInterface', [], [], '', false); + + $this->couponCode = 'test_coupon_code'; + $this->maskedCartId = 'f216207248d65c789b17be8545e0aa73'; + $this->cartId = 123; + + $guestCartTestHelper = new GuestCartTestHelper($this); + list($this->quoteIdMaskFactoryMock, $this->quoteIdMaskMock) = $guestCartTestHelper->mockQuoteIdMask( + $this->maskedCartId, + $this->cartId + ); + + $this->model = $objectManager->getObject( + 'Magento\Quote\Model\GuestCart\GuestCouponManagement', + [ + 'couponManagement' => $this->couponManagementMock, + 'quoteIdMaskFactory' => $this->quoteIdMaskFactoryMock + ] + ); + } + + public function testGet() + { + $this->couponManagementMock->expects($this->once())->method('get')->willReturn($this->couponCode); + $this->assertEquals($this->couponCode, $this->model->get($this->maskedCartId)); + } + + public function testSet() + { + $this->couponManagementMock->expects($this->once())->method('set')->willReturn(true); + $this->assertTrue($this->model->set($this->maskedCartId, $this->couponCode)); + } + + public function testRemove() + { + $this->couponManagementMock->expects($this->once())->method('remove')->willReturn(true); + $this->assertTrue($this->model->remove($this->maskedCartId)); + } +} diff --git a/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestPaymentMethodManagementTest.php b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestPaymentMethodManagementTest.php new file mode 100644 index 0000000000000000000000000000000000000000..ebde097f89bd4c551b920d69fac12fc3b4543497 --- /dev/null +++ b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestPaymentMethodManagementTest.php @@ -0,0 +1,94 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Test\Unit\Model\GuestCart; + +class GuestPaymentMethodManagementTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Quote\Model\GuestCart\GuestPaymentMethodManagement + */ + protected $model; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskFactoryMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $paymentMethodManagementMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $paymentMock; + + /** + * @var string + */ + protected $maskedCartId; + + /** + * @var int + */ + protected $cartId; + + protected function setUp() + { + $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + $this->paymentMethodManagementMock = $this->getMock( + 'Magento\Quote\Api\PaymentMethodManagementInterface', + [], + [], + '', + false + ); + $this->paymentMock = $this->getMock('Magento\Quote\Model\Quote\Payment', [], [], '', false); + + $this->maskedCartId = 'f216207248d65c789b17be8545e0aa73'; + $this->cartId = 11; + + $guestCartTestHelper = new GuestCartTestHelper($this); + list($this->quoteIdMaskFactoryMock, $this->quoteIdMaskMock) = $guestCartTestHelper->mockQuoteIdMask( + $this->maskedCartId, + $this->cartId + ); + + $this->model = $objectManager->getObject( + 'Magento\Quote\Model\GuestCart\GuestPaymentMethodManagement', + [ + 'paymentMethodManagement' => $this->paymentMethodManagementMock, + 'quoteIdMaskFactory' => $this->quoteIdMaskFactoryMock + ] + ); + } + + public function testGet() + { + $this->paymentMethodManagementMock->expects($this->once())->method('get')->willReturn($this->paymentMock); + $this->assertEquals($this->paymentMock, $this->model->get($this->maskedCartId)); + } + + public function testGetList() + { + $paymentMethod = $this->getMock('Magento\Quote\Api\Data\PaymentMethodInterface', [], [], '', false); + $this->paymentMethodManagementMock->expects($this->once())->method('getList')->willReturn([$paymentMethod]); + $this->assertEquals([$paymentMethod], $this->model->getList($this->maskedCartId)); + } + + public function testSetSimpleProduct() + { + $paymentId = 20; + $this->paymentMethodManagementMock->expects($this->once())->method('set')->willReturn($paymentId); + $this->assertEquals($paymentId, $this->model->set($this->maskedCartId, $this->paymentMock)); + } +} diff --git a/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestShippingAddressManagementTest.php b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestShippingAddressManagementTest.php new file mode 100644 index 0000000000000000000000000000000000000000..67e35a93bf73c07409993caf9926d5fc77232301 --- /dev/null +++ b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestShippingAddressManagementTest.php @@ -0,0 +1,91 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Test\Unit\Model\GuestCart; + +class GuestShippingAddressManagementTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Quote\Api\GuestShippingAddressManagementInterface + */ + protected $model; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteAddressMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskFactoryMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteIdMaskMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $shippingAddressManagementMock; + + /** + * @var string + */ + protected $maskedCartId; + + /** + * @var int + */ + protected $cartId; + + protected function setUp() + { + $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + + $this->shippingAddressManagementMock = $this->getMock( + 'Magento\Quote\Api\ShippingAddressManagementInterface', + [], + [], + '', + false + ); + $this->quoteAddressMock = $this->getMock('Magento\Quote\Model\Quote\Address', [], [], '', false); + + $this->maskedCartId = 'f216207248d65c789b17be8545e0aa73'; + $this->cartId = 123; + + $guestCartTestHelper = new GuestCartTestHelper($this); + list($this->quoteIdMaskFactoryMock, $this->quoteIdMaskMock) = $guestCartTestHelper->mockQuoteIdMask( + $this->maskedCartId, + $this->cartId + ); + + $this->model = $objectManager->getObject( + 'Magento\Quote\Model\GuestCart\GuestShippingAddressManagement', + [ + 'shippingAddressManagement' => $this->shippingAddressManagementMock, + 'quoteIdMaskFactory' => $this->quoteIdMaskFactoryMock + ] + ); + } + + public function testAssign() + { + $addressId = 1; + $this->shippingAddressManagementMock->expects($this->once())->method('assign')->willReturn($addressId); + $this->assertEquals($addressId, $this->model->assign($this->maskedCartId, $this->quoteAddressMock)); + } + + public function testGet() + { + $this->shippingAddressManagementMock->expects($this->once())->method('get')->willReturn( + $this->quoteAddressMock + ); + $this->assertEquals($this->quoteAddressMock, $this->model->get($this->maskedCartId)); + } +} diff --git a/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestShippingMethodManagementTest.php b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestShippingMethodManagementTest.php new file mode 100644 index 0000000000000000000000000000000000000000..c91510a165fac2c1ecbacf3400cfba4b6f6d5be1 --- /dev/null +++ b/app/code/Magento/Quote/Test/Unit/Model/GuestCart/GuestShippingMethodManagementTest.php @@ -0,0 +1,103 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Test\Unit\Model\GuestCart; + +class GuestShippingMethodManagementTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Quote\Api\GuestShippingMethodManagementInterface + */ + private $model; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + private $shippingMethodManagementMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + private $quoteIdMaskFactoryMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + private $quoteIdMaskMock; + + /** + * @var string + */ + private $maskedCartId; + + /** + * @var string + */ + private $cartId; + + protected function setUp() + { + $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + + $this->shippingMethodManagementMock = + $this->getMockBuilder('Magento\Quote\Api\ShippingMethodManagementInterface') + ->getMockForAbstractClass(); + + $this->maskedCartId = 'f216207248d65c789b17be8545e0aa73'; + $this->cartId = 867; + + $guestCartTestHelper = new GuestCartTestHelper($this); + list($this->quoteIdMaskFactoryMock, $this->quoteIdMaskMock) = $guestCartTestHelper->mockQuoteIdMask( + $this->maskedCartId, + $this->cartId + ); + + $this->model = $objectManager->getObject( + 'Magento\Quote\Model\GuestCart\GuestShippingMethodManagement', + [ + 'shippingMethodManagement' => $this->shippingMethodManagementMock, + 'quoteIdMaskFactory' => $this->quoteIdMaskFactoryMock, + ] + ); + } + + public function testSet() + { + $carrierCode = 'carrierCode'; + $methodCode = 'methodCode'; + + $retValue = 'retValue'; + $this->shippingMethodManagementMock->expects($this->once()) + ->method('set') + ->with($this->cartId, $carrierCode, $methodCode) + ->will($this->returnValue($retValue)); + + $this->assertEquals($retValue, $this->model->set($this->maskedCartId, $carrierCode, $methodCode)); + } + + public function testGetList() + { + $retValue = 'retValue'; + $this->shippingMethodManagementMock->expects($this->once()) + ->method('getList') + ->with($this->cartId) + ->will($this->returnValue($retValue)); + + $this->assertEquals($retValue, $this->model->getList($this->maskedCartId)); + } + + public function testGet() + { + $retValue = 'retValue'; + $this->shippingMethodManagementMock->expects($this->once()) + ->method('get') + ->with($this->cartId) + ->will($this->returnValue($retValue)); + + $this->assertEquals($retValue, $this->model->get($this->maskedCartId)); + } +} diff --git a/app/code/Magento/Quote/Test/Unit/Model/Quote/Item/RepositoryTest.php b/app/code/Magento/Quote/Test/Unit/Model/Quote/Item/RepositoryTest.php index b90d93933827cbe676a413b79cbc4ed2e0d615b4..9081537f2790e8389100a5e3c4549e3578cc0222 100644 --- a/app/code/Magento/Quote/Test/Unit/Model/Quote/Item/RepositoryTest.php +++ b/app/code/Magento/Quote/Test/Unit/Model/Quote/Item/RepositoryTest.php @@ -7,7 +7,7 @@ namespace Magento\Quote\Test\Unit\Model\Quote\Item; -use \Magento\Quote\Model\Quote\Item\Repository; +use Magento\Quote\Model\Quote\Item\Repository; class RepositoryTest extends \PHPUnit_Framework_TestCase { @@ -160,6 +160,38 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase $this->assertEquals($this->quoteItemMock, $this->repository->save($this->dataMock)); } + /** + * @return void + */ + public function testSaveForCustomer() + { + $customerId = 1; + $cartId = 13; + $this->quoteRepositoryMock->expects($this->once())->method('getActiveForCustomer') + ->with($customerId) + ->will($this->returnValue($this->quoteMock)); + $this->quoteMock->expects($this->once())->method('getId')->willReturn($cartId); + $this->dataMock->expects($this->once())->method('getQty')->will($this->returnValue(12)); + $this->dataMock->expects($this->once())->method('getQuoteId')->willReturn($cartId); + $this->quoteRepositoryMock->expects($this->once()) + ->method('getActive')->with($cartId)->will($this->returnValue($this->quoteMock)); + $this->productRepositoryMock->expects($this->once()) + ->method('get') + ->will($this->returnValue($this->productMock)); + $this->dataMock->expects($this->once())->method('getSku'); + $this->quoteMock->expects($this->once())->method('addProduct')->with($this->productMock, 12); + $this->quoteMock->expects($this->never())->method('getItemById'); + $this->quoteMock->expects($this->once())->method('collectTotals')->will($this->returnValue($this->quoteMock)); + $this->quoteRepositoryMock->expects($this->once())->method('save')->with($this->quoteMock); + $this->quoteMock + ->expects($this->once()) + ->method('getItemByProduct') + ->with($this->productMock) + ->will($this->returnValue($this->quoteItemMock)); + $this->dataMock->expects($this->once())->method('getItemId')->will($this->returnValue(null)); + $this->assertEquals($this->quoteItemMock, $this->repository->saveForCustomer($customerId, $this->dataMock)); + } + /** * @return void * @expectedException \Magento\Framework\Exception\NoSuchEntityException @@ -260,15 +292,13 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase { $cartId = 11; $itemId = 5; - $this->dataMock->expects($this->once())->method('getQuoteId')->willReturn($cartId); - $this->dataMock->expects($this->once())->method('getItemId')->willReturn($itemId); $this->quoteRepositoryMock->expects($this->once()) ->method('getActive')->with($cartId)->will($this->returnValue($this->quoteMock)); $this->quoteMock->expects($this->once()) ->method('getItemById')->with($itemId)->will($this->returnValue(false)); $this->quoteMock->expects($this->never())->method('removeItem'); - $this->repository->delete($this->dataMock); + $this->repository->deleteById($cartId, $itemId); } /** @@ -280,8 +310,6 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase { $cartId = 11; $itemId = 5; - $this->dataMock->expects($this->once())->method('getQuoteId')->willReturn($cartId); - $this->dataMock->expects($this->once())->method('getItemId')->willReturn($itemId); $this->quoteRepositoryMock->expects($this->once()) ->method('getActive')->with($cartId)->will($this->returnValue($this->quoteMock)); $this->quoteMock->expects($this->once()) @@ -296,18 +324,21 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase ->with($this->quoteMock) ->willThrowException($exception); - $this->repository->delete($this->dataMock); + $this->repository->deleteById($cartId, $itemId); } /** * @return void */ - public function testDelete() + public function testDeleteByIdForCustomer() { + $customerId = 1; $cartId = 11; $itemId = 5; - $this->dataMock->expects($this->once())->method('getQuoteId')->willReturn($cartId); - $this->dataMock->expects($this->once())->method('getItemId')->willReturn($itemId); + $this->quoteRepositoryMock->expects($this->once())->method('getActiveForCustomer') + ->with($customerId) + ->will($this->returnValue($this->quoteMock)); + $this->quoteMock->expects($this->once())->method('getId')->willReturn($cartId); $this->quoteRepositoryMock->expects($this->once()) ->method('getActive')->with($cartId)->will($this->returnValue($this->quoteMock)); $this->quoteMock->expects($this->once()) @@ -316,7 +347,7 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase $this->quoteMock->expects($this->once())->method('collectTotals')->will($this->returnValue($this->quoteMock)); $this->quoteRepositoryMock->expects($this->once())->method('save')->with($this->quoteMock); - $this->repository->delete($this->dataMock); + $this->assertTrue($this->repository->deleteByIdForCustomer($customerId, $itemId)); } /** @@ -334,6 +365,27 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase $this->assertEquals([$itemMock], $this->repository->getList(33)); } + /** + * @return void + */ + public function testGetListForCustomer() + { + $cartId = 1; + $customerId = 33; + $quoteMock = $this->getMock('Magento\Quote\Model\Quote', [], [], '', false); + $this->quoteRepositoryMock->expects($this->once())->method('getActiveForCustomer') + ->with($customerId) + ->will($this->returnValue($quoteMock)); + $quoteMock->expects($this->once())->method('getId')->willReturn($cartId); + $this->quoteRepositoryMock->expects($this->once())->method('getActive') + ->with($cartId) + ->will($this->returnValue($quoteMock)); + $itemMock = $this->getMock('\Magento\Quote\Model\Quote\Item', [], [], '', false); + $quoteMock->expects($this->any())->method('getAllItems')->will($this->returnValue([$itemMock])); + + $this->assertEquals([$itemMock], $this->repository->getListForCustomer($customerId)); + } + /** * @return void */ @@ -341,13 +393,6 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase { $cartId = 11; $itemId = 5; - $this->itemDataFactoryMock->expects($this->once())->method('create')->willReturn($this->dataMock); - $this->dataMock->expects($this->once())->method('setQuoteId') - ->with($cartId)->willReturn($this->dataMock); - $this->dataMock->expects($this->once())->method('setItemId') - ->with($itemId)->willReturn($this->dataMock); - $this->dataMock->expects($this->once())->method('getQuoteId')->willReturn($cartId); - $this->dataMock->expects($this->once())->method('getItemId')->willReturn($itemId); $this->quoteRepositoryMock->expects($this->once()) ->method('getActive')->with($cartId)->will($this->returnValue($this->quoteMock)); $this->quoteMock->expects($this->once()) diff --git a/app/code/Magento/Quote/Test/Unit/Model/QuoteIdMaskTest.php b/app/code/Magento/Quote/Test/Unit/Model/QuoteIdMaskTest.php new file mode 100644 index 0000000000000000000000000000000000000000..9bd03b6bea45e5fc97ad1eac52d1285c458bd2b0 --- /dev/null +++ b/app/code/Magento/Quote/Test/Unit/Model/QuoteIdMaskTest.php @@ -0,0 +1,35 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Test\Unit\Model; + +use Magento\Framework\Math\Random; + +/** + * Unit test for \Magento\Quote\Model\QuoteIdMask + */ +class QuoteIdMaskTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Quote\Model\QuoteIdMask + */ + protected $quoteIdMask; + + protected function setUp() + { + $helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + $this->quoteIdMask = $helper->getObject( + 'Magento\Quote\Model\QuoteIdMask', + ['randomDataGenerator' => new Random()] + ); + } + + public function testBeforeSave() + { + $this->quoteIdMask->beforeSave(); + $this->assertNotNull($this->quoteIdMask->getMaskedId(), 'Masked identifier is not generated.'); + } +} diff --git a/app/code/Magento/Quote/Test/Unit/Model/QuoteManagementTest.php b/app/code/Magento/Quote/Test/Unit/Model/QuoteManagementTest.php index 522734a324ad98bc080654f4ceaee3e3a6da295e..12c4248d82c81175ac6d23d31f714611e1f08495 100644 --- a/app/code/Magento/Quote/Test/Unit/Model/QuoteManagementTest.php +++ b/app/code/Magento/Quote/Test/Unit/Model/QuoteManagementTest.php @@ -86,6 +86,11 @@ class QuoteManagementTest extends \PHPUnit_Framework_TestCase */ protected $customerFactoryMock; + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $storeManagerMock; + protected function setUp() { $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); @@ -140,6 +145,15 @@ class QuoteManagementTest extends \PHPUnit_Framework_TestCase '', false ); + $this->storeManagerMock = $this->getMockForAbstractClass( + 'Magento\Store\Model\StoreManagerInterface', + [], + '', + false, + true, + true, + ['getStore', 'getStoreId'] + ); $dataObjectHelper = $this->getMock('\Magento\Framework\Api\DataObjectHelper', [], [], '', false); @@ -160,6 +174,7 @@ class QuoteManagementTest extends \PHPUnit_Framework_TestCase 'customerRepository' => $this->customerRepositoryMock, 'customerModelFactory' => $this->customerFactoryMock, 'dataObjectHelper' => $dataObjectHelper, + 'storeManager' => $this->storeManagerMock ] ); } @@ -171,20 +186,19 @@ class QuoteManagementTest extends \PHPUnit_Framework_TestCase $quoteMock = $this->getMock('\Magento\Quote\Model\Quote', [], [], '', false); - $this->userContextMock->expects($this->once())->method('getUserType') - ->willReturn(\Magento\Authorization\Model\UserContextInterface::USER_TYPE_GUEST); - $this->quoteRepositoryMock->expects($this->once())->method('create')->willReturn($quoteMock); $quoteMock->expects($this->any())->method('setStoreId')->with($storeId); - $this->quoteRepositoryMock->expects($this->once())->method('save')->with($quoteMock); $quoteMock->expects($this->once())->method('getId')->willReturn($quoteId); - $this->assertEquals($quoteId, $this->model->createEmptyCart($storeId)); + $this->storeManagerMock->expects($this->once())->method('getStore')->willReturnSelf(); + $this->storeManagerMock->expects($this->once())->method('getStoreId')->willReturn($storeId); + + $this->assertEquals($quoteId, $this->model->createEmptyCart()); } - public function testCreateEmptyCartLoggedInUser() + public function testCreateEmptyCartForCustomer() { $storeId = 345; $quoteId = 2311; @@ -192,18 +206,6 @@ class QuoteManagementTest extends \PHPUnit_Framework_TestCase $quoteMock = $this->getMock('\Magento\Quote\Model\Quote', [], [], '', false); - $this->userContextMock->expects($this->once())->method('getUserType') - ->willReturn(\Magento\Authorization\Model\UserContextInterface::USER_TYPE_CUSTOMER); - - $this->userContextMock->expects($this->atLeastOnce())->method('getUserId')->willReturn($userId); - - $customerMock = $this->getMock('\Magento\Customer\Api\Data\CustomerInterface', [], [], '', false); - $this->customerRepositoryMock - ->expects($this->once()) - ->method('getById') - ->with($userId) - ->willReturn($customerMock); - $this->quoteRepositoryMock ->expects($this->once()) ->method('getActiveForCustomer') @@ -212,48 +214,39 @@ class QuoteManagementTest extends \PHPUnit_Framework_TestCase $this->quoteRepositoryMock->expects($this->once())->method('create')->willReturn($quoteMock); $quoteMock->expects($this->any())->method('setStoreId')->with($storeId); - $quoteMock->expects($this->any())->method('setCustomer')->with($customerMock); $quoteMock->expects($this->any())->method('setCustomerIsGuest')->with(0); - $this->quoteRepositoryMock->expects($this->once())->method('save')->with($quoteMock); $quoteMock->expects($this->once())->method('getId')->willReturn($quoteId); - $this->assertEquals($quoteId, $this->model->createEmptyCart($storeId)); + $this->storeManagerMock->expects($this->once())->method('getStore')->willReturnSelf(); + $this->storeManagerMock->expects($this->once())->method('getStoreId')->willReturn($storeId); + + $this->assertEquals($quoteId, $this->model->createEmptyCartForCustomer($userId)); } /** * @expectedException \Magento\Framework\Exception\CouldNotSaveException */ - public function testCreateEmptyCartLoggedInUserException() + public function testCreateEmptyCartForCustomerException() { $storeId = 345; $userId = 567; $quoteMock = $this->getMock('\Magento\Quote\Model\Quote', [], [], '', false); - $this->userContextMock->expects($this->once())->method('getUserType') - ->willReturn(\Magento\Authorization\Model\UserContextInterface::USER_TYPE_CUSTOMER); - - $this->userContextMock->expects($this->atLeastOnce())->method('getUserId')->willReturn($userId); - - $customerMock = $this->getMock('\Magento\Customer\Api\Data\CustomerInterface', [], [], '', false); - $this->customerRepositoryMock - ->expects($this->once()) - ->method('getById') - ->with($userId) - ->willReturn($customerMock); - $this->quoteRepositoryMock ->expects($this->once()) ->method('getActiveForCustomer') ->with($userId); $this->quoteRepositoryMock->expects($this->never())->method('create')->willReturn($quoteMock); - $this->quoteRepositoryMock->expects($this->never())->method('save')->with($quoteMock); - $this->model->createEmptyCart($storeId); + $this->storeManagerMock->expects($this->once())->method('getStore')->willReturnSelf(); + $this->storeManagerMock->expects($this->once())->method('getStoreId')->willReturn($storeId); + + $this->model->createEmptyCartForCustomer($userId); } /** diff --git a/app/code/Magento/Quote/Test/Unit/Model/Webapi/ParamOverriderCartIdTest.php b/app/code/Magento/Quote/Test/Unit/Model/Webapi/ParamOverriderCartIdTest.php new file mode 100644 index 0000000000000000000000000000000000000000..cb83bf6112341df2a9f9ccadcd2824b57ebed0fc --- /dev/null +++ b/app/code/Magento/Quote/Test/Unit/Model/Webapi/ParamOverriderCartIdTest.php @@ -0,0 +1,116 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Test\Unit\Model\Webapi; + +use Magento\Authorization\Model\UserContextInterface; +use Magento\Framework\Exception\NoSuchEntityException; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Magento\Quote\Api\CartManagementInterface; +use Magento\Quote\Model\Webapi\ParamOverriderCartId; + +/** + * Test for \Magento\Quote\Model\Webapi\ParamOverriderCartId + */ +class ParamOverriderCartIdTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ParamOverriderCartId + */ + private $model; + + /** + * @var UserContextInterface + */ + private $userContext; + + public function setUp() + { + $this->userContext = $this->getMockBuilder('Magento\Authorization\Model\UserContextInterface') + ->getMockForAbstractClass(); + $this->cartManagement = $this->getMockBuilder('Magento\Quote\Api\CartManagementInterface') + ->getMockForAbstractClass(); + $this->model = (new ObjectManager($this))->getObject( + 'Magento\Quote\Model\Webapi\ParamOverriderCartId', + [ + 'userContext' => $this->userContext, + 'cartManagement' => $this->cartManagement, + ] + ); + } + + public function testGetOverriddenValueIsCustomerAndCartExists() + { + $retValue = 'retValue'; + $customerId = 1; + + $this->userContext->expects($this->once()) + ->method('getUserType') + ->will($this->returnValue(UserContextInterface::USER_TYPE_CUSTOMER)); + $this->userContext->expects($this->once()) + ->method('getUserId') + ->will($this->returnValue($customerId)); + + $cart = $this->getMockBuilder('Magento\Quote\Api\Data\CartInterface') + ->getMockForAbstractClass(); + $this->cartManagement->expects($this->once()) + ->method('getCartForCustomer') + ->with($customerId) + ->will($this->returnValue($cart)); + $cart->expects($this->once()) + ->method('getId') + ->will($this->returnValue($retValue)); + + $this->assertSame($retValue, $this->model->getOverriddenValue()); + } + + public function testGetOverriddenValueIsCustomerAndCartDoesNotExist() + { + $customerId = 1; + + $this->userContext->expects($this->once()) + ->method('getUserType') + ->will($this->returnValue(UserContextInterface::USER_TYPE_CUSTOMER)); + $this->userContext->expects($this->once()) + ->method('getUserId') + ->will($this->returnValue($customerId)); + + $this->cartManagement->expects($this->once()) + ->method('getCartForCustomer') + ->with($customerId) + ->will($this->throwException(new NoSuchEntityException())); + + $this->assertNull($this->model->getOverriddenValue()); + } + + public function testGetOverriddenValueIsCustomerAndCartIsNull() + { + $customerId = 1; + + $this->userContext->expects($this->once()) + ->method('getUserType') + ->will($this->returnValue(UserContextInterface::USER_TYPE_CUSTOMER)); + $this->userContext->expects($this->once()) + ->method('getUserId') + ->will($this->returnValue($customerId)); + + $this->cartManagement->expects($this->once()) + ->method('getCartForCustomer') + ->with($customerId) + ->will($this->returnValue(null)); + + $this->assertNull($this->model->getOverriddenValue()); + } + + public function testGetOverriddenValueIsNotCustomer() + { + $this->userContext->expects($this->once()) + ->method('getUserType') + ->will($this->returnValue(UserContextInterface::USER_TYPE_ADMIN)); + + $this->assertNull($this->model->getOverriddenValue()); + } +} diff --git a/app/code/Magento/Quote/composer.json b/app/code/Magento/Quote/composer.json index c28feaa41dcb842b926fa2925e7fdf88420d4bfc..c4bf2a50e6d26dbf3884fd47edee836d756ea200 100644 --- a/app/code/Magento/Quote/composer.json +++ b/app/code/Magento/Quote/composer.json @@ -3,25 +3,25 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-catalog-rule": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-authorization": "0.74.0-beta5", - "magento/module-payment": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-shipping": "0.74.0-beta5", - "magento/module-sales-sequence": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-tax": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-catalog-rule": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-authorization": "0.74.0-beta6", + "magento/module-payment": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-shipping": "0.74.0-beta6", + "magento/module-sales-sequence": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-tax": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Quote/etc/acl.xml b/app/code/Magento/Quote/etc/acl.xml new file mode 100644 index 0000000000000000000000000000000000000000..14792adfa7170110bfc1da6dd6c6c6c347686f87 --- /dev/null +++ b/app/code/Magento/Quote/etc/acl.xml @@ -0,0 +1,18 @@ +<?xml version="1.0"?> +<!-- +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Acl/etc/acl.xsd"> + <acl> + <resources> + <resource id="Magento_Backend::admin"> + <resource id="Magento_Cart::cart" title="Carts" sortOrder="40"> + <resource id="Magento_Cart::manage" title="Manage carts" sortOrder="10" /> + </resource> + </resource> + </resources> + </acl> +</config> diff --git a/app/code/Magento/Quote/etc/di.xml b/app/code/Magento/Quote/etc/di.xml index 214e414e3207d0c9a2438f9f68d3ac35456f581e..4eeb1ff2b61a7e865d24c28af7411c599b7c3f05 100644 --- a/app/code/Magento/Quote/etc/di.xml +++ b/app/code/Magento/Quote/etc/di.xml @@ -25,4 +25,22 @@ <preference for="Magento\Quote\Api\Data\TotalsInterface" type="\Magento\Quote\Model\Cart\Totals" /> <preference for="Magento\Quote\Api\Data\TotalsItemInterface" type="\Magento\Quote\Model\Quote\Cart\Totals\Item" /> <preference for="Magento\Quote\Api\Data\CurrencyInterface" type="\Magento\Quote\Model\Cart\Currency" /> + + <preference for="Magento\Quote\Api\GuestCartManagementInterface" type="Magento\Quote\Model\GuestCart\GuestCartManagement" /> + <preference for="Magento\Quote\Api\GuestCartRepositoryInterface" type="Magento\Quote\Model\GuestCart\GuestCartRepository" /> + <preference for="Magento\Quote\Api\GuestCartItemRepositoryInterface" type="Magento\Quote\Model\GuestCart\GuestCartItemRepository" /> + <preference for="Magento\Quote\Api\GuestCouponManagementInterface" type="Magento\Quote\Model\GuestCart\GuestCouponManagement" /> + <preference for="Magento\Quote\Api\GuestPaymentMethodManagementInterface" type="Magento\Quote\Model\GuestCart\GuestPaymentMethodManagement" /> + <preference for="Magento\Quote\Api\GuestCartTotalRepositoryInterface" type="Magento\Quote\Model\GuestCart\GuestCartTotalRepository" /> + <preference for="Magento\Quote\Api\GuestShippingAddressManagementInterface" type="Magento\Quote\Model\GuestCart\GuestShippingAddressManagement" /> + <preference for="Magento\Quote\Api\GuestShippingMethodManagementInterface" type="Magento\Quote\Model\GuestCart\GuestShippingMethodManagement" /> + <preference for="Magento\Quote\Api\GuestBillingAddressManagementInterface" type="Magento\Quote\Model\GuestCart\GuestBillingAddressManagement" /> + + <type name="Magento\Webapi\Controller\Rest\ParamsOverrider"> + <arguments> + <argument name="paramOverriders" xsi:type="array"> + <item name="%cart_id%" xsi:type="object">Magento\Quote\Model\Webapi\ParamOverriderCartId</item> + </argument> + </arguments> + </type> </config> diff --git a/app/code/Magento/Quote/etc/webapi.xml b/app/code/Magento/Quote/etc/webapi.xml index 412dab6361b1f7ef5e24168ebcb9b1b980a32c48..9540a2d3b88aa9d72923608322fec5834eb2d382 100644 --- a/app/code/Magento/Quote/etc/webapi.xml +++ b/app/code/Magento/Quote/etc/webapi.xml @@ -7,34 +7,101 @@ --> <routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../app/code/Magento/Webapi/etc/webapi.xsd"> + + <!-- Managing Cart --> <route url="/V1/carts/:cartId" method="GET"> <service class="Magento\Quote\Api\CartRepositoryInterface" method="get"/> <resources> - <resource ref="anonymous" /> + <resource ref="Magento_Cart::manage" /> </resources> </route> <route url="/V1/carts" method="GET"> <service class="Magento\Quote\Api\CartRepositoryInterface" method="getList"/> <resources> - <resource ref="anonymous" /> + <resource ref="Magento_Cart::manage" /> </resources> </route> <route url="/V1/carts/" method="POST"> <service class="Magento\Quote\Api\CartManagementInterface" method="createEmptyCart"/> <resources> - <resource ref="anonymous" /> + <resource ref="Magento_Cart::manage" /> + </resources> + </route> + <route url="/V1/customers/:customerId/carts" method="POST"> + <service class="Magento\Quote\Api\CartManagementInterface" method="createEmptyCartForCustomer"/> + <resources> + <resource ref="Magento_Cart::manage" /> </resources> </route> <route url="/V1/carts/:cartId" method="PUT"> <service class="Magento\Quote\Api\CartManagementInterface" method="assignCustomer"/> + <resources> + <resource ref="Magento_Cart::manage" /> + </resources> + </route> + + <!-- Managing my Cart --> + <route url="/V1/carts/mine" method="POST"> + <service class="Magento\Quote\Api\CartManagementInterface" method="createEmptyCartForCustomer"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="customerId" force="true">%customer_id%</parameter> + </data> + </route> + <route url="/V1/carts/mine" method="GET"> + <service class="Magento\Quote\Api\CartManagementInterface" method="getCartForCustomer"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="customerId" force="true">%customer_id%</parameter> + </data> + </route> + <route url="/V1/carts/mine/order" method="PUT"> + <service class="Magento\Quote\Api\CartManagementInterface" method="placeOrder"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> + </route> + + <!-- Managing guest carts --> + + <route url="/V1/guest-carts/:cartId" method="GET"> + <service class="Magento\Quote\Api\GuestCartRepositoryInterface" method="get"/> + <resources> + <resource ref="anonymous" /> + </resources> + </route> + <!-- No getList for anonymous guest cart users --> + <route url="/V1/guest-carts" method="POST"> + <service class="Magento\Quote\Api\GuestCartManagementInterface" method="createEmptyCart"/> <resources> <resource ref="anonymous" /> </resources> </route> + <route url="/V1/guest-carts/:cartId" method="PUT"> + <service class="Magento\Quote\Api\GuestCartManagementInterface" method="assignCustomer"/> + <resources> + <resource ref="anonymous" /> + </resources> + </route> + <route url="/V1/guest-carts/:cartId/order" method="PUT"> + <service class="Magento\Quote\Api\GuestCartManagementInterface" method="placeOrder"/> + <resources> + <resource ref="anonymous" /> + </resources> + </route> + + <!-- Managing Cart Shipment Method --> <route url="/V1/carts/:cartId/selected-shipping-method" method="PUT"> <service class="Magento\Quote\Api\ShippingMethodManagementInterface" method="set"/> <resources> - <resource ref="anonymous" /> + <resource ref="Magento_Cart::manage" /> </resources> </route> <route url="/V1/carts/:cartId/selected-shipping-method" method="GET"> @@ -45,14 +112,65 @@ </route> <route url="/V1/carts/:cartId/shipping-methods" method="GET"> <service class="Magento\Quote\Api\ShippingMethodManagementInterface" method="getList"/> + <resources> + <resource ref="Magento_Cart::manage" /> + </resources> + </route> + + <!-- Managing My Cart Shipment Method --> + <route url="/V1/carts/mine/selected-shipping-method" method="PUT"> + <service class="Magento\Quote\Api\ShippingMethodManagementInterface" method="set"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> + </route> + <route url="/V1/carts/mine/selected-shipping-method" method="GET"> + <service class="Magento\Quote\Api\ShippingMethodManagementInterface" method="get"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> + </route> + <route url="/V1/carts/mine/shipping-methods" method="GET"> + <service class="Magento\Quote\Api\ShippingMethodManagementInterface" method="getList"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> + </route> + + <!-- Managing Guest Cart Shipment Method --> + <route url="/V1/guest-carts/:cartId/selected-shipping-method" method="PUT"> + <service class="Magento\Quote\Api\GuestShippingMethodManagementInterface" method="set"/> <resources> <resource ref="anonymous" /> </resources> </route> + <route url="/V1/guest-carts/:cartId/selected-shipping-method" method="GET"> + <service class="Magento\Quote\Api\GuestShippingMethodManagementInterface" method="get"/> + <resources> + <resource ref="anonymous" /> + </resources> + </route> + <route url="/V1/guest-carts/:cartId/shipping-methods" method="GET"> + <service class="Magento\Quote\Api\GuestShippingMethodManagementInterface" method="getList"/> + <resources> + <resource ref="anonymous" /> + </resources> + </route> + + <!-- Managing Cart Items --> <route url="/V1/carts/:cartId/items" method="GET"> <service class="Magento\Quote\Api\CartItemRepositoryInterface" method="getList"/> <resources> - <resource ref="anonymous" /> + <resource ref="Magento_Cart::manage" /> </resources> </route> <route url="/V1/carts/items" method="POST"> @@ -64,91 +182,346 @@ <route url="/V1/carts/items/:itemId" method="PUT"> <service class="Magento\Quote\Api\CartItemRepositoryInterface" method="save"/> <resources> - <resource ref="anonymous" /> + <resource ref="Magento_Cart::manage" /> </resources> </route> <route url="/V1/carts/:cartId/items/:itemId" method="DELETE"> <service class="Magento\Quote\Api\CartItemRepositoryInterface" method="deleteById"/> + <resources> + <resource ref="Magento_Cart::manage" /> + </resources> + </route> + + <!-- Managing Guest Cart Items --> + <route url="/V1/guest-carts/:cartId/items" method="GET"> + <service class="Magento\Quote\Api\GuestCartItemRepositoryInterface" method="getList"/> <resources> <resource ref="anonymous" /> </resources> </route> - <route url="/V1/carts/:cartId/selected-payment-methods" method="GET"> - <service class="Magento\Quote\Api\PaymentMethodManagementInterface" method="get"/> + <route url="/V1/guest-carts/items" method="POST"> + <service class="Magento\Quote\Api\GuestCartItemRepositoryInterface" method="save"/> <resources> <resource ref="anonymous" /> </resources> </route> - <route url="/V1/carts/:cartId/selected-payment-methods" method="PUT"> - <service class="Magento\Quote\Api\PaymentMethodManagementInterface" method="set"/> + <route url="/V1/guest-carts/items/:itemId" method="PUT"> + <service class="Magento\Quote\Api\GuestCartItemRepositoryInterface" method="save"/> <resources> <resource ref="anonymous" /> </resources> </route> + <route url="/V1/guest-carts/:cartId/items/:itemId" method="DELETE"> + <service class="Magento\Quote\Api\GuestCartItemRepositoryInterface" method="deleteById"/> + <resources> + <resource ref="anonymous" /> + </resources> + </route> + + <!-- Managing my Cart Items --> + <route url="/V1/carts/mine/items" method="GET"> + <service class="Magento\Quote\Api\CartItemRepositoryInterface" method="getList"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="customerId" force="true">%customer_id%</parameter> + </data> + </route> + <route url="/V1/carts/mine/items" method="POST"> + <service class="Magento\Quote\Api\CartItemRepositoryInterface" method="save"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="customerId" force="true">%customer_id%</parameter> + </data> + </route> + <route url="/V1/carts/mine/items/:itemId" method="PUT"> + <service class="Magento\Quote\Api\CartItemRepositoryInterface" method="save"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="customerId" force="true">%customer_id%</parameter> + </data> + </route> + <route url="/V1/carts/mine/items/:itemId" method="DELETE"> + <service class="Magento\Quote\Api\CartItemRepositoryInterface" method="deleteById"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="customerId" force="true">%customer_id%</parameter> + </data> + </route> + + <!-- Managing Cart Payment --> + <route url="/V1/carts/:cartId/selected-payment-method" method="GET"> + <service class="Magento\Quote\Api\PaymentMethodManagementInterface" method="get"/> + <resources> + <resource ref="Magento_Cart::manage" /> + </resources> + </route> + <route url="/V1/carts/:cartId/selected-payment-method" method="PUT"> + <service class="Magento\Quote\Api\PaymentMethodManagementInterface" method="set"/> + <resources> + <resource ref="Magento_Cart::manage" /> + </resources> + </route> <route url="/V1/carts/:cartId/payment-methods" method="GET"> <service class="Magento\Quote\Api\PaymentMethodManagementInterface" method="getList"/> + <resources> + <resource ref="Magento_Cart::manage" /> + </resources> + </route> + + <!-- Managing Guest Cart Payment --> + <route url="/V1/guest-carts/:cartId/selected-payment-method" method="GET"> + <service class="Magento\Quote\Api\GuestPaymentMethodManagementInterface" method="get"/> + <resources> + <resource ref="anonymous" /> + </resources> + </route> + <route url="/V1/guest-carts/:cartId/selected-payment-method" method="PUT"> + <service class="Magento\Quote\Api\GuestPaymentMethodManagementInterface" method="set"/> + <resources> + <resource ref="anonymous" /> + </resources> + </route> + <route url="/V1/guest-carts/:cartId/payment-methods" method="GET"> + <service class="Magento\Quote\Api\GuestPaymentMethodManagementInterface" method="getList"/> <resources> <resource ref="anonymous" /> </resources> </route> + + <!-- Managing my Cart Payment --> + <route url="/V1/carts/mine/selected-payment-method" method="GET"> + <service class="Magento\Quote\Api\PaymentMethodManagementInterface" method="get"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> + </route> + <route url="/V1/carts/mine/selected-payment-method" method="PUT"> + <service class="Magento\Quote\Api\PaymentMethodManagementInterface" method="set"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> + </route> + <route url="/V1/carts/mine/payment-methods" method="GET"> + <service class="Magento\Quote\Api\PaymentMethodManagementInterface" method="getList"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> + </route> + + <!-- Managing Cart Billing address --> <route url="/V1/carts/:cartId/billing-address" method="GET"> <service class="Magento\Quote\Api\BillingAddressManagementInterface" method="get"/> <resources> - <resource ref="anonymous" /> + <resource ref="Magento_Cart::manage" /> </resources> </route> <route url="/V1/carts/:cartId/billing-address" method="POST"> <service class="Magento\Quote\Api\BillingAddressManagementInterface" method="assign"/> + <resources> + <resource ref="Magento_Cart::manage" /> + </resources> + </route> + + <!-- Managing Guest Cart Billing address --> + <route url="/V1/guest-carts/:cartId/billing-address" method="GET"> + <service class="Magento\Quote\Api\GuestBillingAddressManagementInterface" method="get"/> + <resources> + <resource ref="anonymous" /> + </resources> + </route> + <route url="/V1/guest-carts/:cartId/billing-address" method="POST"> + <service class="Magento\Quote\Api\GuestBillingAddressManagementInterface" method="assign"/> <resources> <resource ref="anonymous" /> </resources> </route> + + <!-- Managing My Cart Billing address --> + <route url="/V1/carts/mine/billing-address" method="GET"> + <service class="Magento\Quote\Api\BillingAddressManagementInterface" method="get"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> + </route> + <route url="/V1/carts/mine/billing-address" method="POST"> + <service class="Magento\Quote\Api\BillingAddressManagementInterface" method="assign"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> + </route> + + <!-- Managing Cart Coupons --> <route url="/V1/carts/:cartId/coupons" method="GET"> <service class="Magento\Quote\Api\CouponManagementInterface" method="get"/> <resources> - <resource ref="anonymous" /> + <resource ref="Magento_Cart::manage" /> </resources> </route> <route url="/V1/carts/:cartId/coupons/:couponCode" method="PUT"> <service class="Magento\Quote\Api\CouponManagementInterface" method="set"/> <resources> - <resource ref="anonymous" /> + <resource ref="Magento_Cart::manage" /> </resources> </route> <route url="/V1/carts/:cartId/coupons" method="DELETE"> <service class="Magento\Quote\Api\CouponManagementInterface" method="remove"/> + <resources> + <resource ref="Magento_Cart::manage" /> + </resources> + </route> + + <!-- Managing Guest Cart Coupons --> + <route url="/V1/guest-carts/:cartId/coupons" method="GET"> + <service class="Magento\Quote\Api\GuestCouponManagementInterface" method="get"/> <resources> <resource ref="anonymous" /> </resources> </route> + <route url="/V1/guest-carts/:cartId/coupons/:couponCode" method="PUT"> + <service class="Magento\Quote\Api\GuestCouponManagementInterface" method="set"/> + <resources> + <resource ref="anonymous" /> + </resources> + </route> + <route url="/V1/guest-carts/:cartId/coupons" method="DELETE"> + <service class="Magento\Quote\Api\GuestCouponManagementInterface" method="remove"/> + <resources> + <resource ref="anonymous" /> + </resources> + </route> + + <!-- Managing mine Cart Coupons --> + <route url="/V1/carts/mine/coupons" method="GET"> + <service class="Magento\Quote\Api\CouponManagementInterface" method="get"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> + </route> + <route url="/V1/carts/mine/coupons/:couponCode" method="PUT"> + <service class="Magento\Quote\Api\CouponManagementInterface" method="set"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> + </route> + <route url="/V1/carts/mine/coupons" method="DELETE"> + <service class="Magento\Quote\Api\CouponManagementInterface" method="remove"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> + </route> + + <!-- Managing Cart Shipping address --> <route url="/V1/carts/:cartId/shipping-address" method="GET"> <service class="Magento\Quote\Api\ShippingAddressManagementInterface" method="get"/> <resources> - <resource ref="anonymous" /> + <resource ref="Magento_Cart::manage" /> </resources> </route> <route url="/V1/carts/:cartId/shipping-address" method="POST"> <service class="Magento\Quote\Api\ShippingAddressManagementInterface" method="assign"/> + <resources> + <resource ref="Magento_Cart::manage" /> + </resources> + </route> + + <!-- Managing Guest Cart Shipping address --> + <route url="/V1/guest-carts/:cartId/shipping-address" method="GET"> + <service class="Magento\Quote\Api\GuestShippingAddressManagementInterface" method="get"/> + <resources> + <resource ref="anonymous" /> + </resources> + </route> + <route url="/V1/guest-carts/:cartId/shipping-address" method="POST"> + <service class="Magento\Quote\Api\GuestShippingAddressManagementInterface" method="assign"/> <resources> <resource ref="anonymous" /> </resources> </route> + + <!-- Managing My Cart Shipping address --> + <route url="/V1/carts/mine/shipping-address" method="GET"> + <service class="Magento\Quote\Api\ShippingAddressManagementInterface" method="get"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> + </route> + <route url="/V1/carts/mine/shipping-address" method="POST"> + <service class="Magento\Quote\Api\ShippingAddressManagementInterface" method="assign"/> + <resources> + <resource ref="self" /> + </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> + </route> + + <!-- Managing Cart Order --> <route url="/V1/carts/:cartId/order" method="PUT"> <service class="Magento\Quote\Api\CartManagementInterface" method="placeOrder"/> <resources> - <resource ref="anonymous" /> + <resource ref="Magento_Cart::manage" /> </resources> </route> + + <!-- Managing Cart Total --> <route url="/V1/carts/:cartId/totals" method="GET"> <service class="Magento\Quote\Api\CartTotalRepositoryInterface" method="get"/> + <resources> + <resource ref="Magento_Cart::manage" /> + </resources> + </route> + + <!-- Managing Guest Cart Total --> + <route url="/V1/guest-carts/:cartId/totals" method="GET"> + <service class="Magento\Quote\Api\GuestCartTotalRepositoryInterface" method="get"/> <resources> <resource ref="anonymous" /> </resources> </route> - <route url="/V1/customer/:customerId/cart" method="GET"> - <service class="Magento\Quote\Api\CartManagementInterface" method="getCartForCustomer"/> + + <!-- Managing My Cart Total --> + <route url="/V1/carts/mine/totals" method="GET"> + <service class="Magento\Quote\Api\CartTotalRepositoryInterface" method="get"/> <resources> <resource ref="self" /> </resources> + <data> + <parameter name="cartId" force="true">%cart_id%</parameter> + </data> </route> </routes> diff --git a/app/code/Magento/Quote/etc/webapi_rest/di.xml b/app/code/Magento/Quote/etc/webapi_rest/di.xml deleted file mode 100644 index 67774a740401df953616e1fedae05e822e81d32e..0000000000000000000000000000000000000000 --- a/app/code/Magento/Quote/etc/webapi_rest/di.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0"?> -<!-- -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ ---> -<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd"> - <type name="Magento\Quote\Api\CartRepositoryInterface"> - <plugin name="admin_access" type="\Magento\Quote\Model\Cart\Access\CartRepositoryPlugin" /> - </type> - <type name="Magento\Quote\Api\CartManagementInterface"> - <plugin name="admin_access" type="\Magento\Quote\Model\Cart\Access\CartManagementPlugin" /> - </type> -</config> diff --git a/app/code/Magento/Quote/etc/webapi_soap/di.xml b/app/code/Magento/Quote/etc/webapi_soap/di.xml deleted file mode 100644 index 67774a740401df953616e1fedae05e822e81d32e..0000000000000000000000000000000000000000 --- a/app/code/Magento/Quote/etc/webapi_soap/di.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0"?> -<!-- -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ ---> -<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd"> - <type name="Magento\Quote\Api\CartRepositoryInterface"> - <plugin name="admin_access" type="\Magento\Quote\Model\Cart\Access\CartRepositoryPlugin" /> - </type> - <type name="Magento\Quote\Api\CartManagementInterface"> - <plugin name="admin_access" type="\Magento\Quote\Model\Cart\Access\CartManagementPlugin" /> - </type> -</config> diff --git a/app/code/Magento/Reports/composer.json b/app/code/Magento/Reports/composer.json index a163cc907cae09cb530314d2dbb1e857857df0ef..575834f57dafa4f07f7bb71ab6935fde724e4731 100644 --- a/app/code/Magento/Reports/composer.json +++ b/app/code/Magento/Reports/composer.json @@ -3,28 +3,28 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-cms": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-widget": "0.74.0-beta5", - "magento/module-log": "0.74.0-beta5", - "magento/module-wishlist": "0.74.0-beta5", - "magento/module-review": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-tax": "0.74.0-beta5", - "magento/module-downloadable": "0.74.0-beta5", - "magento/module-sales-rule": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-config": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-cms": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-widget": "0.74.0-beta6", + "magento/module-log": "0.74.0-beta6", + "magento/module-wishlist": "0.74.0-beta6", + "magento/module-review": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-tax": "0.74.0-beta6", + "magento/module-downloadable": "0.74.0-beta6", + "magento/module-sales-rule": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/RequireJs/composer.json b/app/code/Magento/RequireJs/composer.json index 04d9a8ad8bd8d2a2e9cbadc47d67d6e3c7c3e99b..968f8b00f4780f6abfd675c4d73350b3d1b10f95 100644 --- a/app/code/Magento/RequireJs/composer.json +++ b/app/code/Magento/RequireJs/composer.json @@ -3,11 +3,11 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/framework": "0.74.0-beta5", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Review/composer.json b/app/code/Magento/Review/composer.json index 9e92c92964afeb3b9f1fcfb78d2562bd321f6b94..35197e270227acf8a04a3e0915411c076af46e0d 100644 --- a/app/code/Magento/Review/composer.json +++ b/app/code/Magento/Review/composer.json @@ -3,22 +3,22 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-newsletter": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", - "magento/module-ui": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-newsletter": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", + "magento/module-ui": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-cookie": "0.74.0-beta5" + "magento/module-cookie": "0.74.0-beta6" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Rss/composer.json b/app/code/Magento/Rss/composer.json index d0c5619c78bfefd0f2fc524bfe560a87ad0f92f6..cb02900c44ef080abe82adcc3879c5394cf4640c 100644 --- a/app/code/Magento/Rss/composer.json +++ b/app/code/Magento/Rss/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Rule/composer.json b/app/code/Magento/Rule/composer.json index 8c6f6962f7f3b5a815395dbac3db9fbb80f03bf2..4e9e4fd3965676ec789fcae5df2f3fc27a1601ca 100644 --- a/app/code/Magento/Rule/composer.json +++ b/app/code/Magento/Rule/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "lib-libxml": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Sales/Block/Adminhtml/Order/Comments/View.php b/app/code/Magento/Sales/Block/Adminhtml/Order/Comments/View.php index 6dd4434c6e0ef0fc6c47735fa50d84c312ee3230..ea065d8eea7a6dc695f3c1d2c023e39af251f1a6 100644 --- a/app/code/Magento/Sales/Block/Adminhtml/Order/Comments/View.php +++ b/app/code/Magento/Sales/Block/Adminhtml/Order/Comments/View.php @@ -60,7 +60,7 @@ class View extends \Magento\Backend\Block\Template $this->addChild( 'submit_button', 'Magento\Backend\Block\Widget\Button', - ['id' => 'submit_comment_button', 'label' => __('Submit Comment'), 'class' => 'save'] + ['id' => 'submit_comment_button', 'label' => __('Submit Comment'), 'class' => 'action-secondary save'] ); return parent::_prepareLayout(); } diff --git a/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Store.php b/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Store.php index 908dabf48c15cc5f7e4cdaec3eec7c08431fd7a3..cf83b3bc125c7ffd8cb391fd3ea55b687629ab5a 100644 --- a/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Store.php +++ b/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Store.php @@ -30,6 +30,6 @@ class Store extends \Magento\Sales\Block\Adminhtml\Order\Create\AbstractCreate */ public function getHeaderText() { - return __('Please select a store.'); + return __('Please select a store'); } } diff --git a/app/code/Magento/Sales/Block/Adminhtml/Order/View/History.php b/app/code/Magento/Sales/Block/Adminhtml/Order/View/History.php index ad82046b66ed50ea6914ed6775cb90e8b482661e..d0284f3175fdc79c07fd9938f5634fa76cab7ef9 100644 --- a/app/code/Magento/Sales/Block/Adminhtml/Order/View/History.php +++ b/app/code/Magento/Sales/Block/Adminhtml/Order/View/History.php @@ -54,7 +54,7 @@ class History extends \Magento\Backend\Block\Template $button = $this->getLayout()->createBlock( 'Magento\Backend\Block\Widget\Button' )->setData( - ['label' => __('Submit Comment'), 'class' => 'save', 'onclick' => $onclick] + ['label' => __('Submit Comment'), 'class' => 'action-save action-secondary', 'onclick' => $onclick] ); $this->setChild('submit_button', $button); return parent::_prepareLayout(); diff --git a/app/code/Magento/Sales/composer.json b/app/code/Magento/Sales/composer.json index 42218c9ee39e9e58973e017fa00d2f89ad17e6e1..482c2576832b49f12c0e42710c10efb31c419643 100644 --- a/app/code/Magento/Sales/composer.json +++ b/app/code/Magento/Sales/composer.json @@ -3,35 +3,35 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-authorization": "0.74.0-beta5", - "magento/module-payment": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/module-sales-rule": "0.74.0-beta5", - "magento/module-sales-sequence": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-widget": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-tax": "0.74.0-beta5", - "magento/module-gift-message": "0.74.0-beta5", - "magento/module-reports": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-wishlist": "0.74.0-beta5", - "magento/module-email": "0.74.0-beta5", - "magento/module-shipping": "0.74.0-beta5", - "magento/module-config": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", - "magento/module-ui": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-authorization": "0.74.0-beta6", + "magento/module-payment": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/module-sales-rule": "0.74.0-beta6", + "magento/module-sales-sequence": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-widget": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-tax": "0.74.0-beta6", + "magento/module-gift-message": "0.74.0-beta6", + "magento/module-reports": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-wishlist": "0.74.0-beta6", + "magento/module-email": "0.74.0-beta6", + "magento/module-shipping": "0.74.0-beta6", + "magento/module-config": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", + "magento/module-ui": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_new.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_new.xml index 031d2ada6a1493e0fba975ea588642a8f3a6fe8c..a4ee30150b13a4236deca813f902e2be14da5d38 100644 --- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_new.xml +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_new.xml @@ -1,33 +1,35 @@ -<?xml version="1.0"?> -<!-- -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ ---> -<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> - <update handle="sales_order_item_price"/> - <body> - <referenceContainer name="content"> - <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create" name="sales_creditmemo_create"> - <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Form" name="form" template="order/creditmemo/create/form.phtml"> - <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="order/view/info.phtml"/> - <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/> - <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Items" name="order_items" template="order/creditmemo/create/items.phtml"> - <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="order/creditmemo/create/items/renderer/default.phtml"/> - <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/> - <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/> - <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/> - <block class="Magento\Sales\Block\Adminhtml\Order\Totalbar" name="order_totalbar" template="order/totalbar.phtml"/> - <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml"> - <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Adjustments" name="adjustments" template="order/creditmemo/create/totals/adjustments.phtml"/> - <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/> - </block> - <container name="submit_before" label="Submit Before"/> - <container name="submit_after" label="Submit After"/> - </block> - </block> - </block> - </referenceContainer> - </body> -</page> +<?xml version="1.0"?> +<!-- +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> + <update handle="sales_order_item_price"/> + <body> + <referenceContainer name="admin.scope.col.wrap" htmlClass="admin__old" /> <!-- ToDo UI: remove this wrapper with old styles removal. The class name "admin__old" is for tests only, we shouldn't use it in any way --> + + <referenceContainer name="content"> + <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create" name="sales_creditmemo_create"> + <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Form" name="form" template="order/creditmemo/create/form.phtml"> + <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="order/view/info.phtml"/> + <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/> + <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Items" name="order_items" template="order/creditmemo/create/items.phtml"> + <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="order/creditmemo/create/items/renderer/default.phtml"/> + <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/> + <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/> + <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/> + <block class="Magento\Sales\Block\Adminhtml\Order\Totalbar" name="order_totalbar" template="order/totalbar.phtml"/> + <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml"> + <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Adjustments" name="adjustments" template="order/creditmemo/create/totals/adjustments.phtml"/> + <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/> + </block> + <container name="submit_before" label="Submit Before"/> + <container name="submit_after" label="Submit After"/> + </block> + </block> + </block> + </referenceContainer> + </body> +</page> diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_view.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_view.xml index 916950e7e358e286ebf34bbc762fd64024dd2074..7208039683c8dbf06f7a60bfd8db9e311aa8cfed 100644 --- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_view.xml +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_view.xml @@ -8,6 +8,7 @@ <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <update handle="sales_creditmemo_item_price"/> <body> + <referenceContainer name="admin.scope.col.wrap" htmlClass="admin__old" /> <!-- ToDo UI: remove this wrapper with old styles removal. The class name "admin__old" is for tests only, we shouldn't use it in any way --> <referenceContainer name="content"> <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\View" name="sales_creditmemo_view"> <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\View\Form" name="form" template="order/creditmemo/view/form.phtml"> diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_new.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_new.xml index 0f922d55922bd65f188dfa6840fa8db1c78915e6..f31b37ea47d0b5cbe64c8f688ba5501e1f433e5f 100644 --- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_new.xml +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_new.xml @@ -8,6 +8,8 @@ <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <update handle="sales_order_item_price"/> <body> + <referenceContainer name="admin.scope.col.wrap" htmlClass="admin__old" /> <!-- ToDo UI: remove this wrapper with old styles removal. The class name "admin__old" is for tests only, we shouldn't use it in any way --> + <referenceContainer name="content"> <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Create" name="sales_invoice_create"> <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Create\Form" name="form" template="order/invoice/create/form.phtml"> diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_view.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_view.xml index 93552d0ec38418451df0cd93d847c94a81cc1b92..e22eaae5cd8f4092cd672c407b0c521c6b129b3c 100644 --- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_view.xml +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_view.xml @@ -8,6 +8,8 @@ <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <update handle="sales_invoice_item_price"/> <body> + <referenceContainer name="admin.scope.col.wrap" htmlClass="admin__old" /> <!-- ToDo UI: remove this wrapper with old styles removal. The class name "admin__old" is for tests only, we shouldn't use it in any way --> + <referenceContainer name="content"> <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\View" name="sales_invoice_view"> <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\View\Form" name="form" template="order/invoice/view/form.phtml"> diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions_grid_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions_grid_block.xml index cbc91390fda6cd951fa9ebf480a3cd1b40e3c2b2..36e653b728b26412248d6286a1a0c936b4e59918 100644 --- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions_grid_block.xml +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions_grid_block.xml @@ -8,6 +8,8 @@ <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <update handle="sales_transactions_grid_block"/> <body> + <referenceContainer name="admin.scope.col.wrap" htmlClass="admin__old" /> <!-- ToDo UI: remove this wrapper with old styles removal. The class name "admin__old" is for tests only, we shouldn't use it in any way --> + <referenceBlock name="sales.transactions.grid"> <arguments> <argument name="id" xsi:type="string">order_transactions</argument> diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_view.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_view.xml index ed5a0578d7f292c37160a53a417aa5136dce7edb..19260c6cf0849dd9c89287a9291eed94c459d08a 100644 --- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_view.xml +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_view.xml @@ -15,6 +15,8 @@ </head> <update handle="sales_order_item_price"/> <body> + <referenceContainer name="admin.scope.col.wrap" htmlClass="admin__old" /> <!-- ToDo UI: remove this wrapper with old styles removal. The class name "admin__old" is for tests only, we shouldn't use it in any way --> + <referenceContainer name="content"> <block class="Magento\Sales\Block\Adminhtml\Order\View" name="sales_order_edit"/> </referenceContainer> diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_view.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_view.xml index aed08edb19e608d84b4a2397972d694dd6473754..0f7144004b45285aa108bfc37999b6596e48240f 100644 --- a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_view.xml +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_view.xml @@ -8,6 +8,8 @@ <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <update handle="sales_transaction_child_block"/> <body> + <referenceContainer name="admin.scope.col.wrap" htmlClass="admin__old" /> <!-- ToDo UI: remove this wrapper with old styles removal. The class name "admin__old" is for tests only, we shouldn't use it in any way --> + <referenceContainer name="content"> <block class="Magento\Sales\Block\Adminhtml\Transactions\Detail" name="sales_transactions.detail" template="transactions/detail.phtml"> <block class="Magento\Sales\Block\Adminhtml\Transactions\Detail\Grid" name="sales_transactions.detail.grid" as="detail_grid"/> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/items/column/name.phtml b/app/code/Magento/Sales/view/adminhtml/templates/items/column/name.phtml index 410e44f5977e65522e61d063142f0db15a51390e..d8e8c8eda42623412337857b7d75163a62aa8027 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/items/column/name.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/items/column/name.phtml @@ -14,33 +14,38 @@ ?> <?php if ($_item = $block->getItem()): ?> - <div id="order_item_<?php echo $_item->getId() ?>_title" class="product-title"><?php echo $block->escapeHtml($_item->getName()) ?></div> - <strong><?php echo __('SKU') ?>:</strong> <?php echo implode('<br />', $this->helper('Magento\Catalog\Helper\Data')->splitSku($block->escapeHtml($block->getSku()))); ?> - <?php if ($block->getOrderOptions()): ?> - <dl class="item-options"> - <?php foreach ($block->getOrderOptions() as $_option): ?> - <dt><?php echo $_option['label'] ?></dt> - <dd> - <?php if (isset($_option['custom_view']) && $_option['custom_view']): ?> - <?php echo $block->getCustomizedOptionValue($_option); ?> - <?php else: ?> - <?php $_option = $block->getFormattedOption($_option['value']); ?> - <?php echo $_option['value']; ?><?php if (isset($_option['remainder']) && $_option['remainder']): ?><span id="<?php echo $_dots = 'dots' . uniqid()?>"> ...</span><span id="<?php echo $_id = 'id' . uniqid()?>"><?php echo $_option['remainder'] ?></span> - <script> -require(['prototype'], function(){ + <div id="order_item_<?php echo $_item->getId() ?>_title" + class="product-title"> + <?php echo $block->escapeHtml($_item->getName()) ?> + </div> - $('<?php echo $_id ?>').hide(); - $('<?php echo $_id ?>').up().observe('mouseover', function(){$('<?php echo $_id ?>').show();}); - $('<?php echo $_id ?>').up().observe('mouseover', function(){$('<?php echo $_dots?>').hide();}); - $('<?php echo $_id ?>').up().observe('mouseout', function(){$('<?php echo $_id ?>').hide();}); - $('<?php echo $_id ?>').up().observe('mouseout', function(){$('<?php echo $_dots ?>').show();}); + <div class="product-sku-block"> + <span><?php echo __('SKU') ?>:</span> <?php echo implode('<br />', $this->helper('Magento\Catalog\Helper\Data')->splitSku($block->escapeHtml($block->getSku()))); ?> + </div> -}); -</script> - <?php endif; ?> - <?php endif; ?> - </dd> - <?php endforeach; ?> + <?php if ($block->getOrderOptions()): ?> + <dl class="item-options"> + <?php foreach ($block->getOrderOptions() as $_option): ?> + <dt><?php echo $_option['label'] ?>:</dt> + <dd> + <?php if (isset($_option['custom_view']) && $_option['custom_view']): ?> + <?php echo $block->getCustomizedOptionValue($_option); ?> + <?php else: ?> + <?php $_option = $block->getFormattedOption($_option['value']); ?> + <?php echo $_option['value']; ?><?php if (isset($_option['remainder']) && $_option['remainder']): ?><span id="<?php echo $_dots = 'dots' . uniqid()?>"> ...</span><span id="<?php echo $_id = 'id' . uniqid()?>"><?php echo $_option['remainder'] ?></span> + <script> + require(['prototype'], function() { + $('<?php echo $_id ?>').hide(); + $('<?php echo $_id ?>').up().observe('mouseover', function(){$('<?php echo $_id ?>').show();}); + $('<?php echo $_id ?>').up().observe('mouseover', function(){$('<?php echo $_dots?>').hide();}); + $('<?php echo $_id ?>').up().observe('mouseout', function(){$('<?php echo $_id ?>').hide();}); + $('<?php echo $_id ?>').up().observe('mouseout', function(){$('<?php echo $_dots ?>').show();}); + }); + </script> + <?php endif; ?> + <?php endif; ?> + </dd> + <?php endforeach; ?> </dl> <?php endif; ?> <?php echo $block->escapeHtml($_item->getDescription()) ?> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/items/column/qty.phtml b/app/code/Magento/Sales/view/adminhtml/templates/items/column/qty.phtml index 91e20c1f3658451d6d43cfc54f6b657c69526e2d..46b39dc3a78af52bbe12142c47d4876c312e982a 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/items/column/qty.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/items/column/qty.phtml @@ -8,34 +8,39 @@ ?> <?php if ($_item = $block->getItem()): ?> -<table cellspacing="0" class="qty-table"> +<table class="data-table qty-table"> <tr> - <td><?php echo __('Ordered') ?></td> - <td><strong><?php echo $_item->getQtyOrdered()*1 ?></strong></td> + <th><?php echo __('Ordered') ?></th> + <td><?php echo $_item->getQtyOrdered()*1 ?></td> </tr> + <?php if ((float) $_item->getQtyInvoiced()): ?> - <tr> - <td><?php echo __('Invoiced') ?></td> - <td><strong><?php echo $_item->getQtyInvoiced()*1 ?></strong></td> - </tr> + <tr> + <th><?php echo __('Invoiced') ?></th> + <td><?php echo $_item->getQtyInvoiced()*1 ?></td> + </tr> <?php endif; ?> + <?php if ((float) $_item->getQtyShipped()): ?> - <tr> - <td><?php echo __('Shipped') ?></td> - <td><strong><?php echo $_item->getQtyShipped()*1 ?></strong></td> - </tr> + <tr> + <th><?php echo __('Shipped') ?></th> + <td><?php echo $_item->getQtyShipped()*1 ?></td> + </tr> <?php endif; ?> + <?php if ((float) $_item->getQtyRefunded()): ?> - <tr> - <td><?php echo __('Refunded') ?></td> - <td><strong><?php echo $_item->getQtyRefunded()*1 ?></strong></td> - </tr> + <tr> + <th><?php echo __('Refunded') ?></th> + <td><?php echo $_item->getQtyRefunded()*1 ?></td> + </tr> <?php endif; ?> + <?php if ((float) $_item->getQtyCanceled()): ?> - <tr> - <td><?php echo __('Canceled') ?></td> - <td><strong><?php echo $_item->getQtyCanceled()*1 ?></strong></td> - </tr> + <tr> + <th><?php echo __('Canceled') ?></th> + <td><?php echo $_item->getQtyCanceled()*1 ?></td> + </tr> <?php endif; ?> + </table> <?php endif; ?> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/comments/view.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/comments/view.phtml index cbe3b6f40e5b08784d20e03f978f0940d9ee0ddc..096b7098612358a568c5d5feba5022f428dfa7db 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/comments/view.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/comments/view.phtml @@ -8,38 +8,62 @@ ?> <?php if ($_entity = $block->getEntity()): ?> -<div id="comments_block"> - <div class="field-row"> - <label class="normal" for="history_comment"><?php echo __('Comment Text') ?></label> - <textarea name="comment[comment]" rows="3" cols="5" id="history_comment"></textarea> - </div> - <div class="clearfix"> - <div class="actions"> - <?php echo $block->getChildHtml('submit_button') ?> +<div id="comments_block" class="edit-order-comments"> + <div class="order-history-block"> + <div class="admin__field field-row"> + <label class="admin__field-label" + for="history_comment"><?php echo __('Comment Text') ?></label> + <textarea name="comment[comment]" + class="admin__control-textarea" + rows="3" + cols="5" + id="history_comment"></textarea> </div> - <div class="order-history-comments-options"> - <?php if ($block->canSendCommentEmail()): ?> - <input name="comment[is_customer_notified]" type="checkbox" id="history_notify" value="1" /><label class="normal" for="history_notify"><?php echo __('Notify Customer by Email') ?></label><br /> - <?php endif; ?> - <input name="comment[is_visible_on_front]" type="checkbox" id="history_visible" value="1" /><label class="normal" for="history_visible"> <?php echo __('Visible on Frontend') ?></label> + <div class="admin__field"> + <div class="order-history-comments-options"> + <?php if ($block->canSendCommentEmail()): ?> + <div class="admin__field admin__field-option"> + <input name="comment[is_customer_notified]" + type="checkbox" + class="admin__control-checkbox" + id="history_notify" + value="1" /> + <label class="admin__field-label" + for="history_notify"><?php echo __('Notify Customer by Email') ?></label> + </div> + <?php endif; ?> + <div class="admin__field admin__field-option"> + <input name="comment[is_visible_on_front]" + type="checkbox" + id="history_visible" + class="admin__control-checkbox" + value="1" /> + <label class="admin__field-label" + for="history_visible"> <?php echo __('Visible on Frontend') ?></label> + </div> + </div> + <div class="order-history-comments-actions"> + <?php echo $block->getChildHtml('submit_button') ?> + </div> </div> </div> + <ul class="note-list"> - <?php foreach ($_entity->getCommentsCollection(true) as $_comment): ?> - <li> - <span class="note-list-date"><?php echo $block->formatDate($_comment->getCreatedAtDate(), \IntlDateFormatter::MEDIUM) ?></span> - <span class="note-list-time"><?php echo $block->formatTime($_comment->getCreatedAtDate(), \IntlDateFormatter::MEDIUM) ?></span> - <span class="note-list-customer"> - <?php echo __('Customer') ?> - <?php if ($_comment->getIsCustomerNotified()): ?> - <span class="note-list-customer-notified"><?php echo __('Notified') ?></span> - <?php else: ?> - <span class="note-list-customer-not-notified"><?php echo __('Not Notified') ?></span> - <?php endif; ?> - </span> - <div class="note-list-comment"><?php echo $block->escapeHtml($_comment->getComment(), ['b', 'br', 'strong', 'i', 'u']) ?></div> - </li> - <?php endforeach; ?> + <?php foreach ($_entity->getCommentsCollection(true) as $_comment): ?> + <li> + <span class="note-list-date"><?php echo $block->formatDate($_comment->getCreatedAtDate(), \IntlDateFormatter::MEDIUM) ?></span> + <span class="note-list-time"><?php echo $block->formatTime($_comment->getCreatedAtDate(), \IntlDateFormatter::MEDIUM) ?></span> + <span class="note-list-customer"> + <?php echo __('Customer') ?> + <?php if ($_comment->getIsCustomerNotified()): ?> + <span class="note-list-customer-notified"><?php echo __('Notified') ?></span> + <?php else: ?> + <span class="note-list-customer-not-notified"><?php echo __('Not Notified') ?></span> + <?php endif; ?> + </span> + <div class="note-list-comment"><?php echo $block->escapeHtml($_comment->getComment(), ['b', 'br', 'strong', 'i', 'u']) ?></div> + </li> + <?php endforeach; ?> </ul> </div> <script> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/create/abstract.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/create/abstract.phtml index 956ca1eedf569a14dca9e099c7ca15f98e6e6eb2..4364258410ba46e1083242b1ac611ba6f053734b 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/create/abstract.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/create/abstract.phtml @@ -8,8 +8,8 @@ ?> -<div class="admin__fieldset-wrapper-title"> - <strong><?php echo $block->getHeaderText() ?></strong> +<div class="admin__page-section-title"> + <span class="title"><?php echo $block->getHeaderText() ?></span> <?php if($block->getButtonsHtml()): ?> <div class="actions"><?php echo $block->getButtonsHtml() ?></div> <?php endif; ?> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/create/data.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/create/data.phtml index d166ab4edac32983b6d5f784ede2228b21e362c1..7ba8e8a79394a26020ad406ff7b7ca287cb53b4a 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/create/data.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/create/data.phtml @@ -14,82 +14,76 @@ }); </script> <div class="order-details<?php if ($block->getCustomerId()): ?> order-details-existing-customer<?php endif; ?>"> - <div class="order-details-inner"> - <div id="order-additional_area" style="display: none" class="admin__fieldset-wrapper order-additional-area"> - <?php echo $block->getChildHtml('additional_area') ?> - </div> - <div id="order-search" style="display: none" class="admin__fieldset-wrapper order-search-items"> - <?php echo $block->getChildHtml('search') ?> - </div> + <div id="order-additional_area" style="display: none" class="admin__page-section order-additional-area"> + <?php echo $block->getChildHtml('additional_area') ?> + </div> - <div id="order-items" class="admin__fieldset-wrapper order-items" data-mage-init='{"loader": {}}'> - <?php echo $block->getChildHtml('items') ?> - </div> + <div id="order-search" style="display: none" class="admin__page-section order-search-items"> + <?php echo $block->getChildHtml('search') ?> + </div> - <div id="order-errors" class="order-errors"><?php echo $block->getChildHtml('errors') ?></div> + <section id="order-items" class="admin__page-section order-items" data-mage-init='{"loader": {}}'> + <?php echo $block->getChildHtml('items') ?> + </section> - <div id="order-form_account" class="admin__fieldset-wrapper order-account-information"> - <?php echo $block->getChildHtml('form_account') ?> - </div> + <div id="order-errors" class="order-errors"><?php echo $block->getChildHtml('errors') ?></div> - <div id="order-addresses" class="admin__fieldset-wrapper order-addresses"> - <div class="admin__fieldset-wrapper-title"> - <strong class="title"><?php echo __('Address Information') ?></strong> + <section id="order-form_account" class="admin__page-section order-account-information"> + <?php echo $block->getChildHtml('form_account') ?> + </section> + + <section id="order-addresses" class="admin__page-section order-addresses"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Address Information') ?></span> + </div> + <div class="admin__page-section-content"> + <div id="order-billing_address" class="admin__page-section-item order-billing-address"> + <?php echo $block->getChildHtml('billing_address') ?> </div> - <div class="admin__fieldset-wrapper-content"> - <div id="order-billing_address" class="order-billing-address"> - <?php echo $block->getChildHtml('billing_address') ?> - </div> - <div id="order-shipping_address" class="order-shipping-address"> - <?php echo $block->getChildHtml('shipping_address') ?> - </div> + <div id="order-shipping_address" class="admin__page-section-item order-shipping-address"> + <?php echo $block->getChildHtml('shipping_address') ?> </div> </div> + </section> - <div id="order-methods" class="admin__fieldset-wrapper order-methods"> - <div class="admin__fieldset-wrapper-title"> - <strong class="title"><?php echo __('Payment & Shipping Information') ?></strong> + <section id="order-methods" class="admin__page-section order-methods"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Payment & Shipping Information') ?></span> + </div> + <div class="admin__page-section-content"> + <div id="order-billing_method" class="admin__page-section-item order-billing-method"> + <?php echo $block->getChildHtml('billing_method') ?> </div> - <div class="admin__fieldset-wrapper-content"> - <div id="order-billing_method" class="order-billing-method"> - <?php echo $block->getChildHtml('billing_method') ?> - </div> - <div id="order-shipping_method" class="order-shipping-method"> - <?php echo $block->getChildHtml('shipping_method') ?> - </div> + <div id="order-shipping_method" class="admin__page-section-item order-shipping-method"> + <?php echo $block->getChildHtml('shipping_method') ?> </div> </div> + </section> - <?php if ($block->getChildBlock('card_validation')): ?> - <div id="order-card_validation" class="admin__fieldset-wrapper order-card-validation"> - <?php echo $block->getChildHtml('card_validation') ?> - </div> - <?php endif; ?> + <?php if ($block->getChildBlock('card_validation')): ?> + <section id="order-card_validation" class="admin__page-section order-card-validation"> + <?php echo $block->getChildHtml('card_validation') ?> + </section> + <?php endif; ?> - <?php echo $block->getChildHtml('gift_options') ?> + <?php echo $block->getChildHtml('gift_options') ?> - <div class="admin__fieldset-wrapper order-summary"> - <div class="admin__fieldset-wrapper-title"> - <strong class="title"><?php echo __('Order Total') ?></strong> - </div> - <div class="admin__fieldset-wrapper-content"> - <div class="order-history"> - <fieldset class="admin__fieldset" id="order-comment"> - <legend class="admin__legend"><span><?php echo __('Order History') ?></span></legend> - <br> - <?php echo $block->getChildHtml('comment') ?> - </fieldset> - </div> - <div class="order-totals"> - <fieldset id="order-totals" class="order-totals-content admin__fieldset"> - <?php echo $block->getChildHtml('totals') ?> - </fieldset> - </div> - </div> + <section class="admin__page-section order-summary"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Order Total') ?></span> </div> - - </div> + <div class="admin__page-section-content"> + <fieldset class="admin__fieldset order-history" id="order-comment"> + <legend class="admin__legend"><span><?php echo __('Order History') ?></span></legend> + <br> + <?php echo $block->getChildHtml('comment') ?> + </fieldset> + <fieldset id="order-totals" class="admin__fieldset order-totals"> + <?php echo $block->getChildHtml('totals') ?> + </fieldset> + </div> + </section> </div> <?php if ($block->getCustomerId()): ?> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/create/form/account.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/create/form/account.phtml index 23f4f8379ceaf37ae403c6e73ac3ea205f88398e..8fa45617a3a04a5de8cd988582c19efbf43dceda 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/create/form/account.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/create/form/account.phtml @@ -5,12 +5,11 @@ */ ?> -<div class="admin__fieldset-wrapper-title <?php echo $block->getHeaderCssClass() ?>"> +<div class="admin__page-section-title <?php echo $block->getHeaderCssClass() ?>"> <span class="title"><?php echo $block->getHeaderText() ?></span> <div class="actions"></div> </div> - -<div id="customer_account_fieds" class="admin__fieldset-wrapper-content"> +<div id="customer_account_fieds" class="admin__page-section-content"> <?php echo $block->getForm()->getHtml() ?> </div> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/create/items.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/create/items.phtml index e2b9bd096a03c7f5f6c414b8cc112977f852bc1f..bb7e4b3597c6ee7c9162666bc1dbf411155a7ee7 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/create/items.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/create/items.phtml @@ -8,7 +8,7 @@ ?> -<div class="admin__fieldset-wrapper-title"> +<div class="admin__page-section-title"> <strong class="title"><?php echo $block->getHeaderText() ?></strong> <div class="actions"> <?php echo $block->getButtonsHtml() ?> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/create/items/grid.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/create/items/grid.phtml index d6c4a2dd5a591b2325af448049f8087cb8653bd3..aaf605a22ce9a659942499c8081832f5b26e92d1 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/create/items/grid.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/create/items/grid.phtml @@ -16,7 +16,7 @@ <?php $_items = $block->getItems() ?> <?php if (empty($_items)): ?> <div class="grid" id="order-items_grid"> - <table class="data-table table-info order-tables"> + <table class="data-table admin__table-primary order-tables"> <thead> <tr class="headings"> <th class="col-product"><span><?php echo __('Product') ?></span></th> @@ -40,11 +40,11 @@ <div class="grid" id="order-items_grid"> <div class="hor-scroll"> <?php if (count($_items)>10): ?> - <div class="actions update"> - <?php echo $block->getButtonHtml(__('Update Items and Qty\'s'), 'order.itemsUpdate()'); ?> + <div class="actions update actions-update"> + <?php echo $block->getButtonHtml(__('Update Items and Qty\'s'), 'order.itemsUpdate()', 'action-secondary'); ?> </div> <?php endif; ?> - <table class="data-table table-info order-tables"> + <table class="data-table admin__table-primary order-tables"> <thead> <tr class="headings"> <th class="col-product"><span><?php echo __('Product') ?></span></th> @@ -75,8 +75,8 @@ <tr> <td class="col-product"> <span id="order_item_<?php echo $_item->getId() ?>_title"><?php echo $block->escapeHtml($_item->getName()) ?></span> - <div> - <strong><?php echo __('SKU') ?>:</strong> + <div class="product-sku-block"> + <span><?php echo __('SKU') ?>:</span> <?php echo implode('<br />', $this->helper('Magento\Catalog\Helper\Data')->splitSku($block->escapeHtml($_item->getSku()))); ?> </div> <div class="product-configure-block"> @@ -140,7 +140,7 @@ </td> <td class="col-actions last"> <select class="admin__control-select" name="item[<?php echo $_item->getId() ?>][action]"> - <option value=""></option> + <option value=""><?php echo __('Please select') ?></option> <option value="remove"><?php echo __('Remove') ?></option> <?php if ($block->getCustomerId() && $block->getMoveToCustomerStorage()): ?> <option value="cart"><?php echo __('Move to Shopping Cart') ?></option> @@ -170,7 +170,7 @@ <?php endforeach; ?> <?php if ($hasMessageError):?> - <tr class="col-messages-error"> + <tr class="row-messages-error"> <td colspan="100"> <!-- ToDo UI: remove the 100 --> <?php foreach ($_item->getMessage(false) as $message): if (empty($message)) { diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/create/shipping/method/form.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/create/shipping/method/form.phtml index 7ccbfbb6bd3ec7da874f9ed621c5a736d1cdc132..f1e4430c69ff5937b7a0028d063594639ee27c66 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/create/shipping/method/form.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/create/shipping/method/form.phtml @@ -52,7 +52,7 @@ </dl> </div> <?php if ($_rate = $block->getActiveMethodRate()): ?> - <div id="order-shipping-method-info"> + <div id="order-shipping-method-info" class="order-shipping-method-info"> <dl class="admin__order-shipment-methods"> <dt class="admin__order-shipment-methods-title"> <?php echo $block->escapeHtml($block->getCarrierName($_rate->getCarrier())) ?> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/create/sidebar/items.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/create/sidebar/items.phtml index c3eaf03a4c25526c7211116d86654dcb6e85a935..9ae2ac048ef6aa9e6df1ffa0b6b1f73d893fa9bc 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/create/sidebar/items.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/create/sidebar/items.phtml @@ -9,7 +9,7 @@ ?> <?php /* @var $block \Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\AbstractSidebar */ ?> <div class="create-order-sidebar-block" id="sidebar_data_<?php echo $block->getDataId() ?>"> - <div class="head"> + <div class="head sidebar-title-block"> <a href="#" class="action-refresh" title="<?php echo $block->escapeHtml(__('Refresh')); ?>" onclick="order.loadArea('sidebar_<?php echo $block->getDataId() ?>', 'sidebar_data_<?php echo $block->getDataId() ?>');return false;"> @@ -23,7 +23,7 @@ <div class="content"> <div class="auto-scroll"> <?php if ($block->getItemCount()): ?> - <table class="table-info"> + <table class="admin__table-primary"> <thead> <tr> <th class="col-item"><?php echo __('Item') ?></th> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/form.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/form.phtml index b876ba145accb78c81f8140980e95b76bfb8f1e7..f13fd7a04b50b05f720db68d44501be2c189c928 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/form.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/form.phtml @@ -13,58 +13,60 @@ <?php echo $block->getChildHtml('order_info') ?> - <?php if (!$_order->getIsVirtual()): ?> - <div class="clearfix"> - <?php endif; ?> - + <section class="admin__page-section"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Payment & Shipping Method') ?></span> + </div> + <div class="admin__page-section-content"> <?php if (!$_order->getIsVirtual()): ?> - <div class="order-payment-method"> + <div class="admin__page-section-item order-payment-method"> <?php else: ?> - <div class="order-payment-method order-payment-method-virtual"> + <div class="admin__page-section-item order-payment-method order-payment-method-virtual"> <?php endif; ?> <?php /* Billing Address */ ?> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> - <span class="title"><?php echo __('Payment Information') ?></span> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Payment Information') ?></span> + </div> + <div class="admin__page-section-item-content"> + <div class="order-payment-method-title"><?php echo $block->getChildHtml('order_payment') ?></div> + <div class="order-payment-currency"> + <?php echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?> + </div> + <div class="order-payment-additional"> + <?php echo $block->getChildHtml('order_payment_additional'); ?> </div> - <div><?php echo $block->getChildHtml('order_payment') ?></div> - <div class="order-payment-currency"><?php echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?></div> - <div class="order-payment-additional"><?php echo $block->getChildHtml('order_payment_additional'); ?></div> </div> - </div> <?php if (!$_order->getIsVirtual()): ?> - <div class="order-shipping-address"> + <div class="admin__page-section-item order-shipping-address"> <?php /* Shipping Address */ ?> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> - <span class="title"><?php echo __('Shipping Information') ?></span> - </div> - <div class="shipping-description-wrapper"> - <div class="shipping-description-title"><?php echo $block->escapeHtml($_order->getShippingDescription()) ?></div> - <div class="shipping-description-content"> - <?php echo __('Total Shipping Charges'); ?>: + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Shipping Information') ?></span> + </div> + <div class="admin__page-section-item-content shipping-description-wrapper"> + <div class="shipping-description-title"><?php echo $block->escapeHtml($_order->getShippingDescription()) ?></div> + <div class="shipping-description-content"> + <?php echo __('Total Shipping Charges'); ?>: - <?php if ($this->helper('Magento\Tax\Helper\Data')->displaySalesPriceInclTax($block->getSource()->getStoreId())): ?> - <?php $_excl = $block->displayShippingPriceInclTax($_order); ?> - <?php else: ?> - <?php $_excl = $block->displayPriceAttribute('shipping_amount', false, ' '); ?> - <?php endif; ?> - <?php $_incl = $block->displayShippingPriceInclTax($_order); ?> + <?php if ($this->helper('Magento\Tax\Helper\Data')->displaySalesPriceInclTax($block->getSource()->getStoreId())): ?> + <?php $_excl = $block->displayShippingPriceInclTax($_order); ?> + <?php else: ?> + <?php $_excl = $block->displayPriceAttribute('shipping_amount', false, ' '); ?> + <?php endif; ?> + <?php $_incl = $block->displayShippingPriceInclTax($_order); ?> - <?php echo $_excl; ?> - <?php if ($this->helper('Magento\Tax\Helper\Data')->displaySalesBothPrices($block->getSource()->getStoreId()) && $_incl != $_excl): ?> - (<?php echo __('Incl. Tax'); ?> <?php echo $_incl; ?>) - <?php endif; ?> - </div> + <?php echo $_excl; ?> + <?php if ($this->helper('Magento\Tax\Helper\Data')->displaySalesBothPrices($block->getSource()->getStoreId()) && $_incl != $_excl): ?> + (<?php echo __('Incl. Tax'); ?> <?php echo $_incl; ?>) + <?php endif; ?> </div> </div> </div> <?php endif; ?> - - </div><?php /* opening div can be in app\code\Magento\Sales\view\adminhtml\order\view\info.phtml or above */?> + </div> + </section> <div id="creditmemo_item_container"> <?php echo $block->getChildHtml('order_items') ?> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/items.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/items.phtml index c09ee04d9435d03df15868073eb92d7e82631786..82770b4f3fa45ba239c13dfb673a1dbb8f5d1bb3 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/items.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/items.phtml @@ -9,14 +9,14 @@ ?> <?php $_items = $block->getCreditmemo()->getAllItems() ?> -<div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> +<section class="admin__page-section"> + <div class="admin__page-section-title"> <span class="title"><?php echo __('Items to Refund') ?></span> </div> <?php if (count($_items)) : ?> <div class="grid"> - <table cellspacing="0" class="data order-tables"> + <table class="data-table admin__table-primary order-creditmemo-tables"> <thead> <tr class="headings"> <th class="col-product"><span><?php echo __('Product') ?></span></th> @@ -61,40 +61,66 @@ <?php echo __('No Items To Refund') ?> </div> <?php endif; ?> -</div> +</section> <?php $orderTotalBar = $block->getChildHtml('order_totalbar'); ?> <?php if (!empty($orderTotalBar)): ?> -<div class="fieldset-wrapper"> +<section class="fieldset-wrapper"> <?php echo $orderTotalBar; ?> -</div> +</section> <?php endif; ?> -<div class="clearfix"> +<section class="admin__page-section"> <input type="hidden" name="creditmemo[do_offline]" id="creditmemo_do_offline" value="0" /> - <div class="order-comments-history"> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"><span class="title"><?php echo __('Credit Memo Comments') ?></span></div> - <fieldset id="history_form"> - <label class="normal" for="creditmemo_comment_text"><?php echo __('Credit Memo Comments') ?></label><br/> - <textarea id="creditmemo_comment_text" name="creditmemo[comment_text]" rows="3" cols="5"><?php echo $block->getCreditmemo()->getCommentText(); ?></textarea> - </fieldset> - </div> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Order Total') ?></span> </div> - <div class="order-totals creditmemo-totals"> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"><span class="title"><?php echo __('Refund Totals') ?></span></div> + <div class="admin__page-section-content"> + <div class="admin__page-section-item order-comments-history"> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Credit Memo Comments') ?></span> + </div> + <div id="history_form" class="admin__fieldset-wrapper-content"> + <div class="admin__field"> + <label class="normal admin__field-label" + for="creditmemo_comment_text"><?php echo __('Comment Text') ?></label> + <div class="admin__field-control"> + <textarea id="creditmemo_comment_text" + class="admin__control-textarea" + name="creditmemo[comment_text]" + rows="3" + cols="5"><?php echo $block->getCreditmemo()->getCommentText(); ?></textarea> + </div> + </div> + </div> + </div> + <div class="admin__page-section-item order-totals creditmemo-totals"> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Refund Totals') ?></span> + </div> <?php echo $block->getChildHtml('creditmemo_totals') ?> <div class="order-totals-actions"> - <div class="field choice field-append-comments"> - <input id="notify_customer" name="creditmemo[comment_customer_notify]" value="1" type="checkbox" /> - <label for="notify_customer"><span><?php echo __('Append Comments') ?></span></label> + <div class="field choice admin__field admin__field-option field-append-comments"> + <input id="notify_customer" + class="admin__control-checkbox" + name="creditmemo[comment_customer_notify]" + value="1" + type="checkbox" /> + <label for="notify_customer" class="admin__field-label"> + <span><?php echo __('Append Comments') ?></span> + </label> </div> <?php if ($block->canSendCreditmemoEmail()):?> - <div class="field choice field-email-copy"> - <input id="send_email" name="creditmemo[send_email]" value="1" type="checkbox" /> - <label for="send_email"><span><?php echo __('Email Copy of Credit Memo') ?></span></label> + <div class="field choice admin__field admin__field-option field-email-copy"> + <input id="send_email" + class="admin__control-checkbox" + name="creditmemo[send_email]" + value="1" + type="checkbox" /> + <label for="send_email" class="admin__field-label"> + <span><?php echo __('Email Copy of Credit Memo') ?></span> + </label> </div> <?php endif; ?> <?php echo $block->getChildHtml('submit_before') ?> @@ -106,7 +132,7 @@ </div> </div> </div> -</div> +</section> <script> require(['jquery', 'prototype'], function(jQuery){ diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/items/renderer/default.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/items/renderer/default.phtml index 76ec308d8b6696ecb466071cb290bd23d4a7fd3f..c238f2478bffae8180f6391914320fdacdee4db6 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/items/renderer/default.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/items/renderer/default.phtml @@ -19,13 +19,20 @@ <?php if ($block->canParentReturnToStock($_item)) : ?> <td class="col-return-to-stock"> <?php if ($block->canReturnItemToStock($_item)) : ?> - <input type="checkbox" name="creditmemo[items][<?php echo $_item->getOrderItemId() ?>][back_to_stock]" value="1"<?php if ($_item->getBackToStock()):?> checked<?php endif;?>/> + <input type="checkbox" + class="admin__control-checkbox" + name="creditmemo[items][<?php echo $_item->getOrderItemId() ?>][back_to_stock]" + value="1"<?php if ($_item->getBackToStock()):?> checked<?php endif;?>/> + <label class="admin__field-label"></label> <?php endif; ?> </td> <?php endif; ?> - <td class="col-refund"> + <td class="col-refund col-qty"> <?php if ($block->canEditQty()) : ?> - <input type="text" class="input-text qty-input" name="creditmemo[items][<?php echo $_item->getOrderItemId() ?>][qty]" value="<?php echo $_item->getQty()*1 ?>"/> + <input type="text" + class="input-text admin__control-text qty-input" + name="creditmemo[items][<?php echo $_item->getOrderItemId() ?>][qty]" + value="<?php echo $_item->getQty()*1 ?>"/> <?php else : ?> <?php echo $_item->getQty()*1 ?> <?php endif; ?> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/totals/adjustments.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/totals/adjustments.phtml index 4b7f73a40590b4ae166748ce1cb2c756ab0b7467..8ae81b1a6d0c0d5046ea7ff7ea45a1bcec2b9780 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/totals/adjustments.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/create/totals/adjustments.phtml @@ -11,52 +11,69 @@ <?php if ($_source): ?> <tr> <td class="label"><?php echo $block->getShippingLabel() ?><div id="shipping_amount_adv"></div></td> - <td><input type="text" name="creditmemo[shipping_amount]" value="<?php echo $block->getShippingAmount()?>" class="input-text not-negative-amount" id="shipping_amount" /></td> + <td> + <input type="text" + name="creditmemo[shipping_amount]" + value="<?php echo $block->getShippingAmount()?>" + class="input-text admin__control-text not-negative-amount" + id="shipping_amount" /> + </td> </tr> <tr> <td class="label"><?php echo __('Adjustment Refund') ?><div id="adjustment_positive_adv"></div></td> - <td><input type="text" name="creditmemo[adjustment_positive]" value="<?php echo $_source->getBaseAdjustmentFeePositive()*1 ?>" class="input-text not-negative-amount" id="adjustment_positive" /></td> + <td> + <input type="text" + name="creditmemo[adjustment_positive]" + value="<?php echo $_source->getBaseAdjustmentFeePositive()*1 ?>" + class="input-text admin__control-text not-negative-amount" + id="adjustment_positive" /> + </td> </tr> <tr> <td class="label"><?php echo __('Adjustment Fee') ?><div id="adjustment_negative_adv"></div></td> - <td><input type="text" name="creditmemo[adjustment_negative]" value="<?php echo $_source->getBaseAdjustmentFeeNegative()*1 ?>" class="input-text not-negative-amount" id="adjustment_negative"/> - <script> -require(['prototype'], function(){ + <td> + <input type="text" + name="creditmemo[adjustment_negative]" + value="<?php echo $_source->getBaseAdjustmentFeeNegative()*1 ?>" + class="input-text admin__control-text not-negative-amount" + id="adjustment_negative"/> + <script> + require(['prototype'], function(){ -//<![CDATA[ -Validation.addAllThese([ - ['not-negative-amount', '<?php echo __('Please enter a positive number in this field.') ?>', function(v) { - if(v.length) - return /^\s*\d+([,.]\d+)*\s*%?\s*$/.test(v); - else - return true; - }] -]); + //<![CDATA[ + Validation.addAllThese([ + ['not-negative-amount', '<?php echo __('Please enter a positive number in this field.') ?>', function(v) { + if(v.length) + return /^\s*\d+([,.]\d+)*\s*%?\s*$/.test(v); + else + return true; + }] + ]); -if ($('shipping_amount')) { - $('shipping_amount').advaiceContainer = $('shipping_amount_adv'); - unblockSubmit('shipping_amount'); -} -if ($('adjustment_positive')) { - $('adjustment_positive').advaiceContainer = $('adjustment_positive_adv'); - unblockSubmit('adjustment_positive'); -} -if ($('adjustment_negative')) { - $('adjustment_negative').advaiceContainer = $('adjustment_negative_adv'); - unblockSubmit('adjustment_negative'); -} + if ($('shipping_amount')) { + $('shipping_amount').advaiceContainer = $('shipping_amount_adv'); + unblockSubmit('shipping_amount'); + } + if ($('adjustment_positive')) { + $('adjustment_positive').advaiceContainer = $('adjustment_positive_adv'); + unblockSubmit('adjustment_positive'); + } + if ($('adjustment_negative')) { + $('adjustment_negative').advaiceContainer = $('adjustment_negative_adv'); + unblockSubmit('adjustment_negative'); + } -function unblockSubmit(id) { - $(id).observe('focus', function(event) { - if ($$('button[class="scalable update-button disabled"]').size() > 0) { - enableElements('submit-button'); - } - }); -} -//]]> + function unblockSubmit(id) { + $(id).observe('focus', function(event) { + if ($$('button[class="scalable update-button disabled"]').size() > 0) { + enableElements('submit-button'); + } + }); + } + //]]> -}); -</script> + }); + </script> </td> </tr> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/view/form.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/view/form.phtml index df2f092e4f8aa839320ce77450ec4fceab97d5e4..ee8ec752df51752961a3b64a2bf415a4a3174ccb 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/view/form.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/view/form.phtml @@ -9,51 +9,56 @@ ?> <?php $_order = $block->getCreditmemo()->getOrder() ?> <?php echo $block->getChildHtml('order_info') ?> -<div class="clearfix"> -<?php if (!$_order->getIsVirtual()): ?> -<div class="order-payment-method"> -<?php else: ?> -<div class="order-payment-method order-payment-method-virtual"> -<?php endif; ?> - <?php /* Billing Address */?> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> - <span class="title"><?php echo __('Payment Information') ?></span> - </div> - <div><?php echo $block->getChildHtml('order_payment') ?></div> - <div class="order-payment-currency"><?php echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?></div> - <div class="order-payment-additional"><?php echo $block->getChildHtml('order_payment_additional'); ?></div> +<section class="admin__page-section"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Payment & Shipping Method') ?></span> </div> -</div> -<?php if (!$_order->getIsVirtual()): ?> -<div class="order-shipping-address"> - <?php /* Shipping Address */ ?> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> - <span class="title"><?php echo __('Shipping Information') ?></span> + <div class="admin__page-section-content"> + + <?php if (!$_order->getIsVirtual()): ?> + <div class="admin__page-section-item order-payment-method"> + <?php else: ?> + <div class="admin__page-section-item order-payment-method order-payment-method-virtual"> + <?php endif; ?> + <?php /* Billing Address */?> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Payment Information') ?></span> + </div> + <div class="admin__page-section-item-content"> + <div><?php echo $block->getChildHtml('order_payment') ?></div> + <div class="order-payment-currency"><?php echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?></div> + <div class="order-payment-additional"><?php echo $block->getChildHtml('order_payment_additional'); ?></div> + </div> </div> - <div class="shipping-description-wrapper"> - <div class="shipping-description-title"><?php echo $block->escapeHtml($_order->getShippingDescription()) ?></div> - <div class="shipping-description-content"> - <?php echo __('Total Shipping Charges'); ?>: - <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingPriceIncludingTax()): ?> - <?php $_excl = $block->displayShippingPriceInclTax($_order); ?> - <?php else: ?> - <?php $_excl = $block->displayPriceAttribute('shipping_amount', false, ' '); ?> - <?php endif; ?> - <?php $_incl = $block->displayShippingPriceInclTax($_order); ?> + <?php if (!$_order->getIsVirtual()): ?> + <div class="admin__page-section-item order-shipping-address"> + <?php /* Shipping Address */ ?> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Shipping Information') ?></span> + </div> + <div class="shipping-description-wrapper admin__page-section-item-content"> + <div class="shipping-description-title"><?php echo $block->escapeHtml($_order->getShippingDescription()) ?></div> + <div class="shipping-description-content"> + <?php echo __('Total Shipping Charges'); ?>: - <?php echo $_excl; ?> - <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?> - (<?php echo __('Incl. Tax'); ?> <?php echo $_incl; ?>) - <?php endif; ?> + <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingPriceIncludingTax()): ?> + <?php $_excl = $block->displayShippingPriceInclTax($_order); ?> + <?php else: ?> + <?php $_excl = $block->displayPriceAttribute('shipping_amount', false, ' '); ?> + <?php endif; ?> + <?php $_incl = $block->displayShippingPriceInclTax($_order); ?> + + <?php echo $_excl; ?> + <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?> + (<?php echo __('Incl. Tax'); ?> <?php echo $_incl; ?>) + <?php endif; ?> + </div> </div> </div> + <?php endif; ?> </div> -</div> -<?php endif; ?> -</div> +</section> <?php $_items = $block->getCreditmemo()->getAllItems() ?> <?php if (count($_items)): ?> @@ -61,24 +66,30 @@ <?php echo $block->getChildHtml('creditmemo_items') ?> </div> <?php else: ?> -<div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> +<section class="admin__page-section"> + <div class="admin__page-section-title"> <span class="title"><?php echo __('Items Refunded') ?></span> </div> - <div class="no-items"><?php echo __('No Items') ?></div> -</div> + <div class="no-items admin__page-section-content"><?php echo __('No Items') ?></div> +</section> <?php endif; ?> -<div class="clearfix"> - <div class="order-comments-history"> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"><span class="title"><?php echo __('Credit Memo History') ?></span></div> - <fieldset><?php echo $block->getChildHtml('order_comments') ?></fieldset> - </div> + +<section class="admin__page-section"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Memo Total') ?></span> </div> - <div class="order-totals"> - <div class="fieldset-wrapper" id="history_form"> - <div class="fieldset-wrapper-title"><span class="title"><?php echo __('Credit Memo Totals') ?></span></div> - <div><?php echo $block->getChildHtml('creditmemo_totals') ?></div> + <div class="admin__page-section-content"> + <div class="admin__page-section-item order-comments-history"> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Credit Memo History') ?></span> + </div> + <div class="admin__page-section-item-content"><?php echo $block->getChildHtml('order_comments') ?></div> + </div> + <div class="admin__page-section-item order-totals" id="history_form"> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Credit Memo Totals') ?></span> + </div> + <div class="admin__page-section-content"><?php echo $block->getChildHtml('creditmemo_totals') ?></div> </div> </div> -</div> +</section> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/view/items.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/view/items.phtml index a75e830aaacb88ff6ec19021c620544ef227bac2..3618871f0c7cac6da817fc5fe72ca8073cb97777 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/view/items.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/creditmemo/view/items.phtml @@ -8,12 +8,12 @@ ?> <?php $_items = $block->getCreditmemo()->getAllItems() ?> -<div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> +<div class="admin__page-section"> + <div class="admin__page-section-title"> <span class="title"><?php echo __('Items Refunded') ?></span> </div> - <div class="grid"> - <table cellspacing="0" class="data"> + <div class="admin__page-section-content"> + <table class="data-table admin__table-primary order-creditmemo-tables"> <thead> <tr class="headings"> <th class="col-product"><span><?php echo __('Product') ?></span></th> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/giftoptions.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/giftoptions.phtml index c837566257032cc8cd89c1c7e5be2e0a8d0d4edc..bab344f25065b2bfba1be65196fa2a28068d6044 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/giftoptions.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/giftoptions.phtml @@ -8,8 +8,8 @@ ?> <?php if ($block->getChildHtml()): ?> -<div class="admin__fieldset-wrapper order-gift-options"> - <div class="admin__fieldset-wrapper-title"><strong class="title"><?php echo __('Gift Options') ?></strong></div> +<section class="admin__page-section order-gift-options"> + <div class="admin__page-section-title"><strong class="title"><?php echo __('Gift Options') ?></strong></div> <?php echo $block->getChildHtml() ?> -</div> +</section> <?php endif ?> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/create/form.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/create/form.phtml index ce938f85d2764a1168ee9fb00d92ad9d42a2f84c..b0319ea9791f7b35afe27d1e647e6e9859448e03 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/create/form.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/create/form.phtml @@ -7,68 +7,72 @@ // @codingStandardsIgnoreFile ?> -<form id="edit_form" method="post" action="<?php echo $block->getSaveUrl() ?>"> +<form id="edit_form" class="order-invoice-edit" method="post" action="<?php echo $block->getSaveUrl() ?>"> <?php echo $block->getBlockHtml('formkey')?> <?php $_order = $block->getInvoice()->getOrder() ?> <?php echo $block->getChildHtml('order_info') ?> - <?php if (!$_order->getIsVirtual()): ?> - <div class="clearfix"> - <?php endif; ?> - <div class="order-payment-method<?php if ($_order->getIsVirtual()): ?> order-payment-method-virtual<?php endif; ?>"> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> - <span class="title"><?php echo __('Payment Information') ?></span> - </div> - <div><?php echo $block->getChildHtml('order_payment') ?></div> - <div class="order-payment-currency"><?php echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?></div> - <div class="order-payment-additional"><?php echo $block->getChildHtml('order_payment_additional'); ?></div> + <section class="admin__page-section"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Payment & Shipping Method') ?></span> </div> - </div> - <?php if (!$_order->getIsVirtual()): ?> - <div class="order-shipping-address"> - <?php /*Shipping Address */ ?> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> - <span class="title"><?php echo __('Shipping Information') ?></span> + <div class="admin__page-section-content"> + <div class="admin__page-section-item order-payment-method<?php if ($_order->getIsVirtual()): ?> order-payment-method-virtual<?php endif; ?>"> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Payment Information') ?></span> + </div> + <div class="admin__page-section-item-content"> + <div><?php echo $block->getChildHtml('order_payment') ?></div> + <div class="order-payment-currency"><?php echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?></div> + <div class="order-payment-additional"><?php echo $block->getChildHtml('order_payment_additional'); ?></div> + </div> </div> - <div class="shipping-description-wrapper"> - <div class="shipping-description-title"><?php echo $block->escapeHtml($_order->getShippingDescription()) ?></div> - <div class="shipping-description-content"> - <?php echo __('Total Shipping Charges'); ?>: + <?php if (!$_order->getIsVirtual()): ?> + <div class="admin__page-section-item order-shipping-address"> + <?php /*Shipping Address */ ?> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Shipping Information') ?></span> + </div> + <div class="admin__page-section-item-content"> + <div class="shipping-description-wrapper"> + <div class="shipping-description-title"><?php echo $block->escapeHtml($_order->getShippingDescription()) ?></div> + <div class="shipping-description-content"> + <?php echo __('Total Shipping Charges'); ?>: - <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingPriceIncludingTax()): ?> - <?php $_excl = $block->displayShippingPriceInclTax($_order); ?> - <?php else: ?> - <?php $_excl = $block->displayPriceAttribute('shipping_amount', false, ' '); ?> - <?php endif; ?> - <?php $_incl = $block->displayShippingPriceInclTax($_order); ?> + <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingPriceIncludingTax()): ?> + <?php $_excl = $block->displayShippingPriceInclTax($_order); ?> + <?php else: ?> + <?php $_excl = $block->displayPriceAttribute('shipping_amount', false, ' '); ?> + <?php endif; ?> + <?php $_incl = $block->displayShippingPriceInclTax($_order); ?> - <?php echo $_excl; ?> - <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?> - (<?php echo __('Incl. Tax'); ?> <?php echo $_incl; ?>) + <?php echo $_excl; ?> + <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?> + (<?php echo __('Incl. Tax'); ?> <?php echo $_incl; ?>) + <?php endif; ?> + </div> + </div> + <?php if ($block->canCreateShipment() && $block->canShipPartiallyItem()): ?> + <div class="admin__field admin__field-option"> + <input type="checkbox" name="invoice[do_shipment]" id="invoice_do_shipment" value="1" + class="admin__control-checkbox" <?php echo $block->hasInvoiceShipmentTypeMismatch() ? ' disabled="disabled"' : '' ?> /> + <label for="invoice_do_shipment" + class="admin__field-label"><span><?php echo __('Create Shipment') ?></span></label> + </div> + <?php if ($block->hasInvoiceShipmentTypeMismatch()): ?> + <small><?php echo __('Invoice and shipment types do not match for some items on this order. You can create a shipment only after creating the invoice.') ?></small> + <?php endif; ?> <?php endif; ?> + <div id="tracking" style="display:none;"><?php echo $block->getChildHtml('tracking', false) ?></div> </div> </div> - <?php if ($block->canCreateShipment() && $block->canShipPartiallyItem()): ?> - <div> - <label for="invoice_do_shipment" class="normal"><?php echo __('Create Shipment') ?></label> - <input type="checkbox" name="invoice[do_shipment]" id="invoice_do_shipment" value="1" <?php echo $block->hasInvoiceShipmentTypeMismatch() ? ' disabled="disabled"' : '' ?> /> - </div> - <?php if ($block->hasInvoiceShipmentTypeMismatch()): ?> - <small><?php echo __('Invoice and shipment types do not match for some items on this order. You can create a shipment only after creating the invoice.') ?></small> - <?php endif; ?> <?php endif; ?> - <div id="tracking" style="display:none;"><?php echo $block->getChildHtml('tracking', false) ?></div> </div> - </div> - <?php endif; ?> - - </div> + </section> - <div id="invoice_item_container"> + <section id="invoice_item_container"> <?php echo $block->getChildHtml('order_items') ?> - </div> + </section> </form> <script> require(['prototype'], function(){ diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/create/items.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/create/items.phtml index 118eca64172985d63ab5794a01f691cd21ada117..883f04cb7f3eb528cde7db31c8254c1dc197a566 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/create/items.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/create/items.phtml @@ -8,13 +8,13 @@ ?> -<div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> +<section class="admin__page-section"> + <div class="admin__page-section-title"> <?php $_itemsGridLabel = $block->getForcedShipmentCreate() ? 'Items to Invoice and Ship' : 'Items to Invoice'; ?> <span class="title"><?php echo __('%1', $_itemsGridLabel) ?></span> </div> - <div class="grid"> - <table cellspacing="0" class="data"> + <div class="admin__page-section-content grid"> + <table class="data-table admin__table-primary order-invoice-tables"> <thead> <tr class="headings"> <th class="col-product"><span><?php echo __('Product') ?></span></th> @@ -50,45 +50,55 @@ <?php endforeach; ?> </table> </div> -</div> +</section> <?php $orderTotalBar = $block->getChildHtml('order_totalbar'); ?> <?php if (!empty($orderTotalBar)): ?> -<div class="fieldset-wrapper"> +<section class="admin__page-section"> <?php echo $orderTotalBar; ?> -</div> +</section> <?php endif; ?> -<div class="clearfix"> - <div class="order-comments-history"> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> +<section class="admin__page-section"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Order Total') ?></span> + </div> + <div class="admin__page-section-content"> + <div class="admin__page-section-item order-comments-history"> + <div class="admin__page-section-item-title"> <span class="title"><?php echo __('Invoice History') ?></span> </div> - <div id="history_form" class="order-history-form"> - <label class="normal" for="invoice_comment_text"><?php echo __('Invoice Comments') ?></label> - <textarea id="invoice_comment_text" name="invoice[comment_text]" rows="3" cols="5"><?php echo $block->getInvoice()->getCommentText(); ?></textarea> + <div id="history_form" class="admin__page-section-item-content order-history-form"> + <div class="admin__field"> + <label for="invoice_comment_text" class="admin__field-label"> + <span><?php echo __('Invoice Comments') ?></span> + </label> + <div class="admin__field-control"> + <textarea id="invoice_comment_text" name="invoice[comment_text]" class="admin__control-textarea" + rows="3" cols="5"><?php echo $block->getInvoice()->getCommentText(); ?></textarea> + </div> + </div> </div> </div> - </div> - <div class="order-totals"> - <div class="fieldset-wrapper" id="invoice_totals"> - <div class="fieldset-wrapper-title"> + <div id="invoice_totals" class="admin__page-section-item order-totals"> + <div class="admin__page-section-item-title"> <span class="title"><?php echo __('Invoice Totals') ?></span> </div> - <div class="order-totals-actions"> + <div class="admin__page-section-item-content order-totals-actions"> <?php echo $block->getChildHtml('invoice_totals') ?> <?php if ($block->isCaptureAllowed()): ?> <?php if ($block->canCapture()):?> - <div> - <!-- - <label for="invoice_do_capture" class="normal"><?php echo __('Capture Amount') ?></label> - <input type="checkbox" name="invoice[do_capture]" id="invoice_do_capture" value="1" checked/> - --> - <label for="invoice_do_capture" class="normal"><?php echo __('Amount') ?></label> - <select name="invoice[capture_case]"> + <div class="admin__field"> + <?php + /* + <label for="invoice_do_capture" class="normal"><?php echo __('Capture Amount') ?></label> + <input type="checkbox" name="invoice[do_capture]" id="invoice_do_capture" value="1" checked/> + */ + ?> + <label for="invoice_do_capture" class="admin__field-label"><?php echo __('Amount') ?></label> + <select class="admin__control-select" name="invoice[capture_case]"> <option value="online"><?php echo __('Capture Online') ?></option> <option value="offline"><?php echo __('Capture Offline') ?></option> <option value="not_capture"><?php echo __('Not Capture') ?></option> @@ -99,14 +109,16 @@ <div><?php echo __('The invoice will be created offline without the payment gateway.') ?></div> <?php endif?> <?php endif; ?> - <div class="field choice field-append"> - <input id="notify_customer" name="invoice[comment_customer_notify]" value="1" type="checkbox" /> - <label class="normal" for="notify_customer"><?php echo __('Append Comments') ?></label> + <div class="admin__field admin__field-option field-append"> + <input id="notify_customer" name="invoice[comment_customer_notify]" value="1" type="checkbox" + class="admin__control-checkbox" /> + <label class="admin__field-label" for="notify_customer"><?php echo __('Append Comments') ?></label> </div> <?php if ($block->canSendInvoiceEmail()): ?> - <div class="field choice field-email"> - <input id="send_email" name="invoice[send_email]" value="1" type="checkbox" /> - <label class="normal" for="send_email"><?php echo __('Email Copy of Invoice') ?></label> + <div class="admin__field admin__field-option field-email"> + <input id="send_email" name="invoice[send_email]" value="1" type="checkbox" + class="admin__control-checkbox" /> + <label class="admin__field-label" for="send_email"><?php echo __('Email Copy of Invoice') ?></label> </div> <?php endif; ?> <div class="actions"> @@ -115,7 +127,7 @@ </div> </div> </div> -</div> +</section> <script> require(['jquery', 'prototype'], function($){ diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/create/items/renderer/default.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/create/items/renderer/default.phtml index f416f1ba7b5983e955099a45ce5c887a23d5ae2e..45b53a6d05ea0c65132c86050ed7ab03d30dc530 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/create/items/renderer/default.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/create/items/renderer/default.phtml @@ -17,7 +17,9 @@ <td class="col-qty"><?php echo $block->getColumnHtml($_item, 'qty') ?></td> <td class="col-qty-invoice"> <?php if ($block->canEditQty()) : ?> - <input type="text" class="input-text qty-input" name="invoice[items][<?php echo $_item->getOrderItemId() ?>]" value="<?php echo $_item->getQty()*1 ?>"/> + <input type="text" class="input-text admin__control-text qty-input" + name="invoice[items][<?php echo $_item->getOrderItemId() ?>]" + value="<?php echo $_item->getQty()*1 ?>"/> <?php else : ?> <?php echo $_item->getQty()*1 ?> <?php endif; ?> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/view/form.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/view/form.phtml index d1a08dfeb6d6b4e2d6f654caf88e93922064cc2b..cd625596b541da95d9d24de7069c0d33c71117af 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/view/form.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/view/form.phtml @@ -11,84 +11,87 @@ <?php $_order = $_invoice->getOrder() ?> <?php echo $block->getChildHtml('order_info') ?> -<?php /* opening div is in app\code\Magento\Sales\view\adminhtml\order\view\info.phtml */?> - -<?php if (!$_order->getIsVirtual()): ?> -<div class="clearfix"> <?php /* if opening div from app\code\Magento\Sales\view\adminhtml\order\view\info.phtml was closed there */?> -<?php endif; ?> - - <div class="order-payment-method<?php if ($_order->getIsVirtual()): ?> order-payment-method-virtual<?php endif; ?>"> - <?php /*Billing Address */ ?> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> +<section class="admin__page-section order-view-billing-shipping"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Payment & Shipping Method') ?></span> + </div> + <div class="admin__page-section-content"> + <div class="admin__page-section-item order-payment-method<?php if ($_order->getIsVirtual()): ?> order-payment-method-virtual<?php endif; ?> admin__fieldset-wrapper"> + <?php /*Billing Address */ ?> + <div class="admin__page-section-item-title"> <span class="title"><?php echo __('Payment Information') ?></span> </div> - <div><?php echo $block->getChildHtml('order_payment') ?></div> - <div class="order-payment-currency"><?php echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?></div> - <div class="order-payment-additional"><?php echo $block->getChildHtml('order_payment_additional'); ?></div> + <div class="admin__page-section-item-content"> + <div><?php echo $block->getChildHtml('order_payment') ?></div> + <div class="order-payment-currency"> + <?php echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?> + </div> + <div class="order-payment-additional"><?php echo $block->getChildHtml('order_payment_additional'); ?></div> + </div> </div> - </div> - <?php if (!$_order->getIsVirtual()): ?> - <div class="order-shipping-address"> - <?php /*Shipping Address */ ?> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> - <span class="title"><?php echo __('Shipping Information') ?></span> - </div> - <div class="shipping-description-wrapper"> - <div class="shipping-description-title"><?php echo $block->escapeHtml($_order->getShippingDescription()) ?></div> - <div class="shipping-description-content"> - <?php echo __('Total Shipping Charges'); ?>: + <?php if (!$_order->getIsVirtual()): ?> + <div class="admin__page-section-item order-shipping-address"> + <?php /*Shipping Address */ ?> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Shipping Information') ?></span> + </div> + <div class="admin__page-section-item-content shipping-description-wrapper"> + <div class="shipping-description-title"> + <?php echo $block->escapeHtml($_order->getShippingDescription()) ?> + </div> + <div class="shipping-description-content"> + <?php echo __('Total Shipping Charges'); ?>: - <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingPriceIncludingTax()): ?> - <?php $_excl = $block->displayShippingPriceInclTax($_order); ?> - <?php else: ?> - <?php $_excl = $block->displayPriceAttribute('shipping_amount', false, ' '); ?> - <?php endif; ?> - <?php $_incl = $block->displayShippingPriceInclTax($_order); ?> + <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingPriceIncludingTax()): ?> + <?php $_excl = $block->displayShippingPriceInclTax($_order); ?> + <?php else: ?> + <?php $_excl = $block->displayPriceAttribute('shipping_amount', false, ' '); ?> + <?php endif; ?> + <?php $_incl = $block->displayShippingPriceInclTax($_order); ?> - <?php echo $_excl; ?> - <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?> - (<?php echo __('Incl. Tax'); ?> <?php echo $_incl; ?>) - <?php endif; ?> - <div><?php echo $block->getChildHtml('shipment_tracking') ?></div> + <?php echo $_excl; ?> + <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?> + (<?php echo __('Incl. Tax'); ?> <?php echo $_incl; ?>) + <?php endif; ?> + <div><?php echo $block->getChildHtml('shipment_tracking') ?></div> + </div> </div> </div> - </div> - </div> - <?php endif; ?> + <?php endif; ?> -</div> + </div> +</section> -<div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> +<section class="admin__page-section"> + <div class="admin__page-section-title"> <span class="title"><?php echo __('Items Invoiced') ?></span> </div> - <div id="invoice_item_container"> + <div id="invoice_item_container" class="admin__page-section-content"> <?php echo $block->getChildHtml('invoice_items') ?> </div> -</div> +</section> -<div class="clearfix"> - <div class="order-comments-history"> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> +<section class="admin__page-section"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Order Total') ?></span> + </div> + <div class="admin__page-section-content"> + <div class="admin__page-section-item order-comments-history"> + <div class="admin__page-section-item-title"> <span class="title"><?php echo __('Invoice History') ?></span> </div> - <fieldset> + <div class="admin__page-section-item-content"> <?php echo $block->getChildHtml('order_comments') ?> - </fieldset> + </div> </div> - </div> - <div class="order-totals"> - <div class="fieldset-wrapper" id="history_form"> - <div class="fieldset-wrapper-title"> + <div id="history_form" class="admin__page-section-item order-totals"> + <div class="admin__page-section-item-title"> <span class="title"><?php echo __('Invoice Totals') ?></span> </div> <?php echo $block->getChildHtml('invoice_totals') ?> </div> </div> -</div> +</section> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/view/items.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/view/items.phtml index 2dd825764ac916f3940e749d2a81798dea4ae633..9298795db0b62507f426147a6d643a0eefca8d03 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/view/items.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/invoice/view/items.phtml @@ -8,7 +8,7 @@ ?> <div class="grid"> - <table class="data order-tables"> + <table class="data-table admin__table-primary order-invoice-tables"> <thead> <tr class="headings"> <th class="col-product"><span><?php echo __('Product') ?></span></th> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/totals.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/totals.phtml index 06b1e692a036a4ff9d9659e835b81fe4142ca137..45b816084520bbe14c11af4050b0cf5d533156e2 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/totals.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/totals.phtml @@ -15,53 +15,56 @@ <?php echo $block->getChildHtml('footer'); ?> </table> <?php endif;*/ ?> -<table class="data-table table-info order-subtotal"> +<table class="data-table admin__table-secondary order-subtotal-table"> <?php $_totals = $block->getTotals('footer')?> + <?php if ($_totals):?> - <tfoot> - <?php foreach ($block->getTotals('footer') as $_code => $_total): ?> - <?php if ($_total->getBlockName()): ?> - <?php echo $block->getChildHtml($_total->getBlockName(), false); ?> - <?php else:?> - <tr class="col-<?php echo $_code?>"> - <td <?php echo $block->getLabelProperties()?> class="label"> - <strong><?php echo $block->escapeHtml($_total->getLabel()); ?></strong> - </td> - <td <?php echo $block->getValueProperties()?>> - <strong><?php echo $block->formatValue($_total) ?></strong> - </td> - </tr> - <?php endif?> - <?php endforeach?> - </tfoot> + <tfoot> + <?php foreach ($block->getTotals('footer') as $_code => $_total): ?> + <?php if ($_total->getBlockName()): ?> + <?php echo $block->getChildHtml($_total->getBlockName(), false); ?> + <?php else:?> + <tr class="col-<?php echo $_code?>"> + <td <?php echo $block->getLabelProperties()?> class="label"> + <strong><?php echo $block->escapeHtml($_total->getLabel()); ?></strong> + </td> + <td <?php echo $block->getValueProperties()?>> + <strong><?php echo $block->formatValue($_total) ?></strong> + </td> + </tr> + <?php endif?> + <?php endforeach?> + </tfoot> <?php endif?> <?php $_totals = $block->getTotals('')?> <?php if ($_totals):?> - <tbody> - <?php foreach ($_totals as $_code => $_total): ?> - <?php if ($_total->getBlockName()): ?> - <?php echo $block->getChildHtml($_total->getBlockName(), false); ?> - <?php else:?> - <tr class="col-<?php echo $_code?>"> - <td <?php echo $block->getLabelProperties()?> class="label"> - <?php if ($_total->getStrong()):?> - <strong><?php echo $block->escapeHtml($_total->getLabel()); ?></strong> + <tbody> + <?php foreach ($_totals as $_code => $_total): ?> + <?php if ($_total->getBlockName()): ?> + <?php echo $block->getChildHtml($_total->getBlockName(), false); ?> <?php else:?> - <?php echo $block->escapeHtml($_total->getLabel()); ?> + <tr class="col-<?php echo $_code?>"> + <td <?php echo $block->getLabelProperties()?> class="label"> + <?php if ($_total->getStrong()):?> + <strong><?php echo $block->escapeHtml($_total->getLabel()); ?></strong> + <?php else:?> + <?php echo $block->escapeHtml($_total->getLabel()); ?> + <?php endif?> + </td> + + <?php if ($_total->getStrong()):?> + <td <?php echo $block->getValueProperties()?>> + <strong><?php echo $block->formatValue($_total) ?></strong> + </td> + <?php else:?> + <td <?php echo $block->getValueProperties()?>> + <span><?php echo $block->formatValue($_total) ?></span> + </td> + <?php endif?> + </tr> <?php endif?> - </td> - <?php if ($_total->getStrong()):?> - <td <?php echo $block->getValueProperties()?>> - <strong><?php echo $block->formatValue($_total) ?></strong> - <?php else:?> - <td <?php echo $block->getValueProperties()?>> - <?php echo $block->formatValue($_total) ?> - <?php endif?> - </td> - </tr> - <?php endif?> - <?php endforeach?> - </tbody> + <?php endforeach?> + </tbody> <?php endif?> </table> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/view/form.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/view/form.phtml index 2ccc60117a6ea662ff928690563244c684be7252..ea8956727f637d25ca32d23a10a3aa34648fda2e 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/view/form.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/view/form.phtml @@ -4,4 +4,4 @@ * See COPYING.txt for license details. */ ?> -<div class="entry-edit" id="sales_order_view"></div> +<div class="entry-edit order-view" id="sales_order_view"></div> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/view/giftmessage.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/view/giftmessage.phtml index a7d7d1552fcb732eda9bf4b0887c83e55ae7e854..9fa3eda8f0d7a93ae165b39bbd96653c44e56ea6 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/view/giftmessage.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/view/giftmessage.phtml @@ -9,32 +9,50 @@ ?> <?php if ($block->canDisplayGiftmessage()): ?> <?php $_required = $block->getMessage()->getMessage() != ''?> -<div id="<?php echo $block->getHtmlId() ?>" class="box-left giftmessage-whole-order-container"> +<div id="<?php echo $block->getHtmlId() ?>" class="admin__page-section-content giftmessage-whole-order-container"> <form class="entry-edit form-inline" id="<?php echo $block->getFieldId('form') ?>" action="<?php echo $block->getSaveUrl() ?>"> - <fieldset> + <fieldset class="admin__fieldset"> <legend class="admin__legend"><span><?php echo __('Gift Message for the Entire Order'); ?></span></legend> - <br> + <br/> - <input type="hidden" id="<?php echo $block->getFieldId('type'); ?>" name="<?php echo $block->getFieldName('type'); ?>" value="order" /> + <input type="hidden" id="<?php echo $block->getFieldId('type'); ?>" + name="<?php echo $block->getFieldName('type'); ?>" + value="order"/> - <div class="field field-from-name <?php echo $_required ? 'required' : ''; ?>"> - <label class="label" for="<?php echo $block->getFieldId('sender'); ?>"><span><?php echo __('From Name'); ?></span></label> - <div class="control"> - <input class="input-text <?php echo $_required ? 'required-entry' : ''; ?>" type="text" id="<?php echo $block->getFieldId('sender'); ?>" name="<?php echo $block->getFieldName('sender'); ?>" value="<?php echo $block->escapeHtml($block->getMessage()->getSender()); ?>" /> + <div class="admin__field field-from-name<?php echo $_required ? ' required' : ''; ?>"> + <label class="admin__field-label" + for="<?php echo $block->getFieldId('sender'); ?>"><span><?php echo __('From Name'); ?></span></label> + + <div class="admin__field-control"> + <input class="admin__control-text <?php echo $_required ? 'required-entry' : ''; ?>" type="text" + id="<?php echo $block->getFieldId('sender'); ?>" + name="<?php echo $block->getFieldName('sender'); ?>" + value="<?php echo $block->escapeHtml($block->getMessage()->getSender()); ?>"/> </div> </div> - <div class="field field-to-name <?php echo $_required ? 'required' : ''; ?>"> - <label class="label" for="<?php echo $block->getFieldId('recipient'); ?>"><span><?php echo __('To Name'); ?></span></label> - <div class="control"> - <input class="input-text <?php echo $_required ? 'required-entry' : ''; ?>" type="text" id="<?php echo $block->getFieldId('recipient'); ?>" name="<?php echo $block->getFieldName('recipient'); ?>" value="<?php echo $block->escapeHtml($block->getMessage()->getRecipient()); ?>" /> + <div class="admin__field field-to-name<?php echo $_required ? ' required' : ''; ?>"> + <label class="admin__field-label" + for="<?php echo $block->getFieldId('recipient'); ?>"><span><?php echo __('To Name'); ?></span></label> + + <div class="admin__field-control"> + <input class="admin__control-text <?php echo $_required ? 'required-entry' : ''; ?>" type="text" + id="<?php echo $block->getFieldId('recipient'); ?>" + name="<?php echo $block->getFieldName('recipient'); ?>" + value="<?php echo $block->escapeHtml($block->getMessage()->getRecipient()); ?>"/> </div> </div> - <div class="field field-gift-message"> - <label class="label" for="<?php echo $block->getFieldId('message'); ?>"><span><?php echo __('Gift Message'); ?></span></label> - <div class="control"> - <textarea id="<?php echo $block->getFieldId('message'); ?>" name="<?php echo $block->getFieldName('message') ?>" rows="2" cols="15"><?php echo $block->escapeHtml($block->getMessage()->getMessage()); ?></textarea> + <div class="admin__field field-gift-message"> + <label class="admin__field-label" + for="<?php echo $block->getFieldId('message'); ?>"><span><?php echo __('Gift Message'); ?></span></label> + + <div class="admin__field-control"> + <textarea id="<?php echo $block->getFieldId('message'); ?>" + name="<?php echo $block->getFieldName('message') ?>" + class="admin__control-textarea" + rows="2" + cols="15"><?php echo $block->escapeHtml($block->getMessage()->getMessage()); ?></textarea> </div> </div> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/view/history.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/view/history.phtml index a202b3aa0dcee89d76652153dadcd23cb3e2476a..b1c4121b92fc36055dce194757c944a5486fbab3 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/view/history.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/view/history.phtml @@ -7,38 +7,71 @@ // @codingStandardsIgnoreFile ?> -<div id="order_history_block"> +<div id="order_history_block" class="edit-order-comments"> <?php if ($block->canAddComment()):?> - <div id="history_form"> - <div><?php echo __('Add Order Comments') ?></div> - <div> - <label for="history_status"><?php echo __('Status') ?></label> - <select name="history[status]" id="history_status"> - <?php foreach ($block->getStatuses() as $_code => $_label): ?> - <option value="<?php echo $_code ?>"<?php if ($_code == $block->getOrder()->getStatus()): ?> selected="selected"<?php endif; ?>><?php echo $_label ?></option> - <?php endforeach; ?> - </select> - </div> - <div> - <label for="history_comment"><?php echo __('Comment') ?></label> - <textarea name="history[comment]" rows="3" cols="5" id="history_comment"></textarea> - </div> - <div class="clearfix"> - <div class="order-history-comments-options"> - <?php if ($block->canSendCommentEmail()): ?> - <input name="history[is_customer_notified]" type="checkbox" id="history_notify" value="1" /><label for="history_notify"> <?php echo __('Notify Customer by Email') ?></label><br /> - <?php endif; ?> - <input name="history[is_visible_on_front]" type="checkbox" id="history_visible" value="1" /><label for="history_visible"> <?php echo __('Visible on Frontend') ?></label> + <div class="order-history-block" id="history_form"> + + <div class="admin__field"> + <label for="history_status" class="admin__field-label"><?php echo __('Status') ?></label> + <div class="admin__field-control"> + <select name="history[status]" id="history_status" class="admin__control-select"> + <?php foreach ($block->getStatuses() as $_code => $_label): ?> + <option value="<?php echo $_code ?>"<?php if ($_code == $block->getOrder()->getStatus()): ?> selected="selected"<?php endif; ?>><?php echo $_label ?></option> + <?php endforeach; ?> + </select> + </div> + </div> + + <div class="admin__field"> + <label for="history_comment" class="admin__field-label"> + <?php echo __('Comment') ?> + </label> + <div class="admin__field-control"> + <textarea name="history[comment]" + rows="3" + cols="5" + id="history_comment" + class="admin__control-textarea"></textarea> + </div> </div> - <div class="actions"> - <?php echo $block->getChildHtml('submit_button') ?> + + <div class="admin__field"> + <div class="order-history-comments-options"> + <div class="admin__field admin__field-option"> + <?php if ($block->canSendCommentEmail()): ?> + <input name="history[is_customer_notified]" + type="checkbox" + id="history_notify" + class="admin__control-checkbox" + value="1" /> + <label class="admin__field-label" for="history_notify"> + <?php echo __('Notify Customer by Email') ?> + </label> + <?php endif; ?> + </div> + + <div class="admin__field admin__field-option"> + <input name="history[is_visible_on_front]" + type="checkbox" + id="history_visible" + class="admin__control-checkbox" + value="1" /> + <label class="admin__field-label" for="history_visible"> + <?php echo __('Visible on Frontend') ?> + </label> + </div> + </div> + + <div class="order-history-comments-actions"> + <?php echo $block->getChildHtml('submit_button') ?> + </div> </div> </div> - </div> <?php endif;?> + <ul class="note-list"> <?php foreach ($block->getOrder()->getStatusHistoryCollection(true) as $_item): ?> - <li> + <li class="note-list-item"> <span class="note-list-date"><?php echo $block->formatDate($_item->getCreatedAtDate(), \IntlDateFormatter::MEDIUM) ?></span> <span class="note-list-time"><?php echo $block->formatTime($_item->getCreatedAtDate(), \IntlDateFormatter::MEDIUM) ?></span> <span class="note-list-status"><?php echo $_item->getStatusLabel() ?></span> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/view/info.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/view/info.phtml index 62900a6f6bb0bb355529cb2b2414e02e5b9ad889..afd5fc24ba3e939735a13492154775d93265827b 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/view/info.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/view/info.phtml @@ -22,165 +22,158 @@ $orderStoreDate = $block->formatDate( ); ?> -<?php /* the opening and closing divs of these two clearfixes are in app\code\core\Mage\Adminhtml\view\adminhtml\sales\order\invoice\create\form.phtml */?> - -<div class="clearfix"> - - <div class="order-information"> - <?php /* Order Information */?> - <div class="fieldset-wrapper"> +<section class="admin__page-section order-view-account-information"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Order & Account Information') ?></span> + </div> + <div class="admin__page-section-content"> + <div class="admin__page-section-item order-information"> + <?php /* Order Information */?> <?php if ($_order->getEmailSent()): $_email = __('the order confirmation email was sent'); else: $_email = __('the order confirmation email is not sent'); endif; ?> - <div class="fieldset-wrapper-title"> + <div class="admin__page-section-item-title"> <span class="title"> <?php if ($block->getNoUseOrderLink()): ?> - <?php echo __('Order # %1', $_order->getRealOrderId()) ?> (<span><?php echo $_email ?></span>) + <?php echo __('Order # %1', $_order->getRealOrderId()) ?> (<span><?php echo $_email ?></span>) <?php else: ?> - <a href="<?php echo $block->getViewUrl($_order->getId()) ?>"><?php echo __('Order # %1', $_order->getRealOrderId()) ?></a> - <span>(<?php echo $_email ?>)</span> + <a href="<?php echo $block->getViewUrl($_order->getId()) ?>"><?php echo __('Order # %1', $_order->getRealOrderId()) ?></a> + <span>(<?php echo $_email ?>)</span> <?php endif; ?> </span> </div> - <table class="data-table table-info"> + <div class="admin__page-section-item-content"> + <table class="data-table admin__table-secondary order-information-table"> <tr> <th><?php echo __('Order Date') ?></th> <td><?php echo $orderAdminDate ?></td> </tr> <?php if ($orderAdminDate != $orderStoreDate):?> - <tr> - <th><?php echo __( - 'Order Date (%1)', - $block->getCreatedAtStoreDate( - $_order->getStore(), - $_order->getCreatedAt() - )->getTimezone()->getName() - ) ?></th> - <td><?php echo $orderStoreDate ?></td> - </tr> + <tr> + <th><?php echo __( + 'Order Date (%1)', + $block->getCreatedAtStoreDate( + $_order->getStore(), + $_order->getCreatedAt() + )->getTimezone()->getName() + ) ?></th> + <td><?php echo $orderStoreDate ?></td> + </tr> <?php endif;?> <tr> <th><?php echo __('Order Status') ?></th> <td><span id="order_status"><?php echo $_order->getStatusLabel() ?></span></td> </tr> <?php if ($block->isSingleStoreMode() == false):?> - <tr> - <th><?php echo __('Purchased From') ?></th> - <td><?php echo $block->getOrderStoreName() ?></td> - </tr> + <tr> + <th><?php echo __('Purchased From') ?></th> + <td><?php echo $block->getOrderStoreName() ?></td> + </tr> <?php endif; ?> <?php if ($_order->getRelationChildId()): ?> - <tr> - <th><?php echo __('Link to the New Order') ?></th> - <td><a href="<?php echo $block->getViewUrl($_order->getRelationChildId()) ?>"> - <?php echo $_order->getRelationChildRealId() ?> - </a></td> - </tr> + <tr> + <th><?php echo __('Link to the New Order') ?></th> + <td><a href="<?php echo $block->getViewUrl($_order->getRelationChildId()) ?>"> + <?php echo $_order->getRelationChildRealId() ?> + </a></td> + </tr> <?php endif; ?> <?php if ($_order->getRelationParentId()): ?> - <tr> - <th><?php echo __('Link to the Previous Order') ?></th> - <td><a href="<?php echo $block->getViewUrl($_order->getRelationParentId()) ?>"> - <?php echo $_order->getRelationParentRealId() ?> - </a></td> - </tr> + <tr> + <th><?php echo __('Link to the Previous Order') ?></th> + <td><a href="<?php echo $block->getViewUrl($_order->getRelationParentId()) ?>"> + <?php echo $_order->getRelationParentRealId() ?> + </a></td> + </tr> <?php endif; ?> <?php if ($_order->getRemoteIp() && $block->shouldDisplayCustomerIp()): ?> - <tr> - <th><?php echo __('Placed from IP') ?></th> - <td><?php echo $_order->getRemoteIp(); echo($_order->getXForwardedFor()) ? ' (' . $block->escapeHtml($_order->getXForwardedFor()) . ')' : ''; ?></td> - </tr> + <tr> + <th><?php echo __('Placed from IP') ?></th> + <td><?php echo $_order->getRemoteIp(); echo($_order->getXForwardedFor()) ? ' (' . $block->escapeHtml($_order->getXForwardedFor()) . ')' : ''; ?></td> + </tr> <?php endif; ?> <?php if ($_order->getGlobalCurrencyCode() != $_order->getBaseCurrencyCode()): ?> - <tr> - <th><?php echo __('%1 / %2 rate:', $_order->getGlobalCurrencyCode(), $_order->getBaseCurrencyCode()) ?></th> - <td><?php echo $_order->getBaseToGlobalRate() ?></td> - </tr> + <tr> + <th><?php echo __('%1 / %2 rate:', $_order->getGlobalCurrencyCode(), $_order->getBaseCurrencyCode()) ?></th> + <td><?php echo $_order->getBaseToGlobalRate() ?></td> + </tr> <?php endif; ?> <?php if ($_order->getBaseCurrencyCode() != $_order->getOrderCurrencyCode()): ?> - <tr> - <th><?php echo __('%1 / %2 rate:', $_order->getOrderCurrencyCode(), $_order->getBaseCurrencyCode()) ?></th> - <th><?php echo $_order->getBaseToOrderRate() ?></th> - </tr> + <tr> + <th><?php echo __('%1 / %2 rate:', $_order->getOrderCurrencyCode(), $_order->getBaseCurrencyCode()) ?></th> + <th><?php echo $_order->getBaseToOrderRate() ?></th> + </tr> <?php endif; ?> </table> + </div> </div> - </div> - <div class="order-account-information"> - <?php /* Account Information */?> - <div class="admin__fieldset-wrapper"> - <div class="admin__fieldset-wrapper-title"> + <div class="admin__page-section-item order-account-information"> + <?php /* Account Information */?> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Account Information') ?></span> <div class="actions"><?php echo $block->getAccountEditLink()?></div> - <strong class="title"><?php echo __('Account Information') ?></strong> </div> - <table class="data-table table-info"> - <tr> - <th><?php echo __('Customer Name') ?></th> - <td> - <?php if ($_customerUrl = $block->getCustomerViewUrl()) : ?> - <a href="<?php echo $_customerUrl ?>" target="_blank"><strong><?php echo $block->escapeHtml($_order->getCustomerName()) ?></strong></a> - <?php else: ?> - <?php echo $block->escapeHtml($_order->getCustomerName()) ?> + <div class="admin__page-section-item-content"> + <table class="data-table admin__table-secondary order-account-information-table"> + <tr> + <th><?php echo __('Customer Name') ?></th> + <td> + <?php if ($_customerUrl = $block->getCustomerViewUrl()) : ?> + <a href="<?php echo $_customerUrl ?>" target="_blank"> + <span><?php echo $block->escapeHtml($_order->getCustomerName()) ?></span> + </a> + <?php else: ?> + <?php echo $block->escapeHtml($_order->getCustomerName()) ?> + <?php endif; ?> + </td> + </tr> + <tr> + <th><?php echo __('Email') ?></th> + <td><a href="mailto:<?php echo $_order->getCustomerEmail() ?>"><?php echo $_order->getCustomerEmail() ?></a></td> + </tr> + <?php if ($_groupName = $block->getCustomerGroupName()) : ?> + <tr> + <th><?php echo __('Customer Group') ?></th> + <td><?php echo $_groupName ?></td> + </tr> <?php endif; ?> - </td> - </tr> - <tr> - <th><?php echo __('Email') ?></th> - <td><a href="mailto:<?php echo $_order->getCustomerEmail() ?>"><?php echo $_order->getCustomerEmail() ?></a></td> - </tr> - <?php if ($_groupName = $block->getCustomerGroupName()) : ?> - <tr> - <th><?php echo __('Customer Group') ?></th> - <td><?php echo $_groupName ?></td> - </tr> - <?php endif; ?> - <?php foreach ($block->getCustomerAccountData() as $data):?> - <tr> - <th><?php echo $data['label'] ?></th> - <td><?php echo $data['value'] ?></td> - </tr> - <?php endforeach;?> - </table> + <?php foreach ($block->getCustomerAccountData() as $data):?> + <tr> + <th><?php echo $data['label'] ?></th> + <td><?php echo $data['value'] ?></td> + </tr> + <?php endforeach;?> + </table> + </div> </div> </div> +</section> -</div> - -<div class="clearfix"> - - <div class="order-billing-address"> - <?php /* Billing Address */?> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> - <div class="actions"><?php echo $block->getAddressEditLink($_order->getBillingAddress()); ?></div> +<section class="admin__page-section order-addresses"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Address Information') ?></span> + </div> + <div class="admin__page-section-content"> + <div class="admin__page-section-item order-billing-address"> + <?php /* Billing Address */?> + <div class="admin__page-section-item-title"> <span class="title"><?php echo __('Billing Address') ?></span> + <div class="actions"><?php echo $block->getAddressEditLink($_order->getBillingAddress()); ?></div> </div> - <address><?php echo $block->getFormattedAddress($_order->getBillingAddress()); ?></address> + <address class="admin__page-section-item-content"><?php echo $block->getFormattedAddress($_order->getBillingAddress()); ?></address> </div> - </div> - - <?php if (!$block->getOrder()->getIsVirtual()): ?> - <div class="order-shipping-address"> - <?php /* Shipping Address */ ?> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> - <div class="actions"><?php echo $block->getAddressEditLink($_order->getShippingAddress()); ?></div> - <span class="title"><?php echo __('Shipping Address') ?></span> + <?php if (!$block->getOrder()->getIsVirtual()): ?> + <div class="admin__page-section-item order-shipping-address"> + <?php /* Shipping Address */ ?> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Shipping Address') ?></span> + <div class="actions"><?php echo $block->getAddressEditLink($_order->getShippingAddress()); ?></div> + </div> + <address class="admin__page-section-item-content"><?php echo $block->getFormattedAddress($_order->getShippingAddress()); ?></address> </div> - <address><?php echo $block->getFormattedAddress($_order->getShippingAddress()); ?></address> - </div> + <?php endif; ?> </div> -</div> - <?php endif; ?> - -<?php -/* - closing div of this opening div are in - app\code\Magento\Sales\view\adminhtml\order\invoice\view\form.phtml - or - app\code\Magento\Sales\view\adminhtml\order\view\tab\info.phtml -*/ -?> +</section> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/view/items.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/view/items.phtml index cb1c7006dd7518fb2a0531d62990980526fecfb9..7fc02861eff16e157e3a8842a84ec731e5ea43dc 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/view/items.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/view/items.phtml @@ -10,7 +10,7 @@ <?php $_order = $block->getOrder() ?> <div class="grid"> <div class="hor-scroll"> - <table class="data-table table-info"> + <table class="data-table admin__table-primary edit-order-table"> <thead> <tr class="headings"> <th class="col-product"><span><?php echo __('Product') ?></span></th> @@ -25,13 +25,13 @@ <th class="col-total last"><span><?php echo __('Row Total') ?></span></th> </tr> </thead> - <?php $_items = $block->getItemsCollection() ?> + <?php $_items = $block->getItemsCollection();?> <?php $i = 0; foreach ($_items as $_item):?> <?php if ($_item->getParentItem()) { - continue; -} else { - $i++; -}?> + continue; + } else { + $i++; + }?> <tbody class="<?php echo $i%2 ? 'even' : 'odd' ?>"> <?php echo $block->getItemHtml($_item) ?> <?php echo $block->getItemExtraInfoHtml($_item) ?> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/view/tab/history.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/view/tab/history.phtml index 7d9c3acc586e381767ded7f39b09af062bc4b1db..2e8eae106e6a9d0132978547405bb4c31cc787ac 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/view/tab/history.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/view/tab/history.phtml @@ -7,10 +7,10 @@ // @codingStandardsIgnoreFile ?> -<div class="fieldset-wrapper"> +<section class="admin__page-section edit-order-comments"> <ul class="note-list"> <?php foreach ($block->getFullHistory() as $_item): ?> - <li> + <li class="note-list-item"> <span class="note-list-date"><?php echo $block->getItemCreatedAt($_item) ?></span> <span class="note-list-time"><?php echo $block->getItemCreatedAt($_item, 'time') ?></span> <span class="note-list-status"><?php echo $block->getItemTitle($_item) ?></span> @@ -26,10 +26,26 @@ <?php endif; ?> </span> <?php endif; ?> - <?php if ($_comment = $block->getItemComment($_item)): ?> - <div class="note-list-comment"><?php echo $_comment ?></div> - <?php endif; ?> </li> <?php endforeach; ?> </ul> -</div> + <div class="edit-order-comments-block"> + <div class="edit-order-comments-block-title"> + <?php echo __('Notes for this Order') ?> + </div> + <?php foreach ($block->getFullHistory() as $_item): ?> + <?php if ($_comment = $block->getItemComment($_item)): ?> + <div class="comments-block-item"> + <div class="comments-block-item-comment"> + <?php echo $_comment ?> + </div> + <span class="comments-block-item-date-time"> + <?php echo __('Comment added') ?> + <?php echo $block->getItemCreatedAt($_item) ?> + <?php echo $block->getItemCreatedAt($_item, 'time') ?> + </span> + </div> + <?php endif; ?> + <?php endforeach; ?> + </div> +</section> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/view/tab/info.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/view/tab/info.phtml index a939192eba8c671d8e654beb40aa9495a7016cc8..b315a0053976c6dac80fba6dcb579ee1782cea58 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/order/view/tab/info.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/order/view/tab/info.phtml @@ -17,60 +17,55 @@ <?php echo $block->getChildHtml('order_info') ?> <input type="hidden" name="order_id" value="<?php echo $_order->getId() ?>"/> -<?php if (!$_order->getIsVirtual()): ?> -<div class="clearfix"> -<?php endif; ?> - - <div class="order-payment-method<?php if ($_order->getIsVirtual()): ?> order-payment-method-virtual<?php endif; ?>"> - <?php /* Payment Method */ ?> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> +<section class="admin__page-section order-view-billing-shipping"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Payment & Shipping Method') ?></span> + </div> + <div class="admin__page-section-content"> + <div class="admin__page-section-item order-payment-method<?php if ($_order->getIsVirtual()): ?> order-payment-method-virtual<?php endif; ?>"> + <?php /* Payment Method */ ?> + <div class="admin__page-section-item-title"> <span class="title"><?php echo __('Payment Information') ?></span> </div> - <div><?php echo $block->getPaymentHtml() ?></div> - <div class="order-payment-currency"><?php echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?></div> - <div class="order-payment-additional"><?php echo $block->getChildHtml('order_payment_additional'); ?></div> + <div class="admin__page-section-item-content"> + <div><?php echo $block->getPaymentHtml() ?></div> + <div class="order-payment-currency"><?php echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?></div> + <div class="order-payment-additional"><?php echo $block->getChildHtml('order_payment_additional'); ?></div> + </div> </div> + <?php echo $block->getChildHtml('order_shipping_view') ?> </div> - -<?php if ($_order->getIsVirtual()): ?> -</div><?php /* opening div is in app\code\Magento\Sales\view\adminhtml\order\view\info.phtml */ ?> -<?php endif; ?> - -<?php echo $block->getChildHtml('order_shipping_view') ?> - -<?php if (!$_order->getIsVirtual()): ?> -</div> -<?php endif; ?> +</section> <?php echo $block->getGiftOptionsHtml() ?> -<div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> +<section class="admin__page-section"> + <div class="admin__page-section-title"> <span class="title"><?php echo __('Items Ordered') ?></span> </div> <?php echo $block->getItemsHtml() ?> -</div> +</section> -<div class="clearfix"> - <div class="order-comments-history"> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> - <span class="title"><?php echo __('Comments History') ?></span> +<section class="admin__page-section"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Order Total') ?></span> + </div> + <div class="admin__page-section-content"> + <div class="admin__page-section-item order-comments-history"> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Notes for this Order') ?></span> </div> - <fieldset><?php echo $block->getChildHtml('order_history') ?></fieldset> + <?php echo $block->getChildHtml('order_history') ?> </div> - </div> - <div class="order-totals"> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> + <div class="admin__page-section-item order-totals"> + <div class="admin__page-section-item-title"> <span class="title"><?php echo __('Order Totals') ?></span> </div> <?php echo $block->getChildHtml('order_totals') ?> </div> </div> -</div> +</section> <?php echo $block->getChildHtml('popup_window');?> diff --git a/app/code/Magento/Sales/view/adminhtml/templates/transactions/detail.phtml b/app/code/Magento/Sales/view/adminhtml/templates/transactions/detail.phtml index 701a7c73a192f9f068b04129bac001f4e001f551..26d231c994314ff2524fe898bebc05817341829a 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/transactions/detail.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/transactions/detail.phtml @@ -8,12 +8,12 @@ ?> <div data-mage-init='{"floatingHeader": {}}' class="page-actions"><?php echo $block->getButtonsHtml() ?></div> -<div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> +<section class="admin__page-section"> + <div class="admin__page-section-title"> <span class="title"><?php echo __('Transaction Data'); ?></span> </div> - <div id="log_details_fieldset" class="log-details"> - <table class="log-info data-table table-info"> + <div id="log_details_fieldset" class="admin__page-section-content log-details"> + <table class="log-info data-table admin__table-secondary"> <tbody> <tr> <th><?php echo __('Transaction ID'); ?></th> @@ -54,22 +54,22 @@ </tbody> </table> </div> -</div> +</section> -<div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> +<section class="admin__page-section"> + <div class="admin__page-section-title"> <span class="title""><?php echo __('Child Transactions'); ?></span> </div> - <div class="log-details-grid"> + <div class="admin__page-section-content log-details-grid"> <?php echo $block->getChildHtml('child_grid') ?> </div> -</div> +</section> -<div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> +<section class="admin__page-section"> + <div class="admin__page-section-title"> <span class="title"><?php echo __('Transaction Details'); ?></span> </div> - <div class="log-details-grid"> + <div class="admin__page-section-content log-details-grid"> <?php echo $block->getChildHtml('detail_grid') ?> </div> -</div> +</section> diff --git a/app/code/Magento/SalesRule/composer.json b/app/code/Magento/SalesRule/composer.json index a01267d5dcfa082ed44316f04ff51fc716a86bc8..1ef5ba09232d018b9987d406fc67f2ef65af6209 100644 --- a/app/code/Magento/SalesRule/composer.json +++ b/app/code/Magento/SalesRule/composer.json @@ -3,26 +3,26 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-rule": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-shipping": "0.74.0-beta5", - "magento/module-payment": "0.74.0-beta5", - "magento/module-reports": "0.74.0-beta5", - "magento/module-catalog-rule": "0.74.0-beta5", - "magento/module-widget": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-config": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-rule": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-shipping": "0.74.0-beta6", + "magento/module-payment": "0.74.0-beta6", + "magento/module-reports": "0.74.0-beta6", + "magento/module-catalog-rule": "0.74.0-beta6", + "magento/module-widget": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/SalesSequence/composer.json b/app/code/Magento/SalesSequence/composer.json index d4e0cd0f663e87a51a345eca909b8b3b99ff28ce..f3c49c8f01143db554c75ed5abdcb14935ab4ef2 100644 --- a/app/code/Magento/SalesSequence/composer.json +++ b/app/code/Magento/SalesSequence/composer.json @@ -3,11 +3,11 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/framework": "0.74.0-beta5", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Search/composer.json b/app/code/Magento/Search/composer.json index 9a03d940d7f599dd5b2bfcfa922710ee340d696e..69bc52ccfec60bd0b606af29e9748896b6eefe32 100644 --- a/app/code/Magento/Search/composer.json +++ b/app/code/Magento/Search/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/framework": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-catalog-search": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-reports": "0.74.0-beta5", + "magento/framework": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-catalog-search": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-reports": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Sendfriend/composer.json b/app/code/Magento/Sendfriend/composer.json index 1ff658de4f55eada10dae594027a239584d8e37e..7acd6e8fa3cece61f1c20f06067106d0b5691ba5 100644 --- a/app/code/Magento/Sendfriend/composer.json +++ b/app/code/Magento/Sendfriend/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Shipping/Block/Adminhtml/View/Form.php b/app/code/Magento/Shipping/Block/Adminhtml/View/Form.php index 2f848e0a150c139f624847ddbdab1d9a89abd174..fa0d8aa70c9e118540e4532bb248db275bb2513c 100644 --- a/app/code/Magento/Shipping/Block/Adminhtml/View/Form.php +++ b/app/code/Magento/Shipping/Block/Adminhtml/View/Form.php @@ -79,7 +79,11 @@ class Form extends \Magento\Sales\Block\Adminhtml\Order\AbstractOrder return $this->getLayout()->createBlock( 'Magento\Backend\Block\Widget\Button' )->setData( - ['label' => __('Create Shipping Label...'), 'onclick' => 'packaging.showWindow();'] + [ + 'label' => __('Create Shipping Label...'), + 'onclick' => 'packaging.showWindow();', + 'class' => 'action-create-label' + ] )->toHtml(); } diff --git a/app/code/Magento/Shipping/composer.json b/app/code/Magento/Shipping/composer.json index 0278d3840231577af281bc46f387828b37ea7a6b..54c613d4a0a95d2ab7d0a5eae1435dbfbffa9fff 100644 --- a/app/code/Magento/Shipping/composer.json +++ b/app/code/Magento/Shipping/composer.json @@ -3,27 +3,27 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-contact": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-payment": "0.74.0-beta5", - "magento/module-tax": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-contact": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-payment": "0.74.0-beta6", + "magento/module-tax": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "ext-gd": "*", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-fedex": "0.74.0-beta5", - "magento/module-ups": "0.74.0-beta5" + "magento/module-fedex": "0.74.0-beta6", + "magento/module-ups": "0.74.0-beta6" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_new.xml b/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_new.xml index 1c2aa23262486fb96b9eb05098cdb5e392596e24..de964564823074cc85563a2d677dd519eb1ff7f7 100644 --- a/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_new.xml +++ b/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_new.xml @@ -7,6 +7,7 @@ --> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <body> + <referenceContainer name="admin.scope.col.wrap" htmlClass="admin__old" /> <!-- ToDo UI: remove this wrapper with old styles removal. The class name "admin__old" is for tests only, we shouldn't use it in any way --> <referenceContainer name="content"> <block class="Magento\Shipping\Block\Adminhtml\Create" name="sales_shipment_create"> <block class="Magento\Shipping\Block\Adminhtml\Create\Form" name="form" template="create/form.phtml"> diff --git a/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_view.xml b/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_view.xml index 8cdc5f8be0c8b547dd0b606358fb9b8ccb6ac2da..049654bf03a97ff760d1b1f2b80ac9fd48a05512 100644 --- a/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_view.xml +++ b/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_view.xml @@ -7,6 +7,7 @@ --> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <body> + <referenceContainer name="admin.scope.col.wrap" htmlClass="admin__old" /> <!-- ToDo UI: remove this wrapper with old styles removal. The class name "admin__old" is for tests only, we shouldn't use it in any way --> <referenceContainer name="content"> <block class="Magento\Shipping\Block\Adminhtml\View" name="sales_shipment_view"> <block class="Magento\Shipping\Block\Adminhtml\View\Form" name="form" template="view/form.phtml"> diff --git a/app/code/Magento/Shipping/view/adminhtml/templates/create/form.phtml b/app/code/Magento/Shipping/view/adminhtml/templates/create/form.phtml index 28693ed0e0b947dccd7e43c878597d93d9ff29e0..46b4ab5ed56f691d3f7b0421d9e023ef3afaa9e0 100644 --- a/app/code/Magento/Shipping/view/adminhtml/templates/create/form.phtml +++ b/app/code/Magento/Shipping/view/adminhtml/templates/create/form.phtml @@ -11,24 +11,27 @@ <?php echo $block->getBlockHtml('formkey')?> <?php $_order = $block->getShipment()->getOrder() ?> <?php echo $block->getChildHtml('order_info') ?> - <div class="clearfix"> - <div class="order-payment-method"> - <!--Billing Address--> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> + <div class="admin__page-section"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Payment & Shipping Method') ?></span> + </div> + <div class="admin__page-section-content"> + <div class="admin__page-section-item order-payment-method"> + <?php /* Billing Address */ ?> + <div class="admin__page-section-item-title"> <span class="title"><?php echo __('Payment Information') ?></span> </div> - <div><?php echo $block->getPaymentHtml() ?></div> - <div class="order-payment-currency"><?php echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?></div> + <div class="admin__page-section-item-content"> + <div><?php echo $block->getPaymentHtml() ?></div> + <div class="order-payment-currency"><?php echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?></div> + </div> </div> - </div> - <div class="order-shipping-address"> - <!--Shipping Address--> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> + <div class="admin__page-section-item order-shipping-address"> + <?php /* Shipping Address */ ?> + <div class="admin__page-section-item-title"> <span class="title"><?php echo __('Shipping Information') ?></span> </div> - <div class="shipping-description-wrapper"> + <div class="admin__page-section-item-content shipping-description-wrapper"> <div class="shipping-description-title"><?php echo $block->escapeHtml($_order->getShippingDescription()) ?></div> <div class="shipping-description-content"> <?php echo __('Total Shipping Charges'); ?>: diff --git a/app/code/Magento/Shipping/view/adminhtml/templates/create/items.phtml b/app/code/Magento/Shipping/view/adminhtml/templates/create/items.phtml index b1544ff93ea9a2d15080bbea545aca5896c4ffcf..b2001f9ac88a4b9e8b47ccaa7b53f6b02ea4e128 100644 --- a/app/code/Magento/Shipping/view/adminhtml/templates/create/items.phtml +++ b/app/code/Magento/Shipping/view/adminhtml/templates/create/items.phtml @@ -7,12 +7,13 @@ // @codingStandardsIgnoreFile ?> -<div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> + +<section class="admin__page-section"> + <div class="admin__page-section-title"> <span class="title"><?php echo __('Items to Ship') ?></span> </div> <div class="grid"> - <table cellspacing="0" class="data order-tables"> + <table class="data-table admin__table-primary order-shipment-table"> <thead> <tr class="headings"> <th class="col-product"><span><?php echo __('Product') ?></span></th> @@ -34,44 +35,75 @@ <?php endforeach; ?> </table> </div> -</div> -<div class="clearfix"> - <div class="order-comments-history"> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"><span class="title"><?php echo __('Shipment Comments') ?></span></div> - <fieldset> - <div id="order-history_form"> - <label class="normal" for="shipment_comment_text"><?php echo __('Shipment Comments') ?></label> - <textarea id="shipment_comment_text" name="shipment[comment_text]" rows="3" cols="5"><?php echo $block->getShipment()->getCommentText(); ?></textarea> +</section> + +<section class="admin__page-section"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Shipment Total') ?></span> + </div> + <div class="admin__page-section-content order-comments-history"> + <div class="admin__page-section-item"> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Shipment Comments') ?></span> + </div> + <div class="admin__page-section-item-content"> + <div id="order-history_form" class="admin__field"> + <label class="admin__field-label" + for="shipment_comment_text"> + <span><?php echo __('Comment Text') ?></span></label> + <textarea id="shipment_comment_text" + class="admin__control-textarea" + name="shipment[comment_text]" + rows="3" + cols="5"><?php echo $block->getShipment()->getCommentText(); ?></textarea> </div> - </fieldset> + </div> </div> </div> - <div class="order-totals"> - <div class="fieldset-wrapper"> - <?php if ($block->canCreateShippingLabel()): ?> - <div class="field choice field-create"> - <input id="create_shipping_label" name="shipment[create_shipping_label]" value="1" type="checkbox" - onclick="toggleCreateLabelCheckbox();"/> - <label class="normal" for="create_shipping_label"><?php echo __('Create Shipping Label') ?></label> - </div> - <?php endif ?> - <div class="field choice field-append"> - <input id="notify_customer" name="shipment[comment_customer_notify]" value="1" type="checkbox"/> - <label class="normal" for="notify_customer"><?php echo __('Append Comments') ?></label> + <div class="admin__page-section-item order-totals"> + <?php if ($block->canCreateShippingLabel()): ?> + <div class="field choice admin__field admin__field-option field-create"> + <input id="create_shipping_label" + class="admin__control-checkbox" + name="shipment[create_shipping_label]" + value="1" + type="checkbox" + onclick="toggleCreateLabelCheckbox();"/> + <label class="admin__field-label" + for="create_shipping_label"> + <span><?php echo __('Create Shipping Label') ?></span></label> </div> - <?php if ($block->canSendShipmentEmail()): ?> - <div class="field choice field-email"> - <input id="send_email" name="shipment[send_email]" value="1" type="checkbox"/> - <label class="normal" for="send_email"><?php echo __('Email Copy of Shipment') ?></label> - </div> - <?php endif; ?> - <div class="actions"> - <?php echo $block->getChildHtml('submit_button') ?> + <?php endif ?> + + <div class="field choice admin__field admin__field-option field-append"> + <input id="notify_customer" + class="admin__control-checkbox" + name="shipment[comment_customer_notify]" + value="1" + type="checkbox"/> + <label class="admin__field-label" + for="notify_customer"> + <span><?php echo __('Append Comments') ?></span></label> + </div> + + <?php if ($block->canSendShipmentEmail()): ?> + <div class="field choice admin__field admin__field-option field-email"> + <input id="send_email" + class="admin__control-checkbox" + name="shipment[send_email]" + value="1" + type="checkbox"/> + <label class="admin__field-label" + for="send_email"> + <span><?php echo __('Email Copy of Shipment') ?></span></label> </div> + <?php endif; ?> + + <div class="order-history-comments-actions actions"> + <?php echo $block->getChildHtml('submit_button') ?> </div> </div> -</div> +</section> <script> require([ "jquery", diff --git a/app/code/Magento/Shipping/view/adminhtml/templates/create/items/renderer/default.phtml b/app/code/Magento/Shipping/view/adminhtml/templates/create/items/renderer/default.phtml index 1acdd870909d1f38bb2f9783a6e5937e56d729c9..136612ef50ba971ede1a74e9123cc17845d02998 100644 --- a/app/code/Magento/Shipping/view/adminhtml/templates/create/items/renderer/default.phtml +++ b/app/code/Magento/Shipping/view/adminhtml/templates/create/items/renderer/default.phtml @@ -13,7 +13,10 @@ <td class="col-ordered-qty"><?php echo $block->getColumnHtml($_item, 'qty') ?></td> <td class="col-qty <?php if ($block->isShipmentRegular()): ?>last<?php endif; ?>"> <?php if ($block->canShipPartiallyItem()): ?> - <input type="text" class="input-text qty-item" name="shipment[items][<?php echo $_item->getOrderItemId() ?>]" value="<?php echo $_item->getQty()*1 ?>" /> + <input type="text" + class="input-text admin__control-text qty-item" + name="shipment[items][<?php echo $_item->getOrderItemId() ?>]" + value="<?php echo $_item->getQty()*1 ?>" /> <?php else: ?> <?php echo $_item->getQty()*1 ?> <?php endif; ?> diff --git a/app/code/Magento/Shipping/view/adminhtml/templates/order/Tracking/view.phtml b/app/code/Magento/Shipping/view/adminhtml/templates/order/Tracking/view.phtml index 74a836156b05475a9b361d888800b3061f17e72a..1497b994f9acbc27c31272b23b45895a4f4a09cc 100644 --- a/app/code/Magento/Shipping/view/adminhtml/templates/order/Tracking/view.phtml +++ b/app/code/Magento/Shipping/view/adminhtml/templates/order/Tracking/view.phtml @@ -8,49 +8,66 @@ ?> <?php /** @var $block Magento\Shipping\Block\Adminhtml\Order\Tracking\View */ ?> -<table cellspacing="0" class="data-table" id="shipment_tracking_info"> - <thead> - <tr class="headings"> - <th class="col-carrier"><?php echo __('Carrier') ?></th> - <th class="col-title"><?php echo __('Title') ?></th> - <th class="col-number"><?php echo __('Number') ?></th> - <th class="col-delete last"><?php echo __('Action') ?></th> - </tr> - </thead> - <tfoot> - <tr> - <td class="col-carrier"> - <select name="carrier" class="select" onchange="selectCarrier(this)"> - <?php foreach ($block->getCarriers() as $_code => $_name): ?> - <option value="<?php echo $_code ?>"><?php echo $block->escapeHtml($_name) ?></option> - <?php endforeach; ?> - </select> - </td> - <td class="col-title"><input class="input-text" type="text" id="tracking_title" name="title" value="" /></td> - <td class="col-number"><input class="input-text" type="text" id="tracking_number" name="number" value="" /></td> - <td class="col-delete last"><?php echo $block->getSaveButtonHtml() ?></td> - </tr> - </tfoot> -<?php if ($_tracks = $block->getShipment()->getAllTracks()): ?> - <tbody> - <?php $i = 0; foreach ($_tracks as $_track):$i++ ?> - <tr class="<?php echo($i%2 == 0) ? 'even' : 'odd' ?>"> - <td class="col-carrier"><?php echo $block->escapeHtml($block->getCarrierTitle($_track->getCarrierCode())) ?></td> - <td class="col-title"><?php echo $block->escapeHtml($_track->getTitle()) ?></td> - <td class="col-number"> - <?php if ($_track->isCustom()): ?> - <?php echo $block->escapeHtml($_track->getNumber()) ?> - <?php else: ?> - <a href="#" onclick="popWin('<?php echo $this->helper('Magento\Shipping\Helper\Data')->getTrackingPopupUrlBySalesModel($_track) ?>','trackorder','width=800,height=600,resizable=yes,scrollbars=yes')"><?php echo $block->escapeHtml($_track->getNumber()) ?></a> - <div id="shipment_tracking_info_response_<?php echo $_track->getId() ?>"></div> - <?php endif; ?> - </td> - <td class="col-delete last"><a class="action- delete" href="#" onclick="deleteTrackingNumber('<?php echo $block->getRemoveUrl($_track) ?>'); return false;"><span><?php echo __('Delete') ?></span></a></td> - </tr> - <?php endforeach; ?> - </tbody> -<?php endif; ?> -</table> +<div class="admin__control-table-wrapper"> + <table class="data-table admin__control-table" id="shipment_tracking_info"> + <thead> + <tr class="headings"> + <th class="col-carrier"><?php echo __('Carrier') ?></th> + <th class="col-title"><?php echo __('Title') ?></th> + <th class="col-number"><?php echo __('Number') ?></th> + <th class="col-delete last"><?php echo __('Action') ?></th> + </tr> + </thead> + <tfoot> + <tr> + <td class="col-carrier"> + <select name="carrier" + class="select admin__control-select" + onchange="selectCarrier(this)"> + <?php foreach ($block->getCarriers() as $_code => $_name): ?> + <option value="<?php echo $_code ?>"><?php echo $block->escapeHtml($_name) ?></option> + <?php endforeach; ?> + </select> + </td> + <td class="col-title"> + <input class="input-text admin__control-text" + type="text" + id="tracking_title" + name="title" + value="" /> + </td> + <td class="col-number"> + <input class="input-text admin__control-text" + type="text" + id="tracking_number" + name="number" + value="" /> + </td> + <td class="col-delete last"><?php echo $block->getSaveButtonHtml() ?></td> + </tr> + </tfoot> + <?php if ($_tracks = $block->getShipment()->getAllTracks()): ?> + <tbody> + <?php $i = 0; foreach ($_tracks as $_track):$i++ ?> + <tr class="<?php echo($i%2 == 0) ? 'even' : 'odd' ?>"> + <td class="col-carrier"><?php echo $block->escapeHtml($block->getCarrierTitle($_track->getCarrierCode())) ?></td> + <td class="col-title"><?php echo $block->escapeHtml($_track->getTitle()) ?></td> + <td class="col-number"> + <?php if ($_track->isCustom()): ?> + <?php echo $block->escapeHtml($_track->getNumber()) ?> + <?php else: ?> + <a href="#" onclick="popWin('<?php echo $this->helper('Magento\Shipping\Helper\Data')->getTrackingPopupUrlBySalesModel($_track) ?>','trackorder','width=800,height=600,resizable=yes,scrollbars=yes')"><?php echo $block->escapeHtml($_track->getNumber()) ?></a> + <div id="shipment_tracking_info_response_<?php echo $_track->getId() ?>"></div> + <?php endif; ?> + </td> + <td class="col-delete last"><a class="action-delete" href="#" onclick="deleteTrackingNumber('<?php echo $block->getRemoveUrl($_track) ?>'); return false;"><span><?php echo __('Delete') ?></span></a></td> + </tr> + <?php endforeach; ?> + </tbody> + <?php endif; ?> + </table> +</div> + <script> require(['prototype'], function(){ diff --git a/app/code/Magento/Shipping/view/adminhtml/templates/order/packaging/grid.phtml b/app/code/Magento/Shipping/view/adminhtml/templates/order/packaging/grid.phtml index aa8645eb6238e23547dc15df5e96c2fc388c9dcf..f696adb536c16ca453fb8090930cf2fe5e67f27f 100644 --- a/app/code/Magento/Shipping/view/adminhtml/templates/order/packaging/grid.phtml +++ b/app/code/Magento/Shipping/view/adminhtml/templates/order/packaging/grid.phtml @@ -8,65 +8,88 @@ ?> <div class="grid"> - <table cellspacing="0" class="data-table"> - <thead> - <tr> - <th class="col-product no-link"><?php echo __('Product Name') ?></th> - <th class="col-weight no-link"><?php echo __('Weight') ?></th> - <th class="col-custom no-link" <?php echo $block->displayCustomsValue() ? '' : 'style="display: none;"' ?>> - <?php echo __('Customs Value') ?> - </th> - <th class="col-select no-link"> - <input type="checkbox" name="" onclick="packaging.checkAllItems(this);" class="checkbox" title="<?php echo __('Select All') ?>"> - </th> - <th class="col-qty no-link"><?php echo __('Qty Ordered') ?></th> - <th class="col-qty-edit no-link last"><?php echo __('Qty') ?></th> - </tr> - </thead> + <div class="hor-scroll"> + <table class="data-table admin__table-primary"> + <thead> + <tr> + <th class="col-product no-link"><?php echo __('Product Name') ?></th> + <th class="col-weight no-link"><?php echo __('Weight') ?></th> + <th class="col-custom no-link" <?php echo $block->displayCustomsValue() ? '' : 'style="display: none;"' ?>> + <?php echo __('Customs Value') ?> + </th> + <th class="col-select no-link"> + <div class="admin__field admin__field-option"> + <input type="checkbox" + name="" + onclick="packaging.checkAllItems(this);" + class="checkbox admin__control-checkbox" + title="<?php echo __('Select All') ?>"> + <label class="admin__field-label"></label> + </div> + </th> + <th class="col-qty no-link"><?php echo __('Qty Ordered') ?></th> + <th class="col-qty-edit no-link last"><?php echo __('Qty') ?></th> + </tr> + </thead> - <tbody> - <?php foreach ($block->getCollection() as $item): ?> - <?php $_order = $block->getShipment()->getOrder() ?> - <?php $_orderItem = $_order->getItemById($item->getOrderItemId()); ?> - <?php if ($item->getIsVirtual() - || ($_orderItem->isShipSeparately() && !($_orderItem->getParentItemId() || $_orderItem->getParentItem())) - || (!$_orderItem->isShipSeparately() && ($_orderItem->getParentItemId() || $_orderItem->getParentItem()))): ?> - <?php continue; ?> + <tbody> + <?php foreach ($block->getCollection() as $item): ?> + <?php $_order = $block->getShipment()->getOrder() ?> + <?php $_orderItem = $_order->getItemById($item->getOrderItemId()); ?> + <?php if ($item->getIsVirtual() + || ($_orderItem->isShipSeparately() && !($_orderItem->getParentItemId() || $_orderItem->getParentItem())) + || (!$_orderItem->isShipSeparately() && ($_orderItem->getParentItemId() || $_orderItem->getParentItem()))): ?> + <?php continue; ?> <?php endif; ?> - <tr title="#" id="" class=""> - <td class="col-product name"> - <?php echo $item->getName(); ?> - </td> - <td class="col-weight weight "> - <?php echo $item->getWeight(); ?> - </td> - <?php - if ($block->displayCustomsValue()) { - $customsValueDisplay = ''; - $customsValueValidation = ' validate-zero-or-greater '; - } else { - $customsValueDisplay = ' style="display: none;" '; - $customsValueValidation = ''; - } - ?> - <td <?php echo $customsValueDisplay ?>> - <input type="text" name="customs_value" class="input-text <?php echo $customsValueValidation ?>" value="<?php echo $block->formatPrice($item->getPrice()); ?>" size="10" onblur="packaging.recalcContainerWeightAndCustomsValue(this);"> - </td> - <td class="col-select"> - <input type="checkbox" name="" value="<?php echo $item->getId() ? $item->getId() : $item->getOrderItemId(); ?>" class="checkbox"> - </td> - <td class="col-qty"> - <?php echo $item->getOrderItem()->getQtyOrdered()*1; ?> - </td> - <td class="col-qty-edit last"> - <input type="hidden" name="price" value="<?php echo $item->getPrice(); ?>"> - <input type="text" name="qty" value="<?php echo $item->getQty()*1; ?>" class="input-text qty<?php if ($item->getOrderItem()->getIsQtyDecimal()): ?> qty-decimal<?php endif ?>"> - <button type="button" class="action- delete icon-btn" onclick="packaging.deleteItem(this);" style="display:none;"> - <span><?php echo __('Delete') ?></span> - </button> - </td> - </tr> + <tr title="#" id="" class=""> + <td class="col-product name"> + <?php echo $item->getName(); ?> + </td> + <td class="col-weight weight "> + <?php echo $item->getWeight(); ?> + </td> + <?php + if ($block->displayCustomsValue()) { + $customsValueDisplay = ''; + $customsValueValidation = ' validate-zero-or-greater '; + } else { + $customsValueDisplay = ' style="display: none;" '; + $customsValueValidation = ''; + } + ?> + <td <?php echo $customsValueDisplay ?>> + <input type="text" + name="customs_value" + class="input-text admin__control-text <?php echo $customsValueValidation ?>" + value="<?php echo $block->formatPrice($item->getPrice()); ?>" + size="10" + onblur="packaging.recalcContainerWeightAndCustomsValue(this);"> + </td> + <td class="col-select"> + <div class="admin__field admin__field-option"> + <input type="checkbox" + name="" + value="<?php echo $item->getId() ? $item->getId() : $item->getOrderItemId(); ?>" + class="checkbox admin__control-checkbox"> + <label class="admin__field-label"></label> + </div> + </td> + <td class="col-qty"> + <?php echo $item->getOrderItem()->getQtyOrdered()*1; ?> + </td> + <td class="col-qty-edit last"> + <input type="hidden" name="price" value="<?php echo $item->getPrice(); ?>"> + <input type="text" + name="qty" + value="<?php echo $item->getQty()*1; ?>" + class="input-text admin__control-text qty<?php if ($item->getOrderItem()->getIsQtyDecimal()): ?> qty-decimal<?php endif ?>"> + <button type="button" class="action-delete delete icon-btn" onclick="packaging.deleteItem(this);" style="display:none;"> + <span><?php echo __('Delete') ?></span> + </button> + </td> + </tr> <?php endforeach; ?> - </tbody> - </table> + </tbody> + </table> + </div> </div> diff --git a/app/code/Magento/Shipping/view/adminhtml/templates/order/packaging/popup.phtml b/app/code/Magento/Shipping/view/adminhtml/templates/order/packaging/popup.phtml index 7876d0ae1b8754efad94938cd984a7e90169f560..359dde8e59b198aa5be1907d9839c31b64166d20 100644 --- a/app/code/Magento/Shipping/view/adminhtml/templates/order/packaging/popup.phtml +++ b/app/code/Magento/Shipping/view/adminhtml/templates/order/packaging/popup.phtml @@ -53,149 +53,186 @@ require([ <div class="popup-window-wrapper"> <div class="popup-window-title"> <div class="actions"> - <button type="button" class="action-add AddPackageBtn" onclick="packaging.newPackage();"> + <button type="button" class="action-add action-secondary AddPackageBtn" onclick="packaging.newPackage();"> <span><?php echo __('Add Package') ?></span> </button> </div> <span class="title"><?php echo __('Create Packages') ?></span> </div> <div class="packaging-content popup-window-content"> - <div class="messages" style="display:none;"></div> + <div class="message message-warning" style="display: none"></div> <div id="package_template" style="display:none;"> <div class="package-number popup-fieldset-title"> - <div class="title"><?php echo __('Package') ?><span></span></div> + <div class="title"> + <?php echo __('Package') ?> + <span></span> + </div> + </div> + <div class="admin__control-table-wrapper"> + <table class="data-table admin__control-table"> + <thead> + <th class="col-type"><?php echo __('Type') ?></th> + <?php if ($girthEnabled == 1): ?> + <th class="col-size"><?php echo __('Size') ?></th> + <th class="col-girth"><?php echo __('Girth') ?></th> + <th> </th> + <?php endif; ?> + <th class="col-custom" <?php echo $block->displayCustomsValue() ? '' : 'style="display: none;"' ?>> + <?php echo __('Customs Value') ?> + </th> + <th class="col-total-weight"><?php echo __('Total Weight') ?></th> + <th class="col-length"><?php echo __('Length') ?></th> + <th class="col-width"><?php echo __('Width') ?></th> + <th class="col-height"><?php echo __('Height') ?></th> + <th> </th> + <?php if ($block->getDeliveryConfirmationTypes()): ?> + <th class="col-signature"><?php echo __('Signature Confirmation') ?></th> + <?php endif; ?> + <th class="col-actions"> </th> + </thead> + <tbody> + <td class="col-type"> + <?php $containers = $block->getContainers(); ?> + <select name="package_container" + onchange="packaging.changeContainerType(this);packaging.checkSizeAndGirthParameter(this, <?php echo $girthEnabled ?>);" + <?php if (empty($containers)):?> + title="<?php echo __('USPS domestic shipments don\'t use package types.') ?>" + disabled="" + class="admin__control-select disabled" + <?php else: ?> + class="admin__control-select" + <?php endif; ?>> + <?php foreach ($block->getContainers() as $key => $value): ?> + <option value="<?php echo $key ?>" > + <?php echo $value ?> + </option> + <?php endforeach; ?> + </select> + </td> + <?php if ($girthEnabled == 1 && !empty($sizeSource)): ?> + <td> + <select name="package_size" + class="admin__control-select" + onchange="packaging.checkSizeAndGirthParameter(this, <?php echo $girthEnabled ?>);"> + <?php foreach ($sizeSource as $key => $value): ?> + <option value="<?php echo $sizeSource[$key]['value'] ?>"> + <?php echo $sizeSource[$key]['label'] ?> + </option> + <?php endforeach; ?> + </select> + </td> + <td> + <input type="text" + class="input-text admin__control-text validate-greater-than-zero" + name="container_girth" /> + </td> + <td> + <select name="container_girth_dimension_units" + class="options-units-dimensions measures admin__control-select" + onchange="packaging.changeMeasures(this);"> + <option value="<?php echo Zend_Measure_Length::INCH ?>" selected="selected" ><?php echo __('in') ?></option> + <option value="<?php echo Zend_Measure_Length::CENTIMETER ?>" ><?php echo __('cm') ?></option> + </select> + </td> + <?php endif; ?> + <?php + if ($block->displayCustomsValue()) { + $customsValueDisplay = ''; + $customsValueValidation = ' validate-zero-or-greater '; + } else { + $customsValueDisplay = ' style="display: none;" '; + $customsValueValidation = ''; + } + ?> + <td class="col-custom" <?php echo $customsValueDisplay ?>> + <input type="text" + class="customs-value input-text admin__control-text <?php echo $customsValueValidation ?>" + name="package_customs_value" /> + <span class="customs-value-currency">[<?php echo $block->getCustomValueCurrencyCode(); ?>]</span> + </td> + <td class="col-total-weight"> + <input type="text" + class="options-weight input-text admin__control-text required-entry validate-greater-than-zero" + name="container_weight" /> + <select name="container_weight_units" + class="options-units-weight measures admin__control-select" + onchange="packaging.changeMeasures(this);"> + <option value="<?php echo Zend_Measure_Weight::POUND ?>" selected="selected" ><?php echo __('lb') ?></option> + <option value="<?php echo Zend_Measure_Weight::KILOGRAM ?>" ><?php echo __('kg') ?></option> + </select> + </td> + <td class="col-length"> + <input type="text" + class="input-text admin__control-text validate-greater-than-zero" + name="container_length" /> + </td> + <td class="col-width"> + <input type="text" + class="input-text admin__control-text validate-greater-than-zero" + name="container_width" /> + </td> + <td class="col-height"> + <input type="text" + class="input-text admin__control-text validate-greater-than-zero" + name="container_height" /> + </td> + <td class="col-measure"> + <select name="container_dimension_units" + class="options-units-dimensions measures admin__control-select" + onchange="packaging.changeMeasures(this);"> + <option value="<?php echo Zend_Measure_Length::INCH ?>" selected="selected" ><?php echo __('in') ?></option> + <option value="<?php echo Zend_Measure_Length::CENTIMETER ?>" ><?php echo __('cm') ?></option> + </select> + </td> + <?php if ($block->getDeliveryConfirmationTypes()): ?> + <td> + <select name="delivery_confirmation_types" class="admin__control-select"> + <?php foreach ($block->getDeliveryConfirmationTypes() as $key => $value): ?> + <option value="<?php echo $key ?>" > + <?php echo $value ?> + </option> + <?php endforeach; ?> + </select> + </td> + <?php endif; ?> + <td class="col-actions"> + <button type="button" class="action-add AddItemsBtn" onclick="packaging.getItemsForPack(this);"> + <span><?php echo __('Add') ?></span> + </button> + <button type="button" class="action-delete DeletePackageBtn" onclick="packaging.deletePackage(this);"> + <span><?php echo __('Delete Package') ?></span> + </button> + </td> + </tbody> + </table> </div> - <table class="data-table" cellspacing="0"> - <thead> - <th class="col-type"><?php echo __('Type') ?></th> - <?php if ($girthEnabled == 1): ?> - <th class="col-size"><?php echo __('Size') ?></th> - <th class="col-girth"><?php echo __('Girth') ?></th> - <th> </th> - <?php endif; ?> - <th class="col-custom" <?php echo $block->displayCustomsValue() ? '' : 'style="display: none;"' ?>> - <?php echo __('Customs Value') ?> - </th> - <th class="col-total-weight"><?php echo __('Total Weight') ?></th> - <th class="col-length"><?php echo __('Length') ?></th> - <th class="col-width"><?php echo __('Width') ?></th> - <th class="col-height"><?php echo __('Height') ?></th> - <th> </th> - <?php if ($block->getDeliveryConfirmationTypes()): ?> - <th class="col-signature"><?php echo __('Signature Confirmation') ?></th> - <?php endif; ?> - <th class="col-actions"> </th> - </thead> - <tbody> - <td class="col-type"> - <?php $containers = $block->getContainers(); ?> - <select name="package_container" onchange="packaging.changeContainerType(this);packaging.checkSizeAndGirthParameter(this, <?php echo $girthEnabled ?>);"<?php if (empty($containers)):?> - title="<?php echo __('USPS domestic shipments don\'t use package types.') ?>" - disabled="" class="disabled" - <?php endif; ?>> - <?php foreach ($block->getContainers() as $key => $value): ?> - <option value="<?php echo $key ?>" > - <?php echo $value ?> - </option> - <?php endforeach; ?> - </select> - </td> - <?php if ($girthEnabled == 1 && !empty($sizeSource)): ?> - <td> - <select name="package_size" onchange="packaging.checkSizeAndGirthParameter(this, <?php echo $girthEnabled ?>);"> - <?php foreach ($sizeSource as $key => $value): ?> - <option value="<?php echo $sizeSource[$key]['value'] ?>"> - <?php echo $sizeSource[$key]['label'] ?> - </option> - <?php endforeach; ?> - </select> - </td> - <td><input type="text" class="input-text validate-greater-than-zero" name="container_girth" /></td> - <td> - <select name="container_girth_dimension_units" class="options-units-dimensions measures" onchange="packaging.changeMeasures(this);"> - <option value="<?php echo Zend_Measure_Length::INCH ?>" selected="selected" ><?php echo __('in') ?></option> - <option value="<?php echo Zend_Measure_Length::CENTIMETER ?>" ><?php echo __('cm') ?></option> - </select> - </td> - <?php endif; ?> - <?php - if ($block->displayCustomsValue()) { - $customsValueDisplay = ''; - $customsValueValidation = ' validate-zero-or-greater '; - } else { - $customsValueDisplay = ' style="display: none;" '; - $customsValueValidation = ''; - } - ?> - <td class="col-custom" <?php echo $customsValueDisplay ?>> - <input type="text" class="customs-value input-text <?php echo $customsValueValidation ?>" name="package_customs_value" /> - <span class="customs-value-currency">[<?php echo $block->getCustomValueCurrencyCode(); ?>]</span> - </td> - <td class="col-total-weight"> - <input type="text" class="options-weight input-text required-entry validate-greater-than-zero" name="container_weight" /> - <select name="container_weight_units" class="options-units-weight measures" onchange="packaging.changeMeasures(this);"> - <option value="<?php echo Zend_Measure_Weight::POUND ?>" selected="selected" ><?php echo __('lb') ?></option> - <option value="<?php echo Zend_Measure_Weight::KILOGRAM ?>" ><?php echo __('kg') ?></option> - </select> - </td> - <td class="col-length"> - <input type="text" class="input-text validate-greater-than-zero" name="container_length" /> - </td> - <td class="col-width"> - <input type="text" class="input-text validate-greater-than-zero" name="container_width" /> - </td> - <td class="col-height"> - <input type="text" class="input-text validate-greater-than-zero" name="container_height" /> - </td> - <td class="col-measure"> - <select name="container_dimension_units" class="options-units-dimensions measures" onchange="packaging.changeMeasures(this);"> - <option value="<?php echo Zend_Measure_Length::INCH ?>" selected="selected" ><?php echo __('in') ?></option> - <option value="<?php echo Zend_Measure_Length::CENTIMETER ?>" ><?php echo __('cm') ?></option> - </select> - </td> - <?php if ($block->getDeliveryConfirmationTypes()): ?> - <td> - <select name="delivery_confirmation_types"> - <?php foreach ($block->getDeliveryConfirmationTypes() as $key => $value): ?> - <option value="<?php echo $key ?>" > - <?php echo $value ?> - </option> - <?php endforeach; ?> - </select> - </td> - <?php endif; ?> - <td class="col-actions"> - <button type="button" class="action-add AddItemsBtn" onclick="packaging.getItemsForPack(this);"> - <span><?php echo __('Add Products') ?></span> - </button> - <button type="button" class="action-delete DeletePackageBtn" onclick="packaging.deletePackage(this);"> - <span><?php echo __('Delete Package') ?></span> - </button> - </td> - </tbody> - </table> <?php if ($block->getContentTypes()): ?> - <table class="package-options package-options-contents data-table" cellspacing="0"> - <thead> - <th><?php echo __('Contents') ?></th> - <th><?php echo __('Explanation') ?></th> - </thead> - <tbody> - <td> - <select name="content_type" onchange="packaging.changeContentTypes(this);"> - <?php foreach ($block->getContentTypes() as $key => $value): ?> - <option value="<?php echo $key ?>" > - <?php echo $value ?> - </option> - <?php endforeach; ?> - </select> - </td> - <td> - <input name="content_type_other" type="text" class="input-text options-content-type disabled" disabled="disabled" /> - </td> - </tbody> - </table> + <table class="package-options package-options-contents data-table" cellspacing="0"> + <thead> + <th><?php echo __('Contents') ?></th> + <th><?php echo __('Explanation') ?></th> + </thead> + <tbody> + <td> + <select name="content_type" + class="admin__control-select" + onchange="packaging.changeContentTypes(this);"> + <?php foreach ($block->getContentTypes() as $key => $value): ?> + <option value="<?php echo $key ?>" > + <?php echo $value ?> + </option> + <?php endforeach; ?> + </select> + </td> + <td> + <input name="content_type_other" + type="text" + class="input-text admin__control-text options-content-type disabled" + disabled="disabled" /> + </td> + </tbody> + </table> <?php endif; ?> <div class="package-add-products"> <div class="package_prapare" style="display:none"> @@ -214,7 +251,11 @@ require([ <div id="packages_content"></div> </div> <div class="popup-window-buttons-set"> - <button type="button" class="action-ok disabled SavePackagesBtn" disabled="disabled" onclick="packaging.confirmPackaging();" title="<?php echo __('Products should be added to package(s)')?>"> + <button type="button" + class="action-save action-secondary disabled SavePackagesBtn" + disabled="disabled" + onclick="packaging.confirmPackaging();" + title="<?php echo __('Products should be added to package(s)')?>"> <span><?php echo __('OK') ?></span> </button> <button type="button" class="action-close" onclick="packaging.cancelPackaging();"> diff --git a/app/code/Magento/Shipping/view/adminhtml/templates/order/tracking.phtml b/app/code/Magento/Shipping/view/adminhtml/templates/order/tracking.phtml index bf0b417d2bd8adcde2c95cb38c2db26c8be01a5d..cb8d042a65f47a3d149ac8c99efc87c4ab6d1872 100644 --- a/app/code/Magento/Shipping/view/adminhtml/templates/order/tracking.phtml +++ b/app/code/Magento/Shipping/view/adminhtml/templates/order/tracking.phtml @@ -64,34 +64,40 @@ require(['prototype'], function(){ <script id="track_row_template" type="text/x-magento-template"> <tr> <td class="col-carrier"> - <select name="tracking[<%- data.index %>][carrier_code]" id="trackingC<%- data.index %>" class="select carrier" disabled="disabled"> + <select name="tracking[<%- data.index %>][carrier_code]" + id="trackingC<%- data.index %>" + class="select admin__control-select carrier" + disabled="disabled"> <?php foreach ($block->getCarriers() as $_code => $_name): ?> <option value="<?php echo $_code ?>"><?php echo $block->escapeHtml($_name) ?></option> <?php endforeach; ?> </select> </td> - <td class="col-title"><input class="input-text number-title" type="text" name="tracking[<%- data.index %>][title]" id="trackingT<%- data.index %>" value="" disabled="disabled" /></td> - <td class="col-number"><input class="input-text required-entry" type="text" name="tracking[<%- data.index %>][number]" id="trackingN<%- data.index %>" value="" disabled="disabled" /></td> - <td class="col-delete last"><a href="#" class="action- delete" onclick="trackingControl.deleteRow(event);return false"><span><?php echo __('Delete') ?></span></a></td> + <td class="col-title"><input class="input-text admin__control-text number-title" type="text" name="tracking[<%- data.index %>][title]" id="trackingT<%- data.index %>" value="" disabled="disabled" /></td> + <td class="col-number"><input class="input-text admin__control-text required-entry" type="text" name="tracking[<%- data.index %>][number]" id="trackingN<%- data.index %>" value="" disabled="disabled" /></td> + <td class="col-delete"><a href="#" class="action-delete" onclick="trackingControl.deleteRow(event);return false"><span><?php echo __('Delete') ?></span></a></td> </tr> </script> -<table cellspacing="0" class="data-table" id="tracking_numbers_table"> - <thead> - <tr class="headings"> - <th class="col-carrier"><?php echo __('Carrier') ?></th> - <th class="col-title"><?php echo __('Title') ?></th> - <th class="col-number"><?php echo __('Number') ?></th> - <th class="col-delete last"><?php echo __('Action') ?></th> - </tr> - </thead> - <tfoot> - <tr> - <td colspan="4" class="last col-actions-add"><?php echo $block->getChildHtml('add_button') ?></td> - </tr> - </tfoot> - <tbody id="track_row_container"> - </tbody> -</table> + +<div class="admin__control-table-wrapper"> + <table class="data-table admin__control-table" id="tracking_numbers_table"> + <thead> + <tr class="headings"> + <th class="col-carrier"><?php echo __('Carrier') ?></th> + <th class="col-title"><?php echo __('Title') ?></th> + <th class="col-number"><?php echo __('Number') ?></th> + <th class="col-delete"><?php echo __('Action') ?></th> + </tr> + </thead> + <tfoot> + <tr> + <td colspan="4" class="col-actions-add"><?php echo $block->getChildHtml('add_button') ?></td> + </tr> + </tfoot> + <tbody id="track_row_container"> + </tbody> + </table> +</div> <script> require([ 'mage/template', diff --git a/app/code/Magento/Shipping/view/adminhtml/templates/order/view/info.phtml b/app/code/Magento/Shipping/view/adminhtml/templates/order/view/info.phtml index e527501f2e5414cfb1001445b8b43d9cfbe3f544..53ce09410322557fa80728cfe384be1d82f958ef 100644 --- a/app/code/Magento/Shipping/view/adminhtml/templates/order/view/info.phtml +++ b/app/code/Magento/Shipping/view/adminhtml/templates/order/view/info.phtml @@ -10,33 +10,32 @@ <?php /** @var $block \Magento\Shipping\Block\Adminhtml\View */ ?> <?php $order = $block->getOrder() ?> <?php if ($order->getIsVirtual()) : return '';endif; ?> -<div class="order-shipping-method"> - <!--Shipping Method--> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> - <span class="title"><?php echo __('Shipping & Handling Information') ?></span> - </div> - <div class="shipping-description-wrapper"> - <?php if ($order->getTracksCollection()->count()) : ?> - <p><a href="#" id="linkId" onclick="popWin('<?php echo $this->helper('Magento\Shipping\Helper\Data')->getTrackingPopupUrlBySalesModel($order) ?>','trackorder','width=800,height=600,resizable=yes,scrollbars=yes')" title="<?php echo __('Track Order') ?>"><?php echo __('Track Order') ?></a></p> - <?php endif; ?> - <?php if ($order->getShippingDescription()): ?> - <strong><?php echo $block->escapeHtml($order->getShippingDescription()) ?></strong> - <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingPriceIncludingTax()): ?> - <?php $_excl = $block->displayShippingPriceInclTax($order); ?> - <?php else: ?> - <?php $_excl = $block->displayPriceAttribute('shipping_amount', false, ' '); ?> - <?php endif; ?> - <?php $_incl = $block->displayShippingPriceInclTax($order); ?> +<?php /* Shipping Method */ ?> +<div class="admin__page-section-item order-shipping-method"> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Shipping & Handling Information') ?></span> + </div> + <div class="admin__page-section-item-content"> + <?php if ($order->getTracksCollection()->count()) : ?> + <p><a href="#" id="linkId" onclick="popWin('<?php echo $this->helper('Magento\Shipping\Helper\Data')->getTrackingPopupUrlBySalesModel($order) ?>','trackorder','width=800,height=600,resizable=yes,scrollbars=yes')" title="<?php echo __('Track Order') ?>"><?php echo __('Track Order') ?></a></p> + <?php endif; ?> + <?php if ($order->getShippingDescription()): ?> + <strong><?php echo $block->escapeHtml($order->getShippingDescription()) ?></strong> - <?php echo $_excl; ?> - <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?> - (<?php echo __('Incl. Tax'); ?> <?php echo $_incl; ?>) - <?php endif; ?> + <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingPriceIncludingTax()): ?> + <?php $_excl = $block->displayShippingPriceInclTax($order); ?> <?php else: ?> - <?php echo __('No shipping information available'); ?> + <?php $_excl = $block->displayPriceAttribute('shipping_amount', false, ' '); ?> + <?php endif; ?> + <?php $_incl = $block->displayShippingPriceInclTax($order); ?> + + <?php echo $_excl; ?> + <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?> + (<?php echo __('Incl. Tax'); ?> <?php echo $_incl; ?>) <?php endif; ?> - </div> + <?php else: ?> + <?php echo __('No shipping information available'); ?> + <?php endif; ?> </div> </div> diff --git a/app/code/Magento/Shipping/view/adminhtml/templates/view/form.phtml b/app/code/Magento/Shipping/view/adminhtml/templates/view/form.phtml index 7a777c90d468a360a1279cdbccc9f333e8d4d4f4..16dc0556a52a2bdad4ad53a86293f6e842737f38 100644 --- a/app/code/Magento/Shipping/view/adminhtml/templates/view/form.phtml +++ b/app/code/Magento/Shipping/view/adminhtml/templates/view/form.phtml @@ -9,94 +9,110 @@ ?> <?php $_order = $block->getShipment()->getOrder() ?> <?php echo $block->getChildHtml('order_info') ?> -<div class="clearfix"> - <div class="order-payment-method"> +<section class="admin__page-section order-shipment-billing-shipping"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Payment & Shipping Method') ?></span> + </div> + <div class="admin__page-section-content"> + <?php /* Billing Address */ ?> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> + <div class="admin__page-section-item order-payment-method"> + <div class="admin__page-section-item-title"> <span class="title"><?php echo __('Payment Information') ?></span> </div> - <div><?php echo $block->getChildHtml('order_payment') ?></div> - <div class="order-payment-currency"><?php echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?></div> + <div class="admin__page-section-item-content"> + <div><?php echo $block->getChildHtml('order_payment') ?></div> + <div class="order-payment-currency"><?php echo __('The order was placed using %1.', $_order->getOrderCurrencyCode()) ?></div> + </div> </div> - </div> - <div class="order-shipping-address"> + <?php /* Shipping Address */ ?> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> + <div class="admin__page-section-item order-shipping-address"> + <div class="admin__page-section-item-title"> <span class="title"><?php echo __('Shipping and Tracking Information') ?></span> </div> - <div class="shipping-description-wrapper"> - <?php if ($block->getShipment()->getTracksCollection()->count()): ?> - <p> - <a href="#" id="linkId" onclick="popWin('<?php echo $this->helper('Magento\Shipping\Helper\Data')->getTrackingPopupUrlBySalesModel($block->getShipment()) ?>','trackshipment','width=800,height=600,resizable=yes,scrollbars=yes')" title="<?php echo __('Track this shipment') ?>"><?php echo __('Track this shipment') ?></a> - </p> - <?php endif; ?> - <div class="shipping-description-title"><?php echo $block->escapeHtml($_order->getShippingDescription()) ?></div> - <?php echo __('Total Shipping Charges'); ?>: + <div class="admin__page-section-item-content"> + <div class="shipping-description-wrapper"> + <?php if ($block->getShipment()->getTracksCollection()->count()): ?> + <p> + <a href="#" id="linkId" onclick="popWin('<?php echo $this->helper('Magento\Shipping\Helper\Data')->getTrackingPopupUrlBySalesModel($block->getShipment()) ?>','trackshipment','width=800,height=600,resizable=yes,scrollbars=yes')" title="<?php echo __('Track this shipment') ?>"><?php echo __('Track this shipment') ?></a> + </p> + <?php endif; ?> + <div class="shipping-description-title"> + <?php echo $block->escapeHtml($_order->getShippingDescription()) ?> + </div> - <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingPriceIncludingTax()): ?> - <?php $_excl = $block->displayShippingPriceInclTax($_order); ?> - <?php else: ?> - <?php $_excl = $block->displayPriceAttribute('shipping_amount', false, ' '); ?> - <?php endif; ?> - <?php $_incl = $block->displayShippingPriceInclTax($_order); ?> + <?php echo __('Total Shipping Charges'); ?>: - <?php echo $_excl; ?> - <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?> - (<?php echo __('Incl. Tax'); ?> <?php echo $_incl; ?>) - <?php endif; ?> - </div> - <?php if ($block->canCreateShippingLabel()): ?> - <p> - <?php echo $block->getCreateLabelButton()?> - <?php if ($block->getShipment()->getShippingLabel()): ?> - <?php echo $block->getPrintLabelButton() ?> - <?php endif ?> - <?php if ($block->getShipment()->getPackages()): ?> - <?php echo $block->getShowPackagesButton() ?> + <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingPriceIncludingTax()): ?> + <?php $_excl = $block->displayShippingPriceInclTax($_order); ?> + <?php else: ?> + <?php $_excl = $block->displayPriceAttribute('shipping_amount', false, ' '); ?> + <?php endif; ?> + <?php $_incl = $block->displayShippingPriceInclTax($_order); ?> + + <?php echo $_excl; ?> + <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?> + (<?php echo __('Incl. Tax'); ?> <?php echo $_incl; ?>) + <?php endif; ?> + </div> + <?php if ($block->canCreateShippingLabel()): ?> + <p> + <?php echo $block->getCreateLabelButton()?> + <?php if ($block->getShipment()->getShippingLabel()): ?> + <?php echo $block->getPrintLabelButton() ?> + <?php endif ?> + <?php if ($block->getShipment()->getPackages()): ?> + <?php echo $block->getShowPackagesButton() ?> + <?php endif ?> + </p> <?php endif ?> - </p> - <?php endif ?> - <div><?php echo $block->getChildHtml('shipment_tracking') ?></div> - <?php echo $block->getChildHtml('shipment_packaging') ?> - <script> -require([ - 'prototype' -], function(){ + <?php echo $block->getChildHtml('shipment_tracking') ?> - setTimeout(function(){ - packaging.setConfirmPackagingCallback(function(){ - packaging.sendCreateLabelRequest(); - }); - packaging.setLabelCreatedCallback(function(response){ - setLocation("<?php echo $block->getUrl( - 'adminhtml/order_shipment/view', - ['shipment_id' => $block->getShipment()->getId()] - ); ?>"); - }); - }, 500); + <?php echo $block->getChildHtml('shipment_packaging') ?> +<script> + require([ + 'prototype' + ], function () { -}); + setTimeout(function () { + packaging.setConfirmPackagingCallback(function () { + packaging.sendCreateLabelRequest(); + }); + packaging.setLabelCreatedCallback(function (response) { + setLocation("<?php echo $block->getUrl( +'adminhtml/order_shipment/view', +['shipment_id' => $block->getShipment()->getId()] +); ?>"); + }); + }, 500); + + }); </script> + </div> </div> </div> -</div> +</section> -<div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"> +<section class="admin__page-section"> + <div class="admin__page-section-title"> <span class="title"><?php echo __('Items Shipped') ?></span> </div> <?php echo $block->getChildHtml('shipment_items') ?> -</div> +</section> -<div class="clearfix"> - <?php echo $block->getChildHtml('shipment_packed') ?> +<section class="admin__page-section"> + <div class="admin__page-section-title"> + <span class="title"><?php echo __('Order Total') ?></span> + </div> + <div class="admin__page-section-content"> + <?php echo $block->getChildHtml('shipment_packed') ?> - <div class="order-comments-history"> - <div class="fieldset-wrapper"> - <div class="fieldset-wrapper-title"><span class="title"><?php echo __('Shipment History') ?></span></div> - <fieldset><?php echo $block->getChildHtml('order_comments') ?></fieldset> + <div class="admin__page-section-item order-comments-history"> + <div class="admin__page-section-item-title"> + <span class="title"><?php echo __('Shipment History') ?></span> + </div> + <div class="admin__page-section-item-content"><?php echo $block->getChildHtml('order_comments') ?></div> </div> </div> -</div> +</section> diff --git a/app/code/Magento/Shipping/view/adminhtml/templates/view/items.phtml b/app/code/Magento/Shipping/view/adminhtml/templates/view/items.phtml index 4b1d0f39d52bc9a77a7d69ed882368aa6fcdc7dd..1ebeae21eb75e8c9201b4a1c91df6c3d5eb09d6c 100644 --- a/app/code/Magento/Shipping/view/adminhtml/templates/view/items.phtml +++ b/app/code/Magento/Shipping/view/adminhtml/templates/view/items.phtml @@ -8,7 +8,7 @@ ?> <div class="grid"> - <table cellspacing="0" class="data"> + <table class="data-table admin__table-primary order-shipment-table"> <thead> <tr class="headings"> <th class="col-product"><span><?php echo __('Product') ?></span></th> diff --git a/app/code/Magento/Shipping/view/adminhtml/web/order/packaging.js b/app/code/Magento/Shipping/view/adminhtml/web/order/packaging.js index 566b01dc6e894f41d5521a2c958e05e4b0356c41..fca9b0553afa7a9de06030524a0259bdc4bca504 100644 --- a/app/code/Magento/Shipping/view/adminhtml/web/order/packaging.js +++ b/app/code/Magento/Shipping/view/adminhtml/web/order/packaging.js @@ -18,7 +18,7 @@ Packaging.prototype = { this.errorQtyOverLimit = params.errorQtyOverLimit; this.titleDisabledSaveBtn = params.titleDisabledSaveBtn; this.window = $('packaging_window'); - this.messages = this.window.select('.messages')[0]; + this.messages = this.window.select('.message-warning')[0]; this.packagesContent = $('packages_content'); this.template = $('package_template'); this.paramsCreateLabelRequest = {}; diff --git a/app/code/Magento/Sitemap/composer.json b/app/code/Magento/Sitemap/composer.json index 46098d8633ade3567d9300bdaf9ee109efdcf733..1fa5a0e4091d5cbbe06a12b2229f626960b65e15 100644 --- a/app/code/Magento/Sitemap/composer.json +++ b/app/code/Magento/Sitemap/composer.json @@ -3,18 +3,18 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-cms": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-catalog-url-rewrite": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-cms": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-catalog-url-rewrite": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Store/composer.json b/app/code/Magento/Store/composer.json index 051797de489a84446cf95e0913dd6eb5b0a53196..d2c3e97181c1e980a0406709dd6c35b74a84a344 100644 --- a/app/code/Magento/Store/composer.json +++ b/app/code/Magento/Store/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-directory": "0.74.0-beta5", - "magento/module-ui": "0.74.0-beta5", - "magento/module-config": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-directory": "0.74.0-beta6", + "magento/module-ui": "0.74.0-beta6", + "magento/module-config": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate.php index 7fce6e7e37d8f1d73045a7274b67efdd0e972d9a..21a165edf65bf48964f43da33811e285fcbdfffe 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Rate.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate.php @@ -6,6 +6,8 @@ namespace Magento\Tax\Controller\Adminhtml; +use Magento\Framework\Controller\ResultFactory; + /** * Adminhtml tax rate controller * @@ -76,21 +78,15 @@ class Rate extends \Magento\Backend\App\Action /** * Initialize action * - * @return \Magento\Backend\App\Action + * @return \Magento\Backend\Model\View\Result\Page */ - protected function _initAction() + protected function initResultPage() { - $this->_view->loadLayout(); - $this->_setActiveMenu( - 'Magento_Tax::sales_tax_rates' - )->_addBreadcrumb( - __('Sales'), - __('Sales') - )->_addBreadcrumb( - __('Tax'), - __('Tax') - ); - return $this; + $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE); + $resultPage->setActiveMenu('Magento_Tax::sales_tax_rates') + ->addBreadcrumb(__('Sales'), __('Sales')) + ->addBreadcrumb(__('Tax'), __('Tax')); + return $resultPage; } /** diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Add.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Add.php index 6b90cbf270fdfed7a610a436104a2ef5d1e5c8e6..2fe8a5b1572e38dcf05676653a2fd8d633ca38ed 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Add.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Add.php @@ -13,7 +13,7 @@ class Add extends \Magento\Tax\Controller\Adminhtml\Rate /** * Show Add Form * - * @return void + * @return \Magento\Backend\Model\View\Result\Page */ public function execute() { @@ -22,26 +22,18 @@ class Add extends \Magento\Tax\Controller\Adminhtml\Rate $this->_objectManager->get('Magento\Backend\Model\Session')->getFormData(true) ); - $this->_initAction()->_addBreadcrumb( - __('Manage Tax Rates'), - __('Manage Tax Rates'), - $this->getUrl('tax/rate') - )->_addBreadcrumb( - __('New Tax Rate'), - __('New Tax Rate') - )->_addContent( - $this->_view->getLayout()->createBlock( - 'Magento\Tax\Block\Adminhtml\Rate\Toolbar\Save' - )->assign( - 'header', - __('Add New Tax Rate') - )->assign( - 'form', - $this->_view->getLayout()->createBlock('Magento\Tax\Block\Adminhtml\Rate\Form', 'tax_rate_form') - ) - ); - $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Tax Zones and Rates')); - $this->_view->getPage()->getConfig()->getTitle()->prepend(__('New Tax Rate')); - $this->_view->renderLayout(); + $resultPage = $this->initResultPage(); + $layout = $resultPage->getLayout(); + $toolbarSaveBlock = $layout->createBlock('Magento\Tax\Block\Adminhtml\Rate\Toolbar\Save') + ->assign('header', __('Add New Tax Rate')) + ->assign('form', $layout->createBlock('Magento\Tax\Block\Adminhtml\Rate\Form', 'tax_rate_form')); + + $resultPage->addBreadcrumb(__('Manage Tax Rates'), __('Manage Tax Rates'), $this->getUrl('tax/rate')) + ->addBreadcrumb(__('New Tax Rate'), __('New Tax Rate')) + ->addContent($toolbarSaveBlock); + + $resultPage->getConfig()->getTitle()->prepend(__('Tax Zones and Rates')); + $resultPage->getConfig()->getTitle()->prepend(__('New Tax Rate')); + return $resultPage; } } diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxDelete.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxDelete.php index fd09d178fcd755d362a1e831257dfdba6e84e182..7d5e8285ebbe6792357da00fbf158182051e69fc 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxDelete.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxDelete.php @@ -6,36 +6,33 @@ */ namespace Magento\Tax\Controller\Adminhtml\Rate; +use Magento\Framework\Controller\ResultFactory; + class AjaxDelete extends \Magento\Tax\Controller\Adminhtml\Rate { /** * Delete Tax Rate via AJAX * - * @return void + * @return \Magento\Framework\Controller\Result\Json */ public function execute() { $rateId = (int)$this->getRequest()->getParam('tax_calculation_rate_id'); try { $this->_taxRateRepository->deleteById($rateId); - $responseContent = $this->_objectManager->get( - 'Magento\Framework\Json\Helper\Data' - )->jsonEncode( - ['success' => true, 'error_message' => ''] - ); + $responseContent = ['success' => true, 'error_message' => '']; } catch (\Magento\Framework\Exception\LocalizedException $e) { - $responseContent = $this->_objectManager->get( - 'Magento\Framework\Json\Helper\Data' - )->jsonEncode( - ['success' => false, 'error_message' => $e->getMessage()] - ); + $responseContent = ['success' => false, 'error_message' => $e->getMessage()]; } catch (\Exception $e) { - $responseContent = $this->_objectManager->get( - 'Magento\Framework\Json\Helper\Data' - )->jsonEncode( - ['success' => false, 'error_message' => __('An error occurred while deleting this tax rate.')] - ); + $responseContent = [ + 'success' => false, + 'error_message' => __('An error occurred while deleting this tax rate.') + ]; } - $this->getResponse()->representJson($responseContent); + + /** @var \Magento\Framework\Controller\Result\Json $resultJson */ + $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON); + $resultJson->setData($responseContent); + return $resultJson; } } diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxSave.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxSave.php index e78dc538074af4c59adb3ba4f02abe273059b2da..fd5471314d2d7066ae4462d3276dfcf0c55bb193 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxSave.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxSave.php @@ -6,54 +6,47 @@ */ namespace Magento\Tax\Controller\Adminhtml\Rate; +use Magento\Framework\Controller\ResultFactory; + class AjaxSave extends \Magento\Tax\Controller\Adminhtml\Rate { /** * Save Tax Rate via AJAX * - * @return void + * @return \Magento\Framework\Controller\Result\Json */ public function execute() { - $responseContent = ''; try { $rateData = $this->_processRateData($this->getRequest()->getPostValue()); /** @var \Magento\Tax\Api\Data\TaxRateInterface $taxRate */ $taxRate = $this->populateTaxRateData($rateData); $this->_taxRateRepository->save($taxRate); - $responseContent = $this->_objectManager->get( - 'Magento\Framework\Json\Helper\Data' - )->jsonEncode( - [ - 'success' => true, - 'error_message' => '', - 'tax_calculation_rate_id' => $taxRate->getId(), - 'code' => $taxRate->getCode(), - ] - ); + $responseContent = [ + 'success' => true, + 'error_message' => '', + 'tax_calculation_rate_id' => $taxRate->getId(), + 'code' => $taxRate->getCode(), + ]; } catch (\Magento\Framework\Exception\LocalizedException $e) { - $responseContent = $this->_objectManager->get( - 'Magento\Framework\Json\Helper\Data' - )->jsonEncode( - [ - 'success' => false, - 'error_message' => $e->getMessage(), - 'tax_calculation_rate_id' => '', - 'code' => '', - ] - ); + $responseContent = [ + 'success' => false, + 'error_message' => $e->getMessage(), + 'tax_calculation_rate_id' => '', + 'code' => '', + ]; } catch (\Exception $e) { - $responseContent = $this->_objectManager->get( - 'Magento\Framework\Json\Helper\Data' - )->jsonEncode( - [ - 'success' => false, - 'error_message' => __('Something went wrong saving this rate.'), - 'tax_calculation_rate_id' => '', - 'code' => '', - ] - ); + $responseContent = [ + 'success' => false, + 'error_message' => __('Something went wrong saving this rate.'), + 'tax_calculation_rate_id' => '', + 'code' => '', + ]; } - $this->getResponse()->representJson($responseContent); + + /** @var \Magento\Framework\Controller\Result\Json $resultJson */ + $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON); + $resultJson->setData($responseContent); + return $resultJson; } } diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Delete.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Delete.php index bcf14907b4eff3410da0d7a637f2fb7554a00f57..9ee9be000e87c91ed034f8158df818bd74fa1897 100755 --- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Delete.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Delete.php @@ -7,6 +7,7 @@ namespace Magento\Tax\Controller\Adminhtml\Rate; use Magento\Framework\Exception\NoSuchEntityException; +use Magento\Framework\Controller\ResultFactory; class Delete extends \Magento\Tax\Controller\Adminhtml\Rate { @@ -18,20 +19,19 @@ class Delete extends \Magento\Tax\Controller\Adminhtml\Rate public function execute() { if ($rateId = $this->getRequest()->getParam('rate')) { + /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); try { $this->_taxRateRepository->deleteById($rateId); $this->messageManager->addSuccess(__('The tax rate has been deleted.')); - $this->getResponse()->setRedirect($this->getUrl("*/*/")); - return; + return $resultRedirect->setPath("*/*/"); } catch (NoSuchEntityException $e) { $this->messageManager->addError( __('Something went wrong deleting this rate because of an incorrect rate ID.') ); - $this->getResponse()->setRedirect($this->getUrl('tax/*/')); - return; + return $resultRedirect->setPath("tax/*/"); } - return $this->getDefaultResult(); } } @@ -42,11 +42,11 @@ class Delete extends \Magento\Tax\Controller\Adminhtml\Rate */ public function getDefaultResult() { - $resultRedirect = $this->resultRedirectFactory->create(); + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); if ($this->getRequest()->getServer('HTTP_REFERER')) { $resultRedirect->setRefererUrl(); } else { - $resultRedirect->setUrl($this->getUrl("*/*/")); + $resultRedirect->setPath("*/*/"); } return $resultRedirect; } diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Edit.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Edit.php index 27d8003a4b22b760a015dd7aaaf1054217f3fd2c..e13ae2293e6c22bb6ec6e3493b0d6798864decd9 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Edit.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Edit.php @@ -8,13 +8,14 @@ namespace Magento\Tax\Controller\Adminhtml\Rate; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Tax\Controller\RegistryConstants; +use Magento\Framework\Controller\ResultFactory; class Edit extends \Magento\Tax\Controller\Adminhtml\Rate { /** * Show Edit Form * - * @return void + * @return \Magento\Backend\Model\View\Result\Page|\Magento\Backend\Model\View\Result\Redirect */ public function execute() { @@ -23,35 +24,27 @@ class Edit extends \Magento\Tax\Controller\Adminhtml\Rate try { $taxRateDataObject = $this->_taxRateRepository->get($rateId); } catch (NoSuchEntityException $e) { - $this->getResponse()->setRedirect($this->getUrl("*/*/")); - return; + /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + return $resultRedirect->setPath("*/*/"); } - $this->_initAction()->_addBreadcrumb( - __('Manage Tax Rates'), - __('Manage Tax Rates'), - $this->getUrl('tax/rate') - )->_addBreadcrumb( - __('Edit Tax Rate'), - __('Edit Tax Rate') - )->_addContent( - $this->_view->getLayout()->createBlock( - 'Magento\Tax\Block\Adminhtml\Rate\Toolbar\Save' - )->assign( - 'header', - __('Edit Tax Rate') - )->assign( + $resultPage = $this->initResultPage(); + $layout = $resultPage->getLayout(); + + $toolbarSaveBlock = $layout->createBlock('Magento\Tax\Block\Adminhtml\Rate\Toolbar\Save') + ->assign('header', __('Edit Tax Rate')) + ->assign( 'form', - $this->_view->getLayout()->createBlock( - 'Magento\Tax\Block\Adminhtml\Rate\Form', - 'tax_rate_form' - )->setShowLegend( - true - ) - ) - ); - $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Tax Zones and Rates')); - $this->_view->getPage()->getConfig()->getTitle()->prepend(sprintf("%s", $taxRateDataObject->getCode())); - $this->_view->renderLayout(); + $layout->createBlock('Magento\Tax\Block\Adminhtml\Rate\Form', 'tax_rate_form')->setShowLegend(true) + ); + + $resultPage->addBreadcrumb(__('Manage Tax Rates'), __('Manage Tax Rates'), $this->getUrl('tax/rate')) + ->addBreadcrumb(__('Edit Tax Rate'), __('Edit Tax Rate')) + ->addContent($toolbarSaveBlock); + + $resultPage->getConfig()->getTitle()->prepend(__('Tax Zones and Rates')); + $resultPage->getConfig()->getTitle()->prepend(sprintf("%s", $taxRateDataObject->getCode())); + return $resultPage; } } diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Index.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Index.php index 17e1349e4f05aa59274a4c841e3c504c79d5dcd0..d38d6ddd9af1407a69f268cb085eafcf9d84ad77 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Index.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Index.php @@ -11,12 +11,13 @@ class Index extends \Magento\Tax\Controller\Adminhtml\Rate /** * Show Main Grid * - * @return void + * @return \Magento\Backend\Model\View\Result\Page */ public function execute() { - $this->_initAction()->_addBreadcrumb(__('Manage Tax Rates'), __('Manage Tax Rates')); - $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Tax Zones and Rates')); - $this->_view->renderLayout(); + $resultPage = $this->initResultPage(); + $resultPage->addBreadcrumb(__('Manage Tax Rates'), __('Manage Tax Rates')); + $resultPage->getConfig()->getTitle()->prepend(__('Tax Zones and Rates')); + return $resultPage; } } diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Save.php b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Save.php index 8a7e1cba1c0c49b6c3c86117e2101c217b023258..e56a31a4d348942962cb96a04f4f598bbbdaf4f3 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Rate/Save.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Rate/Save.php @@ -7,16 +7,19 @@ namespace Magento\Tax\Controller\Adminhtml\Rate; use Magento\Framework\Exception\NoSuchEntityException; +use Magento\Framework\Controller\ResultFactory; class Save extends \Magento\Tax\Controller\Adminhtml\Rate { /** * Save Rate and Data * - * @return void + * @return \Magento\Backend\Model\View\Result\Redirect */ public function execute() { + /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); $ratePost = $this->getRequest()->getPostValue(); if ($ratePost) { $rateId = $this->getRequest()->getParam('tax_calculation_rate_id'); @@ -33,18 +36,15 @@ class Save extends \Magento\Tax\Controller\Adminhtml\Rate $this->_taxRateRepository->save($taxData); $this->messageManager->addSuccess(__('The tax rate has been saved.')); - $this->getResponse()->setRedirect($this->getUrl("*/*/")); - return; + return $resultRedirect->setPath('*/*/'); } catch (\Magento\Framework\Exception\LocalizedException $e) { $this->_objectManager->get('Magento\Backend\Model\Session')->setFormData($ratePost); $this->messageManager->addError($e->getMessage()); } catch (\Exception $e) { $this->messageManager->addError($e->getMessage()); } - - $this->getResponse()->setRedirect($this->_redirect->getRedirectUrl($this->getUrl('*'))); - return; + return $resultRedirect->setUrl($this->_redirect->getRedirectUrl($this->getUrl('*'))); } - $this->getResponse()->setRedirect($this->getUrl('tax/rate')); + return $resultRedirect->setPath('tax/rate'); } } diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rule.php b/app/code/Magento/Tax/Controller/Adminhtml/Rule.php index 577babe2ae7a01a64ba730f0d44e344e48a02555..f4a88b5f036653086711718297624377d27bfd53 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Rule.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Rule.php @@ -12,6 +12,7 @@ namespace Magento\Tax\Controller\Adminhtml; use Magento\Backend\App\Action; +use Magento\Framework\Controller\ResultFactory; class Rule extends \Magento\Backend\App\Action { @@ -49,21 +50,15 @@ class Rule extends \Magento\Backend\App\Action /** * Initialize action * - * @return $this + * @return \Magento\Backend\Model\View\Result\Page */ - protected function _initAction() + protected function initResultPage() { - $this->_view->loadLayout(); - $this->_setActiveMenu( - 'Magento_Tax::sales_tax_rules' - )->_addBreadcrumb( - __('Tax'), - __('Tax') - )->_addBreadcrumb( - __('Tax Rules'), - __('Tax Rules') - ); - return $this; + $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE); + $resultPage->setActiveMenu('Magento_Tax::sales_tax_rules') + ->addBreadcrumb(__('Tax'), __('Tax')) + ->addBreadcrumb(__('Tax Rules'), __('Tax Rules')); + return $resultPage; } /** diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Delete.php b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Delete.php index 4fff21c62f6352e4c1c4ac14b9504864755317bf..c0a26cbcecf15cefa89d893a60744dc653cc6c05 100755 --- a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Delete.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Delete.php @@ -6,25 +6,28 @@ */ namespace Magento\Tax\Controller\Adminhtml\Rule; +use Magento\Framework\Controller\ResultFactory; + class Delete extends \Magento\Tax\Controller\Adminhtml\Rule { /** - * @return \Magento\Backend\Model\View\Result\Redirect|void + * + * @throws \Exception + * @return \Magento\Backend\Model\View\Result\Redirect */ public function execute() { + /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); $ruleId = (int)$this->getRequest()->getParam('rule'); try { $this->ruleService->deleteById($ruleId); $this->messageManager->addSuccess(__('The tax rule has been deleted.')); - $this->_redirect('tax/*/'); - return; + return $resultRedirect->setPath('tax/*/'); } catch (\Magento\Framework\Exception\NoSuchEntityException $e) { $this->messageManager->addError(__('This rule no longer exists.')); - $this->_redirect('tax/*/'); - return; + return $resultRedirect->setPath('tax/*/'); } - return $this->getDefaultResult(); } /** @@ -34,7 +37,8 @@ class Delete extends \Magento\Tax\Controller\Adminhtml\Rule */ public function getDefaultResult() { - $resultRedirect = $this->resultRedirectFactory->create(); + /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); return $resultRedirect->setUrl($this->_redirect->getRedirectUrl($this->getUrl('*'))); } } diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Edit.php b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Edit.php index 86663f854fd90536784575fc2dff3b1fd501de68..ebbabcf833aed5f6eea84d58dfd91ffa35514a08 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Edit.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Edit.php @@ -6,11 +6,12 @@ */ namespace Magento\Tax\Controller\Adminhtml\Rule; +use Magento\Framework\Controller\ResultFactory; class Edit extends \Magento\Tax\Controller\Adminhtml\Rule { /** - * @return void + * @return \Magento\Backend\Model\View\Result\Page|\Magento\Backend\Model\View\Result\Redirect */ public function execute() { @@ -25,8 +26,9 @@ class Edit extends \Magento\Tax\Controller\Adminhtml\Rule } catch (\Magento\Framework\Exception\NoSuchEntityException $e) { $backendSession->unsRuleData(); $this->messageManager->addError(__('This rule no longer exists.')); - $this->_redirect('tax/*/'); - return; + /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + return $resultRedirect->setPath('tax/*/'); } } else { $pageTitle = __('New Tax Rule'); @@ -36,9 +38,10 @@ class Edit extends \Magento\Tax\Controller\Adminhtml\Rule $this->_coreRegistry->register('tax_rule_form_data', $data); } $breadcrumb = $taxRuleId ? __('Edit Rule') : __('New Rule'); - $this->_initAction()->_addBreadcrumb($breadcrumb, $breadcrumb); - $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Tax Rules')); - $this->_view->getPage()->getConfig()->getTitle()->prepend($pageTitle); - $this->_view->renderLayout(); + $resultPage = $this->initResultPage(); + $resultPage->addBreadcrumb($breadcrumb, $breadcrumb); + $resultPage->getConfig()->getTitle()->prepend(__('Tax Rules')); + $resultPage->getConfig()->getTitle()->prepend($pageTitle); + return $resultPage; } } diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Index.php b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Index.php index f64f5a2db19b11335a0f514c2c083a39367ac9a2..b3ea7586cf90bd507139b000ea52e8f3ac414735 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Index.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Index.php @@ -10,12 +10,12 @@ namespace Magento\Tax\Controller\Adminhtml\Rule; class Index extends \Magento\Tax\Controller\Adminhtml\Rule { /** - * @return $this + * @return \Magento\Backend\Model\View\Result\Page */ public function execute() { - $this->_initAction(); - $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Tax Rules')); - $this->_view->renderLayout(); + $resultPage = $this->initResultPage(); + $resultPage->getConfig()->getTitle()->prepend(__('Tax Rules')); + return $resultPage; } } diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rule/NewAction.php b/app/code/Magento/Tax/Controller/Adminhtml/Rule/NewAction.php index 94b15bc53b7eed8d741b5b202efd0e8167ad463f..79f4fa7d752e72dafcb21e342d5aa95dd3af57fd 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Rule/NewAction.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Rule/NewAction.php @@ -6,14 +6,17 @@ */ namespace Magento\Tax\Controller\Adminhtml\Rule; +use Magento\Framework\Controller\ResultFactory; class NewAction extends \Magento\Tax\Controller\Adminhtml\Rule { /** - * @return void + * @return \Magento\Backend\Model\View\Result\Forward */ public function execute() { - $this->_forward('edit'); + /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */ + $resultForward = $this->resultFactory->create(ResultFactory::TYPE_FORWARD); + return $resultForward->forward('edit'); } } diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Save.php b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Save.php index 155c2bb0b76e3cad9efc59090547a3098cba684e..fdcaa2f15c127540fc9f07713b2ec3dc17da8a1d 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Save.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Save.php @@ -6,14 +6,17 @@ */ namespace Magento\Tax\Controller\Adminhtml\Rule; +use Magento\Framework\Controller\ResultFactory; class Save extends \Magento\Tax\Controller\Adminhtml\Rule { /** - * @return void + * @return \Magento\Backend\Model\View\Result\Redirect */ public function execute() { + /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); $postData = $this->getRequest()->getPostValue(); if ($postData) { $postData['calculate_subtotal'] = $this->getRequest()->getParam('calculate_subtotal', 0); @@ -24,12 +27,9 @@ class Save extends \Magento\Tax\Controller\Adminhtml\Rule $this->messageManager->addSuccess(__('The tax rule has been saved.')); if ($this->getRequest()->getParam('back')) { - $this->_redirect('tax/*/edit', ['rule' => $taxRule->getId()]); - return; + return $resultRedirect->setPath('tax/*/edit', ['rule' => $taxRule->getId()]); } - - $this->_redirect('tax/*/'); - return; + return $resultRedirect->setPath('tax/*/'); } catch (\Magento\Framework\Exception\LocalizedException $e) { $this->messageManager->addError($e->getMessage()); } catch (\Exception $e) { @@ -37,9 +37,8 @@ class Save extends \Magento\Tax\Controller\Adminhtml\Rule } $this->_objectManager->get('Magento\Backend\Model\Session')->setRuleData($postData); - $this->getResponse()->setRedirect($this->_redirect->getRedirectUrl($this->getUrl('*'))); - return; + return $resultRedirect->setUrl($this->_redirect->getRedirectUrl($this->getUrl('*'))); } - $this->getResponse()->setRedirect($this->getUrl('tax/rule')); + return $resultRedirect->setPath('tax/rule'); } } diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxDelete.php b/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxDelete.php index d817e1134442fe0602b5eb583fa7f6293f4407a7..20e413ed5e78f886d9fbb4be3b8562c1249bc022 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxDelete.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxDelete.php @@ -6,36 +6,32 @@ */ namespace Magento\Tax\Controller\Adminhtml\Tax; +use Magento\Framework\Controller\ResultFactory; + class AjaxDelete extends \Magento\Tax\Controller\Adminhtml\Tax { /** * Delete Tax Class via AJAX * - * @return void + * @return \Magento\Framework\Controller\Result\Json */ public function execute() { $classId = (int)$this->getRequest()->getParam('class_id'); try { $this->taxClassRepository->deleteById($classId); - $responseContent = $this->_objectManager->get( - 'Magento\Framework\Json\Helper\Data' - )->jsonEncode( - ['success' => true, 'error_message' => ''] - ); + $responseContent = ['success' => true, 'error_message' => '']; } catch (\Magento\Framework\Exception\LocalizedException $e) { - $responseContent = $this->_objectManager->get( - 'Magento\Framework\Json\Helper\Data' - )->jsonEncode( - ['success' => false, 'error_message' => $e->getMessage()] - ); + $responseContent = ['success' => false, 'error_message' => $e->getMessage()]; } catch (\Exception $e) { - $responseContent = $this->_objectManager->get( - 'Magento\Framework\Json\Helper\Data' - )->jsonEncode( - ['success' => false, 'error_message' => __('Something went wrong deleting this tax class.')] - ); + $responseContent = [ + 'success' => false, + 'error_message' => __('Something went wrong deleting this tax class.') + ]; } - $this->getResponse()->representJson($responseContent); + /** @var \Magento\Framework\Controller\Result\Json $resultJson */ + $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON); + $resultJson->setData($responseContent); + return $resultJson; } } diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxSave.php b/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxSave.php index f338428b3ddb8dcfd77a1ffdf93f6de637b4cfa8..b8f72a7fa6d439e9849df9c4c81c57c2e8655931 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxSave.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Tax/AjaxSave.php @@ -6,12 +6,14 @@ */ namespace Magento\Tax\Controller\Adminhtml\Tax; +use Magento\Framework\Controller\ResultFactory; + class AjaxSave extends \Magento\Tax\Controller\Adminhtml\Tax { /** * Save Tax Class via AJAX * - * @return void + * @return \Magento\Framework\Controller\Result\Json */ public function execute() { @@ -24,30 +26,30 @@ class AjaxSave extends \Magento\Tax\Controller\Adminhtml\Tax ->setClassName($this->_processClassName((string)$this->getRequest()->getPost('class_name'))); $taxClassId = $this->taxClassRepository->save($taxClass); - $responseContent = $this->_objectManager->get( - 'Magento\Framework\Json\Helper\Data' - )->jsonEncode( - [ - 'success' => true, - 'error_message' => '', - 'class_id' => $taxClassId, - 'class_name' => $taxClass->getClassName(), - ] - ); + $responseContent = [ + 'success' => true, + 'error_message' => '', + 'class_id' => $taxClassId, + 'class_name' => $taxClass->getClassName(), + ]; } catch (\Magento\Framework\Exception\LocalizedException $e) { - $responseContent = $this->_objectManager->get('Magento\Framework\Json\Helper\Data')->jsonEncode( - ['success' => false, 'error_message' => $e->getMessage(), 'class_id' => '', 'class_name' => ''] - ); + $responseContent = [ + 'success' => false, + 'error_message' => $e->getMessage(), + 'class_id' => '', + 'class_name' => '' + ]; } catch (\Exception $e) { - $responseContent = $this->_objectManager->get('Magento\Framework\Json\Helper\Data')->jsonEncode( - [ - 'success' => false, - 'error_message' => __('Something went wrong saving this tax class.'), - 'class_id' => '', - 'class_name' => '', - ] - ); + $responseContent = [ + 'success' => false, + 'error_message' => __('Something went wrong saving this tax class.'), + 'class_id' => '', + 'class_name' => '', + ]; } - $this->getResponse()->representJson($responseContent); + /** @var \Magento\Framework\Controller\Result\Json $resultJson */ + $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON); + $resultJson->setData($responseContent); + return $resultJson; } } diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Tax/IgnoreTaxNotification.php b/app/code/Magento/Tax/Controller/Adminhtml/Tax/IgnoreTaxNotification.php index 71db454cc337847c5f47dbef985ebf9e06360a82..d84a09825b08fb4391830a6ec8261b24d152557a 100644 --- a/app/code/Magento/Tax/Controller/Adminhtml/Tax/IgnoreTaxNotification.php +++ b/app/code/Magento/Tax/Controller/Adminhtml/Tax/IgnoreTaxNotification.php @@ -6,6 +6,8 @@ */ namespace Magento\Tax\Controller\Adminhtml\Tax; +use Magento\Framework\Controller\ResultFactory; + class IgnoreTaxNotification extends \Magento\Tax\Controller\Adminhtml\Tax { /** @@ -32,7 +34,7 @@ class IgnoreTaxNotification extends \Magento\Tax\Controller\Adminhtml\Tax /** * Set tax ignore notification flag and redirect back * - * @return \Magento\Framework\App\ResponseInterface + * @return \Magento\Backend\Model\View\Result\Redirect */ public function execute() { @@ -51,6 +53,8 @@ class IgnoreTaxNotification extends \Magento\Tax\Controller\Adminhtml\Tax $this->_cacheTypeList->cleanType('block_html'); $this->_eventManager->dispatch('adminhtml_cache_refresh_type', ['type' => 'block_html']); - $this->getResponse()->setRedirect($this->_redirect->getRefererUrl()); + /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + return $resultRedirect->setRefererUrl(); } } diff --git a/app/code/Magento/Tax/Test/Unit/Controller/Adminhtml/Tax/IgnoreTaxNotificationTest.php b/app/code/Magento/Tax/Test/Unit/Controller/Adminhtml/Tax/IgnoreTaxNotificationTest.php index 9a649f3d2d5b9ca772e5b3df44d0ed1e69e27757..2f2a823d5f64d3cb8c3b00a4c864a7108e181c32 100644 --- a/app/code/Magento/Tax/Test/Unit/Controller/Adminhtml/Tax/IgnoreTaxNotificationTest.php +++ b/app/code/Magento/Tax/Test/Unit/Controller/Adminhtml/Tax/IgnoreTaxNotificationTest.php @@ -19,7 +19,7 @@ class IgnoreTaxNotificationTest extends \PHPUnit_Framework_TestCase $cacheTypeList->expects($this->once()) ->method('cleanType') ->with('block_html') - ->will($this->returnValue(null)); + ->willReturn(null); $request = $this->getMockBuilder('\Magento\Framework\App\Request\Http') ->disableOriginalConstructor() @@ -27,12 +27,23 @@ class IgnoreTaxNotificationTest extends \PHPUnit_Framework_TestCase ->getMock(); $request->expects($this->once()) ->method('getParam') - ->will($this->returnValue('tax')); + ->willReturn('tax'); - $response = $this->getMockBuilder('\Magento\Framework\App\Response\Http') + $resultRedirect = $this->getMockBuilder('Magento\Backend\Model\View\Result\Redirect') ->disableOriginalConstructor() - ->setMethods(['setRedirect']) ->getMock(); + $resultRedirect->expects($this->once()) + ->method('setRefererUrl') + ->willReturnSelf(); + + $resultFactory = $this->getMockBuilder('Magento\Framework\Controller\ResultFactory') + ->disableOriginalConstructor() + ->setMethods(['create']) + ->getMock(); + $resultFactory->expects($this->once()) + ->method('create') + ->with(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT) + ->willReturn($resultRedirect); $config = $this->getMockBuilder('\Magento\Config\Model\Resource\Config') ->disableOriginalConstructor() @@ -41,7 +52,7 @@ class IgnoreTaxNotificationTest extends \PHPUnit_Framework_TestCase $config->expects($this->once()) ->method('saveConfig') ->with('tax/notification/ignore_tax', 1, \Magento\Framework\App\ScopeInterface::SCOPE_DEFAULT, 0) - ->will($this->returnValue(null)); + ->willReturn(null); $manager = $this->getMockBuilder('\Magento\Framework\ObjectManagerInterface') ->disableOriginalConstructor() @@ -49,7 +60,7 @@ class IgnoreTaxNotificationTest extends \PHPUnit_Framework_TestCase ->getMock(); $manager->expects($this->any()) ->method('get') - ->will($this->returnValue($config)); + ->willReturn($config); $notification = $objectManager->getObject( 'Magento\Tax\Controller\Adminhtml\Tax\IgnoreTaxNotification', @@ -57,11 +68,11 @@ class IgnoreTaxNotificationTest extends \PHPUnit_Framework_TestCase 'objectManager' => $manager, 'cacheTypeList' => $cacheTypeList, 'request' => $request, - 'response' => $response + 'resultFactory' => $resultFactory ] ); // No exception thrown - $notification->execute(); + $this->assertSame($resultRedirect, $notification->execute()); } } diff --git a/app/code/Magento/Tax/composer.json b/app/code/Magento/Tax/composer.json index 5ad7a3d5645b31c665a2392f223f961d4d13990f..27b9422635e75187471b290bb89d920fa9ccb1c5 100644 --- a/app/code/Magento/Tax/composer.json +++ b/app/code/Magento/Tax/composer.json @@ -3,23 +3,23 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-shipping": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-reports": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-config": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-shipping": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-reports": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportCsv.php b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportCsv.php index c49fc0c8e92594c5db3669c027bf282053fd4293..9f6f1cb8e6beeb2f860b824759c3a019cb1612eb 100644 --- a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportCsv.php +++ b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportCsv.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -8,6 +7,7 @@ namespace Magento\TaxImportExport\Controller\Adminhtml\Rate; use Magento\Framework\App\ResponseInterface; use Magento\Framework\App\Filesystem\DirectoryList; +use Magento\Framework\Controller\ResultFactory; class ExportCsv extends \Magento\TaxImportExport\Controller\Adminhtml\Rate { @@ -18,8 +18,10 @@ class ExportCsv extends \Magento\TaxImportExport\Controller\Adminhtml\Rate */ public function execute() { - $this->_view->loadLayout(false); - $content = $this->_view->getLayout()->getChildBlock('adminhtml.tax.rate.grid', 'grid.export'); + /** @var \Magento\Framework\View\Result\Layout $resultLayout */ + $resultLayout = $this->resultFactory->create(ResultFactory::TYPE_LAYOUT); + $content = $resultLayout->getLayout()->getChildBlock('adminhtml.tax.rate.grid', 'grid.export'); + return $this->fileFactory->create( 'rates.csv', $content->getCsvFile(), diff --git a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportPost.php b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportPost.php index f698f7cbe655353dda0a808d032fa58f9f7e5b2a..1d5685802882b5ed3703222f7318511712493605 100644 --- a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportPost.php +++ b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportPost.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -12,7 +11,7 @@ use Magento\Framework\App\Filesystem\DirectoryList; class ExportPost extends \Magento\TaxImportExport\Controller\Adminhtml\Rate { /** - * export action from import/export tax + * Export action from import/export tax * * @return ResponseInterface */ @@ -82,7 +81,6 @@ class ExportPost extends \Magento\TaxImportExport\Controller\Adminhtml\Rate $content .= $rate->toString($template) . "\n"; } - $this->_view->loadLayout(); return $this->fileFactory->create('tax_rates.csv', $content, DirectoryList::VAR_DIR); } } diff --git a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportXml.php b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportXml.php index 0ec4688e5d52e2bff1b45e3263fd3b14b8e5e3f5..38fc277576cc673254f8a0fc2dfe8d47439fa7a6 100644 --- a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportXml.php +++ b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ExportXml.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -8,6 +7,7 @@ namespace Magento\TaxImportExport\Controller\Adminhtml\Rate; use Magento\Framework\App\ResponseInterface; use Magento\Framework\App\Filesystem\DirectoryList; +use Magento\Framework\Controller\ResultFactory; class ExportXml extends \Magento\TaxImportExport\Controller\Adminhtml\Rate { @@ -18,8 +18,10 @@ class ExportXml extends \Magento\TaxImportExport\Controller\Adminhtml\Rate */ public function execute() { - $this->_view->loadLayout(false); - $content = $this->_view->getLayout()->getChildBlock('adminhtml.tax.rate.grid', 'grid.export'); + /** @var \Magento\Framework\View\Result\Layout $resultLayout */ + $resultLayout = $this->resultFactory->create(ResultFactory::TYPE_LAYOUT); + $content = $resultLayout->getLayout()->getChildBlock('adminhtml.tax.rate.grid', 'grid.export'); + return $this->fileFactory->create( 'rates.xml', $content->getExcelFile(), diff --git a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportExport.php b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportExport.php index ca34dd5197a7e941692bf263224bf094f08066ab..5ba0b3e87da0e7727e89aa3747d34916e2d0123a 100644 --- a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportExport.php +++ b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportExport.php @@ -1,30 +1,33 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\TaxImportExport\Controller\Adminhtml\Rate; +use Magento\Framework\Controller\ResultFactory; + class ImportExport extends \Magento\TaxImportExport\Controller\Adminhtml\Rate { /** * Import and export Page * - * @return void + * @return \Magento\Backend\Model\View\Result\Page */ public function execute() { - $this->_view->loadLayout(); - $this->_setActiveMenu( - 'Magento_TaxImportExport::system_convert_tax' - )->_addContent( - $this->_view->getLayout()->createBlock('Magento\TaxImportExport\Block\Adminhtml\Rate\ImportExportHeader') - )->_addContent( - $this->_view->getLayout()->createBlock('Magento\TaxImportExport\Block\Adminhtml\Rate\ImportExport') + /** @var \Magento\Backend\Model\View\Result\Page $resultPage */ + $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE); + + $resultPage->setActiveMenu('Magento_TaxImportExport::system_convert_tax'); + $resultPage->addContent( + $resultPage->getLayout()->createBlock('Magento\TaxImportExport\Block\Adminhtml\Rate\ImportExportHeader') + ); + $resultPage->addContent( + $resultPage->getLayout()->createBlock('Magento\TaxImportExport\Block\Adminhtml\Rate\ImportExport') ); - $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Tax Zones and Rates')); - $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Import and Export Tax Rates')); - $this->_view->renderLayout(); + $resultPage->getConfig()->getTitle()->prepend(__('Tax Zones and Rates')); + $resultPage->getConfig()->getTitle()->prepend(__('Import and Export Tax Rates')); + return $resultPage; } } diff --git a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportPost.php b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportPost.php index d072f6b82b28acb85e661f9b30776509601eaf92..663a0183b1e86cba8e888c9a9b194e24e99c9519 100644 --- a/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportPost.php +++ b/app/code/Magento/TaxImportExport/Controller/Adminhtml/Rate/ImportPost.php @@ -1,17 +1,18 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\TaxImportExport\Controller\Adminhtml\Rate; +use Magento\Framework\Controller\ResultFactory; + class ImportPost extends \Magento\TaxImportExport\Controller\Adminhtml\Rate { /** * import action from import/export tax * - * @return void + * @return \Magento\Backend\Model\View\Result\Redirect */ public function execute() { @@ -30,6 +31,9 @@ class ImportPost extends \Magento\TaxImportExport\Controller\Adminhtml\Rate } else { $this->messageManager->addError(__('Invalid file upload attempt')); } - $this->getResponse()->setRedirect($this->_redirect->getRedirectUrl($this->getUrl('*'))); + /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + $resultRedirect->setUrl($this->_redirect->getRedirectUrl()); + return $resultRedirect; } } diff --git a/app/code/Magento/TaxImportExport/composer.json b/app/code/Magento/TaxImportExport/composer.json index 1948cd26ef6b3e105865d27f52a5f6a99f53b3b5..334b8652a6d74ed73e037f5d001b62026444bac6 100644 --- a/app/code/Magento/TaxImportExport/composer.json +++ b/app/code/Magento/TaxImportExport/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-tax": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-tax": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Theme/composer.json b/app/code/Magento/Theme/composer.json index 04ea19e36e946cb8925ad0b651f2b27bb4b80e2f..cb64d49d6d2dae6c61f64b767b8fa2f2a895544f 100644 --- a/app/code/Magento/Theme/composer.json +++ b/app/code/Magento/Theme/composer.json @@ -3,23 +3,23 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-cms": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-widget": "0.74.0-beta5", - "magento/module-config": "0.74.0-beta5", - "magento/module-media-storage": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", - "magento/module-require-js": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-cms": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-widget": "0.74.0-beta6", + "magento/module-config": "0.74.0-beta6", + "magento/module-media-storage": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", + "magento/module-require-js": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-translation": "0.74.0-beta5" + "magento/module-translation": "0.74.0-beta6" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Translation/composer.json b/app/code/Magento/Translation/composer.json index 6e4f95813c4d7f71303486f41b8feafd8114627a..4b817066e92d7a9cccc5efbc1d2909409c383f0a 100644 --- a/app/code/Magento/Translation/composer.json +++ b/app/code/Magento/Translation/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-backend": "0.74.0-beta5", - "magento/module-developer": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-backend": "0.74.0-beta6", + "magento/module-developer": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Ui/composer.json b/app/code/Magento/Ui/composer.json index 3d083a9bfc18f9c82ae46c24d1f1b1a458efead4..ecf417cad0f81fd792b366b6d2f314848fbfcf7b 100644 --- a/app/code/Magento/Ui/composer.json +++ b/app/code/Magento/Ui/composer.json @@ -3,13 +3,13 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-backend": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", + "magento/module-backend": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Ups/composer.json b/app/code/Magento/Ups/composer.json index 30e04c61293fb11c1d7c05abf6b9bd5a60e6ca2b..3fed6bdce1e18410c2fc17a53d32f8a93d940f78 100644 --- a/app/code/Magento/Ups/composer.json +++ b/app/code/Magento/Ups/composer.json @@ -3,18 +3,18 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-shipping": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-shipping": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/UrlRewrite/composer.json b/app/code/Magento/UrlRewrite/composer.json index 6361324e7bbe9032406b54fd4195e906778f0e40..1156b7cb79022a4f0caf8e293c1b752ecc4d0cef 100644 --- a/app/code/Magento/UrlRewrite/composer.json +++ b/app/code/Magento/UrlRewrite/composer.json @@ -3,17 +3,17 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-catalog-url-rewrite": "0.74.0-beta5", - "magento/module-cms": "0.74.0-beta5", - "magento/module-cms-url-rewrite": "0.74.0-beta5", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-catalog-url-rewrite": "0.74.0-beta6", + "magento/module-cms": "0.74.0-beta6", + "magento/module-cms-url-rewrite": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/User/composer.json b/app/code/Magento/User/composer.json index adde1977addc39fecd13f8176d42f6b040298c39..1d387c17899055557bb811a7c3024d38b90ef587 100644 --- a/app/code/Magento/User/composer.json +++ b/app/code/Magento/User/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-authorization": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-integration": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-authorization": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-integration": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Usps/composer.json b/app/code/Magento/Usps/composer.json index d278fc22a7a3f54300f60fd08c12ace05d9a9fae..382961b5610b48750b1aa3e64d77e46433cae688 100644 --- a/app/code/Magento/Usps/composer.json +++ b/app/code/Magento/Usps/composer.json @@ -3,20 +3,20 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-shipping": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/module-config": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-shipping": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/module-config": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "lib-libxml": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Variable/composer.json b/app/code/Magento/Variable/composer.json index b958c720516ab41bf854769a8c45a707813d4d78..ececb67d0ec8b20c51576dfe0b271f50a9c98015 100644 --- a/app/code/Magento/Variable/composer.json +++ b/app/code/Magento/Variable/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.4.11|~5.5.0|~5.6.0", - "magento/module-backend": "0.74.0-beta5", - "magento/module-email": "0.74.0-beta5", - "magento/module-store": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-backend": "0.74.0-beta6", + "magento/module-email": "0.74.0-beta6", + "magento/module-store": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Version/composer.json b/app/code/Magento/Version/composer.json index 17742ada0339c7cf4e7a908d3eeb2f5d3dab03e7..7bb5e528673b62f88d0c668ab148cdae4dfbcd35 100644 --- a/app/code/Magento/Version/composer.json +++ b/app/code/Magento/Version/composer.json @@ -3,11 +3,11 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/framework": "0.74.0-beta5", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Webapi/Controller/Rest/ParamOverriderCustomerId.php b/app/code/Magento/Webapi/Controller/Rest/ParamOverriderCustomerId.php new file mode 100644 index 0000000000000000000000000000000000000000..09a27569293993b92a68d8cdde5dab7d67e450e8 --- /dev/null +++ b/app/code/Magento/Webapi/Controller/Rest/ParamOverriderCustomerId.php @@ -0,0 +1,42 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Webapi\Controller\Rest; + +use Magento\Authorization\Model\UserContextInterface; +use Magento\Framework\Webapi\Rest\Request\ParamOverriderInterface; + +/** + * Replaces a "%customer_id%" value with the real customer id + */ +class ParamOverriderCustomerId implements ParamOverriderInterface +{ + /** + * @var UserContextInterface + */ + private $userContext; + + /** + * Constructs an object to override the customer ID parameter on a request. + * + * @param UserContextInterface $userContext + */ + public function __construct(UserContextInterface $userContext) + { + $this->userContext = $userContext; + } + + /** + * {@inheritDoc} + */ + public function getOverriddenValue() + { + if ($this->userContext->getUserType() === UserContextInterface::USER_TYPE_CUSTOMER) { + return $this->userContext->getUserId(); + } + return null; + } +} diff --git a/app/code/Magento/Webapi/Controller/Rest/ParamsOverrider.php b/app/code/Magento/Webapi/Controller/Rest/ParamsOverrider.php index 140f7dcd6a3b37eb1ec921ec6c3dd0172a283738..f7b4f4605a7a62cdf3246fd6ad5fc1e8de279061 100644 --- a/app/code/Magento/Webapi/Controller/Rest/ParamsOverrider.php +++ b/app/code/Magento/Webapi/Controller/Rest/ParamsOverrider.php @@ -6,7 +6,7 @@ namespace Magento\Webapi\Controller\Rest; -use Magento\Authorization\Model\UserContextInterface; +use Magento\Framework\Webapi\Rest\Request\ParamOverriderInterface; use Magento\Webapi\Model\Config\Converter; /** @@ -15,18 +15,19 @@ use Magento\Webapi\Model\Config\Converter; class ParamsOverrider { /** - * @var \Magento\Authorization\Model\UserContextInterface + * @var ParamOverriderInterface[] */ - protected $userContext; + private $paramOverriders; /** * Initialize dependencies * - * @param UserContextInterface $userContext + * @param ParamOverriderInterface[] $paramOverriders */ - public function __construct(UserContextInterface $userContext) - { - $this->userContext = $userContext; + public function __construct( + array $paramOverriders = [] + ) { + $this->paramOverriders = $paramOverriders; } /** @@ -41,10 +42,9 @@ class ParamsOverrider foreach ($parameters as $name => $paramData) { $arrayKeys = explode('.', $name); if ($paramData[Converter::KEY_FORCE] || !$this->isNestedArrayValueSet($inputData, $arrayKeys)) { - if ($paramData[Converter::KEY_VALUE] == '%customer_id%' - && $this->userContext->getUserType() === UserContextInterface::USER_TYPE_CUSTOMER - ) { - $value = $this->userContext->getUserId(); + $paramValue = $paramData[Converter::KEY_VALUE]; + if (isset($this->paramOverriders[$paramValue])) { + $value = $this->paramOverriders[$paramValue]->getOverriddenValue(); } else { $value = $paramData[Converter::KEY_VALUE]; } diff --git a/app/code/Magento/Webapi/Test/Unit/Controller/Rest/ParamOverriderCustomerIdTest.php b/app/code/Magento/Webapi/Test/Unit/Controller/Rest/ParamOverriderCustomerIdTest.php new file mode 100644 index 0000000000000000000000000000000000000000..bf0f152eddf5f123e36faa3207712a71f7c9b369 --- /dev/null +++ b/app/code/Magento/Webapi/Test/Unit/Controller/Rest/ParamOverriderCustomerIdTest.php @@ -0,0 +1,59 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Webapi\Test\Unit\Controller\Rest; + +use Magento\Authorization\Model\UserContextInterface; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Magento\Webapi\Controller\Rest\ParamOverriderCustomerId; + +class ParamOverriderCustomerIdTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ParamOverriderCustomerId + */ + private $model; + + /** + * @var UserContextInterface + */ + private $userContext; + + public function setUp() + { + $this->userContext = $this->getMockBuilder('Magento\Authorization\Model\UserContextInterface') + ->getMockForAbstractClass(); + $this->model = (new ObjectManager($this))->getObject( + 'Magento\Webapi\Controller\Rest\ParamOverriderCustomerId', + [ + 'userContext' => $this->userContext + ] + ); + } + + public function testGetOverriddenValueIsCustomer() + { + $retValue = 'retValue'; + + $this->userContext->expects($this->once()) + ->method('getUserType') + ->will($this->returnValue(UserContextInterface::USER_TYPE_CUSTOMER)); + $this->userContext->expects($this->once()) + ->method('getUserId') + ->will($this->returnValue($retValue)); + + $this->assertSame($retValue, $this->model->getOverriddenValue()); + } + + public function testGetOverriddenValueIsNotCustomer() + { + $this->userContext->expects($this->once()) + ->method('getUserType') + ->will($this->returnValue(UserContextInterface::USER_TYPE_ADMIN)); + + $this->assertNull($this->model->getOverriddenValue()); + } +} diff --git a/app/code/Magento/Webapi/Test/Unit/Controller/Rest/ParamsOverriderTest.php b/app/code/Magento/Webapi/Test/Unit/Controller/Rest/ParamsOverriderTest.php index 2cfe94f7d07ceafa3929116b46a7d79923243270..f5aa363b8b9c2bdeb549d4ee87cc53da2db59bcd 100644 --- a/app/code/Magento/Webapi/Test/Unit/Controller/Rest/ParamsOverriderTest.php +++ b/app/code/Magento/Webapi/Test/Unit/Controller/Rest/ParamsOverriderTest.php @@ -31,10 +31,15 @@ class ParamsOverriderTest extends \PHPUnit_Framework_TestCase $userContextMock->expects($this->any())->method('getUserId')->will($this->returnValue($userId)); $userContextMock->expects($this->any())->method('getUserType')->will($this->returnValue($userType)); + $paramOverriderCustomerId = $objectManager->getObject( + 'Magento\Webapi\Controller\Rest\ParamOverriderCustomerId', + ['userContext' => $userContextMock] + ); + /** @var \Magento\Webapi\Controller\Rest\ParamsOverrider $paramsOverrider */ $paramsOverrider = $objectManager->getObject( 'Magento\Webapi\Controller\Rest\ParamsOverrider', - ['userContext' => $userContextMock] + ['paramOverriders' => ['%customer_id%' => $paramOverriderCustomerId ]] ); $this->assertEquals($expectedOverriddenParams, $paramsOverrider->override($requestData, $parameters)); @@ -84,7 +89,7 @@ class ParamsOverriderTest extends \PHPUnit_Framework_TestCase 'force true, value present, override value is %customer_id%, not a customer' => [ ['Name1' => 'valueIn'], ['Name1' => ['force' => true, 'value' => '%customer_id%']], - ['Name1' => '%customer_id%'], + ['Name1' => null], 1234, UserContextInterface::USER_TYPE_INTEGRATION, ], diff --git a/app/code/Magento/Webapi/composer.json b/app/code/Magento/Webapi/composer.json index 412e76b0ddbb081d369312e00100d2d5828afcd1..c2e4ec4dacb4f073ed7c35ac5a1a557e8c27db70 100644 --- a/app/code/Magento/Webapi/composer.json +++ b/app/code/Magento/Webapi/composer.json @@ -3,18 +3,18 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-authorization": "0.74.0-beta5", - "magento/module-integration": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-authorization": "0.74.0-beta6", + "magento/module-integration": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-user": "0.74.0-beta5" + "magento/module-user": "0.74.0-beta6" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Webapi/etc/di.xml b/app/code/Magento/Webapi/etc/di.xml index d9f47dfd67a79a139cd1f69f957c5f508d98c8a4..12b661f639c428c681b98b1df7c0f5a8131da632 100644 --- a/app/code/Magento/Webapi/etc/di.xml +++ b/app/code/Magento/Webapi/etc/di.xml @@ -30,4 +30,11 @@ <type name="Magento\Integration\Model\ConfigBasedIntegrationManager"> <plugin name="webapiSetup" type="Magento\Webapi\Model\Plugin\Manager" /> </type> + <type name="Magento\Webapi\Controller\Rest\ParamsOverrider"> + <arguments> + <argument name="paramOverriders" xsi:type="array"> + <item name="%customer_id%" xsi:type="object">Magento\Webapi\Controller\Rest\ParamOverriderCustomerId</item> + </argument> + </arguments> + </type> </config> diff --git a/app/code/Magento/Weee/composer.json b/app/code/Magento/Weee/composer.json index d0de7a90f39df355a70183184a43a164c8a32013..9b11852f84fd425b09a62737597c797ddcdd31d8 100644 --- a/app/code/Magento/Weee/composer.json +++ b/app/code/Magento/Weee/composer.json @@ -3,20 +3,20 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-tax": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-directory": "0.74.0-beta5", - "magento/module-eav": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-quote": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-tax": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-directory": "0.74.0-beta6", + "magento/module-eav": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-quote": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Widget/composer.json b/app/code/Magento/Widget/composer.json index cc21bd787ce28ed3da0fb60c10341948ced643b1..e1ebbafa7d489f3a823f28fee6e691289851c00b 100644 --- a/app/code/Magento/Widget/composer.json +++ b/app/code/Magento/Widget/composer.json @@ -3,17 +3,17 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-cms": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", - "magento/module-variable": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-cms": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", + "magento/module-variable": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Wishlist/Controller/Index/Add.php b/app/code/Magento/Wishlist/Controller/Index/Add.php index 5adebd054bbefa21b0b84c0147be8988fd6a0ad9..3f307ad116dd84ad63d0befb0adde4a4919654a7 100755 --- a/app/code/Magento/Wishlist/Controller/Index/Add.php +++ b/app/code/Magento/Wishlist/Controller/Index/Add.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -11,6 +10,7 @@ use Magento\Framework\App\Action; use Magento\Framework\Exception\NotFoundException; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Wishlist\Controller\IndexInterface; +use Magento\Framework\Controller\ResultFactory; class Add extends Action\Action implements IndexInterface { @@ -50,7 +50,7 @@ class Add extends Action\Action implements IndexInterface /** * Adding new item * - * @return void + * @return \Magento\Framework\Controller\Result\Redirect * @throws NotFoundException * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) @@ -73,10 +73,11 @@ class Add extends Action\Action implements IndexInterface } $productId = isset($requestParams['product']) ? (int)$requestParams['product'] : null; - + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); if (!$productId) { - $this->_redirect('*/'); - return; + $resultRedirect->setPath('*/'); + return $resultRedirect; } try { @@ -87,8 +88,8 @@ class Add extends Action\Action implements IndexInterface if (!$product || !$product->isVisibleInCatalog()) { $this->messageManager->addError(__('We can\'t specify a product.')); - $this->_redirect('*/'); - return; + $resultRedirect->setPath('*/'); + return $resultRedirect; } try { @@ -112,9 +113,7 @@ class Add extends Action\Action implements IndexInterface $referer = $this->_redirect->getRefererUrl(); } - - /** @var $helper \Magento\Wishlist\Helper\Data */ - $helper = $this->_objectManager->get('Magento\Wishlist\Helper\Data')->calculate(); + $this->_objectManager->get('Magento\Wishlist\Helper\Data')->calculate(); $message = __( '%1 has been added to your wishlist. Click <a href="%2">here</a> to continue shopping.', $this->_objectManager->get('Magento\Framework\Escaper')->escapeHtml($product->getName()), @@ -130,6 +129,7 @@ class Add extends Action\Action implements IndexInterface $this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e); } - $this->_redirect('*', ['wishlist_id' => $wishlist->getId()]); + $resultRedirect->setPath('*', ['wishlist_id' => $wishlist->getId()]); + return $resultRedirect; } } diff --git a/app/code/Magento/Wishlist/Controller/Index/Allcart.php b/app/code/Magento/Wishlist/Controller/Index/Allcart.php index fa7720947034110bf0d80155aa23b7d08960498d..7cf5a187a5687bace697d03101e9ad7e78c8b8c3 100644 --- a/app/code/Magento/Wishlist/Controller/Index/Allcart.php +++ b/app/code/Magento/Wishlist/Controller/Index/Allcart.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -12,6 +11,7 @@ use Magento\Framework\App\Action\Context; use Magento\Wishlist\Controller\IndexInterface; use Magento\Wishlist\Controller\WishlistProviderInterface; use Magento\Wishlist\Model\ItemCarrier; +use Magento\Framework\Controller\ResultFactory; class Allcart extends Action\Action implements IndexInterface { @@ -51,21 +51,26 @@ class Allcart extends Action\Action implements IndexInterface /** * Add all items from wishlist to shopping cart * - * @return void + * @return \Magento\Framework\Controller\ResultInterface */ public function execute() { + /** @var \Magento\Framework\Controller\Result\Forward $resultForward */ + $resultForward = $this->resultFactory->create(ResultFactory::TYPE_FORWARD); if (!$this->formKeyValidator->validate($this->getRequest())) { - $this->_forward('noroute'); - return; + $resultForward->forward('noroute'); + return $resultForward; } $wishlist = $this->wishlistProvider->getWishlist(); if (!$wishlist) { - $this->_forward('noroute'); - return; + $resultForward->forward('noroute'); + return $resultForward; } + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); $redirectUrl = $this->itemCarrier->moveAllToCart($wishlist, $this->getRequest()->getParam('qty')); - $this->getResponse()->setRedirect($redirectUrl); + $resultRedirect->setUrl($redirectUrl); + return $resultRedirect; } } diff --git a/app/code/Magento/Wishlist/Controller/Index/Cart.php b/app/code/Magento/Wishlist/Controller/Index/Cart.php index ed155aa60585be883c005a3e2cb9f60ea4077016..5274e565c1b029777fdc7d6ec9d8753f5e7d64dc 100644 --- a/app/code/Magento/Wishlist/Controller/Index/Cart.php +++ b/app/code/Magento/Wishlist/Controller/Index/Cart.php @@ -1,15 +1,14 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Wishlist\Controller\Index; use Magento\Framework\App\Action; -use Magento\Framework\App\ResponseInterface; use Magento\Wishlist\Controller\IndexInterface; use Magento\Catalog\Model\Product\Exception as ProductException; +use Magento\Framework\Controller\ResultFactory; /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) @@ -36,6 +35,11 @@ class Cart extends Action\Action implements IndexInterface */ protected $cart; + /** + * @var \Magento\Checkout\Helper\Cart + */ + protected $cartHelper; + /** * @var \Magento\Wishlist\Model\Item\OptionFactory */ @@ -66,6 +70,8 @@ class Cart extends Action\Action implements IndexInterface * @param \Magento\Catalog\Helper\Product $productHelper * @param \Magento\Framework\Escaper $escaper * @param \Magento\Wishlist\Helper\Data $helper + * @param \Magento\Checkout\Helper\Cart $cartHelper + * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( Action\Context $context, @@ -76,7 +82,8 @@ class Cart extends Action\Action implements IndexInterface \Magento\Wishlist\Model\Item\OptionFactory $optionFactory, \Magento\Catalog\Helper\Product $productHelper, \Magento\Framework\Escaper $escaper, - \Magento\Wishlist\Helper\Data $helper + \Magento\Wishlist\Helper\Data $helper, + \Magento\Checkout\Helper\Cart $cartHelper ) { $this->wishlistProvider = $wishlistProvider; $this->quantityProcessor = $quantityProcessor; @@ -86,6 +93,7 @@ class Cart extends Action\Action implements IndexInterface $this->productHelper = $productHelper; $this->escaper = $escaper; $this->helper = $helper; + $this->cartHelper = $cartHelper; parent::__construct($context); } @@ -95,22 +103,25 @@ class Cart extends Action\Action implements IndexInterface * If Product has required options - item removed from wishlist and redirect * to product view page with message about needed defined required options * - * @return ResponseInterface + * @return \Magento\Framework\Controller\ResultInterface * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) */ public function execute() { $itemId = (int)$this->getRequest()->getParam('item'); - + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); /* @var $item \Magento\Wishlist\Model\Item */ $item = $this->itemFactory->create()->load($itemId); if (!$item->getId()) { - return $this->_redirect('*/*'); + $resultRedirect->setPath('*/*'); + return $resultRedirect; } $wishlist = $this->wishlistProvider->getWishlist($item->getWishlistId()); if (!$wishlist) { - return $this->_redirect('*/*'); + $resultRedirect->setPath('*/*'); + return $resultRedirect; } // Set qty @@ -159,8 +170,8 @@ class Cart extends Action\Action implements IndexInterface $this->messageManager->addSuccess($message); } - if ($this->cart->getShouldRedirectToCart()) { - $redirectUrl = $this->cart->getCartUrl(); + if ($this->cartHelper->getShouldRedirectToCart()) { + $redirectUrl = $this->cartHelper->getCartUrl(); } else { $refererUrl = $this->_redirect->getRefererUrl(); if ($refererUrl && $refererUrl != $configureUrl) { @@ -178,6 +189,14 @@ class Cart extends Action\Action implements IndexInterface $this->helper->calculate(); - return $this->getResponse()->setRedirect($redirectUrl); + if ($this->getRequest()->isAjax()) { + /** @var \Magento\Framework\Controller\Result\Json $resultJson */ + $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON); + $resultJson->setData(['backUrl' => $redirectUrl]); + return $resultJson; + } + + $resultRedirect->setUrl($redirectUrl); + return $resultRedirect; } } diff --git a/app/code/Magento/Wishlist/Controller/Index/Configure.php b/app/code/Magento/Wishlist/Controller/Index/Configure.php index 8172c895ed70e361cdeff01b31484bd69917a396..37522cd4cd0dac0bf1719106db853dbba4190744 100644 --- a/app/code/Magento/Wishlist/Controller/Index/Configure.php +++ b/app/code/Magento/Wishlist/Controller/Index/Configure.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -9,6 +8,7 @@ namespace Magento\Wishlist\Controller\Index; use Magento\Framework\App\Action; use Magento\Framework\Exception\NotFoundException; use Magento\Wishlist\Controller\IndexInterface; +use Magento\Framework\Controller\ResultFactory; class Configure extends Action\Action implements IndexInterface { @@ -50,12 +50,14 @@ class Configure extends Action\Action implements IndexInterface /** * Action to reconfigure wishlist item * - * @return void + * @return \Magento\Framework\Controller\ResultInterface * @throws NotFoundException */ public function execute() { $id = (int)$this->getRequest()->getParam('id'); + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); try { /* @var $item \Magento\Wishlist\Model\Item */ $item = $this->_objectManager->create('Magento\Wishlist\Model\Item'); @@ -83,7 +85,7 @@ class Configure extends Action\Action implements IndexInterface } $params->setBuyRequest($buyRequest); /** @var \Magento\Framework\View\Result\Page $resultPage */ - $resultPage = $this->resultPageFactory->create(); + $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE); $this->_objectManager->get( 'Magento\Catalog\Helper\Product\View' )->prepareAndRender( @@ -96,13 +98,13 @@ class Configure extends Action\Action implements IndexInterface return $resultPage; } catch (\Magento\Framework\Exception\LocalizedException $e) { $this->messageManager->addError($e->getMessage()); - $this->_redirect('*'); - return; + $resultRedirect->setPath('*'); + return $resultRedirect; } catch (\Exception $e) { $this->messageManager->addError(__('We can\'t configure the product.')); $this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e); - $this->_redirect('*'); - return; + $resultRedirect->setPath('*'); + return $resultRedirect; } } } diff --git a/app/code/Magento/Wishlist/Controller/Index/DownloadCustomOption.php b/app/code/Magento/Wishlist/Controller/Index/DownloadCustomOption.php index 3c26bf8e64db6f7007b465927d10622f2e5a3816..1edd5e4426ee0343e25a9ab270674e72c74a4b79 100644 --- a/app/code/Magento/Wishlist/Controller/Index/DownloadCustomOption.php +++ b/app/code/Magento/Wishlist/Controller/Index/DownloadCustomOption.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -9,6 +8,7 @@ namespace Magento\Wishlist\Controller\Index; use Magento\Framework\App\Action; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Wishlist\Controller\IndexInterface; +use Magento\Framework\Controller\ResultFactory; class DownloadCustomOption extends Action\Action implements IndexInterface { @@ -32,7 +32,7 @@ class DownloadCustomOption extends Action\Action implements IndexInterface /** * Custom options download action * - * @return void + * @return \Magento\Framework\Controller\Result\Forward * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.ExitExpression) */ @@ -43,9 +43,11 @@ class DownloadCustomOption extends Action\Action implements IndexInterface )->load( $this->getRequest()->getParam('id') ); - + /** @var \Magento\Framework\Controller\Result\Forward $resultForward */ + $resultForward = $this->resultFactory->create(ResultFactory::TYPE_FORWARD); if (!$option->getId()) { - return $this->_forward('noroute'); + $resultForward->forward('noroute'); + return $resultForward; } $optionId = null; @@ -56,7 +58,8 @@ class DownloadCustomOption extends Action\Action implements IndexInterface $option->getCode() ); if ((int)$optionId != $optionId) { - return $this->_forward('noroute'); + $resultForward->forward('noroute'); + return $resultForward; } } $productOption = $this->_objectManager->create('Magento\Catalog\Model\Product\Option')->load($optionId); @@ -66,7 +69,8 @@ class DownloadCustomOption extends Action\Action implements IndexInterface $productOption->getProductId() != $option->getProductId() || $productOption->getType() != 'file' ) { - return $this->_forward('noroute'); + $resultForward->forward('noroute'); + return $resultForward; } try { @@ -81,8 +85,8 @@ class DownloadCustomOption extends Action\Action implements IndexInterface ); } } catch (\Exception $e) { - $this->_forward('noroute'); + $resultForward->forward('noroute'); + return $resultForward; } - exit(0); } } diff --git a/app/code/Magento/Wishlist/Controller/Index/Fromcart.php b/app/code/Magento/Wishlist/Controller/Index/Fromcart.php index 085cf426a0a37cacae5decf0bfa6e020e229b6fb..03c1db81044f7b1be83ea1d319a4614538f9395f 100755 --- a/app/code/Magento/Wishlist/Controller/Index/Fromcart.php +++ b/app/code/Magento/Wishlist/Controller/Index/Fromcart.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -9,6 +8,7 @@ namespace Magento\Wishlist\Controller\Index; use Magento\Framework\App\Action; use Magento\Framework\Exception\NotFoundException; use Magento\Wishlist\Controller\IndexInterface; +use Magento\Framework\Controller\ResultFactory; class Fromcart extends Action\Action implements IndexInterface { @@ -82,7 +82,8 @@ class Fromcart extends Action\Action implements IndexInterface */ public function getDefaultResult() { - $resultRedirect = $this->resultRedirectFactory->create(); + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); return $resultRedirect->setUrl($this->_objectManager->get('Magento\Checkout\Helper\Cart')->getCartUrl()); } } diff --git a/app/code/Magento/Wishlist/Controller/Index/Index.php b/app/code/Magento/Wishlist/Controller/Index/Index.php index 9cb4bbe9fcdb089edab3d242f6a648b128c55890..53566774d2400ee6dd73f7468bd4fb1de3d10c49 100644 --- a/app/code/Magento/Wishlist/Controller/Index/Index.php +++ b/app/code/Magento/Wishlist/Controller/Index/Index.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -9,6 +8,7 @@ namespace Magento\Wishlist\Controller\Index; use Magento\Framework\App\Action; use Magento\Framework\Exception\NotFoundException; use Magento\Wishlist\Controller\IndexInterface; +use Magento\Framework\Controller\ResultFactory; class Index extends Action\Action implements IndexInterface { @@ -32,7 +32,7 @@ class Index extends Action\Action implements IndexInterface /** * Display customer wishlist * - * @return void + * @return \Magento\Framework\View\Result\Page * @throws NotFoundException */ public function execute() @@ -40,8 +40,9 @@ class Index extends Action\Action implements IndexInterface if (!$this->wishlistProvider->getWishlist()) { throw new NotFoundException(__('Page not found.')); } - $this->_view->loadLayout(); - $this->_view->getLayout()->initMessages(); - $this->_view->renderLayout(); + /** @var \Magento\Framework\View\Result\Page resultPage */ + $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE); + $resultPage->getLayout()->initMessages(); + return $resultPage; } } diff --git a/app/code/Magento/Wishlist/Controller/Index/Remove.php b/app/code/Magento/Wishlist/Controller/Index/Remove.php index 674d1118a614689e2c25958bb205c3eb5be668ae..6a07bcbc9e03b6634f6c7d08fd7563e1650493ea 100644 --- a/app/code/Magento/Wishlist/Controller/Index/Remove.php +++ b/app/code/Magento/Wishlist/Controller/Index/Remove.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -9,6 +8,7 @@ namespace Magento\Wishlist\Controller\Index; use Magento\Framework\App\Action; use Magento\Framework\Exception\NotFoundException; use Magento\Wishlist\Controller\IndexInterface; +use Magento\Framework\Controller\ResultFactory; class Remove extends Action\Action implements IndexInterface { @@ -32,7 +32,7 @@ class Remove extends Action\Action implements IndexInterface /** * Remove item * - * @return void + * @return \Magento\Framework\Controller\Result\Redirect * @throws NotFoundException */ public function execute() @@ -69,6 +69,9 @@ class Remove extends Action\Action implements IndexInterface } else { $redirectUrl = $this->_redirect->getRedirectUrl($this->_url->getUrl('*/*')); } - $this->getResponse()->setRedirect($redirectUrl); + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + $resultRedirect->setUrl($redirectUrl); + return $resultRedirect; } } diff --git a/app/code/Magento/Wishlist/Controller/Index/Send.php b/app/code/Magento/Wishlist/Controller/Index/Send.php index 6a54e1b7bf9f0ba2da61da6f0976f40f0ab81b9a..591da81b0aab9f36ebcd3654bf5290fa91b11242 100644 --- a/app/code/Magento/Wishlist/Controller/Index/Send.php +++ b/app/code/Magento/Wishlist/Controller/Index/Send.php @@ -8,8 +8,9 @@ namespace Magento\Wishlist\Controller\Index; use Magento\Framework\App\Action; use Magento\Framework\Exception\NotFoundException; -use Magento\Framework\App\ResponseInterface; use Magento\Wishlist\Controller\IndexInterface; +use Magento\Framework\Controller\ResultFactory; +use Magento\Framework\View\Result\Layout as ResultLayout; /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) @@ -84,7 +85,7 @@ class Send extends Action\Action implements IndexInterface /** * Share wishlist * - * @return ResponseInterface|void + * @return \Magento\Framework\Controller\Result\Redirect * @throws NotFoundException * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) @@ -92,8 +93,11 @@ class Send extends Action\Action implements IndexInterface */ public function execute() { + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); if (!$this->_formKeyValidator->validate($this->getRequest())) { - return $this->_redirect('*/*/'); + $resultRedirect->setPath('*/*/'); + return $resultRedirect; } $wishlist = $this->wishlistProvider->getWishlist(); @@ -136,11 +140,12 @@ class Send extends Action\Action implements IndexInterface )->setSharingForm( $this->getRequest()->getPostValue() ); - $this->_redirect('*/*/share'); - return; + $resultRedirect->setPath('*/*/share'); + return $resultRedirect; } - - $this->addLayoutHandles(); + /** @var \Magento\Framework\View\Result\Layout $resultLayout */ + $resultLayout = $this->resultFactory->create(ResultFactory::TYPE_LAYOUT); + $this->addLayoutHandles($resultLayout); $this->inlineTranslation->suspend(); $sent = 0; @@ -149,7 +154,7 @@ class Send extends Action\Action implements IndexInterface $customer = $this->_customerSession->getCustomerDataObject(); $customerName = $this->_customerHelperView->getCustomerName($customer); - $message .= $this->getRssLink($wishlist->getId()); + $message .= $this->getRssLink($wishlist->getId(), $resultLayout); $emails = array_unique($emails); $sharingCode = $wishlist->getSharingCode(); @@ -172,7 +177,7 @@ class Send extends Action\Action implements IndexInterface 'customer' => $customer, 'customerName' => $customerName, 'salable' => $wishlist->isSalable() ? 'yes' : '', - 'items' => $this->getWishlistItems(), + 'items' => $this->getWishlistItems($resultLayout), 'addAllLink' => $this->_url->getUrl('*/shared/allcart', ['code' => $sharingCode]), 'viewOnSiteLink' => $this->_url->getUrl('*/shared/index', ['code' => $sharingCode]), 'message' => $message, @@ -203,7 +208,8 @@ class Send extends Action\Action implements IndexInterface $this->_eventManager->dispatch('wishlist_share', ['wishlist' => $wishlist]); $this->messageManager->addSuccess(__('Your wish list has been shared.')); - $this->_redirect('*/*', ['wishlist_id' => $wishlist->getId()]); + $resultRedirect->setPath('*/*', ['wishlist_id' => $wishlist->getId()]); + return $resultRedirect; } catch (\Exception $e) { $this->inlineTranslation->resume(); $this->messageManager->addError($e->getMessage()); @@ -212,7 +218,8 @@ class Send extends Action\Action implements IndexInterface )->setSharingForm( $this->getRequest()->getPostValue() ); - $this->_redirect('*/*/share'); + $resultRedirect->setPath('*/*/share'); + return $resultRedirect; } } @@ -222,27 +229,28 @@ class Send extends Action\Action implements IndexInterface * Add 'wishlist_email_rss' layout handle. * Add 'wishlist_email_items' layout handle. * + * @param \Magento\Framework\View\Result\Layout $resultLayout * @return void */ - protected function addLayoutHandles() + protected function addLayoutHandles(ResultLayout $resultLayout) { if ($this->getRequest()->getParam('rss_url')) { - $this->_view->getLayout()->getUpdate()->addHandle('wishlist_email_rss'); + $resultLayout->addHandle('wishlist_email_rss'); } - $this->_view->getLayout()->getUpdate()->addHandle('wishlist_email_items'); - $this->_view->loadLayoutUpdates(); + $resultLayout->addHandle('wishlist_email_items'); } /** * Retrieve RSS link content (html) * * @param int $wishlistId + * @param \Magento\Framework\View\Result\Layout $resultLayout * @return mixed */ - protected function getRssLink($wishlistId) + protected function getRssLink($wishlistId, ResultLayout $resultLayout) { if ($this->getRequest()->getParam('rss_url')) { - return $this->_view->getLayout() + return $resultLayout->getLayout() ->getBlock('wishlist.email.rss') ->setWishlistId($wishlistId) ->toHtml(); @@ -252,11 +260,12 @@ class Send extends Action\Action implements IndexInterface /** * Retrieve wishlist items content (html) * + * @param \Magento\Framework\View\Result\Layout $resultLayout * @return string */ - protected function getWishlistItems() + protected function getWishlistItems(ResultLayout $resultLayout) { - return $this->_view->getLayout() + return $resultLayout->getLayout() ->getBlock('wishlist.email.items') ->toHtml(); } diff --git a/app/code/Magento/Wishlist/Controller/Index/Share.php b/app/code/Magento/Wishlist/Controller/Index/Share.php index b47a0027f7bdd793ebef983e69aaae1f8861c651..cfc8f8a7f8b2a51cfc3a2e8f120735c4c449ac5f 100644 --- a/app/code/Magento/Wishlist/Controller/Index/Share.php +++ b/app/code/Magento/Wishlist/Controller/Index/Share.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -8,18 +7,20 @@ namespace Magento\Wishlist\Controller\Index; use Magento\Framework\App\Action; use Magento\Wishlist\Controller\IndexInterface; +use Magento\Framework\Controller\ResultFactory; class Share extends Action\Action implements IndexInterface { /** * Prepare wishlist for share * - * @return void + * @return \Magento\Framework\View\Result\Page */ public function execute() { - $this->_view->loadLayout(); - $this->_view->getLayout()->initMessages(); - $this->_view->renderLayout(); + /** @var \Magento\Framework\View\Result\Page $resultPage */ + $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE); + $resultPage->getLayout()->initMessages(); + return $resultPage; } } diff --git a/app/code/Magento/Wishlist/Controller/Index/Update.php b/app/code/Magento/Wishlist/Controller/Index/Update.php index 731a80cd743570abb624ee89bee2fb5a2e5179eb..ab7c5efd3d88aaf958418273106c46d66cf1b0e6 100644 --- a/app/code/Magento/Wishlist/Controller/Index/Update.php +++ b/app/code/Magento/Wishlist/Controller/Index/Update.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -8,8 +7,8 @@ namespace Magento\Wishlist\Controller\Index; use Magento\Framework\App\Action; use Magento\Framework\Exception\NotFoundException; -use Magento\Framework\App\ResponseInterface; use Magento\Wishlist\Controller\IndexInterface; +use Magento\Framework\Controller\ResultFactory; class Update extends Action\Action implements IndexInterface { @@ -49,15 +48,18 @@ class Update extends Action\Action implements IndexInterface /** * Update wishlist item comments * - * @return ResponseInterface|void + * @return \Magento\Framework\Controller\Result\Redirect * @throws NotFoundException * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) */ public function execute() { + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); if (!$this->_formKeyValidator->validate($this->getRequest())) { - return $this->_redirect('*/*/'); + $resultRedirect->setPath('*/*/'); + return $resultRedirect; } $wishlist = $this->wishlistProvider->getWishlist(); if (!$wishlist) { @@ -130,10 +132,11 @@ class Update extends Action\Action implements IndexInterface } if (isset($post['save_and_share'])) { - $this->_redirect('*/*/share', ['wishlist_id' => $wishlist->getId()]); - return; + $resultRedirect->setPath('*/*/share', ['wishlist_id' => $wishlist->getId()]); + return $resultRedirect; } } - $this->_redirect('*', ['wishlist_id' => $wishlist->getId()]); + $resultRedirect->setPath('*', ['wishlist_id' => $wishlist->getId()]); + return $resultRedirect; } } diff --git a/app/code/Magento/Wishlist/Controller/Index/UpdateItemOptions.php b/app/code/Magento/Wishlist/Controller/Index/UpdateItemOptions.php index 483d3793eddc7fb3b0b107a8978e3143a3ca2897..b9dee182873329586d901c6fd32ca9e18116fd95 100644 --- a/app/code/Magento/Wishlist/Controller/Index/UpdateItemOptions.php +++ b/app/code/Magento/Wishlist/Controller/Index/UpdateItemOptions.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -10,6 +9,7 @@ use Magento\Catalog\Api\ProductRepositoryInterface; use Magento\Framework\App\Action; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Wishlist\Controller\IndexInterface; +use Magento\Framework\Controller\ResultFactory; class UpdateItemOptions extends Action\Action implements IndexInterface { @@ -49,14 +49,16 @@ class UpdateItemOptions extends Action\Action implements IndexInterface /** * Action to accept new configuration for a wishlist item * - * @return void + * @return \Magento\Framework\Controller\Result\Redirect */ public function execute() { $productId = (int)$this->getRequest()->getParam('product'); + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); if (!$productId) { - $this->_redirect('*/'); - return; + $resultRedirect->setPath('*/'); + return $resultRedirect; } try { @@ -67,8 +69,8 @@ class UpdateItemOptions extends Action\Action implements IndexInterface if (!$product || !$product->isVisibleInCatalog()) { $this->messageManager->addError(__('We can\'t specify a product.')); - $this->_redirect('*/'); - return; + $resultRedirect->setPath('*/'); + return $resultRedirect; } try { @@ -78,8 +80,8 @@ class UpdateItemOptions extends Action\Action implements IndexInterface $item->load($id); $wishlist = $this->wishlistProvider->getWishlist($item->getWishlistId()); if (!$wishlist) { - $this->_redirect('*/'); - return; + $resultRedirect->setPath('*/'); + return $resultRedirect; } $buyRequest = new \Magento\Framework\Object($this->getRequest()->getParams()); @@ -102,6 +104,7 @@ class UpdateItemOptions extends Action\Action implements IndexInterface $this->messageManager->addError(__('An error occurred while updating wish list.')); $this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e); } - $this->_redirect('*/*', ['wishlist_id' => $wishlist->getId()]); + $resultRedirect->setPath('*/*', ['wishlist_id' => $wishlist->getId()]); + return $resultRedirect; } } diff --git a/app/code/Magento/Wishlist/Controller/Shared/Allcart.php b/app/code/Magento/Wishlist/Controller/Shared/Allcart.php index 27dc5d8fd5d94bb56e9060035a136c6d30a6c368..ffb6e34ea96390aedd403549f7294126bcd1b93c 100644 --- a/app/code/Magento/Wishlist/Controller/Shared/Allcart.php +++ b/app/code/Magento/Wishlist/Controller/Shared/Allcart.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -8,6 +7,7 @@ namespace Magento\Wishlist\Controller\Shared; use Magento\Framework\App\Action\Context; use Magento\Wishlist\Model\ItemCarrier; +use Magento\Framework\Controller\ResultFactory; class Allcart extends \Magento\Framework\App\Action\Action { @@ -39,16 +39,21 @@ class Allcart extends \Magento\Framework\App\Action\Action /** * Add all items from wishlist to shopping cart * - * @return void + * @return \Magento\Framework\Controller\ResultInterface */ public function execute() { $wishlist = $this->wishlistProvider->getWishlist(); if (!$wishlist) { - $this->_forward('noroute'); - return; + /** @var \Magento\Framework\Controller\Result\Forward $resultForward */ + $resultForward = $this->resultFactory->create(ResultFactory::TYPE_FORWARD); + $resultForward->forward('noroute'); + return $resultForward; } $redirectUrl = $this->itemCarrier->moveAllToCart($wishlist, $this->getRequest()->getParam('qty')); - $this->getResponse()->setRedirect($redirectUrl); + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + $resultRedirect->setUrl($redirectUrl); + return $resultRedirect; } } diff --git a/app/code/Magento/Wishlist/Controller/Shared/Cart.php b/app/code/Magento/Wishlist/Controller/Shared/Cart.php index b14e996706ec4892296df08cad1b777c1166a41b..5c1efa80aec9ed522b32785b837805a0c05ab120 100644 --- a/app/code/Magento/Wishlist/Controller/Shared/Cart.php +++ b/app/code/Magento/Wishlist/Controller/Shared/Cart.php @@ -1,11 +1,12 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Wishlist\Controller\Shared; +use Magento\Framework\Controller\ResultFactory; + class Cart extends \Magento\Framework\App\Action\Action { /** @@ -14,7 +15,7 @@ class Cart extends \Magento\Framework\App\Action\Action * If Product has required options - redirect * to product view page with message about needed defined required options * - * @return \Magento\Framework\App\Response\Http + * @return \Magento\Framework\Controller\Result\Redirect */ public function execute() { @@ -51,7 +52,9 @@ class Cart extends \Magento\Framework\App\Action\Action } catch (\Exception $e) { $this->messageManager->addException($e, __('Cannot add item to shopping cart')); } - - return $this->getResponse()->setRedirect($redirectUrl); + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + $resultRedirect->setUrl($redirectUrl); + return $resultRedirect; } } diff --git a/app/code/Magento/Wishlist/Controller/Shared/Index.php b/app/code/Magento/Wishlist/Controller/Shared/Index.php index 39c564d62004792cff56a7c3a6f81e510cb4e3ba..20ccbf1b45bcf38e17a0df3b09849da725a3ec5e 100644 --- a/app/code/Magento/Wishlist/Controller/Shared/Index.php +++ b/app/code/Magento/Wishlist/Controller/Shared/Index.php @@ -1,6 +1,5 @@ <?php /** - * * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ @@ -8,8 +7,9 @@ namespace Magento\Wishlist\Controller\Shared; use Magento\Framework\App\Action\Action; use Magento\Framework\App\Action\Context; +use Magento\Framework\Controller\ResultFactory; -class Index extends \Magento\Framework\App\Action\Action +class Index extends Action { /** * Core registry @@ -49,7 +49,7 @@ class Index extends \Magento\Framework\App\Action\Action /** * Shared wishlist view page * - * @return void + * @return \Magento\Framework\Controller\ResultInterface */ public function execute() { @@ -57,16 +57,18 @@ class Index extends \Magento\Framework\App\Action\Action $customerId = $this->customerSession->getCustomerId(); if ($wishlist && $wishlist->getCustomerId() && $wishlist->getCustomerId() == $customerId) { - $this->getResponse()->setRedirect( + /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ + $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + $resultRedirect->setUrl( $this->_objectManager->get('Magento\Wishlist\Helper\Data')->getListUrl($wishlist->getId()) ); - return; + return $resultRedirect; } $this->registry->register('shared_wishlist', $wishlist); - - $this->_view->loadLayout(); - $this->_view->getLayout()->initMessages(); - $this->_view->renderLayout(); + /** @var \Magento\Framework\View\Result\Page $resultPage */ + $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE); + $resultPage->getLayout()->initMessages(); + return $resultPage; } } diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/AddTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/AddTest.php index 98fbbc933f8a1da2f837a85079624e6ce180a314..54e91fb5f079aad57ac236a3ee64c9c87f675b4b 100755 --- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/AddTest.php +++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/AddTest.php @@ -3,9 +3,10 @@ * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ - namespace Magento\Wishlist\Test\Unit\Controller\Index; +use Magento\Framework\Controller\ResultFactory; + class AddTest extends \PHPUnit_Framework_TestCase { /** @@ -33,21 +34,21 @@ class AddTest extends \PHPUnit_Framework_TestCase */ protected $controller; + /** + * @var \Magento\Framework\Controller\ResultFactory|\PHPUnit_Framework_MockObject_MockObject + */ + protected $resultFactoryMock; + + /** + * @var \Magento\Framework\Controller\Result\Redirect|\PHPUnit_Framework_MockObject_MockObject + */ + protected $resultRedirectMock; + public function setUp() { $this->context = $this->getMock( 'Magento\Framework\App\Action\Context', - [ - 'getRequest', - 'getResponse', - 'getObjectManager', - 'getEventManager', - 'getUrl', - 'getActionFlag', - 'getRedirect', - 'getView', - 'getMessageManager' - ], + [], [], '', false @@ -79,6 +80,17 @@ class AddTest extends \PHPUnit_Framework_TestCase '', false ); + $this->resultFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\ResultFactory') + ->disableOriginalConstructor() + ->getMock(); + $this->resultRedirectMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Redirect') + ->disableOriginalConstructor() + ->getMock(); + + $this->resultFactoryMock->expects($this->any()) + ->method('create') + ->with(ResultFactory::TYPE_REDIRECT, []) + ->willReturn($this->resultRedirectMock); } /** @@ -128,13 +140,6 @@ class AddTest extends \PHPUnit_Framework_TestCase '', false ); - $redirect = $this->getMock( - '\Magento\Store\App\Response\Redirect', - null, - [], - '', - false - ); $view = $this->getMock( 'Magento\Framework\App\View', null, @@ -174,10 +179,6 @@ class AddTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getActionFlag') ->will($this->returnValue($actionFlag)); - $this->context - ->expects($this->any()) - ->method('getRedirect') - ->will($this->returnValue($redirect)); $this->context ->expects($this->any()) ->method('getView') @@ -186,6 +187,9 @@ class AddTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getMessageManager') ->will($this->returnValue($messageManager)); + $this->context->expects($this->any()) + ->method('getResultFactory') + ->willReturn($this->resultFactoryMock); } public function configureCustomerSession() @@ -261,12 +265,10 @@ class AddTest extends \PHPUnit_Framework_TestCase $eventManager = $this->getMock('Magento\Framework\Event\Manager', null, [], '', false); $url = $this->getMock('Magento\Framework\Url', null, [], '', false); $actionFlag = $this->getMock('Magento\Framework\App\ActionFlag', null, [], '', false); - $redirect = $this->getMock('\Magento\Store\App\Response\Redirect', ['redirect'], [], '', false); - $redirect - ->expects($this->once()) - ->method('redirect') - ->with($response, '*/', []) - ->will($this->returnValue(null)); + $this->resultRedirectMock->expects($this->once()) + ->method('setPath') + ->with('*/', []) + ->willReturnSelf(); $view = $this->getMock('Magento\Framework\App\View', null, [], '', false); $messageManager = $this->getMock('Magento\Framework\Message\Manager', null, [], '', false); @@ -294,10 +296,6 @@ class AddTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getActionFlag') ->will($this->returnValue($actionFlag)); - $this->context - ->expects($this->any()) - ->method('getRedirect') - ->will($this->returnValue($redirect)); $this->context ->expects($this->any()) ->method('getView') @@ -327,10 +325,13 @@ class AddTest extends \PHPUnit_Framework_TestCase ->expects($this->never()) ->method('setBeforeWishlistUrl') ->will($this->returnValue(null)); + $this->context->expects($this->any()) + ->method('getResultFactory') + ->willReturn($this->resultFactoryMock); $this->createController(); - $this->controller->execute(); + $this->assertSame($this->resultRedirectMock, $this->controller->execute()); } /** @@ -344,7 +345,6 @@ class AddTest extends \PHPUnit_Framework_TestCase ->method('getWishlist') ->will($this->returnValue($wishlist)); - $request = $this->getMock('Magento\Framework\App\Request\Http', ['getParams'], [], '', false); $request ->expects($this->once()) @@ -356,12 +356,10 @@ class AddTest extends \PHPUnit_Framework_TestCase $eventManager = $this->getMock('Magento\Framework\Event\Manager', null, [], '', false); $url = $this->getMock('Magento\Framework\Url', null, [], '', false); $actionFlag = $this->getMock('Magento\Framework\App\ActionFlag', null, [], '', false); - $redirect = $this->getMock('\Magento\Store\App\Response\Redirect', ['redirect'], [], '', false); - $redirect - ->expects($this->once()) - ->method('redirect') - ->with($response, '*/', []) - ->will($this->returnValue(null)); + $this->resultRedirectMock->expects($this->once()) + ->method('setPath') + ->with('*/', []) + ->willReturnSelf(); $view = $this->getMock('Magento\Framework\App\View', null, [], '', false); $messageManager = $this->getMock('Magento\Framework\Message\Manager', ['addError'], [], '', false); $messageManager @@ -394,10 +392,6 @@ class AddTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getActionFlag') ->will($this->returnValue($actionFlag)); - $this->context - ->expects($this->any()) - ->method('getRedirect') - ->will($this->returnValue($redirect)); $this->context ->expects($this->any()) ->method('getView') @@ -406,6 +400,9 @@ class AddTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getMessageManager') ->will($this->returnValue($messageManager)); + $this->context->expects($this->any()) + ->method('getResultFactory') + ->willReturn($this->resultFactoryMock); $this->customerSession ->expects($this->exactly(1)) @@ -430,7 +427,7 @@ class AddTest extends \PHPUnit_Framework_TestCase $this->createController(); - $this->controller->execute(); + $this->assertSame($this->resultRedirectMock, $this->controller->execute()); } /** @@ -466,12 +463,10 @@ class AddTest extends \PHPUnit_Framework_TestCase $eventManager = $this->getMock('Magento\Framework\Event\Manager', null, [], '', false); $url = $this->getMock('Magento\Framework\Url', null, [], '', false); $actionFlag = $this->getMock('Magento\Framework\App\ActionFlag', null, [], '', false); - $redirect = $this->getMock('\Magento\Store\App\Response\Redirect', ['redirect'], [], '', false); - $redirect - ->expects($this->once()) - ->method('redirect') - ->with($response, '*', ['wishlist_id' => 2]) - ->will($this->returnValue(null)); + $this->resultRedirectMock->expects($this->once()) + ->method('setPath') + ->with('*', ['wishlist_id' => 2]) + ->willReturnSelf(); $view = $this->getMock('Magento\Framework\App\View', null, [], '', false); $messageManager = $this->getMock('Magento\Framework\Message\Manager', ['addError'], [], '', false); @@ -505,10 +500,6 @@ class AddTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getActionFlag') ->will($this->returnValue($actionFlag)); - $this->context - ->expects($this->any()) - ->method('getRedirect') - ->will($this->returnValue($redirect)); $this->context ->expects($this->any()) ->method('getView') @@ -517,6 +508,9 @@ class AddTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getMessageManager') ->will($this->returnValue($messageManager)); + $this->context->expects($this->any()) + ->method('getResultFactory') + ->willReturn($this->resultFactoryMock); $this->customerSession ->expects($this->exactly(1)) @@ -559,7 +553,7 @@ class AddTest extends \PHPUnit_Framework_TestCase $this->createController(); - $this->controller->execute(); + $this->assertSame($this->resultRedirectMock, $this->controller->execute()); } /** @@ -683,12 +677,10 @@ class AddTest extends \PHPUnit_Framework_TestCase $url = $this->getMock('Magento\Framework\Url', null, [], '', false); $actionFlag = $this->getMock('Magento\Framework\App\ActionFlag', null, [], '', false); - $redirect = $this->getMock('\Magento\Store\App\Response\Redirect', ['redirect'], [], '', false); - $redirect - ->expects($this->once()) - ->method('redirect') - ->with($response, '*', ['wishlist_id' => 2]) - ->will($this->returnValue(null)); + $this->resultRedirectMock->expects($this->once()) + ->method('setPath') + ->with('*', ['wishlist_id' => 2]) + ->willReturnSelf(); $view = $this->getMock('Magento\Framework\App\View', null, [], '', false); @@ -733,10 +725,6 @@ class AddTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getActionFlag') ->will($this->returnValue($actionFlag)); - $this->context - ->expects($this->any()) - ->method('getRedirect') - ->will($this->returnValue($redirect)); $this->context ->expects($this->any()) ->method('getView') @@ -745,6 +733,9 @@ class AddTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getMessageManager') ->will($this->returnValue($messageManager)); + $this->context->expects($this->any()) + ->method('getResultFactory') + ->willReturn($this->resultFactoryMock); $this->customerSession ->expects($this->exactly(1)) @@ -766,6 +757,6 @@ class AddTest extends \PHPUnit_Framework_TestCase $this->createController(); - $this->controller->execute(); + $this->assertSame($this->resultRedirectMock, $this->controller->execute()); } } diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/AllcartTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/AllcartTest.php index b99b18f4b87eaa6f95bc93601e434b2ce8bbc417..8d58bf0be7592847c0f13f568d923ff6aeeceba7 100644 --- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/AllcartTest.php +++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/AllcartTest.php @@ -3,9 +3,10 @@ * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ - namespace Magento\Wishlist\Test\Unit\Controller\Index; +use Magento\Framework\Controller\ResultFactory; + class AllcartTest extends \PHPUnit_Framework_TestCase { /** @@ -38,6 +39,21 @@ class AllcartTest extends \PHPUnit_Framework_TestCase */ protected $response; + /** + * @var \Magento\Framework\Controller\ResultFactory|\PHPUnit_Framework_MockObject_MockObject + */ + protected $resultFactoryMock; + + /** + * @var \Magento\Framework\Controller\Result\Redirect|\PHPUnit_Framework_MockObject_MockObject + */ + protected $resultRedirectMock; + + /** + * @var \Magento\Framework\Controller\Result\Forward|\PHPUnit_Framework_MockObject_MockObject + */ + protected $resultForwardMock; + protected function setUp() { $this->context = $this->getMock('Magento\Framework\App\Action\Context', [], [], '', false); @@ -46,6 +62,24 @@ class AllcartTest extends \PHPUnit_Framework_TestCase $this->formKeyValidator = $this->getMock('Magento\Framework\Data\Form\FormKey\Validator', [], [], '', false); $this->request = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false); $this->response = $this->getMock('Magento\Framework\App\Response\Http', [], [], '', false); + $this->resultFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\ResultFactory') + ->disableOriginalConstructor() + ->getMock(); + $this->resultRedirectMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Redirect') + ->disableOriginalConstructor() + ->getMock(); + $this->resultForwardMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Forward') + ->disableOriginalConstructor() + ->getMock(); + + $this->resultFactoryMock->expects($this->any()) + ->method('create') + ->willReturnMap( + [ + [ResultFactory::TYPE_REDIRECT, [], $this->resultRedirectMock], + [ResultFactory::TYPE_FORWARD, [], $this->resultForwardMock] + ] + ); } protected function prepareContext() @@ -94,6 +128,9 @@ class AllcartTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getMessageManager') ->will($this->returnValue($messageManager)); + $this->context->expects($this->any()) + ->method('getResultFactory') + ->willReturn($this->resultFactoryMock); } public function getController() @@ -114,24 +151,13 @@ class AllcartTest extends \PHPUnit_Framework_TestCase ->method('validate') ->with($this->request) ->will($this->returnValue(false)); - - $this->request - ->expects($this->once()) - ->method('initForward') - ->will($this->returnValue(true)); - $this->request - ->expects($this->once()) - ->method('setActionName') + $this->resultForwardMock->expects($this->once()) + ->method('forward') ->with('noroute') - ->will($this->returnValue(true)); - $this->request - ->expects($this->once()) - ->method('setDispatched') - ->with(false) - ->will($this->returnValue(true)); + ->willReturnSelf(); $controller = $this->getController(); - $controller->execute(); + $this->assertSame($this->resultForwardMock, $controller->execute()); } public function testExecuteWithoutWishlist() @@ -141,63 +167,43 @@ class AllcartTest extends \PHPUnit_Framework_TestCase ->method('validate') ->with($this->request) ->will($this->returnValue(true)); - - $this->request - ->expects($this->once()) - ->method('initForward') - ->will($this->returnValue(true)); - $this->request - ->expects($this->once()) - ->method('setActionName') - ->with('noroute') - ->will($this->returnValue(true)); - $this->request - ->expects($this->once()) - ->method('setDispatched') - ->with(false) - ->will($this->returnValue(true)); - $this->wishlistProvider ->expects($this->once()) ->method('getWishlist') ->will($this->returnValue(null)); + $this->resultForwardMock->expects($this->once()) + ->method('forward') + ->with('noroute') + ->willReturnSelf(); - - $this->getController()->execute(); + $this->assertSame($this->resultForwardMock, $this->getController()->execute()); } public function testExecutePassed() { + $url = 'http://redirect-url.com'; $wishlist = $this->getMock('Magento\Wishlist\Model\Wishlist', [], [], '', false); - $this->formKeyValidator - ->expects($this->once()) + $this->formKeyValidator->expects($this->once()) ->method('validate') ->with($this->request) ->will($this->returnValue(true)); - - $this->request - ->expects($this->once()) + $this->request->expects($this->once()) ->method('getParam') ->with('qty') ->will($this->returnValue(2)); - - $this->response - ->expects($this->once()) - ->method('setRedirect') - ->will($this->returnValue('http://redirect-url.com')); - - $this->wishlistProvider - ->expects($this->once()) + $this->wishlistProvider->expects($this->once()) ->method('getWishlist') ->will($this->returnValue($wishlist)); - - $this->itemCarrier - ->expects($this->once()) + $this->itemCarrier->expects($this->once()) ->method('moveAllToCart') ->with($wishlist, 2) - ->will($this->returnValue('http://redirect-url.com')); + ->willReturn($url); + $this->resultRedirectMock->expects($this->once()) + ->method('setUrl') + ->with($url) + ->willReturnSelf(); - $this->getController()->execute(); + $this->assertSame($this->resultRedirectMock, $this->getController()->execute()); } } diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/CartTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/CartTest.php index fd7c06e7336d0ef29f2ab95c9ece2c6804a6a010..c2074246b31fa3f197fe5ed5150551f76954526d 100644 --- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/CartTest.php +++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/CartTest.php @@ -3,12 +3,11 @@ * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ - namespace Magento\Wishlist\Test\Unit\Controller\Index; -use \Magento\Wishlist\Controller\Index\Cart; - +use Magento\Wishlist\Controller\Index\Cart; use Magento\Catalog\Model\Product\Exception as ProductException; +use Magento\Framework\Controller\ResultFactory; /** * @SuppressWarnings(PHPMD.TooManyFields) @@ -71,11 +70,6 @@ class CartTest extends \PHPUnit_Framework_TestCase */ protected $requestMock; - /** - * @var \Magento\Framework\App\ResponseInterface|\PHPUnit_Framework_MockObject_MockObject - */ - protected $responseMock; - /** * @var \Magento\Framework\App\Response\RedirectInterface|\PHPUnit_Framework_MockObject_MockObject */ @@ -96,6 +90,26 @@ class CartTest extends \PHPUnit_Framework_TestCase */ protected $urlMock; + /** + * @var \Magento\Checkout\Helper\Cart|\PHPUnit_Framework_MockObject_MockObject + */ + protected $cartHelperMock; + + /** + * @var \Magento\Framework\Controller\ResultFactory|\PHPUnit_Framework_MockObject_MockObject + */ + protected $resultFactoryMock; + + /** + * @var \Magento\Framework\Controller\Result\Redirect|\PHPUnit_Framework_MockObject_MockObject + */ + protected $resultRedirectMock; + + /** + * @var \Magento\Framework\Controller\Result\Json|\PHPUnit_Framework_MockObject_MockObject + */ + protected $resultJsonMock; + /** * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ @@ -139,12 +153,7 @@ class CartTest extends \PHPUnit_Framework_TestCase $this->requestMock = $this->getMockBuilder('Magento\Framework\App\RequestInterface') ->disableOriginalConstructor() - ->setMethods(['getParams', 'getParam']) - ->getMockForAbstractClass(); - - $this->responseMock = $this->getMockBuilder('Magento\Framework\App\ResponseInterface') - ->disableOriginalConstructor() - ->setMethods(['setRedirect']) + ->setMethods(['getParams', 'getParam', 'isAjax']) ->getMockForAbstractClass(); $this->redirectMock = $this->getMockBuilder('Magento\Framework\App\Response\RedirectInterface') @@ -164,6 +173,18 @@ class CartTest extends \PHPUnit_Framework_TestCase ->disableOriginalConstructor() ->setMethods(['getUrl']) ->getMockForAbstractClass(); + $this->cartHelperMock = $this->getMockBuilder('Magento\Checkout\Helper\Cart') + ->disableOriginalConstructor() + ->getMock(); + $this->resultFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\ResultFactory') + ->disableOriginalConstructor() + ->getMock(); + $this->resultRedirectMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Redirect') + ->disableOriginalConstructor() + ->getMock(); + $this->resultJsonMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Json') + ->disableOriginalConstructor() + ->getMock(); $this->contextMock = $this->getMockBuilder('Magento\Framework\App\Action\Context') ->disableOriginalConstructor() @@ -171,9 +192,6 @@ class CartTest extends \PHPUnit_Framework_TestCase $this->contextMock->expects($this->any()) ->method('getRequest') ->will($this->returnValue($this->requestMock)); - $this->contextMock->expects($this->any()) - ->method('getResponse') - ->will($this->returnValue($this->responseMock)); $this->contextMock->expects($this->any()) ->method('getRedirect') ->will($this->returnValue($this->redirectMock)); @@ -185,7 +203,19 @@ class CartTest extends \PHPUnit_Framework_TestCase ->will($this->returnValue($this->messageManagerMock)); $this->contextMock->expects($this->any()) ->method('getUrl') - ->will($this->returnValue($this->urlMock)); + ->willReturn($this->urlMock); + $this->contextMock->expects($this->any()) + ->method('getResultFactory') + ->willReturn($this->resultFactoryMock); + $this->resultFactoryMock->expects($this->any()) + ->method('create') + ->willReturnMap( + [ + [ResultFactory::TYPE_REDIRECT, [], $this->resultRedirectMock], + [ResultFactory::TYPE_JSON, [], $this->resultJsonMock] + ] + ); + $this->model = new Cart( $this->contextMock, @@ -196,7 +226,8 @@ class CartTest extends \PHPUnit_Framework_TestCase $this->optionFactoryMock, $this->productHelperMock, $this->escaperMock, - $this->helperMock + $this->helperMock, + $this->cartHelperMock ); } @@ -223,13 +254,12 @@ class CartTest extends \PHPUnit_Framework_TestCase $itemMock->expects($this->once()) ->method('getId') ->willReturn(null); + $this->resultRedirectMock->expects($this->once()) + ->method('setPath') + ->with('*/*', []) + ->willReturnSelf(); - $this->redirectMock->expects($this->once()) - ->method('redirect') - ->with($this->responseMock, '*/*', []) - ->willReturn($this->responseMock); - - $this->assertEquals($this->responseMock, $this->model->execute()); + $this->assertSame($this->resultRedirectMock, $this->model->execute()); } public function testExecuteWithNoWishlist() @@ -265,19 +295,44 @@ class CartTest extends \PHPUnit_Framework_TestCase ->method('getWishlist') ->with($wishlistId) ->willReturn(null); + $this->resultRedirectMock->expects($this->once()) + ->method('setPath') + ->with('*/*', []) + ->willReturnSelf(); - $this->redirectMock->expects($this->once()) - ->method('redirect') - ->with($this->responseMock, '*/*', []) - ->willReturn($this->responseMock); + $this->assertSame($this->resultRedirectMock, $this->model->execute()); + } + + public function testExecuteWithQuantityArray() + { + $refererUrl = $this->prepareExecuteWithQuantityArray(); + + $this->resultRedirectMock->expects($this->once()) + ->method('setUrl') + ->with($refererUrl) + ->willReturnSelf(); - $this->assertEquals($this->responseMock, $this->model->execute()); + $this->assertSame($this->resultRedirectMock, $this->model->execute()); + } + + public function testExecuteWithQuantityArrayAjax() + { + $refererUrl = $this->prepareExecuteWithQuantityArray(true); + + $this->resultJsonMock->expects($this->once()) + ->method('setData') + ->with(['backUrl' => $refererUrl]) + ->willReturnSelf(); + + $this->assertSame($this->resultJsonMock, $this->model->execute()); } /** + * @param bool $isAjax + * @return array * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ - public function testExecuteWithQuantityArray() + protected function prepareExecuteWithQuantityArray($isAjax = false) { $itemId = 2; $wishlistId = 1; @@ -397,6 +452,9 @@ class CartTest extends \PHPUnit_Framework_TestCase $this->requestMock->expects($this->once()) ->method('getParams') ->willReturn($params); + $this->requestMock->expects($this->once()) + ->method('isAjax') + ->willReturn($isAjax); $buyRequestMock = $this->getMockBuilder('Magento\Framework\Object') ->disableOriginalConstructor() @@ -467,7 +525,7 @@ class CartTest extends \PHPUnit_Framework_TestCase ->with('You added ' . $productName . ' to your shopping cart.', null) ->willReturnSelf(); - $this->checkoutCartMock->expects($this->once()) + $this->cartHelperMock->expects($this->once()) ->method('getShouldRedirectToCart') ->willReturn(false); @@ -478,13 +536,8 @@ class CartTest extends \PHPUnit_Framework_TestCase $this->helperMock->expects($this->once()) ->method('calculate') ->willReturnSelf(); - - $this->responseMock->expects($this->once()) - ->method('setRedirect') - ->with($refererUrl) - ->willReturn($this->responseMock); - - $this->assertEquals($this->responseMock, $this->model->execute()); + + return $refererUrl; } /** @@ -640,12 +693,12 @@ class CartTest extends \PHPUnit_Framework_TestCase ->method('calculate') ->willReturnSelf(); - $this->responseMock->expects($this->once()) - ->method('setRedirect') + $this->resultRedirectMock->expects($this->once()) + ->method('setUrl') ->with($indexUrl) - ->willReturn($this->responseMock); + ->willReturnSelf(); - $this->assertEquals($this->responseMock, $this->model->execute()); + $this->assertSame($this->resultRedirectMock, $this->model->execute()); } /** @@ -801,11 +854,11 @@ class CartTest extends \PHPUnit_Framework_TestCase ->method('calculate') ->willReturnSelf(); - $this->responseMock->expects($this->once()) - ->method('setRedirect') + $this->resultRedirectMock->expects($this->once()) + ->method('setUrl') ->with($configureUrl) - ->willReturn($this->responseMock); + ->willReturnSelf(); - $this->assertEquals($this->responseMock, $this->model->execute()); + $this->assertSame($this->resultRedirectMock, $this->model->execute()); } } diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/IndexTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/IndexTest.php index 94888effcc121310c5f861654cf5638180e11860..12f3de81f386ccdb5d1fbbf041b254f40bb3d2ba 100644 --- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/IndexTest.php +++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/IndexTest.php @@ -3,9 +3,10 @@ * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ - namespace Magento\Wishlist\Test\Unit\Controller\Index; +use Magento\Framework\Controller\ResultFactory; + class IndexTest extends \PHPUnit_Framework_TestCase { /** @@ -29,14 +30,24 @@ class IndexTest extends \PHPUnit_Framework_TestCase protected $wishlistProvider; /** - * @var \Magento\Framework\App\View|\PHPUnit_Framework_MockObject_MockObject + * @var \Magento\Store\App\Response\Redirect|\PHPUnit_Framework_MockObject_MockObject */ - protected $view; + protected $redirect; /** - * @var \Magento\Store\App\Response\Redirect|\PHPUnit_Framework_MockObject_MockObject + * @var \Magento\Framework\Controller\ResultFactory|\PHPUnit_Framework_MockObject_MockObject */ - protected $redirect; + protected $resultFactoryMock; + + /** + * @var \Magento\Framework\View\Result\Page|\PHPUnit_Framework_MockObject_MockObject + */ + protected $resultPageMock; + + /** + * @var \Magento\Framework\View\Layout|\PHPUnit_Framework_MockObject_MockObject + */ + protected $layoutMock; protected function setUp() { @@ -44,8 +55,24 @@ class IndexTest extends \PHPUnit_Framework_TestCase $this->request = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false); $this->response = $this->getMock('Magento\Framework\App\Response\Http', [], [], '', false); $this->wishlistProvider = $this->getMock('Magento\Wishlist\Controller\WishlistProvider', [], [], '', false); - $this->view = $this->getMock('Magento\Framework\App\View', [], [], '', false); $this->redirect = $this->getMock('\Magento\Store\App\Response\Redirect', [], [], '', false); + $this->resultFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\ResultFactory') + ->disableOriginalConstructor() + ->getMock(); + $this->resultPageMock = $this->getMockBuilder('Magento\Framework\View\Result\Page') + ->disableOriginalConstructor() + ->getMock(); + $this->layoutMock = $this->getMockBuilder('Magento\Framework\View\Layout') + ->disableOriginalConstructor() + ->getMock(); + + $this->resultFactoryMock->expects($this->any()) + ->method('create') + ->with(ResultFactory::TYPE_PAGE, []) + ->willReturn($this->resultPageMock); + $this->resultPageMock->expects($this->any()) + ->method('getLayout') + ->willReturn($this->layoutMock); } protected function prepareContext() @@ -84,14 +111,13 @@ class IndexTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getRedirect') ->willReturn($this->redirect); - $this->context - ->expects($this->any()) - ->method('getView') - ->willReturn($this->view); $this->context ->expects($this->any()) ->method('getMessageManager') ->willReturn($messageManager); + $this->context->expects($this->any()) + ->method('getResultFactory') + ->willReturn($this->resultFactoryMock); } public function getController() @@ -120,30 +146,10 @@ class IndexTest extends \PHPUnit_Framework_TestCase { $wishlist = $this->getMock('Magento\Wishlist\Model\Wishlist', [], [], '', false); - $layout = $this->getMock('Magento\Framework\View\Layout', [], [], '', false); - $layout - ->expects($this->once()) - ->method('initMessages') - ->willReturn(true); - - $this->wishlistProvider - ->expects($this->once()) + $this->wishlistProvider->expects($this->once()) ->method('getWishlist') ->willReturn($wishlist); - $this->view - ->expects($this->once()) - ->method('loadLayout') - ->willReturn(true); - $this->view - ->expects($this->once()) - ->method('getLayout') - ->willReturn($layout); - $this->view - ->expects($this->once()) - ->method('renderLayout') - ->willReturn(true); - - $this->getController()->execute(); + $this->assertSame($this->resultPageMock, $this->getController()->execute()); } } diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/RemoveTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/RemoveTest.php index f2c2954f59d739e122c5e7b2b174136a1731cb9a..96381ac144f7ead0d860646c889ccb1bb30acb20 100644 --- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/RemoveTest.php +++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/RemoveTest.php @@ -3,9 +3,10 @@ * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ - namespace Magento\Wishlist\Test\Unit\Controller\Index; +use Magento\Framework\Controller\ResultFactory; + class RemoveTest extends \PHPUnit_Framework_TestCase { /** @@ -23,16 +24,6 @@ class RemoveTest extends \PHPUnit_Framework_TestCase */ protected $request; - /** - * @var \Magento\Framework\App\Response\Http|\PHPUnit_Framework_MockObject_MockObject - */ - protected $response; - - /** - * @var \Magento\Framework\App\View|\PHPUnit_Framework_MockObject_MockObject - */ - protected $view; - /** * @var \Magento\Store\App\Response\Redirect|\PHPUnit_Framework_MockObject_MockObject */ @@ -53,17 +44,36 @@ class RemoveTest extends \PHPUnit_Framework_TestCase */ protected $url; + /** + * @var \Magento\Framework\Controller\ResultFactory|\PHPUnit_Framework_MockObject_MockObject + */ + protected $resultFactoryMock; + + /** + * @var \Magento\Framework\Controller\Result\Redirect|\PHPUnit_Framework_MockObject_MockObject + */ + protected $resultRedirectMock; + protected function setUp() { $this->context = $this->getMock('Magento\Framework\App\Action\Context', [], [], '', false); $this->request = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false); - $this->response = $this->getMock('Magento\Framework\App\Response\Http', [], [], '', false); $this->wishlistProvider = $this->getMock('Magento\Wishlist\Controller\WishlistProvider', [], [], '', false); - $this->view = $this->getMock('Magento\Framework\App\View', [], [], '', false); $this->redirect = $this->getMock('\Magento\Store\App\Response\Redirect', [], [], '', false); $this->om = $this->getMock('Magento\Framework\App\ObjectManager', [], [], '', false); $this->messageManager = $this->getMock('Magento\Framework\Message\Manager', [], [], '', false); $this->url = $this->getMock('Magento\Framework\Url', [], [], '', false); + $this->resultFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\ResultFactory') + ->disableOriginalConstructor() + ->getMock(); + $this->resultRedirectMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Redirect') + ->disableOriginalConstructor() + ->getMock(); + + $this->resultFactoryMock->expects($this->any()) + ->method('create') + ->with(ResultFactory::TYPE_REDIRECT, []) + ->willReturn($this->resultRedirectMock); } public function tearDown() @@ -71,9 +81,7 @@ class RemoveTest extends \PHPUnit_Framework_TestCase unset( $this->context, $this->request, - $this->response, $this->wishlistProvider, - $this->view, $this->redirect, $this->om, $this->messageManager, @@ -94,10 +102,6 @@ class RemoveTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getRequest') ->willReturn($this->request); - $this->context - ->expects($this->any()) - ->method('getResponse') - ->willReturn($this->response); $this->context ->expects($this->any()) ->method('getEventManager') @@ -114,14 +118,13 @@ class RemoveTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getRedirect') ->willReturn($this->redirect); - $this->context - ->expects($this->any()) - ->method('getView') - ->willReturn($this->view); $this->context ->expects($this->any()) ->method('getMessageManager') ->willReturn($this->messageManager); + $this->context->expects($this->any()) + ->method('getResultFactory') + ->willReturn($this->resultFactoryMock); } public function getController() @@ -283,13 +286,12 @@ class RemoveTest extends \PHPUnit_Framework_TestCase ] ); - $this->response - ->expects($this->once()) - ->method('setRedirect') + $this->resultRedirectMock->expects($this->once()) + ->method('setUrl') ->with($referer) - ->willReturn(true); + ->willReturnSelf(); - $this->getController()->execute(); + $this->assertSame($this->resultRedirectMock, $this->getController()->execute()); } public function testExecuteCanNotSaveWishlistAndWithRedirect() @@ -373,19 +375,18 @@ class RemoveTest extends \PHPUnit_Framework_TestCase ->expects($this->once()) ->method('getUrl') ->with('*/*') - ->willReturn('http:/test.com/frontname/module/controller/action'); + ->willReturn('http://test.com/frontname/module/controller/action'); $this->redirect ->expects($this->once()) ->method('getRedirectUrl') - ->willReturn('http:/test.com/frontname/module/controller/action'); + ->willReturn('http://test.com/frontname/module/controller/action'); - $this->response - ->expects($this->once()) - ->method('setRedirect') - ->with('http:/test.com/frontname/module/controller/action') - ->willReturn(true); + $this->resultRedirectMock->expects($this->once()) + ->method('setUrl') + ->with('http://test.com/frontname/module/controller/action') + ->willReturnSelf(); - $this->getController()->execute(); + $this->assertSame($this->resultRedirectMock, $this->getController()->execute()); } } diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/UpdateItemOptionsTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/UpdateItemOptionsTest.php index 9fddb7383a3034e51fcf973eb797f4638189083a..cb1b05a9328a9203c38aa36d6c9034bfa04b1144 100755 --- a/app/code/Magento/Wishlist/Test/Unit/Controller/Index/UpdateItemOptionsTest.php +++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Index/UpdateItemOptionsTest.php @@ -3,9 +3,10 @@ * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ - namespace Magento\Wishlist\Test\Unit\Controller\Index; +use Magento\Framework\Controller\ResultFactory; + /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ @@ -31,21 +32,6 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase */ protected $request; - /** - * @var \Magento\Framework\App\Response\Http|\PHPUnit_Framework_MockObject_MockObject - */ - protected $response; - - /** - * @var \Magento\Framework\App\View|\PHPUnit_Framework_MockObject_MockObject - */ - protected $view; - - /** - * @var \Magento\Store\App\Response\Redirect|\PHPUnit_Framework_MockObject_MockObject - */ - protected $redirect; - /** * @var \Magento\Framework\App\ObjectManager|\PHPUnit_Framework_MockObject_MockObject */ @@ -71,6 +57,16 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase */ protected $eventManager; + /** + * @var \Magento\Framework\Controller\ResultFactory|\PHPUnit_Framework_MockObject_MockObject + */ + protected $resultFactoryMock; + + /** + * @var \Magento\Framework\Controller\Result\Redirect|\PHPUnit_Framework_MockObject_MockObject + */ + protected $resultRedirectMock; + /** * SetUp method * @@ -81,15 +77,23 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase $this->productRepository = $this->getMock('Magento\Catalog\Model\ProductRepository', [], [], '', false); $this->context = $this->getMock('Magento\Framework\App\Action\Context', [], [], '', false); $this->request = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false); - $this->response = $this->getMock('Magento\Framework\App\Response\Http', [], [], '', false); $this->wishlistProvider = $this->getMock('Magento\Wishlist\Controller\WishlistProvider', [], [], '', false); - $this->view = $this->getMock('Magento\Framework\App\View', [], [], '', false); - $this->redirect = $this->getMock('\Magento\Store\App\Response\Redirect', [], [], '', false); $this->om = $this->getMock('Magento\Framework\App\ObjectManager', [], [], '', false); $this->messageManager = $this->getMock('Magento\Framework\Message\Manager', [], [], '', false); $this->url = $this->getMock('Magento\Framework\Url', [], [], '', false); $this->customerSession = $this->getMock('Magento\Customer\Model\Session', [], [], '', false); $this->eventManager = $this->getMock('Magento\Framework\Event\Manager', [], [], '', false); + $this->resultFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\ResultFactory') + ->disableOriginalConstructor() + ->getMock(); + $this->resultRedirectMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Redirect') + ->disableOriginalConstructor() + ->getMock(); + + $this->resultFactoryMock->expects($this->any()) + ->method('create') + ->with(ResultFactory::TYPE_REDIRECT, []) + ->willReturn($this->resultRedirectMock); } /** @@ -103,10 +107,7 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase $this->productRepository, $this->context, $this->request, - $this->response, $this->wishlistProvider, - $this->view, - $this->redirect, $this->om, $this->messageManager, $this->url, @@ -131,10 +132,6 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getRequest') ->willReturn($this->request); - $this->context - ->expects($this->any()) - ->method('getResponse') - ->willReturn($this->response); $this->context ->expects($this->any()) ->method('getEventManager') @@ -147,18 +144,13 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase ->expects($this->any()) ->method('getActionFlag') ->willReturn($actionFlag); - $this->context - ->expects($this->any()) - ->method('getRedirect') - ->willReturn($this->redirect); - $this->context - ->expects($this->any()) - ->method('getView') - ->willReturn($this->view); $this->context ->expects($this->any()) ->method('getMessageManager') ->willReturn($this->messageManager); + $this->context->expects($this->any()) + ->method('getResultFactory') + ->willReturn($this->resultFactoryMock); } /** @@ -189,14 +181,12 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase ->method('getParam') ->with('product') ->willReturn(null); + $this->resultRedirectMock->expects($this->once()) + ->method('setPath') + ->with('*/', []) + ->willReturnSelf(); - $this->redirect - ->expects($this->once()) - ->method('redirect') - ->with($this->response, '*/', []) - ->willReturn(true); - - $this->getController()->execute(); + $this->assertSame($this->resultRedirectMock, $this->getController()->execute()); } /** @@ -223,14 +213,12 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase ->method('addError') ->with('We can\'t specify a product.') ->willReturn(true); + $this->resultRedirectMock->expects($this->once()) + ->method('setPath') + ->with('*/', []) + ->willReturnSelf(); - $this->redirect - ->expects($this->once()) - ->method('redirect') - ->with($this->response, '*/', []) - ->willReturn(true); - - $this->getController()->execute(); + $this->assertSame($this->resultRedirectMock, $this->getController()->execute()); } /** @@ -293,14 +281,12 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase ->method('create') ->with('Magento\Wishlist\Model\Item') ->willReturn($item); + $this->resultRedirectMock->expects($this->once()) + ->method('setPath') + ->with('*/', []) + ->willReturnSelf(); - $this->redirect - ->expects($this->once()) - ->method('redirect') - ->with($this->response, '*/', []) - ->willReturn(true); - - $this->getController()->execute(); + $this->assertSame($this->resultRedirectMock, $this->getController()->execute()); } /** @@ -416,14 +402,12 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase ->method('addError') ->with('error-message', null) ->willReturn(true); + $this->resultRedirectMock->expects($this->once()) + ->method('setPath') + ->with('*/*', ['wishlist_id' => 56]) + ->willReturnSelf(); - $this->redirect - ->expects($this->once()) - ->method('redirect') - ->with($this->response, '*/*', ['wishlist_id' => 56]) - ->willReturn(true); - - $this->getController()->execute(); + $this->assertSame($this->resultRedirectMock, $this->getController()->execute()); } /** * Test execute add success critical exception @@ -556,13 +540,11 @@ class UpdateItemOptionsTest extends \PHPUnit_Framework_TestCase ->method('addError') ->with('An error occurred while updating wish list.', null) ->willReturn(true); + $this->resultRedirectMock->expects($this->once()) + ->method('setPath') + ->with('*/*', ['wishlist_id' => 56]) + ->willReturnSelf(); - $this->redirect - ->expects($this->once()) - ->method('redirect') - ->with($this->response, '*/*', ['wishlist_id' => 56]) - ->willReturn(true); - - $this->getController()->execute(); + $this->assertSame($this->resultRedirectMock, $this->getController()->execute()); } } diff --git a/app/code/Magento/Wishlist/Test/Unit/Controller/Shared/AllcartTest.php b/app/code/Magento/Wishlist/Test/Unit/Controller/Shared/AllcartTest.php index fbd2ce5f641ac78949c061f63885d182daaad5c9..09ea2bb42c74aacbf7555c36fa41679d86822f43 100644 --- a/app/code/Magento/Wishlist/Test/Unit/Controller/Shared/AllcartTest.php +++ b/app/code/Magento/Wishlist/Test/Unit/Controller/Shared/AllcartTest.php @@ -3,161 +3,148 @@ * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ - namespace Magento\Wishlist\Test\Unit\Controller\Shared; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper; +use Magento\Framework\Controller\ResultFactory; + class AllcartTest extends \PHPUnit_Framework_TestCase { + /** + * @var \Magento\Wishlist\Controller\Shared\Allcart + */ + protected $allcartController; + + /** + * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager + */ + protected $objectManagerHelper; + + /** + * @var \Magento\Framework\App\Action\Context + */ + protected $context; + /** * @var \Magento\Wishlist\Controller\Shared\WishlistProvider|\PHPUnit_Framework_MockObject_MockObject */ - protected $wishlistProvider; + protected $wishlistProviderMock; + + /** + * @var \Magento\Wishlist\Model\ItemCarrier|\PHPUnit_Framework_MockObject_MockObject + */ + protected $itemCarrierMock; + + /** + * @var \Magento\Wishlist\Model\Wishlist|\PHPUnit_Framework_MockObject_MockObject + */ + protected $wishlistMock; /** * @var \Magento\Framework\App\Request\Http|\PHPUnit_Framework_MockObject_MockObject */ - protected $request; + protected $requestMock; /** - * @var \Magento\Wishlist\Model\ItemCarrier|\PHPUnit_Framework_MockObject_MockObject + * @var \Magento\Framework\Controller\ResultFactory|\PHPUnit_Framework_MockObject_MockObject */ - protected $itemCarrier; + protected $resultFactoryMock; /** - * @var \Magento\Framework\App\Response\Http|\PHPUnit_Framework_MockObject_MockObject + * @var \Magento\Framework\Controller\Result\Redirect|\PHPUnit_Framework_MockObject_MockObject */ - protected $response; + protected $resultRedirectMock; /** - * @var \Magento\Framework\App\Action\Context|\PHPUnit_Framework_MockObject_MockObject + * @var \Magento\Framework\Controller\Result\Forward|\PHPUnit_Framework_MockObject_MockObject */ - protected $context; + protected $resultForwardMock; protected function setUp() { - $this->wishlistProvider = $this->getMock( - '\Magento\Wishlist\Controller\Shared\WishlistProvider', - [], - [], - '', - false + $this->wishlistProviderMock = $this->getMockBuilder('Magento\Wishlist\Controller\Shared\WishlistProvider') + ->disableOriginalConstructor() + ->getMock(); + $this->itemCarrierMock = $this->getMockBuilder('Magento\Wishlist\Model\ItemCarrier') + ->disableOriginalConstructor() + ->getMock(); + $this->wishlistMock = $this->getMockBuilder('Magento\Wishlist\Model\Wishlist') + ->disableOriginalConstructor() + ->getMock(); + $this->requestMock = $this->getMockBuilder('Magento\Framework\App\Request\Http') + ->disableOriginalConstructor() + ->getMock(); + $this->resultFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\ResultFactory') + ->disableOriginalConstructor() + ->getMock(); + $this->resultRedirectMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Redirect') + ->disableOriginalConstructor() + ->getMock(); + $this->resultForwardMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Forward') + ->disableOriginalConstructor() + ->getMock(); + + $this->resultFactoryMock->expects($this->any()) + ->method('create') + ->willReturnMap( + [ + [ResultFactory::TYPE_REDIRECT, [], $this->resultRedirectMock], + [ResultFactory::TYPE_FORWARD, [], $this->resultForwardMock] + ] + ); + + $this->objectManagerHelper = new ObjectManagerHelper($this); + $this->context = $this->objectManagerHelper->getObject( + 'Magento\Framework\App\Action\Context', + [ + 'request' => $this->requestMock, + 'resultFactory' => $this->resultFactoryMock + ] + ); + $this->allcartController = $this->objectManagerHelper->getObject( + 'Magento\Wishlist\Controller\Shared\Allcart', + [ + 'context' => $this->context, + 'wishlistProvider' => $this->wishlistProviderMock, + 'itemCarrier' => $this->itemCarrierMock + ] ); - $this->request = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false); - $this->itemCarrier = $this->getMock('Magento\Wishlist\Model\ItemCarrier', [], [], '', false); - $this->context = $this->getMock('Magento\Framework\App\Action\Context', [], [], '', false); - $this->response = $this->getMock('Magento\Framework\App\Response\Http', [], [], '', false); } - protected function prepareContext() + public function testExecuteWithWishlist() { - $om = $this->getMock('Magento\Framework\App\ObjectManager', [], [], '', false); - $eventManager = $this->getMock('Magento\Framework\Event\Manager', null, [], '', false); - $url = $this->getMock('Magento\Framework\Url', [], [], '', false); - $actionFlag = $this->getMock('Magento\Framework\App\ActionFlag', [], [], '', false); - $redirect = $this->getMock('\Magento\Store\App\Response\Redirect', [], [], '', false); - $view = $this->getMock('Magento\Framework\App\View', [], [], '', false); - $messageManager = $this->getMock('Magento\Framework\Message\Manager', [], [], '', false); - - $this->context - ->expects($this->any()) - ->method('getObjectManager') - ->will($this->returnValue($om)); - $this->context - ->expects($this->any()) - ->method('getRequest') - ->will($this->returnValue($this->request)); - $this->context - ->expects($this->any()) - ->method('getResponse') - ->will($this->returnValue($this->response)); - $this->context - ->expects($this->any()) - ->method('getEventManager') - ->will($this->returnValue($eventManager)); - $this->context - ->expects($this->any()) - ->method('getUrl') - ->will($this->returnValue($url)); - $this->context - ->expects($this->any()) - ->method('getActionFlag') - ->will($this->returnValue($actionFlag)); - $this->context - ->expects($this->any()) - ->method('getRedirect') - ->will($this->returnValue($redirect)); - $this->context - ->expects($this->any()) - ->method('getView') - ->will($this->returnValue($view)); - $this->context - ->expects($this->any()) - ->method('getMessageManager') - ->will($this->returnValue($messageManager)); - } + $url = 'http://redirect-url.com'; + $quantity = 2; - public function getController() - { - $this->prepareContext(); - return new \Magento\Wishlist\Controller\Shared\Allcart( - $this->context, - $this->wishlistProvider, - $this->itemCarrier - ); + $this->wishlistProviderMock->expects($this->once()) + ->method('getWishlist') + ->willReturn($this->wishlistMock); + $this->requestMock->expects($this->any()) + ->method('getParam') + ->with('qty') + ->willReturn($quantity); + $this->itemCarrierMock->expects($this->once()) + ->method('moveAllToCart') + ->with($this->wishlistMock, 2) + ->willReturn($url); + $this->resultRedirectMock->expects($this->once()) + ->method('setUrl') + ->with($url) + ->willReturnSelf(); + + $this->assertSame($this->resultRedirectMock, $this->allcartController->execute()); } public function testExecuteWithNoWishlist() { - $this->wishlistProvider->expects($this->once()) + $this->wishlistProviderMock->expects($this->once()) ->method('getWishlist') ->willReturn(false); - - $this->request - ->expects($this->once()) - ->method('initForward') - ->will($this->returnValue(true)); - $this->request - ->expects($this->once()) - ->method('setActionName') + $this->resultForwardMock->expects($this->once()) + ->method('forward') ->with('noroute') - ->will($this->returnValue(true)); - $this->request - ->expects($this->once()) - ->method('setDispatched') - ->with(false) - ->will($this->returnValue(true)); - - $controller = $this->getController(); - $controller->execute(); - } - - public function testExecuteWithWishlist() - { - $wishlist = $this->getMockBuilder('Magento\Wishlist\Model\Wishlist') - ->disableOriginalConstructor() - ->getMock(); - $this->wishlistProvider->expects($this->once()) - ->method('getWishlist') - ->willReturn($wishlist); - - $this->request - ->expects($this->once()) - ->method('getParam') - ->with('qty') - ->will($this->returnValue(2)); - - $this->itemCarrier - ->expects($this->once()) - ->method('moveAllToCart') - ->with($wishlist, 2) - ->will($this->returnValue('http://redirect-url.com')); - - $this->response - ->expects($this->once()) - ->method('setRedirect') - ->will($this->returnValue('http://redirect-url.com')); + ->willReturnSelf(); - $controller = $this->getController(); - $controller->execute(); + $this->assertSame($this->resultForwardMock, $this->allcartController->execute()); } } diff --git a/app/code/Magento/Wishlist/composer.json b/app/code/Magento/Wishlist/composer.json index efca25e972d86be90c6784c2669e96805f71142f..59eee0b1b1feb0c7ab6eccbe0a4563a729e34340 100644 --- a/app/code/Magento/Wishlist/composer.json +++ b/app/code/Magento/Wishlist/composer.json @@ -3,28 +3,28 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta5", - "magento/module-customer": "0.74.0-beta5", - "magento/module-catalog": "0.74.0-beta5", - "magento/module-checkout": "0.74.0-beta5", - "magento/module-theme": "0.74.0-beta5", - "magento/module-catalog-inventory": "0.74.0-beta5", - "magento/module-rss": "0.74.0-beta5", - "magento/module-backend": "0.74.0-beta5", - "magento/module-sales": "0.74.0-beta5", - "magento/module-grouped-product": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", - "magento/module-ui": "0.74.0-beta5", + "magento/module-store": "0.74.0-beta6", + "magento/module-customer": "0.74.0-beta6", + "magento/module-catalog": "0.74.0-beta6", + "magento/module-checkout": "0.74.0-beta6", + "magento/module-theme": "0.74.0-beta6", + "magento/module-catalog-inventory": "0.74.0-beta6", + "magento/module-rss": "0.74.0-beta6", + "magento/module-backend": "0.74.0-beta6", + "magento/module-sales": "0.74.0-beta6", + "magento/module-grouped-product": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", + "magento/module-ui": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-configurable-product": "0.74.0-beta5", - "magento/module-downloadable": "0.74.0-beta5", - "magento/module-bundle": "0.74.0-beta5", - "magento/module-cookie": "0.74.0-beta5" + "magento/module-configurable-product": "0.74.0-beta6", + "magento/module-downloadable": "0.74.0-beta6", + "magento/module-bundle": "0.74.0-beta6", + "magento/module-cookie": "0.74.0-beta6" }, "type": "magento2-module", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Wishlist/view/frontend/templates/view.phtml b/app/code/Magento/Wishlist/view/frontend/templates/view.phtml index 035364489f3caa8386c6d57bd34e6994b2d965ac..624a320f30a7e00e0722812837cab07b9d079a86 100644 --- a/app/code/Magento/Wishlist/view/frontend/templates/view.phtml +++ b/app/code/Magento/Wishlist/view/frontend/templates/view.phtml @@ -13,14 +13,6 @@ <?php echo($block->getChildHtml('wishlist.rss.link'));?> <form class="form-wishlist-items" id="wishlist-view-form" data-mage-init='{"wishlist":{ - "dataAttribute":"item-id", - "nameFormat":"qty[{0}]", - "btnRemoveSelector":".action.delete", - "qtySelector":".qty", - "addToCartSelector":".action.tocart", - "addAllToCartSelector":".primary > .action.tocart", - "commentInputType":"textarea", - "infoList":false, "addToCartUrl":"<?php echo $block->getItemAddToCartUrl("%item%");?>", "confirmRemoveMessage":"<?php echo __("Are you sure you want to remove this product from your wishlist?") ?>", "addAllToCartUrl":"<?php echo $block->getAddAllToCartUrl(); ?>", diff --git a/app/code/Magento/Wishlist/view/frontend/web/wishlist.js b/app/code/Magento/Wishlist/view/frontend/web/wishlist.js index ad01e333ef0cfd2a9b3b88a821fdaf665c3f390c..973cde4f0b4e90fddb1cf9990b8f726c70acd152 100644 --- a/app/code/Magento/Wishlist/view/frontend/web/wishlist.js +++ b/app/code/Magento/Wishlist/view/frontend/web/wishlist.js @@ -81,12 +81,11 @@ define([ var itemId = elem.data(this.options.dataAttribute), url = this.options.addToCartUrl.replace('%item%', itemId), inputName = $.validator.format(this.options.nameFormat, itemId), - inputValue = elem.parent().find('[name="' + inputName + '"]').val(), + inputValue = $('[name="' + inputName + '"]').val(), separator = (url.indexOf('?') >= 0) ? '&' : '?'; url += separator + inputName + '=' + encodeURIComponent(inputValue); this._validateAndRedirect(url); } - }, /** diff --git a/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/_menu.less b/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/_menu.less index 0101fe2439257f2c88766365f6bdf0b407fd8c46..28387dfa85d71e68b74c0ccc508c7b9e03e63ab4 100644 --- a/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/_menu.less +++ b/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/_menu.less @@ -73,16 +73,18 @@ position: relative; text-align: center; z-index: @menu__z-index; - &:focus { - background-color: @menu-item__active__background-color; - box-shadow: none; - + .admin__menu { - .level-0 { - &:first-child { - > a { - background-color: @menu__background-color; - &:after { - display: none; + ._keyfocus & { + &:focus { + background-color: @menu-item__active__background-color; + box-shadow: none; + + .admin__menu { + .level-0 { + &:first-child { + > a { + background-color: @menu__background-color; + &:after { + display: none; + } } } } diff --git a/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/main/_page-nav.less b/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/main/_page-nav.less index 09319136bec92e3efe47253d810c21eba1eacd4b..0071951108a8b8bd2be488be74e487b25762675d 100644 --- a/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/main/_page-nav.less +++ b/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/main/_page-nav.less @@ -23,7 +23,7 @@ @admin__page-nav-item__hover__background-color: darken(@admin__page-nav__background-color, 5%); @admin__page-nav-link__color: @color-very-dark-gray-black; -@admin__page-nav-link__padding: @indent__base 4rem @indent__base 1rem; +@admin__page-nav-link__padding: @indent__base 4rem @indent__base @indent__s; @admin__page-nav-link__hover__color: @color-very-dark-gray-black; @admin__page-nav-link__changed__color: @color-very-dark-gray; @@ -133,7 +133,7 @@ .admin__page-nav-items { list-style-type: none; margin: 0; - padding: 0; + padding: @indent__s 0 @admin__page-nav-item__margin-vertical 0; } .admin__page-nav-item { @@ -180,10 +180,6 @@ display: inline-block; } } - - &:last-child { - margin-bottom: @admin__page-nav-item__margin-vertical; - } } @@ -276,7 +272,7 @@ box-shadow: @admin__page-nav-tooltip__box-shadow; display: none; font-weight: @font-weight__regular; - left: -1rem; + left: -@indent__s; line-height: @line-height__base; padding: 2rem; position: absolute; diff --git a/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/pages/_dashboard.less b/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/pages/_dashboard.less index 8155f8e461eabf82cc8007f13c086edcbf402ebf..bb55d0e0722cdbb18b1b315f8ce82703ebeea40c 100644 --- a/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/pages/_dashboard.less +++ b/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/pages/_dashboard.less @@ -27,7 +27,7 @@ padding-left: 0; } } - &.table-info { + &.admin__table-primary { th { border-top: 0; } @@ -91,6 +91,9 @@ background: @dashboard-tabs__background-color; font-size: @dashboard__font-size__base; } + .ui-tabs-panel { + border-top: 1px solid @color-gray68; + } } // diff --git a/app/design/adminhtml/Magento/backend/Magento_Downloadable/web/css/source/_module.less b/app/design/adminhtml/Magento/backend/Magento_Downloadable/web/css/source/_module.less index af531ff02ac2067b0fc1d51bab40c460070df5a3..3411169b6c0028f8e28a2493f6d1ee1f07b13de0 100644 --- a/app/design/adminhtml/Magento/backend/Magento_Downloadable/web/css/source/_module.less +++ b/app/design/adminhtml/Magento/backend/Magento_Downloadable/web/css/source/_module.less @@ -59,19 +59,6 @@ } } - .action-remove { - .button-reset(); - .icon-font( - @icon-delete__content, - @icons-admin__font-name, - @_icon-font-size: 1.8rem, - @_icon-font-line-height: 16px, - @_icon-font-text-hide: true, - @_icon-font-position: after, - @_icon-font-color: @color-brown-darkie - ); - margin-top: .5rem; - } } @-moz-document url-prefix() { // Firefox fieldset overflow bug fix diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/_module.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/_module.less index 910cec4be04dfc70580ab6632d24ba2627acb519..b27606f18db19606eebfad18a29e4792deee9b15 100644 --- a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/_module.less +++ b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/_module.less @@ -3,10 +3,5 @@ // * See COPYING.txt for license details. // */ -// -// Pages -// _____________________________________________ - -@import 'module/_order-create.less'; -@import 'module/_order-create-sidebar.less'; -@import 'module/_order-create-table.less'; +@import 'module/_order.less'; +@import 'module/_edit-order.less'; diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_edit-order.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_edit-order.less new file mode 100644 index 0000000000000000000000000000000000000000..860f0f37660ee8ba416d59dd615c7ed5489561dd --- /dev/null +++ b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_edit-order.less @@ -0,0 +1,91 @@ +// /** +// * Copyright © 2015 Magento. All rights reserved. +// * See COPYING.txt for license details. +// */ + +// +// Variables +// --------------------------------------------- + +@edit-order-comment-notes__border-color: @color-gray65; +@edit-order-comment-notes__font-size: @font-size__s; + +// +// Table secondary for edit order +// --------------------------------------------- + +.abs-admin__table-secondary-edit-order { + th { + font-weight: @font-weight__regular; + text-align: left; + vertical-align: top; + } + td { + text-align: right; + } + tr { + &:last-child { + td { + border: none; + } + } + } +} + +// +// Order information +// --------------------------------------------- + +.order-information-table { + &:extend(.abs-admin__table-secondary-edit-order all); +} + +// +// Order account information +// --------------------------------------------- + +.order-account-information-table { + &:extend(.abs-admin__table-secondary-edit-order all); +} + +// +// Edit order tables +// --------------------------------------------- + +.edit-order-table { + &:extend(.abs-order-tables all); + &:extend(.abs-order-tbody-border all); + margin-bottom: 5rem; + tfoot { + &._hide { + display: none; + } + td { + padding-top: @order-create-sidebar__margin__m; + } + .col-total { + text-align: right; + } + } + .edit-total-price-block { + padding-left: 3rem; + } +} + +.order-subtotal-table { + tr { + td { + &:last-child { + text-align: right; + } + } + } +} + +.order-history-block { + margin: 0 0 5rem; +} + +.order-history-comments-actions { + margin-top: @order-create-sidebar__margin__reqular; +} diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_order-create-table.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_order-create-table.less deleted file mode 100644 index a9594b130c1e82a0256b9a09f12e11ada61dfca9..0000000000000000000000000000000000000000 --- a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_order-create-table.less +++ /dev/null @@ -1,174 +0,0 @@ -// /** -// * Copyright © 2015 Magento. All rights reserved. -// * See COPYING.txt for license details. -// */ - -// -// Variables -// --------------------------------------------- - -@order-create-table__border-color: @table-td__border-color; -@order-create-sku__background: @admin__page-nav__background-color; -@order-create-sku__padding: @indent__base; -@order-create-sku-table__border-color: @color-white; - -// - -// -// Table -// --------------------------------------------- - -.order-tables { - margin: 0 0 @order-create-sidebar__margin-reqular; - width: 100%; - th { - border-top: 0; - font-size: 1.3rem; - } - td { - border-bottom: none; - padding-top: @order-create-sidebar__padding; - } - tbody { - tr { - &:last-child { - td { - border-bottom: 1px solid @order-create-table__border-color; - } - } - &.border { - td { - padding-top: 0; - } - } - } - } - .col-qty { - .admin__control-text { - &:extend(.abs-control-qty all); - } - } - .col-actions { - .admin__control-select { - width: 13rem; - } - } - .price { - display: inline-block; - margin: 0 0 @order-create-sidebar__margin-small; - } - .custom-price-block { - font-size: @order-create-sidebar__font-size-xs; - margin: 0 0 @order-create-sidebar__margin-small; - + .admin__control-text { - &:extend(.abs-control-price); - } - } - .discount-price-block { - font-size: @order-create-sidebar__font-size-xs; - } - .product-configure-block { - margin: 1rem 0 0; - .disabled { - display: none; - } - } -} - -.order-search-items { - .grid { - .action-configure { - float: right; - } - .col-id, - .col-price, - .col-in_products { - width: 10rem; - } - } -} - -// -// Add by SKU -// --------------------------------------------- - -.add-by-sku-wrapper { - .add-by-sku { - background: @order-create-sku__background; - clear: both; - margin: 0 0 @indent__base; - padding: @order-create-sku__padding; - } - .table-info { - color: @order-create-sidebar__color; - } - .admin__field-note { - margin: 1.4rem 0; - } - .table-info { - th { - border-top: none; - } - th, - td { - border-bottom-color: @order-create-sku-table__border-color; - &:first-child { - padding-left: 0; - } - } - } - .action-reset, - .action-delete { - &:extend(.abs-action-reset all); - &:extend(.abs-icon all); - display: inline-block; - font-size: @order-create-sidebar__font-size + 0.1rem; - margin-left: 1.2rem; - padding-top: @order-create-sidebar__margin-small + 0.2rem; - vertical-align: middle; - &:after { - color: @order-create-sidebar__color; - content: @order-create-icon-remove__content; - } - &:hover { - &:after { - color: @order-create-icon-plus__hover__color; - } - } - > span { - &:extend(.abs-visually-hidden all); - } - } - .action-reset { - margin-top: -.4rem; - opacity: .5; - padding-top: 0; - &:after { - content: @order-create-icon-reset__content; - } - &:hover { - opacity: 1; - } - } - .col-qty { - .admin__control-text { - &:extend(.abs-control-qty all); - } - } -} - -// -// Product configure popup -// --------------------------------------------- - -.product-configure-popup { - .weee { - .price-wrapper { - display: block; - font-size: 1.3rem; - &:before { - content: attr(data-label) ": "; - } - } - } -} diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_order-create.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_order-create.less deleted file mode 100644 index 5ff4e9228ffd85bce65c88fbb894378729b318db..0000000000000000000000000000000000000000 --- a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_order-create.less +++ /dev/null @@ -1,416 +0,0 @@ -// /** -// * Copyright © 2015 Magento. All rights reserved. -// * See COPYING.txt for license details. -// */ - -// -// Variables -// --------------------------------------------- - -@order-create-icon-refresh__font-size: 2rem; -@order-create-icon-refresh__color: @color-gray83; -@order-create-icon-refresh__hover__color: darken(@color-gray83, 10%); - -@order-create-icon-add__content: @icon-arrow-right__content; -@order-create-icon-configure__content: @icon-systems__content; -@order-create-icon-remove__content: @icon-delete__content; -@order-create-icon-reset__content: @icon-remove-small__content; -@order-create-icon-refresh__content: @icon-refresh__content; -@order-create-icon-plus__content: @icon-plus__content; -@order-create-icon-plus__hover__color: @color-very-dark-gray-black2; - -// - -// -// Layout -// --------------------------------------------- - -.media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__m) { - .order-details { - float: right; - #mix-grid .width(9,12); - margin-left: 0; - } - .order-sidebar { - #mix-grid .column(3,12); - margin-left: 0; - } - - .order-billing-address, - .order-billing-method, - .order-history { - float: left; - #mix-grid .width(6,12); - } - - .order-shipping-address, - .order-shipping-method, - .order-totals { - float: right; - #mix-grid .width(6,12); - } -} - -// -// Select Store Scope -// --------------------------------------------- - -.tree-store-scope { - max-width: 50rem; - - .admin__field { - margin: 0 0 1rem; - } -} - -// -// Order discounts -// --------------------------------------------- - -.order-discounts { - &:extend(.abs-clearfix all); - margin-top: @indent__base; - .action-secondary { - float: right; - margin-top: 2.1rem; - } - .order-coupons { - float: left; - } - .admin__field { - display: inline-block; - margin: 0 3.5rem 0 0; - vertical-align: top; - - .admin__field-control { - padding-right: 32px; - position: relative; - } - - .action-default { - &:extend(.abs-action-reset all); - top: 7px; - position: absolute; - right: 0; - > span { - .extend__visually-hidden(); - } - - &:before { - &:extend(.abs-icon all); - content: @order-create-icon-add__content; - } - - &:hover { - color: @order-create-icon-plus__hover__color; - } - } - p { - margin: @indent__s 0 0; - } - } - .action-remove { - color: @color-brownie; - margin-left: @indent__xs; - &:hover { - color: @order-create-icon-plus__hover__color; - text-decoration: none; - } - > span { - .extend__visually-hidden(); - } - &:before { - &:extend(.abs-icon all); - content: @order-create-icon-remove__content; - } - } -} - -// -// Order Account Information -// --------------------------------------------- - -.order-account-information { - .admin__fieldset { - &:extend(.abs-clearfix all); - } - .admin__field { - margin-bottom: 0; - } - .field-group_id { - float: left; - } - .field-email { - margin-top: 0; - overflow: hidden; - } -} - -// -// Order Address Information -// --------------------------------------------- - -.order-details { - .order-search-items { - .col-qty { - .admin__control-text { - &:extend(.abs-control-qty); - } - } - } - - .admin__fieldset-wrapper:not(:last-child) { - margin-bottom: 5rem; - } - - .admin__fieldset-wrapper-content { - &:extend(.abs-clearfix all); - } - - .admin__fieldset-wrapper-title { - &:extend(.abs-clearfix all); - border-bottom: 1px solid @color-gray80; - margin-bottom: @order-create-sidebar__margin-reqular; - padding-bottom: @indent__xs; - .actions { - float: right; - margin-bottom: @order-create-sidebar__margin-reqular; - margin-top: -@indent__xs; - } - .action-secondary { - margin-left: @indent__base; - } - .title { - margin: 0; - } - } - - .admin__legend { - &:extend(.abs-fieldset-legend all); - } - - .admin__field { - &:extend(.abs-field-rows all); - } - - .admin__field-option { - .admin__field-label { - display: block; - width: auto; - } - } -} - -.field-vat-number { - .action-default { - &:extend(.action-tertiary all); - font-weight: @font-weight__regular; - margin-top: @indent__s; - padding: 0; - } -} - -// -// Order Payment & Shipping Information -// --------------------------------------------- - -.order-methods { - .admin__field { - &:extend(.abs-field-rows all); - } - .admin__fieldset-wrapper-content { - .admin__fieldset-wrapper-title { - &:extend(.abs-fieldset-legend all); - border-bottom: 0; - margin-bottom: 1.5rem; - padding: 0; - strong { - font-weight: @font-weight__semibold; - } - } - } -} - -.admin__payment-method-wapper { - margin: 0; - .admin__fieldset { - padding: 1.5rem 0 @indent__base @field-control-option-label__padding-left; - } - .admin__field { - &:last-child { - margin-bottom: 0; - } - } -} - -.admin__order-shipment-methods-title { - font-weight: @font-weight__bold; - margin: 0 0 @indent__xs; -} - -.admin__order-shipment-methods-options { - margin: 0 0 @indent__base; -} - -.admin__order-shipment-methods-options-list { - list-style: none; - margin: 0; -} - -.order-shipping-method-summary { - padding-top: @field-option__padding-top; -} - -.order-shipping-method, -.order-billing-method { - position: relative; -} - -.order-shipping-method-summary, -.order-shipping-method { - .action-default { - &:extend(.action-tertiary all); - font-weight: @font-weight__regular; - padding: 0; - } -} - -.order-methods-overlay { - background: rgba(255, 255, 255, .5); - bottom: 0; - left: 0; - position: absolute; - right: 0; - top: 0; - span { - background: @color-white; - display: block; - font-weight: @font-weight__bold; - left: 0; - position: absolute; - top: 48px; - } - .order-shipping-address & { - span { - top: 27px; - } - } -} - -// -// Order Errors -// --------------------------------------------- - -.order-errors { - .col-qty { - .admin__control-text { - &:extend(.abs-control-qty all); - } - } -} - -// -// Gift options -// --------------------------------------------- - -.order-gift-options { - &:extend(.abs-clearfix all); - .card-price-box { - display: none; - &._active { - display: block; - } - } - - .price-box { - .price { - font-weight: @font-weight__bold; - } - } - - > .giftmessage-order-create { - float: left; - #mix-grid .width(6, 12); - } -} - -.giftmessage-order-create { - .field-sender { - margin-top: 1.4rem; - } - .admin__field { // ToDo UI: remove when /app/code/Magento/Backend/view/adminhtml/templates/widget/form.phtml refactored (the wrapping div removed) - margin-bottom: 3rem; - position: relative; - + .admin__field { - margin-top: 1.5rem; - } - } -} - -// -// Totals -// --------------------------------------------- - -.admin__table-secondary { - width: 100%; - td { - padding: .7rem @indent__s; - } - tr:nth-child(2n+1) td { - background-color: @color-white-fog2; - } - .admin__total-amount { - text-align: right; - } - tr:last-child td { - border-bottom: 1px solid @color-gray80; - padding-bottom: @indent__s; - } -} - -.order-totals-actions { - margin-top: @indent__s; - .actions { - margin-top: @indent__l; - text-align: right; - } - .action-default { - &:extend(.abs-action-l all); - } -} - -// ToDo UI: review the collapsible block -//.order-subtotal { -// .summary-collapse { -// cursor: pointer; -// display: inline-block; -// &:before { -// @iconsize: 16px; -// -// background: #f2ebde; -// border: 1px solid #ada89e; -// border-radius: 2px; -// color: #816063; -// content: '+'; -// display: inline-block; -// font-size: @iconsize; -// -webkit-font-smoothing: antialiased; -// font-style: normal; -// font-weight: normal; -// height: @iconsize; -// line-height: @iconsize; -// margin-right: 7px; -// overflow: hidden; -// speak: none; -// text-indent: 0; -// vertical-align: top; -// width: @iconsize; -// } -// &:hover:before { -// background: #cac3b4; -// } -// } -// &.show-details .summary-collapse:before { -// content: '\e03a'; -// } -//} diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_order.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_order.less new file mode 100644 index 0000000000000000000000000000000000000000..2b4e2e6093170ca6345db320f4240256e67fa8ac --- /dev/null +++ b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_order.less @@ -0,0 +1,267 @@ +// /** +// * Copyright © 2015 Magento. All rights reserved. +// * See COPYING.txt for license details. +// */ + +// +// Page components +// --------------------------------------------- + +@import 'order/_address.less'; +@import 'order/_discounts.less'; +@import 'order/_gift-options.less'; +@import 'order/_items.less'; +@import 'order/_order-account.less'; +@import 'order/_payment-shipping.less'; +@import 'order/_sidebar.less'; +@import 'order/_sku.less'; +@import 'order/_total.less'; +@import 'order/_order-comments.less'; + +// +// Variables +// --------------------------------------------- + +@order-create-icon-refresh__font-size: 2rem; +@order-create-icon-refresh__color: @color-gray83; +@order-create-icon-refresh__hover__color: darken(@color-gray83, 10%); + +@order-create-icon-add__content: @icon-arrow-right__content; +@order-create-icon-configure__content: @icon-systems__content; +@order-create-icon-remove__content: @icon-delete__content; +@order-create-icon-reset__content: @icon-remove-small__content; +@order-create-icon-refresh__content: @icon-refresh__content; +@order-create-icon-plus__content: @icon-plus__content; +@order-create-icon-plus__hover__color: @color-very-dark-gray-black2; + +// +// Crosspage components +// _____________________________________________ + +// +// Layout +// --------------------------------------------- + +.media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__m) { + .order-details { + float: right; + #mix-grid .width(9,12); + margin-left: 0; + } + .order-sidebar { + #mix-grid .column(3,12); + margin-left: 0; + } + + .order-billing-address, + .order-billing-method, + .order-history, + .order-information, + .order-payment-method, + .order-comments-history { + float: left; + #mix-grid .width(6,12); + } + + .order-shipping-address, + .order-shipping-method, + .order-totals, + .order-view-account-information .order-account-information { + float: right; + #mix-grid .width(6,12); + } +} + +.order-view { + > .ui-tabs-panel { + border: 0; + margin: 0; + padding: 0; + } +} + +// +// Page sections +// --------------------------------------------- + +.admin__page-section { + margin-bottom: 5rem; + + .admin__legend { + &:extend(.abs-fieldset-legend all); + } + + .admin__field { + &:extend(.abs-field-rows all); + } + + .admin__control-table-wrapper { + margin-top: @indent__base; + } + + address { + font-style: normal; + } + + .admin__table-secondary { + .admin__control-text { + width: 5.4rem; + } + } +} + +.admin__page-section-title { + &:extend(.abs-clearfix all); + border-bottom: 1px solid @color-gray80; + margin-bottom: 1.7rem; + padding: 1.4rem 0 .5rem; + strong, + .title { + &:extend(h2); + float: left; + margin: 0; + } + .actions { + display: inline-block; + margin-left: @indent__xs; + } +} + +.admin__page-section-content { + &:extend(.abs-clearfix all); +} + +.admin__page-section-item-title, +.admin__page-section-content .admin__page-section-title { + border-bottom: 0; + margin-bottom: 1.5rem; + padding: 0; + .title { + &:extend(.abs-fieldset-legend all); + margin: 0; + } + .actions { + display: inline-block; + margin-left: @indent__xs; + } +} + +// +// Select Customer +// --------------------------------------------- + +.order-customer-selector { + .admin__page-section-title { + .title { + margin: 0 0 2rem; + } + .actions { + float: right; + margin-top: -.5rem; + } + } +} + +// +// Select Store Scope +// --------------------------------------------- + +.tree-store-scope { + max-width: 50rem; + .admin__field { + margin: 0 0 1rem; + } +} + +// +// Order Errors +// --------------------------------------------- + +.order-errors { + .col-qty { + .admin__control-text { + &:extend(.abs-control-qty all); + } + } +} + +// +// Order Invoice +// --------------------------------------------- + +.order-invoice-tables { + &:extend(.abs-order-tables all); + &:extend(.abs-order-tbody-border all); +} + +.abs-qty-table { + th, + td { + border: none; + font-weight: @font-weight__regular; + padding: 0 @order-create-sidebar__margin__s @order-create-sidebar__margin__s 0; + } +} + +.abs-order-tbody-border { + tbody { + border-bottom: 1px solid @table-td__border-color; + &:last-of-type { + border-bottom: none; + } + } +} + + +// +// Product configure popup +// --------------------------------------------- + +.product-configure-popup { + .weee { + .price-excluding-tax, + .price-including-tax { + display: block; + font-size: 1.3rem; + &:before { + content: attr(data-label) ": "; + } + } + } +} + +// ToDo UI: review the collapsible block +//.order-subtotal { +// .summary-collapse { +// cursor: pointer; +// display: inline-block; +// &:before { +// @iconsize: 16px; +// +// background: #f2ebde; +// border: 1px solid #ada89e; +// border-radius: 2px; +// color: #816063; +// content: '+'; +// display: inline-block; +// font-size: @iconsize; +// -webkit-font-smoothing: antialiased; +// font-style: normal; +// font-weight: normal; +// height: @iconsize; +// line-height: @iconsize; +// margin-right: 7px; +// overflow: hidden; +// speak: none; +// text-indent: 0; +// vertical-align: top; +// width: @iconsize; +// } +// &:hover:before { +// background: #cac3b4; +// } +// } +// &.show-details .summary-collapse:before { +// content: '\e03a'; +// } +//} diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_address.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_address.less new file mode 100644 index 0000000000000000000000000000000000000000..0fdcfc2df388f9ca7c25a9d9ee78f1715a5dba1d --- /dev/null +++ b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_address.less @@ -0,0 +1,49 @@ +// /** +// * Copyright © 2015 Magento. All rights reserved. +// * See COPYING.txt for license details. +// */ + +// +// Order Address Information +// --------------------------------------------- + +.order-details { + .order-search-items { + .col-qty { + .admin__control-text { + &:extend(.abs-control-qty); + } + } + } + + .order-items, + .order-search-items, + .order-additional-area { + .admin__page-section-title { + .actions { + float: right; + margin-bottom: @order-create-sidebar__margin__reqular; + margin-top: -.3rem; + } + .action-secondary { + margin-left: @indent__base; + } + } + } + + .admin__field-option { + .admin__field-label { + display: block; + width: auto; + } + } +} + +.field-vat-number { + .action-default { + &:extend(.action-tertiary all); + font-weight: @font-weight__regular; + margin-top: @indent__s; + padding: 0; + } +} diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_discounts.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_discounts.less new file mode 100644 index 0000000000000000000000000000000000000000..64b80e77823dc8ce8ea8931cc8a587b4d88e5266 --- /dev/null +++ b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_discounts.less @@ -0,0 +1,67 @@ +// /** +// * Copyright © 2015 Magento. All rights reserved. +// * See COPYING.txt for license details. +// */ + +// +// Order discounts +// --------------------------------------------- + +.order-discounts { + &:extend(.abs-clearfix all); + margin-top: @indent__base; + .action-secondary { + float: right; + margin-top: 2.1rem; + } + .order-coupons { + float: left; + } + .admin__field { + display: inline-block; + margin: 0 3.5rem 0 0; + vertical-align: top; + + .admin__field-control { + padding-right: 32px; + position: relative; + } + + .action-default { + &:extend(.abs-action-reset all); + position: absolute; + right: 0; + top: 7px; + > span { + .extend__visually-hidden(); + } + + &:before { + &:extend(.abs-icon all); + content: @order-create-icon-add__content; + } + + &:hover { + color: @order-create-icon-plus__hover__color; + } + } + p { + margin: @indent__s 0 0; + } + } + .action-remove { + color: @color-brownie; + margin-left: @indent__xs; + &:hover { + color: @order-create-icon-plus__hover__color; + text-decoration: none; + } + > span { + .extend__visually-hidden(); + } + &:before { + &:extend(.abs-icon all); + content: @order-create-icon-remove__content; + } + } +} diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_gift-options.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_gift-options.less new file mode 100644 index 0000000000000000000000000000000000000000..4b88d1f0e57e1074965c264f8a80e69aa6c1ce23 --- /dev/null +++ b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_gift-options.less @@ -0,0 +1,58 @@ +// /** +// * Copyright © 2015 Magento. All rights reserved. +// * See COPYING.txt for license details. +// */ + +// +// Gift options +// --------------------------------------------- + +.order-gift-options { + &:extend(.abs-clearfix all); + .card-price-box { + display: none; + &._active { + display: block; + } + } + + .price-box { + .price { + font-weight: @font-weight__bold; + } + } + + > .giftmessage-order-create { + float: left; + #mix-grid .width(6, 12); + } + + .admin__field { + &._required[class] { + &:not(.admin__field-option) { + > .admin__field-label span { + &:after { + margin-left: 0; + } + } + } + } + } +} + +.giftmessage-order-create { + .field-sender { + margin-top: 1.4rem; + } + .admin__field { // ToDo UI: remove when /app/code/Magento/Backend/view/adminhtml/templates/widget/form.phtml refactored (the wrapping div removed) + margin-bottom: 3rem; + position: relative; + + .admin__field { + margin-top: 1.5rem; + } + } +} + +.gift-options-tooltip { + &:extend(.abs-admin__field-tooltip-content all); +} diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_items.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_items.less new file mode 100644 index 0000000000000000000000000000000000000000..0f621df99f43c72b37991106eaab7880ac6868a7 --- /dev/null +++ b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_items.less @@ -0,0 +1,124 @@ +// /** +// * Copyright © 2015 Magento. All rights reserved. +// * See COPYING.txt for license details. +// */ + +// +// Variables +// --------------------------------------------- + +@order-create-table__border-color: @table-td__border-color; +@order-create-sku__background: @admin__page-nav__background-color; +@order-create-sku__padding: @indent__base; +@order-create-sku-table__border-color: @color-white; + +// +// Table +// --------------------------------------------- + +.order-tables { + &:extend(.abs-order-tables all); + &:extend(.abs-order-tbody-border all); +} + +.order-items { + > .admin__page-section-title { + margin: 0; + } + .actions-update { + margin: @indent__base 0; + text-align: right; + } +} + +.order-search-items { + .grid { + .action-configure { + float: right; + } + .col-id, + .col-price, + .col-in_products { + width: 10rem; + } + } +} + +.abs-order-tables { + margin: 0 0 @order-create-sidebar__margin__reqular; + width: 100%; + th { + border-top: 0; + font-size: 1.3rem; + } + td { + border-bottom: none; + } + tbody { + tr { + &.row-messages-error, + &.row-gift-options { + td { + padding-top: 0; + } + } + } + } + tfoot { + td { + border-bottom: 1px solid @order-create-table__border-color; + border-top: none; + } + } + .col-qty, + .col-qty-invoice { + .admin__control-text { + &:extend(.abs-control-qty all); + } + } + .qty-table { + &:extend(.abs-qty-table all); + } + .col-actions { + .admin__control-select { + width: 13rem; + } + } + .price { + display: inline-block; + margin: 0 0 @order-create-sidebar__margin__s; + } + .item-options { + &:extend(.abs-clearfix all); + margin: @order-create-sidebar__margin__m 0 0; + dt { + clear: left; + float: left; + margin: 0 @order-create-sidebar__margin__s @order-create-sidebar__margin__s 0; + } + dd { + display: inline-block; + float: left; + margin: 0 0 @order-create-sidebar__margin__s; + } + } + .custom-price-block { + font-size: @order-create-sidebar__font-size__xs; + margin: 0 0 @order-create-sidebar__margin__s; + + .admin__control-text { + &:extend(.abs-control-price); + } + } + .discount-price-block { + font-size: @order-create-sidebar__font-size__xs; + } + .product-configure-block { + margin: @indent__s 0 0; + .disabled { + display: none; + } + } + .product-sku-block { + margin: @indent__s 0 0; + } +} diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_order-account.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_order-account.less new file mode 100644 index 0000000000000000000000000000000000000000..a0cf2a04230c41c2028b05acffb070e3f6f3dd1e --- /dev/null +++ b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_order-account.less @@ -0,0 +1,24 @@ +// /** +// * Copyright © 2015 Magento. All rights reserved. +// * See COPYING.txt for license details. +// */ + +// +// Order Account Information +// --------------------------------------------- + +.order-account-information { + .admin__fieldset { + &:extend(.abs-clearfix all); + } + .admin__field { + margin-bottom: 0; + } + .field-group_id { + float: left; + } + .field-email { + margin-top: 0; + overflow: hidden; + } +} diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_order-comments.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_order-comments.less new file mode 100644 index 0000000000000000000000000000000000000000..675a02272c8cf1199ab008e1e454ce58cfa3e144 --- /dev/null +++ b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_order-comments.less @@ -0,0 +1,58 @@ +// /** +// * Copyright © 2015 Magento. All rights reserved. +// * See COPYING.txt for license details. +// */ + +// +// Edit Order comments +// --------------------------------------------- + +.edit-order-comments { + .note-list { + font-size: @edit-order-comment-notes__font-size; + list-style: none; + margin: 0 0 @order-create-sidebar__margin; + } + .note-list-item { + margin: 0 0 @order-create-sidebar__margin__s; + } + .note-list-date, + .note-list-time { + padding: 0 @order-create-sidebar__margin__m 0 0; + } + .note-list-status, + .note-list-customer { + border-left: 1px solid @edit-order-comment-notes__border-color; + padding: 0 @order-create-sidebar__margin__m; + } + .note-list-customer-notapplicable, + .note-list-customer-not-notified, + .note-list-customer-notified { + font-weight: @font-weight__bold; + padding: 0 @order-create-sidebar__margin__m 0 0; + } + .note-list-comment { + margin: 0 0 @order-create-sidebar__margin__reqular; + } + .comments-block-item { + margin: 0 0 @order-create-sidebar__margin; + } + .comments-block-item-comment { + margin: 0 0 @order-create-sidebar__margin__s; + } + .comments-block-item-date-time { + font-size: @font-size__tiny; + } +} + +.edit-order-comments-block-title { + margin: 0 0 @order-create-sidebar__margin; + .typography( + @_font-size: 1.9rem, + @_color: @color-brown-darkie, + @_font-weight: @font-weight__semibold, + @_line-height: @line-height__s, + @_font-family: false, + @_font-style: false + ); +} diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_payment-shipping.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_payment-shipping.less new file mode 100644 index 0000000000000000000000000000000000000000..fe3ebac483461cb7bd0f7899d679e2808a5dfb5b --- /dev/null +++ b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_payment-shipping.less @@ -0,0 +1,91 @@ +// /** +// * Copyright © 2015 Magento. All rights reserved. +// * See COPYING.txt for license details. +// */ + +// +// Order Payment & Shipping Information +// --------------------------------------------- + +.admin__payment-method-wapper { + margin: 0; + .admin__field { + margin-left: -4rem; + &:first-child { + margin-top: 1.5rem; + } + } + .admin__payment-methods { + margin: 0; + } +} + +.admin__order-shipment-methods-title { + font-weight: @font-weight__bold; + margin: 0 0 @indent__xs; +} + +.admin__order-shipment-methods-options { + margin: 0 0 @indent__base; +} + +.admin__order-shipment-methods-options-list { + list-style: none; + margin: 0; +} + +.order-shipping-method-summary { + padding-top: @field-option__padding-top; +} + +.order-shipping-method, +.order-billing-method { + position: relative; +} + +.order-shipping-method-summary, +.order-shipping-method-info { + .action-default { + &:extend(.action-tertiary all); + font-weight: @font-weight__regular; + padding: 0; + } +} + +.order-methods-overlay { + background-color: rgba(255, 255, 255, .5); + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; + span { + background-color: @color-white; + display: block; + font-weight: @font-weight__bold; + left: 0; + padding: @indent__xs 0; + position: absolute; + top: 43px; + } + .order-shipping-address & { + span { + top: 22px; + } + } +} + +.shipping-description-wrapper { + .price { + font-weight: @font-weight__bold; + } +} + +.order-payment-method-title, +.shipping-description-title { + font-weight: @font-weight__bold; +} + +.action-create-label { + margin: @indent__s 0; +} diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_order-create-sidebar.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_sidebar.less similarity index 88% rename from app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_order-create-sidebar.less rename to app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_sidebar.less index 6bdd17f7f4d18eae84eba64d3fe9e1b5cdbcfb20..8ef7ff03c7c529c3e4ad388073672207a1917107 100644 --- a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/_order-create-sidebar.less +++ b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_sidebar.less @@ -8,19 +8,17 @@ // --------------------------------------------- @order-create-sidebar__font-size: 1.5rem; -@order-create-sidebar__font-size-xs: 1.1rem; +@order-create-sidebar__font-size__xs: 1.1rem; @order-create-sidebar__color: @color-very-dark-gray; @order-create-sidebar__margin: 2.4rem; @order-create-sidebar__padding: @indent__base; -@order-create-sidebar__margin-small: .5rem; -@order-create-sidebar__margin-m: 1rem; -@order-create-sidebar__margin-reqular: 1.7rem; +@order-create-sidebar__margin__s: .5rem; +@order-create-sidebar__margin__m: 1rem; +@order-create-sidebar__margin__reqular: 1.7rem; @order-create-sidebar__border-color: @border__color; @order-create-sidebar-scroll__height: 24rem; -// - // // Order Sidebar // --------------------------------------------- @@ -47,7 +45,7 @@ padding: 0 0 @order-create-sidebar__margin; } .admin__control-select { - margin: 0 0 @order-create-sidebar__margin-small; + margin: 0 0 @order-create-sidebar__margin__s; width: 100%; } .order-sidebar-block { @@ -55,7 +53,7 @@ margin: 0 0 @order-create-sidebar__margin; padding: 0 0 @order-create-sidebar__margin; } - .table-info { + .admin__table-primary { color: @order-create-sidebar__color; width: 100%; th, @@ -102,7 +100,7 @@ text-align: right; .icon-configure, .icon-add { - margin-right: @order-create-sidebar__margin-m; + margin-right: @order-create-sidebar__margin__m; } } } @@ -110,7 +108,7 @@ &:extend(.abs-icon all); display: table-cell; font-size: @order-create-icon-refresh__font-size; - padding-right: @order-create-sidebar__margin-m; + padding-right: @order-create-sidebar__margin__m; vertical-align: middle; &:after { color: @order-create-icon-refresh__color; @@ -127,16 +125,16 @@ } } .create-order-sidebar-block { - .head { + .sidebar-title-block { margin: 0 0 @order-create-sidebar__margin; } .auto-scroll { - margin: 0 -@order-create-sidebar__padding @order-create-sidebar__margin-small; + margin: 0 -@order-create-sidebar__padding @order-create-sidebar__margin__s; max-height: @order-create-sidebar-scroll__height; overflow: auto; position: relative; + .action-default { - margin-top: @order-create-sidebar__margin-reqular; + margin-top: @order-create-sidebar__margin__reqular; } .no-items { padding-left: @order-create-sidebar__padding; @@ -153,7 +151,7 @@ margin: 0; vertical-align: middle; + .admin__control-select { - margin-top: @order-create-sidebar__margin-reqular; + margin-top: @order-create-sidebar__margin__reqular; } } .actions { diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_sku.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_sku.less new file mode 100644 index 0000000000000000000000000000000000000000..68b25e5aa12ae0ad94526499174c2418ed3a5413 --- /dev/null +++ b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_sku.less @@ -0,0 +1,45 @@ +// /** +// * Copyright © 2015 Magento. All rights reserved. +// * See COPYING.txt for license details. +// */ + +// +// Add by SKU +// --------------------------------------------- + +.add-by-sku-wrapper { + .add-by-sku { + margin: 0 0 @indent__base; + } + .admin__field-note { + margin: 1.4rem 0; + } + .action-reset { + &:extend(.abs-action-reset all); + &:extend(.abs-icon all); + display: inline-block; + font-size: 1.6rem; + margin: -.4rem 0 0; + opacity: .5; + vertical-align: middle; + &:after { + color: @order-create-icon-reset__content; + content: @order-create-icon-reset__content; + } + &:hover { + opacity: 1; + &:after { + color: @order-create-icon-plus__hover__color; + } + } + > span { + &:extend(.abs-visually-hidden all); + } + } + .col-qty { + width: 8rem; + .admin__control-text { + &:extend(.abs-control-qty all); + } + } +} diff --git a/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_total.less b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_total.less new file mode 100644 index 0000000000000000000000000000000000000000..699576bde84c70e2645fbe07475fbe915afca647 --- /dev/null +++ b/app/design/adminhtml/Magento/backend/Magento_Sales/web/css/source/module/order/_total.less @@ -0,0 +1,19 @@ +// /** +// * Copyright © 2015 Magento. All rights reserved. +// * See COPYING.txt for license details. +// */ + +// +// Totals +// --------------------------------------------- + +.order-totals-actions { + margin-top: @indent__s; + .actions { + margin-top: @indent__l; + text-align: right; + } + .action-default { + &:extend(.abs-action-l all); + } +} diff --git a/app/design/adminhtml/Magento/backend/Magento_Shipping/web/css/source/_module.less b/app/design/adminhtml/Magento/backend/Magento_Shipping/web/css/source/_module.less new file mode 100644 index 0000000000000000000000000000000000000000..c1ff50783ee7816d1751695366462a40901c383a --- /dev/null +++ b/app/design/adminhtml/Magento/backend/Magento_Shipping/web/css/source/_module.less @@ -0,0 +1,114 @@ +// /** +// * Copyright © 2015 Magento. All rights reserved. +// * See COPYING.txt for license details. +// */ + +// +// Order Shipment +// --------------------------------------------- + +.order-shipment-table { + &:extend(.abs-order-tables all); + &:extend(.abs-order-tbody-border all); +} + +// +// Packaging for Shipping Popup +// -------------------------------------- + +// ToDo UI: refactor the popup to jQuery UI, edit the styles +.packaging-window { + background: @color-white; + box-shadow: 0 3px 6px rgba(0, 0, 0, .4); + left: 50%; + margin: -20rem 0 0 -47rem; + position: fixed; + top: 50%; + width: 100rem; + z-index: 1000; + .message-warning { + margin: 0 0 @indent__s; + } + .admin__control-select { + width: 13rem; + &.measures { + width: 9rem; + } + } + .packaging-content { + height: auto !important; + max-height: 40rem; + overflow-x: hidden; + overflow: auto; + padding: @indent__base @indent__base 0; + position: relative; + .options-weight { + vertical-align: top; + } + } + .popup-window-title { + &:extend(.abs-clearfix all); + padding: @indent__base; + .title { + font-size: 1.9rem; + display: block; + } + .actions { + float: right; + } + } + .popup-fieldset-title { + &:extend(.abs-clearfix all); + .title { + display: block; + font-weight: 700; + padding-top: @indent__s; + } + .actions { + float: right; + } + margin: 0 0 @indent__base; + } + .popup-window-buttons-set { + padding: @indent__base; + text-align: right; + } + .package-add-products { + margin: @indent__base 0 0; + .grid { + padding: 0; + button { + vertical-align: middle; + } + } + } + .col-total-weight { + .admin__control-text { + margin: 0 0 .5rem; + } + } + .col-qty-edit { + .admin__control-text { + &:extend(.abs-control-qty all); + } + } + .col-actions { + width: 13rem; + .action-delete { + padding-top: 0; + } + } + .admin__table-primary { + .action-delete { + margin-top: -.7rem; + padding: 0; + &:extend(.abs-action-delete all); + } + } + .action-secondary { + float: right; + } + .action-close { + &:extend(.abs-action-tertiary all); + } +} diff --git a/app/design/adminhtml/Magento/backend/composer.json b/app/design/adminhtml/Magento/backend/composer.json index 099609e696d4171594daaca42d3ff603da7de56b..8ae2687dac7e5d03b2248d8dff711c8d8fd8a1c9 100644 --- a/app/design/adminhtml/Magento/backend/composer.json +++ b/app/design/adminhtml/Magento/backend/composer.json @@ -3,11 +3,11 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/framework": "0.74.0-beta5", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-theme", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/design/adminhtml/Magento/backend/web/css/source/_actions.less b/app/design/adminhtml/Magento/backend/web/css/source/_actions.less index 7a3f017a0a5b58b1841e07680b58341e1e00a9f6..e9b6e173f1df976ffec6b1317f9153200343edc7 100644 --- a/app/design/adminhtml/Magento/backend/web/css/source/_actions.less +++ b/app/design/adminhtml/Magento/backend/web/css/source/_actions.less @@ -97,6 +97,29 @@ padding-top: @button__padding-vertical__l; } +.abs-action-delete { + &:extend(.abs-action-reset all); + &:extend(.abs-icon all); + display: inline-block; + font-size: 1.6rem; + margin-left: 1.2rem; + padding-top: .7rem; + text-decoration: none; + vertical-align: middle; + &:after { + color: @color-very-dark-gray; + content: @icon-delete__content; + } + &:hover { + &:after { + color: @color-very-dark-gray-black2; + } + } + > span { + &:extend(.abs-visually-hidden all); + } +} + .abs-action-default { .action-default(); } diff --git a/app/design/adminhtml/Magento/backend/web/css/source/_tables.less b/app/design/adminhtml/Magento/backend/web/css/source/_tables.less index bf591fe9921f70066c979e51f23d908baf851669..c72dda688951972b6e6b5b74851f0c8355c12727 100644 --- a/app/design/adminhtml/Magento/backend/web/css/source/_tables.less +++ b/app/design/adminhtml/Magento/backend/web/css/source/_tables.less @@ -16,29 +16,48 @@ @table-tfoot__background-color: @color-white-fog; -@table-info__font-size: 1.3rem; -@table-info__padding-vertical: 1rem; -@table-info__padding-horizontal: 1.5rem; +@admin__table-primary__font-size: 1.3rem; +@admin__table-primary__padding-vertical: 1rem; +@admin__table-primary__padding-horizontal: 1.5rem; + +@admin__table-secondary__padding-vertical: @admin__table-primary__padding-vertical; +@admin__table-secondary__padding-horizontal: 1rem; +@admin__table-secondary-caption__font-size: 1.8rem; +@admin__table-secondary-cell__odd__color: @color-white-fog2; +@admin__table-secondary-th__color: @color-brownie-light; // // Tables // _____________________________________________ -// -// Utilities -// --------------------------------------------- +table { + background-color: transparent; + color: @table__color; + > caption { + margin-bottom: .5em; + } +} + +.admin__table-primary, +.admin__table-secondary { + width: 100%; +} -.table-info { - font-size: @table-info__font-size; +.admin__table-primary { + font-size: @admin__table-primary__font-size; th, td { - padding: @table-info__padding-vertical @table-info__padding-horizontal; + padding: @admin__table-primary__padding-vertical @admin__table-primary__padding-horizontal; text-align: left; + &:first-child { + padding-left: 0; + } } th { border-bottom: 1px solid @table-th__border-color; border-top: 1px solid @table-th__border-color; font-weight: @font-weight__bold; + vertical-align: bottom; } td { border-bottom: 1px solid @table-td__border-color; @@ -55,15 +74,59 @@ } tfoot { background: @table-tfoot__background-color; + font-weight: @font-weight__semibold; + th, + td { + &:first-child { + padding-left: @admin__table-primary__padding-horizontal; + } + } } } -// - -table { - background-color: transparent; - color: @table__color; - > caption { - margin-bottom: .5em; +.admin__table-secondary { + caption { + font-size: @admin__table-secondary-caption__font-size; + font-weight: @font-weight__bold; + margin-bottom: .75em; + text-align: left; + } + tbody { + th { + vertical-align: top; + } + } + tr { + &:nth-child(odd) { + th, + td { + background-color: @admin__table-secondary-cell__odd__color; + } + } + } + th, + td { + padding: @admin__table-secondary__padding-horizontal @admin__table-secondary__padding-vertical; + text-align: left; + } + th { + color: @admin__table-secondary-th__color; + font-weight: @font-weight__regular; + } + tfoot { + tr { + &:nth-child(odd) { + th, + td { + background-color: @color-white; + } + } + &:first-child { + border-top: 1px solid @table-td__border-color; + } + } + } + .admin__total-amount { + text-align: right; } } diff --git a/app/design/adminhtml/Magento/backend/web/css/source/_tabs.less b/app/design/adminhtml/Magento/backend/web/css/source/_tabs.less index fa113a59c52acb0e46b2968e09eab6d0c9f33f49..1728f1f08b5e655e4f61a43b9efd443f266c5c5e 100644 --- a/app/design/adminhtml/Magento/backend/web/css/source/_tabs.less +++ b/app/design/adminhtml/Magento/backend/web/css/source/_tabs.less @@ -57,7 +57,6 @@ // Tabs content .ui-tabs-panel { - border-top: 1px solid @color-gray68; margin-top: -1px; padding: 2rem; } diff --git a/app/design/adminhtml/Magento/backend/web/css/source/components/_data-grid-temp.less b/app/design/adminhtml/Magento/backend/web/css/source/components/_data-grid-temp.less index 7098e076357d147d068e180c487cf75a98da5530..2dded4e6efea6ea68ca2f2f0b9474c187b94d7c0 100644 --- a/app/design/adminhtml/Magento/backend/web/css/source/components/_data-grid-temp.less +++ b/app/design/adminhtml/Magento/backend/web/css/source/components/_data-grid-temp.less @@ -42,6 +42,9 @@ // --------------------------------------------- .grid { + .hor-scroll { + overflow-x: auto; + } table { &:not(.data-table) { border: none; @@ -111,7 +114,7 @@ border: @data-grid-temp-cell__border-width @data-grid-temp-th__border-style @data-grid-temp-th__border-color; color: @data-grid-temp-th__color; font-weight: @font-weight__semibold; - padding: @data-grid-temp-cell__padding-vertical @data-grid-temp-cell__padding-horizontal;; + padding: @data-grid-temp-cell__padding-vertical @data-grid-temp-cell__padding-horizontal; text-align: left; &:first-child { border-left-color: @data-grid-temp-th__border-color; @@ -184,6 +187,9 @@ margin-left: .5rem; width: 3.5rem; } + &:after { + display: none; + } } } } diff --git a/app/design/adminhtml/Magento/backend/web/css/source/components/_popups.less b/app/design/adminhtml/Magento/backend/web/css/source/components/_popups.less index abac708dc0eb592a27fde7f4d2ca8e198ab276fa..918ce1cec2d1c6fd8c740c21eab8c342d573ba99 100644 --- a/app/design/adminhtml/Magento/backend/web/css/source/components/_popups.less +++ b/app/design/adminhtml/Magento/backend/web/css/source/components/_popups.less @@ -26,6 +26,8 @@ @popup-overlay__background-color: rgba(0, 0, 0, .35); +@popup-fieldset__margin-left: 34%; + // // Jquery UI popup window // _____________________________________________ @@ -322,14 +324,13 @@ > .admin__legend { float: none; font-size: 1.8rem; - margin: 0 0 2rem 34%; + margin: 0 0 @indent__base @popup-fieldset__margin-left; width: auto; } - } - .gift_options-popup { - .admin__fieldset { - > .admin__legend { - margin-left: 0; + .product-options { + margin-left: @popup-fieldset__margin-left; + .admin__field-control { + margin-bottom: @indent__base; } } } diff --git a/app/design/adminhtml/Magento/backend/web/css/source/forms/_control-table.less b/app/design/adminhtml/Magento/backend/web/css/source/forms/_control-table.less index 0a5bda543853f0f2734bcf8fbb3934469ac02eb2..4d4875471506fe522edf4ccb64282899c82a240d 100644 --- a/app/design/adminhtml/Magento/backend/web/css/source/forms/_control-table.less +++ b/app/design/adminhtml/Magento/backend/web/css/source/forms/_control-table.less @@ -52,4 +52,7 @@ } } } + .action-delete { + &:extend(.abs-action-delete all); + } } diff --git a/app/design/adminhtml/Magento/backend/web/css/source/forms/_tooltip.less b/app/design/adminhtml/Magento/backend/web/css/source/forms/_tooltip.less index dbb52ffa5d3b74aec7574b566ef5ff1e3858536d..67fb5f3926aac1a7e8ee4790987f2a951641a250 100644 --- a/app/design/adminhtml/Magento/backend/web/css/source/forms/_tooltip.less +++ b/app/design/adminhtml/Magento/backend/web/css/source/forms/_tooltip.less @@ -44,24 +44,16 @@ display: block; } .admin__field-tooltip-content { - @_shadow: 0 2px 8px 0 rgba(0, 0, 0, .3); - .css(box-shadow, @_shadow); - background: @field-tooltip-content__background-color; - border-radius: 1px; - border: 1px solid @field-tooltip-content__border-color; + &:extend(.abs-admin__field-tooltip-content all); bottom: 42px; display: none; - padding: 15px 25px; - position: absolute; right: -70px; - width: 320px; - z-index: 1; &:after, &:before { .arrow( - @_position: down, - @_size: 16px, - @_color: @field-tooltip-content__border-color + @_position: down, + @_size: 16px, + @_color: @field-tooltip-content__border-color ); content: ""; display: block; @@ -77,3 +69,15 @@ } } } + +.abs-admin__field-tooltip-content { + @_shadow: 0 2px 8px 0 rgba(0, 0, 0, .3); + .css(box-shadow, @_shadow); + background: @field-tooltip-content__background-color; + border-radius: 1px; + border: 1px solid @field-tooltip-content__border-color; + padding: 15px 25px; + position: absolute; + width: 320px; + z-index: 1; +} diff --git a/app/design/adminhtml/Magento/backend/web/css/source/variables/_typography.less b/app/design/adminhtml/Magento/backend/web/css/source/variables/_typography.less index fa70769896ebb837737830e6ab90f4a4c4ada786..95422456d853c3239a80cf9bdbd14df5bdd0485e 100644 --- a/app/design/adminhtml/Magento/backend/web/css/source/variables/_typography.less +++ b/app/design/adminhtml/Magento/backend/web/css/source/variables/_typography.less @@ -17,6 +17,7 @@ @font-size__l: 1.6rem; @font-size__base: 1.4rem; @font-size__s: 1.2rem; +@font-size__tiny: 1.1rem; @font-size__xs: 1rem; @line-height__base: 1.4; diff --git a/app/design/adminhtml/Magento/backend/web/css/styles-old.less b/app/design/adminhtml/Magento/backend/web/css/styles-old.less index f6b0cff9e7c8de6cddad3de71d5e7484d8d2aa14..55ff2a07a82998541813d953643dbdbe4414b600 100644 --- a/app/design/adminhtml/Magento/backend/web/css/styles-old.less +++ b/app/design/adminhtml/Magento/backend/web/css/styles-old.less @@ -3167,8 +3167,7 @@ input.no-display, border-radius: 5px; } - .adminhtml-rma-new .order-totals, - .order-comments-history .order-comments-history { + .adminhtml-rma-new .order-totals { float: none; width: 100%; } @@ -3312,40 +3311,6 @@ input.no-display, } } - // - // Order view - // -------------------------------------- - - .order-comments-history fieldset { - border: 0; - margin: 0; - padding: 0; - } - - .order-comments-history textarea, - .rma-history-form textarea { - height: 6em; - margin: 5px 0 10px; - resize: vertical; - width: 100%; - } - - .order-comments-history input[type="checkbox"] { - margin-right: 5px; - } - - .order-history-comments-options { - float: left; - } - - .order-comments-history .actions { - float: right; - } - - [class*="-order-"] .fieldset-wrapper address { - overflow: auto; - } - // // Orders comments //-------------------------------------- @@ -4077,6 +4042,12 @@ input.no-display, display: none; } + .section-config > .config { + &.collapseable { + display: none; + } + } + .accordion > dt.open, .section-config.active > .collapseable, .accordion .collapseable.open { @@ -4797,7 +4768,6 @@ input.no-display, .page-layout-admin-1column .page-columns, .catalog-product-edit, .catalog-product-new, - .sales-order-view, .catalog-category-edit { table.data { table-layout: fixed; @@ -4822,7 +4792,6 @@ input.no-display, .custom-options .data-table, .ui-dialog .data, .page-layout-admin-1column .page-columns .data, - .sales-order-view .data, .catalog-category-edit .data { word-wrap: break-word; table-layout: fixed; @@ -5074,8 +5043,6 @@ input.no-display, } } -[class*="-order-"] .admin__scope-old .order-history, -[class*="-order-"] .admin__scope-old .order-comments-history, [class*="-order-"] .admin__scope-old .order-information, [class*="-order-"] .admin__scope-old .order-billing-address, [class*="-order-"] .admin__scope-old .order-payment-method, @@ -5302,19 +5269,6 @@ input.no-display, } } -.sales-order-view { - .admin__scope-old { - .grid { - .col-name { - &:extend(.col-150-max all); - } - .col-period { - &:extend(.col-70-max all); - } - } - } -} - .sales-order-index { .admin__scope-old { .grid .col-name { @@ -5377,15 +5331,6 @@ input.no-display, } } -// Sales -> View order -[class^=' sales-order-view'] { - .admin__scope-old { - .grid .col-customer_name { - &:extend(.col-110-max all); - } - } -} - // Sales -> Return [class^=' adminhtml-rma-'] { .admin__scope-old { diff --git a/app/design/adminhtml/Magento/backend/web/mui/styles/table.less b/app/design/adminhtml/Magento/backend/web/mui/styles/table.less index 55d1128d73b7506a05226dcfbb6c9c5c44424bbc..22032decb2c9868ecfab36e87e49684a33dc0416 100644 --- a/app/design/adminhtml/Magento/backend/web/mui/styles/table.less +++ b/app/design/adminhtml/Magento/backend/web/mui/styles/table.less @@ -85,11 +85,9 @@ table { // Table Filters //-------------------------------------- .filter { - select { - width: 99%; - } input.input-text { width: 99%; + margin-right: 0; &::-webkit-input-placeholder { color: @grid-filters-placeholder-color !important; text-transform: lowercase; diff --git a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/_minicart.less b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/_minicart.less index d8d0b25cb90f10fa092cc096fec35d72c733fce6..486f1232621403da649c372f7f5237908cbd5e5a 100644 --- a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/_minicart.less +++ b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/_minicart.less @@ -197,9 +197,6 @@ &:first-child { padding-top: 0; } - &:last-child { - padding-bottom: 0; - } > .product { &:extend(.abs-add-clearfix all); } @@ -242,6 +239,9 @@ @_icon-font-margin: -3px 0 0 7px, @_icon-font-position: after ); + .details { + display: none; + } } } .details-qty, diff --git a/app/design/frontend/Magento/blank/composer.json b/app/design/frontend/Magento/blank/composer.json index 06b0de74a20117cdf9372ecbf1e5d1fafce4d487..2a04bfacb343d811febc36cc9be67b7254e3eb41 100644 --- a/app/design/frontend/Magento/blank/composer.json +++ b/app/design/frontend/Magento/blank/composer.json @@ -3,11 +3,11 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/framework": "0.74.0-beta5", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-theme", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/design/frontend/Magento/luma/Magento_Checkout/web/css/source/module/_minicart.less b/app/design/frontend/Magento/luma/Magento_Checkout/web/css/source/module/_minicart.less index 3a65f3be3f3055aca8770b2ec9b94145206a63fc..365f03d8f28a56c51d26d921cb5168a0daa74983 100644 --- a/app/design/frontend/Magento/luma/Magento_Checkout/web/css/source/module/_minicart.less +++ b/app/design/frontend/Magento/luma/Magento_Checkout/web/css/source/module/_minicart.less @@ -205,9 +205,6 @@ &:first-child { padding-top: 0; } - &:last-child { - padding-bottom: 0; - } > .product { &:extend(.abs-add-clearfix all); } @@ -273,6 +270,9 @@ @_icon-font-position: after ); } + .details { + display: none; + } } } .details-qty, diff --git a/app/design/frontend/Magento/luma/composer.json b/app/design/frontend/Magento/luma/composer.json index 65cee41130caa2f8c59fed9819f74ecd48b77082..8fa8ad3aa9e7c50206b59568b7faff068e12c61b 100644 --- a/app/design/frontend/Magento/luma/composer.json +++ b/app/design/frontend/Magento/luma/composer.json @@ -3,12 +3,12 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/theme-frontend-blank": "0.74.0-beta5", - "magento/framework": "0.74.0-beta5", + "magento/theme-frontend-blank": "0.74.0-beta6", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-theme", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/i18n/magento/de_de/composer.json b/app/i18n/magento/de_de/composer.json index dcb3119da17cb3d01996b2d6e5381d371f8c3de3..3348716f124bbb1283aca8365bee6dc1653f53b6 100644 --- a/app/i18n/magento/de_de/composer.json +++ b/app/i18n/magento/de_de/composer.json @@ -1,13 +1,13 @@ { "name": "magento/language-de_de", "description": "German (Germany) language", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { - "magento/framework": "0.74.0-beta5", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-language", diff --git a/app/i18n/magento/en_us/composer.json b/app/i18n/magento/en_us/composer.json index a6066570d9407c89c5458566a743cdb3dd324fb1..54427d660fa30d9bae85106145c1486e6e04189d 100644 --- a/app/i18n/magento/en_us/composer.json +++ b/app/i18n/magento/en_us/composer.json @@ -1,13 +1,13 @@ { "name": "magento/language-en_us", "description": "English (United States) language", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { - "magento/framework": "0.74.0-beta5", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-language", diff --git a/app/i18n/magento/es_es/composer.json b/app/i18n/magento/es_es/composer.json index 04c60c9a9d287558a54c1ece7d1cc567a7d9af2d..de93f29f35665cc28056a6bd9d273ac9a85cf89c 100644 --- a/app/i18n/magento/es_es/composer.json +++ b/app/i18n/magento/es_es/composer.json @@ -1,13 +1,13 @@ { "name": "magento/language-es_es", "description": "Spanish (Spain) language", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { - "magento/framework": "0.74.0-beta5", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-language", diff --git a/app/i18n/magento/fr_fr/composer.json b/app/i18n/magento/fr_fr/composer.json index 4fb658f1943122d8aa49b9f893baa7562b5320b6..57c2be2ed896269ff4140ad4c4970cb450ba2b67 100644 --- a/app/i18n/magento/fr_fr/composer.json +++ b/app/i18n/magento/fr_fr/composer.json @@ -1,13 +1,13 @@ { "name": "magento/language-fr_fr", "description": "French (France) language", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { - "magento/framework": "0.74.0-beta5", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-language", diff --git a/app/i18n/magento/nl_nl/composer.json b/app/i18n/magento/nl_nl/composer.json index d5a03c186958d03407f80deb84ded1bf53bf9d82..12c4f56f07432845832714823d15a4f34d8e4b10 100644 --- a/app/i18n/magento/nl_nl/composer.json +++ b/app/i18n/magento/nl_nl/composer.json @@ -1,13 +1,13 @@ { "name": "magento/language-nl_nl", "description": "Dutch (Netherlands) language", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { - "magento/framework": "0.74.0-beta5", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-language", diff --git a/app/i18n/magento/pt_br/composer.json b/app/i18n/magento/pt_br/composer.json index ee226ddb36f77ae4efe8e11340d38ba1a8b71cd7..cc1a364b3dde8fba1615b23368ee82f4041da639 100644 --- a/app/i18n/magento/pt_br/composer.json +++ b/app/i18n/magento/pt_br/composer.json @@ -1,13 +1,13 @@ { "name": "magento/language-pt_br", "description": "Portuguese (Brazil) language", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { - "magento/framework": "0.74.0-beta5", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-language", diff --git a/app/i18n/magento/zh_cn/composer.json b/app/i18n/magento/zh_cn/composer.json index ddc25d3462fe46f5d2c34400a51328611871b7b7..1088c0e650ce72ad7a50a07957c4571f156913f2 100644 --- a/app/i18n/magento/zh_cn/composer.json +++ b/app/i18n/magento/zh_cn/composer.json @@ -1,13 +1,13 @@ { "name": "magento/language-zh_cn", "description": "Chinese (China) language", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { - "magento/framework": "0.74.0-beta5", + "magento/framework": "0.74.0-beta6", "magento/magento-composer-installer": "*" }, "type": "magento2-language", diff --git a/composer.json b/composer.json index 93c1f2b024685ab26c8bf8fc467f2aa3a71c868f..e99f901fde5affb0c5023710e7e9d788421aa9d0 100644 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "magento/magento2ce", "description": "Magento 2 (Community Edition)", "type": "project", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/composer.lock b/composer.lock index 036da6915e82470dc348beffecb1a07f394215b4..a4498fe8e6dc972a67cd464639b3f4a7619783fd 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "986eef2b3ae742a365a8a886f0babdd6", + "hash": "ff2c069b557199903bafc88e8abe0cea", "packages": [ { "name": "composer/composer", @@ -2016,19 +2016,20 @@ }, { "name": "fabpot/php-cs-fixer", - "version": "v1.6.2", + "version": "v1.7", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "a574ba148953fea1f78428d4b7c6843e759711f3" + "reference": "6425aeb97ab921371182712a18c280d546e7769b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/a574ba148953fea1f78428d4b7c6843e759711f3", - "reference": "a574ba148953fea1f78428d4b7c6843e759711f3", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/6425aeb97ab921371182712a18c280d546e7769b", + "reference": "6425aeb97ab921371182712a18c280d546e7769b", "shasum": "" }, "require": { + "ext-tokenizer": "*", "php": ">=5.3.6", "sebastian/diff": "~1.1", "symfony/console": "~2.3", @@ -2065,7 +2066,7 @@ } ], "description": "A script to automatically fix Symfony Coding Standard", - "time": "2015-04-13 21:33:33" + "time": "2015-04-16 07:21:30" }, { "name": "league/climate", diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/BillingAddressManagementTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/BillingAddressManagementTest.php index f78abc4a896adf0c4d64d5697b634b1031a3e17d..8d6c238db91f51b1afec55af59fc90d72899c6e9 100644 --- a/dev/tests/api-functional/testsuite/Magento/Quote/Api/BillingAddressManagementTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/BillingAddressManagementTest.php @@ -132,4 +132,118 @@ class BillingAddressManagementTest extends WebapiAbstract $this->assertEquals($value, $savedData[$key]); } } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testGetMyAddress() + { + $this->_markTestAsRestOnly(); + + // get customer ID token + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + + /** @var \Magento\Quote\Model\Quote\Address $address */ + $address = $quote->getBillingAddress(); + + $data = [ + AddressInterface::KEY_COUNTRY_ID => $address->getCountryId(), + AddressInterface::KEY_ID => (int)$address->getId(), + AddressInterface::KEY_CUSTOMER_ID => $address->getCustomerId(), + AddressInterface::KEY_REGION => $address->getRegion(), + AddressInterface::KEY_REGION_ID => $address->getRegionId(), + AddressInterface::KEY_REGION_CODE => $address->getRegionCode(), + AddressInterface::KEY_STREET => $address->getStreet(), + AddressInterface::KEY_COMPANY => $address->getCompany(), + AddressInterface::KEY_TELEPHONE => $address->getTelephone(), + AddressInterface::KEY_POSTCODE => $address->getPostcode(), + AddressInterface::KEY_CITY => $address->getCity(), + AddressInterface::KEY_FIRSTNAME => $address->getFirstname(), + AddressInterface::KEY_LASTNAME => $address->getLastname(), + AddressInterface::KEY_EMAIL => $address->getEmail() + ]; + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . 'mine/billing-address', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + 'token' => $token + ], + ]; + + $this->assertEquals($data, $this->_webApiCall($serviceInfo)); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testSetMyAddress() + { + $this->_markTestAsRestOnly(); + + // get customer ID token + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . 'mine/billing-address', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST, + 'token' => $token + ], + ]; + + $addressData = [ + 'firstname' => 'John', + 'lastname' => 'Smith', + 'email' => 'cat@dog.com', + 'company' => 'eBay Inc', + 'street' => ['Typical Street', 'Tiny House 18'], + 'city' => 'Big City', + 'region_id' => 12, + 'region' => 'California', + 'region_code' => 'CA', + 'postcode' => '0985432', + 'country_id' => 'US', + 'telephone' => '88776655', + 'fax' => '44332255', + ]; + $requestData = [ + 'address' => $addressData, + ]; + + $addressId = $this->_webApiCall($serviceInfo, $requestData); + + //reset $quote to reload data + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + $address = $quote->getBillingAddress(); + $address->getRegionCode(); + $savedData = $address->getData(); + $this->assertEquals($addressId, $savedData['address_id']); + //custom checks for street, region and address_type + foreach ($addressData['street'] as $streetLine) { + $this->assertContains($streetLine, $quote->getBillingAddress()->getStreet()); + } + unset($addressData['street']); + $this->assertEquals('billing', $savedData['address_type']); + //check the rest of fields + foreach ($addressData as $key => $value) { + $this->assertEquals($value, $savedData[$key]); + } + } } diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/CartManagementTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/CartManagementTest.php index 1f977421884bb9bb8d300244fd3995986c30a6f5..b8ec4629f35812fd01c7e8a6b1cf03577d4e9529 100644 --- a/dev/tests/api-functional/testsuite/Magento/Quote/Api/CartManagementTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/CartManagementTest.php @@ -13,6 +13,7 @@ class CartManagementTest extends WebapiAbstract const SERVICE_VERSION = 'V1'; const SERVICE_NAME = 'quoteCartManagementV1'; const RESOURCE_PATH = '/V1/carts/'; + const RESOURCE_PATH_CUSTOMER_TOKEN = "/V1/integration/customer/token"; protected $createdQuotes = []; @@ -26,7 +27,17 @@ class CartManagementTest extends WebapiAbstract $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); } - public function testCreate() + public function tearDown() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + foreach ($this->createdQuotes as $quoteId) { + $quote->load($quoteId); + $quote->delete(); + } + } + + public function testCreateEmptyCartForGuest() { $serviceInfo = [ 'rest' => [ @@ -46,14 +57,71 @@ class CartManagementTest extends WebapiAbstract $this->createdQuotes[] = $quoteId; } - public function tearDown() + /** + * @magentoApiDataFixture Magento/Customer/_files/customer.php + */ + public function testCreateEmptyCartForCustomer() { - /** @var \Magento\Quote\Model\Quote $quote */ - $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); - foreach ($this->createdQuotes as $quoteId) { - $quote->load($quoteId); - $quote->delete(); - } + /** @var $repository \Magento\Customer\Api\CustomerRepositoryInterface */ + $repository = $this->objectManager->create('Magento\Customer\Api\CustomerRepositoryInterface'); + /** @var $customer \Magento\Customer\Api\Data\CustomerInterface */ + $customer = $repository->getById(1); + $customerId = $customer->getId(); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => '/V1/customers/' . $customerId . '/carts', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'CreateEmptyCartForCustomer', + ], + ]; + + $quoteId = $this->_webApiCall($serviceInfo, ['customerId' => $customerId]); + $this->assertGreaterThan(0, $quoteId); + $this->createdQuotes[] = $quoteId; + } + + /** + * @magentoApiDataFixture Magento/Customer/_files/customer.php + */ + public function testCreateEmptyCartAndGetCartForCustomer() + { + $this->_markTestAsRestOnly(); + + // get customer ID token + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => '/V1/carts/mine', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST, + 'token' => $token + ] + ]; + + $quoteId = $this->_webApiCall($serviceInfo, ['customerId' => 999]); // customerId 999 will get overridden + $this->assertGreaterThan(0, $quoteId); + $this->createdQuotes[] = $quoteId; + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => '/V1/carts/mine', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + 'token' => $token + ] + ]; + + /** @var \Magento\Quote\Api\Data\CartInterface $cart */ + $cart = $this->_webApiCall($serviceInfo, ['customerId' => 999]); // customerId 999 will get overridden + $this->assertEquals($quoteId, $cart['id']); } /** @@ -298,26 +366,67 @@ class CartManagementTest extends WebapiAbstract $items = $order->getAllItems(); $this->assertCount(1, $items); $this->assertEquals('Simple Product', $items[0]->getName()); - $quote->delete(); } /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_check_payment.php + */ + public function testPlaceOrderForMyCart() + { + $this->_markTestAsRestOnly(); + + // get customer ID token + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => '/V1/carts/mine/order', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + 'token' => $token + ], + ]; + + $orderId = $this->_webApiCall($serviceInfo, []); + + /** @var \Magento\Sales\Model\Order $order */ + $order = $this->objectManager->create('Magento\Sales\Model\Order')->load($orderId); + $items = $order->getAllItems(); + $this->assertCount(1, $items); + $this->assertEquals('Simple Product', $items[0]->getName()); + } + + /** + * Test to get my cart based on customer authentication token or session + * * @magentoApiDataFixture Magento/Sales/_files/quote_with_customer.php */ public function testGetCartForCustomer() { + // get customer ID token + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + $cart = $this->getCart('test01'); $customerId = $cart->getCustomer()->getId(); $serviceInfo = [ 'rest' => [ - 'resourcePath' => '/V1/customer/' . $customerId . '/cart', + 'resourcePath' => '/V1/carts/mine', 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + 'token' => $token ], 'soap' => [ 'service' => 'quoteCartManagementV1', 'serviceVersion' => 'V1', 'operation' => 'quoteCartManagementV1GetCartForCustomer', + 'token' => $token ], ]; diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/CartTotalRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/CartTotalRepositoryTest.php index 257cd01237d947ab653b0069b176da3b83036618..406b755d77dd133e839ab27c4396ef3ef2ddd8de 100644 --- a/dev/tests/api-functional/testsuite/Magento/Quote/Api/CartTotalRepositoryTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/CartTotalRepositoryTest.php @@ -171,4 +171,64 @@ class CartTotalRepositoryTest extends WebapiAbstract ItemTotals::KEY_BASE_ROW_TOTAL_INCL_TAX => $item->getBaseRowTotalInclTax(), ]; } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_shipping_method.php + */ + public function testGetMyTotals() + { + $this->_markTestAsRestOnly(); + + // get customer ID token + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => '/V1/carts/mine/totals', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + 'token' => $token + ], + ]; + + /** @var \Magento\Quote\Model\Quote\Address $shippingAddress */ + $shippingAddress = $quote->getShippingAddress(); + + $data = [ + Totals::KEY_BASE_GRAND_TOTAL => $quote->getBaseGrandTotal(), + Totals::KEY_GRAND_TOTAL => $quote->getGrandTotal(), + Totals::KEY_BASE_SUBTOTAL => $quote->getBaseSubtotal(), + Totals::KEY_SUBTOTAL => $quote->getSubtotal(), + Totals::KEY_BASE_SUBTOTAL_WITH_DISCOUNT => $quote->getBaseSubtotalWithDiscount(), + Totals::KEY_SUBTOTAL_WITH_DISCOUNT => $quote->getSubtotalWithDiscount(), + Totals::KEY_DISCOUNT_AMOUNT => $shippingAddress->getDiscountAmount(), + Totals::KEY_BASE_DISCOUNT_AMOUNT => $shippingAddress->getBaseDiscountAmount(), + Totals::KEY_SHIPPING_AMOUNT => $shippingAddress->getShippingAmount(), + Totals::KEY_BASE_SHIPPING_AMOUNT => $shippingAddress->getBaseShippingAmount(), + Totals::KEY_SHIPPING_DISCOUNT_AMOUNT => $shippingAddress->getShippingDiscountAmount(), + Totals::KEY_BASE_SHIPPING_DISCOUNT_AMOUNT => $shippingAddress->getBaseShippingDiscountAmount(), + Totals::KEY_TAX_AMOUNT => $shippingAddress->getTaxAmount(), + Totals::KEY_BASE_TAX_AMOUNT => $shippingAddress->getBaseTaxAmount(), + Totals::KEY_SHIPPING_TAX_AMOUNT => $shippingAddress->getShippingTaxAmount(), + Totals::KEY_BASE_SHIPPING_TAX_AMOUNT => $shippingAddress->getBaseShippingTaxAmount(), + Totals::KEY_SUBTOTAL_INCL_TAX => $shippingAddress->getSubtotalInclTax(), + Totals::KEY_BASE_SUBTOTAL_INCL_TAX => $shippingAddress->getBaseSubtotalTotalInclTax(), + Totals::KEY_SHIPPING_INCL_TAX => $shippingAddress->getShippingInclTax(), + Totals::KEY_BASE_SHIPPING_INCL_TAX => $shippingAddress->getBaseShippingInclTax(), + Totals::KEY_BASE_CURRENCY_CODE => $quote->getBaseCurrencyCode(), + Totals::KEY_QUOTE_CURRENCY_CODE => $quote->getQuoteCurrencyCode(), + Totals::KEY_ITEMS => [$this->getQuoteItemTotalsData($quote)], + ]; + + $data = $this->formatTotalsData($data); + + $this->assertEquals($data, $this->_webApiCall($serviceInfo)); + } } diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/CouponManagementTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/CouponManagementTest.php index f6f2a4655c0bc4c94258d4a377b142a4b5ac1fbd..e6c8a97b918c488762656b2850a251cc4fec215d 100644 --- a/dev/tests/api-functional/testsuite/Magento/Quote/Api/CouponManagementTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/CouponManagementTest.php @@ -148,4 +148,147 @@ class CouponManagementTest extends WebapiAbstract $this->assertEquals($quoteWithCoupon->getCouponCode(), $couponCode); } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_coupon_saved.php + */ + public function testGetMyCoupon() + { + $this->_markTestAsRestOnly(); + + // get customer ID token + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + $couponCode = $quote->getCouponCode(); + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . 'mine/coupons' , + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + 'token' => $token, + ], + ]; + + $requestData = []; + $this->assertEquals($couponCode, $this->_webApiCall($serviceInfo, $requestData)); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_coupon_saved.php + */ + public function testDeleteMyCoupon() + { + $this->_markTestAsRestOnly(); + + // get customer ID token + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . 'mine/coupons', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_DELETE, + 'token' => $token, + ], + ]; + $requestData = []; + $this->assertTrue($this->_webApiCall($serviceInfo, $requestData)); + $quote->load('test_order_1', 'reserved_order_id'); + $this->assertEquals('', $quote->getCouponCode()); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + * @expectedException \Exception + * @expectedExceptionMessage Coupon code is not valid + */ + public function testSetMyCouponThrowsExceptionIfCouponDoesNotExist() + { + $this->_markTestAsRestOnly(); + + // get customer ID token + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + $couponCode = 'invalid_coupon_code'; + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . 'mine/coupons/' . $couponCode, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + 'token' => $token, + ], + ]; + + $requestData = [ + "couponCode" => $couponCode, + ]; + + $this->_webApiCall($serviceInfo, $requestData); + } + + /** + * @magentoApiDataFixture Magento/Customer/_files/customer.php + * @magentoApiDataFixture Magento/Sales/_files/quote.php + * @magentoApiDataFixture Magento/Checkout/_files/discount_10percent_generalusers.php + */ + public function testSetMyCouponSuccess() + { + $this->_markTestAsRestOnly(); + + // get customer ID token + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test01', 'reserved_order_id'); + $cartId = $quote->getId(); + $salesRule = $this->objectManager->create('Magento\SalesRule\Model\Rule'); + $salesRule->load('Test Coupon for General', 'name'); + $couponCode = $salesRule->getCouponCode(); + + /* Since this isn't a full quote fixture, need to assign it to the right customer */ + $cartManagementService = $this->objectManager->create( + 'Magento\Quote\Api\CartManagementInterface' + ); + $cartManagementService->assignCustomer($cartId, 1, 1); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . 'mine/coupons/' . $couponCode, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + 'token' => $token, + ], + ]; + + $requestData = [ + "couponCode" => $couponCode, + ]; + + $this->assertTrue($this->_webApiCall($serviceInfo, $requestData)); + + $quoteWithCoupon = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quoteWithCoupon->load('test01', 'reserved_order_id'); + + $this->assertEquals($quoteWithCoupon->getCouponCode(), $couponCode); + } } diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestBillingAddressManagementTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestBillingAddressManagementTest.php new file mode 100644 index 0000000000000000000000000000000000000000..97838fe9f26393312c5a24c53f5ad85ab0f061e1 --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestBillingAddressManagementTest.php @@ -0,0 +1,145 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Api; + +use Magento\Quote\Api\Data\AddressInterface; +use Magento\TestFramework\TestCase\WebapiAbstract; + +class GuestBillingAddressManagementTest extends WebapiAbstract +{ + const SERVICE_VERSION = 'V1'; + const SERVICE_NAME = 'quoteGuestBillingAddressManagementV1'; + const RESOURCE_PATH = '/V1/guest-carts/'; + + /** + * @var \Magento\TestFramework\ObjectManager + */ + protected $objectManager; + + protected function setUp() + { + $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); + } + + protected function getQuoteMaskedId($quoteId) + { + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = $this->objectManager->create('Magento\Quote\Model\QuoteIdMaskFactory')->create(); + $quoteIdMask->load($quoteId); + return $quoteIdMask->getMaskedId(); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testGetAddress() + { + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + + /** @var \Magento\Quote\Model\Quote\Address $address */ + $address = $quote->getBillingAddress(); + + $data = [ + AddressInterface::KEY_COUNTRY_ID => $address->getCountryId(), + AddressInterface::KEY_ID => (int)$address->getId(), + AddressInterface::KEY_CUSTOMER_ID => $address->getCustomerId(), + AddressInterface::KEY_REGION => $address->getRegion(), + AddressInterface::KEY_REGION_ID => $address->getRegionId(), + AddressInterface::KEY_REGION_CODE => $address->getRegionCode(), + AddressInterface::KEY_STREET => $address->getStreet(), + AddressInterface::KEY_COMPANY => $address->getCompany(), + AddressInterface::KEY_TELEPHONE => $address->getTelephone(), + AddressInterface::KEY_POSTCODE => $address->getPostcode(), + AddressInterface::KEY_CITY => $address->getCity(), + AddressInterface::KEY_FIRSTNAME => $address->getFirstname(), + AddressInterface::KEY_LASTNAME => $address->getLastname(), + AddressInterface::KEY_EMAIL => $address->getEmail() + ]; + + $cartId = $this->getQuoteMaskedId($quote->getId()); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/billing-address', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Get', + ], + ]; + + $requestData = ["cartId" => $cartId]; + $this->assertEquals($data, $this->_webApiCall($serviceInfo, $requestData)); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testSetAddress() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + + $cartId = $this->getQuoteMaskedId($quote->getId()); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/billing-address', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Assign', + ], + ]; + + $addressData = [ + 'firstname' => 'John', + 'lastname' => 'Smith', + 'email' => 'cat@dog.com', + 'company' => 'eBay Inc', + 'street' => ['Typical Street', 'Tiny House 18'], + 'city' => 'Big City', + 'region_id' => 12, + 'region' => 'California', + 'region_code' => 'CA', + 'postcode' => '0985432', + 'country_id' => 'US', + 'telephone' => '88776655', + 'fax' => '44332255', + ]; + $requestData = [ + "cartId" => $cartId, + 'address' => $addressData, + ]; + + $addressId = $this->_webApiCall($serviceInfo, $requestData); + + //reset $quote to reload data + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + $address = $quote->getBillingAddress(); + $address->getRegionCode(); + $savedData = $address->getData(); + $this->assertEquals($addressId, $savedData['address_id']); + //custom checks for street, region and address_type + foreach ($addressData['street'] as $streetLine) { + $this->assertContains($streetLine, $quote->getBillingAddress()->getStreet()); + } + unset($addressData['street']); + $this->assertEquals('billing', $savedData['address_type']); + //check the rest of fields + foreach ($addressData as $key => $value) { + $this->assertEquals($value, $savedData[$key]); + } + } +} diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCartItemRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCartItemRepositoryTest.php new file mode 100644 index 0000000000000000000000000000000000000000..7287cd302008205adfafc6b6b96a7a65064e28c4 --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCartItemRepositoryTest.php @@ -0,0 +1,226 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Api; + +use Magento\TestFramework\TestCase\WebapiAbstract; + +class GuestCartItemRepositoryTest extends WebapiAbstract +{ + const SERVICE_VERSION = 'V1'; + const SERVICE_NAME = 'quoteGuestCartItemRepositoryV1'; + const RESOURCE_PATH = '/V1/guest-carts/'; + + /** + * @var \Magento\TestFramework\ObjectManager + */ + protected $objectManager; + + protected function setUp() + { + $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_items_saved.php + */ + public function testGetList() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_item_with_items', 'reserved_order_id'); + $cartId = $quote->getId(); + + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $output = []; + /** @var \Magento\Quote\Api\Data\CartItemInterface $item */ + foreach ($quote->getAllItems() as $item) { + //Set masked Cart ID + $item->setQuoteId($cartId); + $data = [ + 'item_id' => $item->getItemId(), + 'sku' => $item->getSku(), + 'name' => $item->getName(), + 'price' => $item->getPrice(), + 'qty' => $item->getQty(), + 'product_type' => $item->getProductType(), + 'quote_id' => $item->getQuoteId() + ]; + + $output[] = $data; + } + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/items', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'GetList', + ], + ]; + + $requestData = ["cartId" => $cartId]; + $this->assertEquals($output, $this->_webApiCall($serviceInfo, $requestData)); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + * @magentoApiDataFixture Magento/Catalog/_files/product_simple.php + */ + public function testAddItem() + { + /** @var \Magento\Catalog\Model\Product $product */ + $product = $this->objectManager->create('Magento\Catalog\Model\Product')->load(2); + $productSku = $product->getSku(); + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + $cartId = $quote->getId(); + + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . 'items', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Save', + ], + ]; + + $requestData = [ + "cartItem" => [ + "sku" => $productSku, + "qty" => 7, + "quote_id" => $cartId, + ], + ]; + $this->_webApiCall($serviceInfo, $requestData); + $this->assertTrue($quote->hasProductId(2)); + $this->assertEquals(7, $quote->getItemByProduct($product)->getQty()); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_items_saved.php + */ + public function testRemoveItem() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_item_with_items', 'reserved_order_id'); + $cartId = $quote->getId(); + + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $product = $this->objectManager->create('Magento\Catalog\Model\Product'); + $productId = $product->getIdBySku('simple_one'); + $product->load($productId); + $itemId = $quote->getItemByProduct($product)->getId(); + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/items/' . $itemId, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_DELETE, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'DeleteById', + ], + ]; + + $requestData = [ + "cartId" => $cartId, + "itemId" => $itemId, + ]; + $this->assertTrue($this->_webApiCall($serviceInfo, $requestData)); + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_item_with_items', 'reserved_order_id'); + $this->assertFalse($quote->hasProductId($productId)); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_items_saved.php + */ + public function testUpdateItem() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_item_with_items', 'reserved_order_id'); + $cartId = $quote->getId(); + + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $product = $this->objectManager->create('Magento\Catalog\Model\Product'); + $productId = $product->getIdBySku('simple_one'); + $product->load($productId); + $itemId = $quote->getItemByProduct($product)->getId(); + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . 'items/' . $itemId, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Save', + ], + ]; + + if (TESTS_WEB_API_ADAPTER == self::ADAPTER_SOAP) { + $requestData = [ + "cartItem" => [ + "qty" => 5, + "quote_id" => $cartId, + "itemId" => $itemId, + ], + ]; + } else { + $requestData = [ + "cartItem" => [ + "qty" => 5, + "quote_id" => $cartId, + ], + ]; + } + $this->_webApiCall($serviceInfo, $requestData); + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_item_with_items', 'reserved_order_id'); + $this->assertTrue($quote->hasProductId(1)); + $item = $quote->getItemByProduct($product); + $this->assertEquals(5, $item->getQty()); + $this->assertEquals($itemId, $item->getItemId()); + } +} diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCartManagementTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCartManagementTest.php new file mode 100644 index 0000000000000000000000000000000000000000..9058a930b196d518058f1db9693fe4a5091a0b45 --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCartManagementTest.php @@ -0,0 +1,345 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Api; + +use Magento\TestFramework\TestCase\WebapiAbstract; + +class GuestCartManagementTest extends WebapiAbstract +{ + const SERVICE_VERSION = 'V1'; + const SERVICE_NAME = 'quoteGuestCartManagementV1'; + const RESOURCE_PATH = '/V1/guest-carts/'; + + protected $createdQuotes = []; + + /** + * @var \Magento\TestFramework\ObjectManager + */ + protected $objectManager; + + protected function setUp() + { + $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); + } + + public function testCreate() + { + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'CreateEmptyCart', + ], + ]; + + $requestData = ['storeId' => 1]; + $quoteId = $this->_webApiCall($serviceInfo, $requestData); + $this->assertTrue(strlen($quoteId) >= 32); + $this->createdQuotes[] = $quoteId; + } + + public function tearDown() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + foreach ($this->createdQuotes as $quoteId) { + $quote->load($quoteId); + $quote->delete(); + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = $this->objectManager->create('Magento\Quote\Model\QuoteIdMask'); + $quoteIdMask->delete($quote->getId()); + } + } + + /** + * @magentoApiDataFixture Magento/Sales/_files/quote.php + * @magentoApiDataFixture Magento/Customer/_files/customer.php + */ + public function testAssignCustomer() + { + /** @var $quote \Magento\Quote\Model\Quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote')->load('test01', 'reserved_order_id'); + $cartId = $quote->getId(); + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + /** @var $repository \Magento\Customer\Api\CustomerRepositoryInterface */ + $repository = $this->objectManager->create('Magento\Customer\Api\CustomerRepositoryInterface'); + /** @var $customer \Magento\Customer\Api\Data\CustomerInterface */ + $customer = $repository->getById(1); + $customerId = $customer->getId(); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => '/V1/guest-carts/' . $cartId, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => 'V1', + 'operation' => self::SERVICE_NAME . 'AssignCustomer', + ], + ]; + + $requestData = [ + 'cartId' => $cartId, + 'customerId' => $customerId, + 'storeId' => 1, + ]; + // Cart must be anonymous (see fixture) + $this->assertEmpty($quote->getCustomerId()); + + $this->assertTrue($this->_webApiCall($serviceInfo, $requestData)); + // Reload target quote + $quote = $this->objectManager->create('Magento\Quote\Model\Quote')->load('test01', 'reserved_order_id'); + $this->assertEquals(0, $quote->getCustomerIsGuest()); + $this->assertEquals($customer->getId(), $quote->getCustomerId()); + $this->assertEquals($customer->getFirstname(), $quote->getCustomerFirstname()); + $this->assertEquals($customer->getLastname(), $quote->getCustomerLastname()); + } + + /** + * @magentoApiDataFixture Magento/Sales/_files/quote.php + * @expectedException \Exception + */ + public function testAssignCustomerThrowsExceptionIfThereIsNoCustomerWithGivenId() + { + /** @var $quote \Magento\Quote\Model\Quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote')->load('test01', 'reserved_order_id'); + $cartId = $quote->getId(); + $customerId = 9999; + $serviceInfo = [ + 'soap' => [ + 'serviceVersion' => 'V1', + 'service' => self::SERVICE_NAME, + 'operation' => self::SERVICE_NAME . 'AssignCustomer', + ], + 'rest' => [ + 'resourcePath' => '/V1/guest-carts/' . $cartId, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + ], + ]; + $requestData = [ + 'cartId' => $cartId, + 'customerId' => $customerId, + 'storeId' => 1, + ]; + + $this->_webApiCall($serviceInfo, $requestData); + } + + /** + * @magentoApiDataFixture Magento/Customer/_files/customer.php + * @expectedException \Exception + */ + public function testAssignCustomerThrowsExceptionIfThereIsNoCartWithGivenId() + { + $cartId = 9999; + $customerId = 1; + $serviceInfo = [ + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => 'V1', + 'operation' => self::SERVICE_NAME . 'AssignCustomer', + ], + 'rest' => [ + 'resourcePath' => '/V1/guest-carts/' . $cartId, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + ], + ]; + $requestData = [ + 'cartId' => $cartId, + 'customerId' => $customerId, + 'storeId' => 1, + ]; + + $this->_webApiCall($serviceInfo, $requestData); + } + + /** + * @magentoApiDataFixture Magento/Sales/_files/quote_with_customer.php + * @expectedException \Exception + * @expectedExceptionMessage Cannot assign customer to the given cart. The cart is not anonymous. + */ + public function testAssignCustomerThrowsExceptionIfTargetCartIsNotAnonymous() + { + /** @var $customer \Magento\Customer\Model\Customer */ + $customer = $this->objectManager->create('Magento\Customer\Model\Customer')->load(1); + $customerId = $customer->getId(); + /** @var $quote \Magento\Quote\Model\Quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote')->load('test01', 'reserved_order_id'); + $cartId = $quote->getId(); + + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $serviceInfo = [ + 'rest' => [ + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + 'resourcePath' => '/V1/guest-carts/' . $cartId, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => 'V1', + 'operation' => self::SERVICE_NAME . 'AssignCustomer', + ], + ]; + + $requestData = [ + 'cartId' => $cartId, + 'customerId' => $customerId, + 'storeId' => 1, + ]; + $this->_webApiCall($serviceInfo, $requestData); + } + + /** + * @magentoApiDataFixture Magento/Sales/_files/quote.php + * @magentoApiDataFixture Magento/Customer/_files/customer_non_default_website_id.php + * @expectedException \Exception + * @expectedExceptionMessage Cannot assign customer to the given cart. The cart belongs to different store. + */ + public function testAssignCustomerThrowsExceptionIfCartIsAssignedToDifferentStore() + { + $repository = $this->objectManager->create('Magento\Customer\Api\CustomerRepositoryInterface'); + /** @var $customer \Magento\Customer\Api\Data\CustomerInterface */ + $customer = $repository->getById(1); + /** @var $quote \Magento\Quote\Model\Quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote')->load('test01', 'reserved_order_id'); + + $customerId = $customer->getId(); + $cartId = $quote->getId(); + + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $serviceInfo = [ + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => 'V1', + 'operation' => self::SERVICE_NAME . 'AssignCustomer', + ], + 'rest' => [ + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + 'resourcePath' => '/V1/guest-carts/' . $cartId, + ], + ]; + + $requestData = [ + 'cartId' => $cartId, + 'customerId' => $customerId, + 'storeId' => 1, + ]; + $this->_webApiCall($serviceInfo, $requestData); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + * @magentoApiDataFixture Magento/Sales/_files/quote.php + * @expectedException \Exception + * @expectedExceptionMessage Cannot assign customer to the given cart. Customer already has active cart. + */ + public function testAssignCustomerThrowsExceptionIfCustomerAlreadyHasActiveCart() + { + /** @var $customer \Magento\Customer\Model\Customer */ + $customer = $this->objectManager->create('Magento\Customer\Model\Customer')->load(1); + // Customer has a quote with reserved order ID test_order_1 (see fixture) + /** @var $customerQuote \Magento\Quote\Model\Quote */ + $customerQuote = $this->objectManager->create('Magento\Quote\Model\Quote') + ->load('test_order_1', 'reserved_order_id'); + $customerQuote->setIsActive(1)->save(); + /** @var $quote \Magento\Quote\Model\Quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote')->load('test01', 'reserved_order_id'); + + $cartId = $quote->getId(); + + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $customerId = $customer->getId(); + + $serviceInfo = [ + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'operation' => self::SERVICE_NAME . 'AssignCustomer', + 'serviceVersion' => 'V1', + ], + 'rest' => [ + 'resourcePath' => '/V1/guest-carts/' . $cartId, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + ], + ]; + + $requestData = [ + 'cartId' => $cartId, + 'customerId' => $customerId, + 'storeId' => 1, + ]; + $this->_webApiCall($serviceInfo, $requestData); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_check_payment.php + */ + public function testPlaceOrder() + { + /** @var $quote \Magento\Quote\Model\Quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote')->load('test_order_1', 'reserved_order_id'); + $cartId = $quote->getId(); + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $serviceInfo = [ + 'soap' => [ + 'service' => 'quoteGuestCartManagementV1', + 'operation' => 'quoteGuestCartManagementV1PlaceOrder', + 'serviceVersion' => 'V1', + ], + 'rest' => [ + 'resourcePath' => '/V1/guest-carts/' . $cartId . '/order', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + ], + ]; + + $orderId = $this->_webApiCall($serviceInfo, ['cartId' => $cartId]); + + /** @var \Magento\Sales\Model\Order $order */ + $order = $this->objectManager->create('Magento\Sales\Model\Order')->load($orderId); + $items = $order->getAllItems(); + $this->assertCount(1, $items); + $this->assertEquals('Simple Product', $items[0]->getName()); + } +} diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCartRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCartRepositoryTest.php new file mode 100644 index 0000000000000000000000000000000000000000..b3c8e3f024e70c12332a800999e68298bad7473c --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCartRepositoryTest.php @@ -0,0 +1,129 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Api; + +use Magento\TestFramework\ObjectManager; +use Magento\TestFramework\TestCase\WebapiAbstract; + +class GuestCartRepositoryTest extends WebapiAbstract +{ + /** + * @var ObjectManager + */ + private $objectManager; + + protected function setUp() + { + $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); + } + + protected function tearDown() + { + try { + $cart = $this->getCart('test01'); + $cart->delete(); + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = $this->objectManager->create('Magento\Quote\Model\QuoteIdMask'); + $quoteIdMask->delete($cart->getId()); + } catch (\InvalidArgumentException $e) { + // Do nothing if cart fixture was not used + } + parent::tearDown(); + } + + /** + * Retrieve quote by given reserved order ID + * + * @param string $reservedOrderId + * @return \Magento\Quote\Model\Quote + * @throws \InvalidArgumentException + */ + protected function getCart($reservedOrderId) + { + /** @var $cart \Magento\Quote\Model\Quote */ + $cart = $this->objectManager->get('Magento\Quote\Model\Quote'); + $cart->load($reservedOrderId, 'reserved_order_id'); + if (!$cart->getId()) { + throw new \InvalidArgumentException('There is no quote with provided reserved order ID.'); + } + return $cart; + } + + /** + * @magentoApiDataFixture Magento/Sales/_files/quote.php + */ + public function testGetCart() + { + $cart = $this->getCart('test01'); + $cartId = $cart->getId(); + + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => '/V1/guest-carts/' . $quoteIdMask->getMaskedId(), + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + 'soap' => [ + 'service' => 'quoteGuestCartRepositoryV1', + 'serviceVersion' => 'V1', + 'operation' => 'quoteGuestCartRepositoryV1Get', + ], + ]; + + $requestData = ['cartId' => $quoteIdMask->getMaskedId()]; + $cartData = $this->_webApiCall($serviceInfo, $requestData); + $this->assertEquals($cart->getId(), $cartData['id']); + $this->assertEquals($cart->getCreatedAt(), $cartData['created_at']); + $this->assertEquals($cart->getUpdatedAt(), $cartData['updated_at']); + $this->assertEquals($cart->getIsActive(), $cartData['is_active']); + $this->assertEquals($cart->getIsVirtual(), $cartData['is_virtual']); + $this->assertEquals($cart->getOrigOrderId(), $cartData['orig_order_id']); + $this->assertEquals($cart->getItemsCount(), $cartData['items_count']); + $this->assertEquals($cart->getItemsQty(), $cartData['items_qty']); + //following checks will be uncommented when all cart related services are ready + $this->assertContains('customer', $cartData); + $this->assertEquals(true, $cartData['customer_is_guest']); + $this->assertContains('currency', $cartData); + $this->assertEquals($cart->getGlobalCurrencyCode(), $cartData['currency']['global_currency_code']); + $this->assertEquals($cart->getBaseCurrencyCode(), $cartData['currency']['base_currency_code']); + $this->assertEquals($cart->getQuoteCurrencyCode(), $cartData['currency']['quote_currency_code']); + $this->assertEquals($cart->getStoreCurrencyCode(), $cartData['currency']['store_currency_code']); + $this->assertEquals($cart->getBaseToGlobalRate(), $cartData['currency']['base_to_global_rate']); + $this->assertEquals($cart->getBaseToQuoteRate(), $cartData['currency']['base_to_quote_rate']); + $this->assertEquals($cart->getStoreToBaseRate(), $cartData['currency']['store_to_base_rate']); + $this->assertEquals($cart->getStoreToQuoteRate(), $cartData['currency']['store_to_quote_rate']); + } + + /** + * @expectedException \Exception + * @expectedExceptionMessage No such entity with + */ + public function testGetCartThrowsExceptionIfThereIsNoCartWithProvidedId() + { + $cartId = 9999; + + $serviceInfo = [ + 'soap' => [ + 'service' => 'quoteGuestCartRepositoryV1', + 'serviceVersion' => 'V1', + 'operation' => 'quoteGuestCartRepositoryV1Get', + ], + 'rest' => [ + 'resourcePath' => '/V1/guest-carts/' . $cartId, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + ]; + + $requestData = ['cartId' => $cartId]; + $this->_webApiCall($serviceInfo, $requestData); + } +} diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCartTotalRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCartTotalRepositoryTest.php new file mode 100644 index 0000000000000000000000000000000000000000..87cbbbdaaf40ec9f52f36a41bc5945c6fb69ddbe --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCartTotalRepositoryTest.php @@ -0,0 +1,182 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Api; + +use Magento\Quote\Model\Cart\Totals; +use Magento\Quote\Model\Cart\Totals\Item as ItemTotals; +use Magento\Framework\Api\FilterBuilder; +use Magento\Framework\Api\SearchCriteriaBuilder; +use Magento\TestFramework\ObjectManager; +use Magento\TestFramework\TestCase\WebapiAbstract; + +class GuestCartTotalRepositoryTest extends WebapiAbstract +{ + /** + * @var ObjectManager + */ + private $objectManager; + + /** + * @var SearchCriteriaBuilder + */ + private $searchBuilder; + + /** + * @var FilterBuilder + */ + private $filterBuilder; + + protected function setUp() + { + $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); + $this->searchBuilder = $this->objectManager->create( + 'Magento\Framework\Api\SearchCriteriaBuilder' + ); + $this->filterBuilder = $this->objectManager->create( + 'Magento\Framework\Api\FilterBuilder' + ); + } + + protected function getQuoteMaskedId($quoteId) + { + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = $this->objectManager->create('Magento\Quote\Model\QuoteIdMaskFactory')->create(); + $quoteIdMask->load($quoteId); + return $quoteIdMask->getMaskedId(); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_shipping_method.php + */ + public function testGetTotals() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + $cartId = $this->getQuoteMaskedId($quote->getId()); + + /** @var \Magento\Quote\Model\Quote\Address $shippingAddress */ + $shippingAddress = $quote->getShippingAddress(); + + $data = [ + Totals::KEY_BASE_GRAND_TOTAL => $quote->getBaseGrandTotal(), + Totals::KEY_GRAND_TOTAL => $quote->getGrandTotal(), + Totals::KEY_BASE_SUBTOTAL => $quote->getBaseSubtotal(), + Totals::KEY_SUBTOTAL => $quote->getSubtotal(), + Totals::KEY_BASE_SUBTOTAL_WITH_DISCOUNT => $quote->getBaseSubtotalWithDiscount(), + Totals::KEY_SUBTOTAL_WITH_DISCOUNT => $quote->getSubtotalWithDiscount(), + Totals::KEY_DISCOUNT_AMOUNT => $shippingAddress->getDiscountAmount(), + Totals::KEY_BASE_DISCOUNT_AMOUNT => $shippingAddress->getBaseDiscountAmount(), + Totals::KEY_SHIPPING_AMOUNT => $shippingAddress->getShippingAmount(), + Totals::KEY_BASE_SHIPPING_AMOUNT => $shippingAddress->getBaseShippingAmount(), + Totals::KEY_SHIPPING_DISCOUNT_AMOUNT => $shippingAddress->getShippingDiscountAmount(), + Totals::KEY_BASE_SHIPPING_DISCOUNT_AMOUNT => $shippingAddress->getBaseShippingDiscountAmount(), + Totals::KEY_TAX_AMOUNT => $shippingAddress->getTaxAmount(), + Totals::KEY_BASE_TAX_AMOUNT => $shippingAddress->getBaseTaxAmount(), + Totals::KEY_SHIPPING_TAX_AMOUNT => $shippingAddress->getShippingTaxAmount(), + Totals::KEY_BASE_SHIPPING_TAX_AMOUNT => $shippingAddress->getBaseShippingTaxAmount(), + Totals::KEY_SUBTOTAL_INCL_TAX => $shippingAddress->getSubtotalInclTax(), + Totals::KEY_BASE_SUBTOTAL_INCL_TAX => $shippingAddress->getBaseSubtotalTotalInclTax(), + Totals::KEY_SHIPPING_INCL_TAX => $shippingAddress->getShippingInclTax(), + Totals::KEY_BASE_SHIPPING_INCL_TAX => $shippingAddress->getBaseShippingInclTax(), + Totals::KEY_BASE_CURRENCY_CODE => $quote->getBaseCurrencyCode(), + Totals::KEY_QUOTE_CURRENCY_CODE => $quote->getQuoteCurrencyCode(), + Totals::KEY_ITEMS => [$this->getQuoteItemTotalsData($quote)], + ]; + + $requestData = ['cartId' => $cartId]; + + $data = $this->formatTotalsData($data); + + $this->assertEquals($data, $this->_webApiCall($this->getServiceInfoForTotalsService($cartId), $requestData)); + } + + /** + * @expectedException \Exception + * @expectedExceptionMessage No such entity + */ + public function testGetTotalsWithAbsentQuote() + { + $cartId = 'unknownCart'; + $requestData = ['cartId' => $cartId]; + $this->_webApiCall($this->getServiceInfoForTotalsService($cartId), $requestData); + } + + /** + * Get service info for totals service + * + * @param string $cartId + * @return array + */ + protected function getServiceInfoForTotalsService($cartId) + { + return [ + 'soap' => [ + 'service' => 'quoteGuestCartTotalRepositoryV1', + 'serviceVersion' => 'V1', + 'operation' => 'quoteGuestCartTotalRepositoryV1get', + ], + 'rest' => [ + 'resourcePath' => '/V1/guest-carts/' . $cartId . '/totals', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + ]; + } + + /** + * Adjust response details for SOAP protocol + * + * @param array $data + * @return array + */ + protected function formatTotalsData($data) + { + foreach ($data as $key => $field) { + if (is_numeric($field)) { + $data[$key] = round($field, 1); + if ($data[$key] === null) { + $data[$key] = 0.0; + } + } + } + + unset($data[Totals::KEY_BASE_SUBTOTAL_INCL_TAX]); + + return $data; + } + + /** + * Fetch quote item totals data from quote + * + * @param \Magento\Quote\Model\Quote $quote + * @return array + */ + protected function getQuoteItemTotalsData(\Magento\Quote\Model\Quote $quote) + { + $items = $quote->getAllItems(); + $item = array_shift($items); + + return [ + ItemTotals::KEY_PRICE => $item->getPrice(), + ItemTotals::KEY_BASE_PRICE => $item->getBasePrice(), + ItemTotals::KEY_QTY => $item->getQty(), + ItemTotals::KEY_ROW_TOTAL => $item->getRowTotal(), + ItemTotals::KEY_BASE_ROW_TOTAL => $item->getBaseRowTotal(), + ItemTotals::KEY_ROW_TOTAL_WITH_DISCOUNT => $item->getRowTotalWithDiscount(), + ItemTotals::KEY_TAX_AMOUNT => $item->getTaxAmount(), + ItemTotals::KEY_BASE_TAX_AMOUNT => $item->getBaseTaxAmount(), + ItemTotals::KEY_TAX_PERCENT => $item->getTaxPercent(), + ItemTotals::KEY_DISCOUNT_AMOUNT => $item->getDiscountAmount(), + ItemTotals::KEY_BASE_DISCOUNT_AMOUNT => $item->getBaseDiscountAmount(), + ItemTotals::KEY_DISCOUNT_PERCENT => $item->getDiscountPercent(), + ItemTotals::KEY_PRICE_INCL_TAX => $item->getPriceInclTax(), + ItemTotals::KEY_BASE_PRICE_INCL_TAX => $item->getBasePriceInclTax(), + ItemTotals::KEY_ROW_TOTAL_INCL_TAX => $item->getRowTotalInclTax(), + ItemTotals::KEY_BASE_ROW_TOTAL_INCL_TAX => $item->getBaseRowTotalInclTax(), + ]; + } +} diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCouponManagementTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCouponManagementTest.php new file mode 100644 index 0000000000000000000000000000000000000000..296d5d60767fb9f07477c7651c8a583a4d15939e --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCouponManagementTest.php @@ -0,0 +1,175 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Api; + +use Magento\TestFramework\TestCase\WebapiAbstract; + +class GuestCouponManagementTest extends WebapiAbstract +{ + const SERVICE_VERSION = 'V1'; + const SERVICE_NAME = 'quoteGuestCouponManagementV1'; + const RESOURCE_PATH = '/V1/guest-carts/'; + + /** + * @var \Magento\TestFramework\ObjectManager + */ + protected $objectManager; + + protected function setUp() + { + $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); + } + + public function tearDown() + { + $createdQuotes = ['test_order_1', 'test01']; + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + foreach ($createdQuotes as $quoteId) { + $quote->load($quoteId, 'reserved_order_id'); + $quote->delete(); + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = $this->objectManager->create('Magento\Quote\Model\QuoteIdMask'); + $quoteIdMask->delete($quote->getId()); + } + } + + protected function getQuoteMaskedId($quoteId) + { + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = $this->objectManager->create('Magento\Quote\Model\QuoteIdMaskFactory')->create(); + $quoteIdMask->load($quoteId); + return $quoteIdMask->getMaskedId(); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_coupon_saved.php + */ + public function testGet() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + + $cartId = $this->getQuoteMaskedId($quote->getId()); + + $couponCode = $quote->getCouponCode(); + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/coupons/' , + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Get', + ], + ]; + + $requestData = ["cartId" => $cartId]; + $this->assertEquals($couponCode, $this->_webApiCall($serviceInfo, $requestData)); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_coupon_saved.php + */ + public function testDelete() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + $cartId = $this->getQuoteMaskedId($quote->getId()); + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/coupons', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_DELETE, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Remove', + ], + ]; + $requestData = ["cartId" => $cartId]; + $this->assertTrue($this->_webApiCall($serviceInfo, $requestData)); + $quote->load('test_order_1', 'reserved_order_id'); + $this->assertEquals('', $quote->getCouponCode()); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + * @expectedException \Exception + * @expectedExceptionMessage Coupon code is not valid + */ + public function testSetCouponThrowsExceptionIfCouponDoesNotExist() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + $cartId = $this->getQuoteMaskedId($quote->getId()); + + $couponCode = 'invalid_coupon_code'; + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/coupons/' . $couponCode, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Set', + ], + ]; + + $requestData = [ + "cartId" => $cartId, + "couponCode" => $couponCode, + ]; + + $this->_webApiCall($serviceInfo, $requestData); + } + + /** + * @magentoApiDataFixture Magento/Sales/_files/quote.php + * @magentoApiDataFixture Magento/Checkout/_files/discount_10percent.php + */ + public function testSetCouponSuccess() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test01', 'reserved_order_id'); + $cartId = $this->getQuoteMaskedId($quote->getId()); + $salesRule = $this->objectManager->create('Magento\SalesRule\Model\Rule'); + $salesRule->load('Test Coupon', 'name'); + $couponCode = $salesRule->getCouponCode(); + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/coupons/' . $couponCode, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Set', + ], + ]; + + $requestData = [ + "cartId" => $cartId, + "couponCode" => $couponCode, + ]; + + $this->assertTrue($this->_webApiCall($serviceInfo, $requestData)); + + $quoteWithCoupon = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quoteWithCoupon->load('test01', 'reserved_order_id'); + + $this->assertEquals($quoteWithCoupon->getCouponCode(), $couponCode); + } +} diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestPaymentMethodManagementTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestPaymentMethodManagementTest.php new file mode 100644 index 0000000000000000000000000000000000000000..40579922f1896f761ef85e891a1e5f59daae39dd --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestPaymentMethodManagementTest.php @@ -0,0 +1,333 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Api; + +class GuestPaymentMethodManagementTest extends \Magento\TestFramework\TestCase\WebapiAbstract +{ + const SERVICE_VERSION = 'V1'; + const SERVICE_NAME = 'quoteGuestPaymentMethodManagementV1'; + const RESOURCE_PATH = '/V1/guest-carts/'; + + /** + * @var \Magento\TestFramework\ObjectManager + */ + protected $objectManager; + + protected function setUp() + { + $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); + } + + protected function tearDown() + { + $this->deleteCart('test_order_1'); + $this->deleteCart('test_order_1_with_payment'); + $this->deleteCart('test_order_with_virtual_product'); + $this->deleteCart('test_order_with_virtual_product_without_address'); + parent::tearDown(); + } + + /** + * Delete quote by given reserved order ID + * + * @param string $reservedOrderId + * @return void + */ + protected function deleteCart($reservedOrderId) + { + try { + /** @var $cart \Magento\Quote\Model\Quote */ + $cart = $this->objectManager->get('Magento\Quote\Model\Quote'); + $cart->load($reservedOrderId, 'reserved_order_id'); + if (!$cart->getId()) { + throw new \InvalidArgumentException('There is no quote with provided reserved order ID.'); + } + $cart->delete(); + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = $this->objectManager->create('Magento\Quote\Model\QuoteIdMask'); + $quoteIdMask->delete($cart->getId()); + } catch (\InvalidArgumentException $e) { + // Do nothing if cart fixture was not used + } + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_payment_saved.php + */ + public function testReSetPayment() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('\Magento\Quote\Model\Quote'); + $quote->load('test_order_1_with_payment', 'reserved_order_id'); + $cartId = $this->getMaskedCartId($quote->getId()); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-method', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'set', + ], + ]; + + $requestData = [ + "cartId" => $cartId, + "method" => [ + 'method' => 'checkmo', + 'po_number' => null, + 'cc_owner' => 'John', + 'cc_type' => null, + 'cc_exp_year' => null, + 'cc_exp_month' => null, + ], + ]; + + $this->assertNotNull($this->_webApiCall($serviceInfo, $requestData)); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_virtual_product_and_address.php + */ + public function testSetPaymentWithVirtualProduct() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('\Magento\Quote\Model\Quote'); + $quote->load('test_order_with_virtual_product', 'reserved_order_id'); + $cartId = $this->getMaskedCartId($quote->getId()); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-method', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'set', + ], + ]; + + $requestData = [ + "cartId" => $cartId, + "method" => [ + 'method' => 'checkmo', + 'po_number' => '200', + 'cc_owner' => 'tester', + 'cc_type' => 'test', + 'cc_exp_year' => '2014', + 'cc_exp_month' => '1', + ], + ]; + $this->assertNotNull($this->_webApiCall($serviceInfo, $requestData)); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testSetPaymentWithSimpleProduct() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('\Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + $cartId = $this->getMaskedCartId($quote->getId()); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-method', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'set', + ], + ]; + + $requestData = [ + "cartId" => $cartId, + "method" => [ + 'method' => 'checkmo', + 'po_number' => '200', + 'cc_owner' => 'tester', + 'cc_type' => 'test', + 'cc_exp_year' => '2014', + 'cc_exp_month' => '1', + ], + ]; + + $this->assertNotNull($this->_webApiCall($serviceInfo, $requestData)); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_virtual_product_saved.php + * @expectedException \Exception + * @expectedExceptionMessage Billing address is not set + */ + public function testSetPaymentWithVirtualProductWithoutAddress() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('\Magento\Quote\Model\Quote'); + $quote->load('test_order_with_virtual_product_without_address', 'reserved_order_id'); + $cartId = $this->getMaskedCartId($quote->getId()); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-method', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'set', + ], + ]; + + $requestData = [ + "cartId" => $cartId, + "method" => [ + 'method' => 'checkmo', + 'po_number' => '200', + 'cc_owner' => 'tester', + 'cc_type' => 'test', + 'cc_exp_year' => '2014', + 'cc_exp_month' => '1', + ], + ]; + $this->assertNotNull($this->_webApiCall($serviceInfo, $requestData)); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_simple_product_saved.php + * @expectedException \Exception + * @expectedExceptionMessage Shipping address is not set + */ + public function testSetPaymentWithSimpleProductWithoutAddress() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('\Magento\Quote\Model\Quote'); + $quote->load('test_order_with_simple_product_without_address', 'reserved_order_id'); + $cartId = $this->getMaskedCartId($quote->getId()); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-method', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'set', + ], + ]; + + $requestData = [ + "cartId" => $cartId, + "method" => [ + 'method' => 'checkmo', + 'po_number' => '200', + 'cc_owner' => 'tester', + 'cc_type' => 'test', + 'cc_exp_year' => '2014', + 'cc_exp_month' => '1', + ], + ]; + $this->assertNotNull($this->_webApiCall($serviceInfo, $requestData)); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testGetList() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + $cartId = $this->getMaskedCartId($quote->getId()); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/payment-methods', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'getList', + ], + ]; + + $requestData = ["cartId" => $cartId]; + $requestResponse = $this->_webApiCall($serviceInfo, $requestData); + + $expectedResponse = [ + 'code' => 'checkmo', + 'title' => 'Check / Money order', + ]; + + $this->assertGreaterThan(0, count($requestResponse)); + $this->assertContains($expectedResponse, $requestResponse); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_payment_saved.php + */ + public function testGet() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1_with_payment', 'reserved_order_id'); + $cartId = $this->getMaskedCartId($quote->getId()); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-method', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'get', + ], + ]; + + $requestData = ["cartId" => $cartId]; + $requestResponse = $this->_webApiCall($serviceInfo, $requestData); + + foreach ($this->getPaymentMethodFieldsForAssert() as $field) { + $this->assertArrayHasKey($field, $requestResponse); + $this->assertNotNull($requestResponse[$field]); + } + + $this->assertEquals('checkmo', $requestResponse['method']); + } + + /** + * @return array + */ + protected function getPaymentMethodFieldsForAssert() + { + return ['method', 'po_number', 'cc_owner', 'cc_type', 'cc_exp_year', 'cc_exp_month', 'additional_data']; + } + + /** + * Retrieve masked cart ID for guest cart. + * + * @param string $cartId + * @return string + */ + protected function getMaskedCartId($cartId) + { + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + return $quoteIdMask->getMaskedId(); + } +} diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestShippingAddressManagementTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestShippingAddressManagementTest.php new file mode 100644 index 0000000000000000000000000000000000000000..a1c22bf0ee869fda4e3fec3d588101ed748dfb36 --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestShippingAddressManagementTest.php @@ -0,0 +1,235 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Quote\Api; + +use Magento\Quote\Api\Data\AddressInterface; +use Magento\TestFramework\TestCase\WebapiAbstract; + +class GuestShippingAddressManagementTest extends WebapiAbstract +{ + const SERVICE_VERSION = 'V1'; + const SERVICE_NAME = 'quoteGuestShippingAddressManagementV1'; + const RESOURCE_PATH = '/V1/guest-carts/'; + + /** + * @var \Magento\TestFramework\ObjectManager + */ + protected $objectManager; + + protected function setUp() + { + $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); + } + + public function tearDown() + { + $createdQuotes = ['test_order_1', 'test_order_with_virtual_product']; + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + foreach ($createdQuotes as $quoteId) { + $quote->load($quoteId, 'reserved_order_id'); + $quote->delete(); + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = $this->objectManager->create('Magento\Quote\Model\QuoteIdMask'); + $quoteIdMask->delete($quote->getId()); + } + } + + protected function getQuoteMaskedId($quoteId) + { + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = $this->objectManager->create('Magento\Quote\Model\QuoteIdMaskFactory')->create(); + $quoteIdMask->load($quoteId); + return $quoteIdMask->getMaskedId(); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testGetAddress() + { + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + + /** @var \Magento\Quote\Model\Quote\Address $address */ + $address = $quote->getShippingAddress(); + + $data = [ + AddressInterface::KEY_COUNTRY_ID => $address->getCountryId(), + AddressInterface::KEY_ID => (int)$address->getId(), + AddressInterface::KEY_CUSTOMER_ID => $address->getCustomerId(), + AddressInterface::KEY_REGION => $address->getRegion(), + AddressInterface::KEY_REGION_ID => $address->getRegionId(), + AddressInterface::KEY_REGION_CODE => $address->getRegionCode(), + AddressInterface::KEY_STREET => $address->getStreet(), + AddressInterface::KEY_COMPANY => $address->getCompany(), + AddressInterface::KEY_TELEPHONE => $address->getTelephone(), + AddressInterface::KEY_POSTCODE => $address->getPostcode(), + AddressInterface::KEY_CITY => $address->getCity(), + AddressInterface::KEY_FIRSTNAME => $address->getFirstname(), + AddressInterface::KEY_LASTNAME => $address->getLastname(), + AddressInterface::KEY_EMAIL => $address->getEmail() + ]; + + $cartId = $this->getQuoteMaskedId($quote->getId()); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/shipping-address', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Get', + ], + ]; + + $requestData = ["cartId" => $cartId]; + $this->assertEquals($data, $this->_webApiCall($serviceInfo, $requestData)); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_virtual_product_and_address.php + * + * @expectedException \Exception + * @expectedExceptionMessage Cart contains virtual product(s) only. Shipping address is not applicable + */ + public function testGetAddressOfQuoteWithVirtualProduct() + { + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_with_virtual_product', 'reserved_order_id'); + $cartId = $this->getQuoteMaskedId($quote->getId()); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/shipping-address', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Get', + ], + ]; + + $this->_webApiCall($serviceInfo, ["cartId" => $cartId]); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testSetAddress() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + $cartId = $this->getQuoteMaskedId($quote->getId()); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/shipping-address', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Assign', + ], + ]; + + $addressData = [ + 'firstname' => 'John', + 'lastname' => 'Smith', + 'email' => 'cat@dog.com', + 'company' => 'eBay Inc', + 'street' => ['Typical Street', 'Tiny House 18'], + 'city' => 'Big City', + 'region_id' => 12, + 'region' => 'California', + 'region_code' => 'CA', + 'postcode' => '0985432', + 'country_id' => 'US', + 'telephone' => '88776655', + 'fax' => '44332255', + ]; + $requestData = [ + "cartId" => $cartId, + 'address' => $addressData, + ]; + + $addressId = $this->_webApiCall($serviceInfo, $requestData); + + //reset $quote to reload data + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + $address = $quote->getShippingAddress(); + $address->getRegionCode(); + $savedData = $address->getData(); + $this->assertEquals($addressId, $savedData['address_id'], 'Invalid address ID'); + $this->assertEquals(0, $savedData['same_as_billing']); + //custom checks for street, region and address_type + $this->assertEquals($addressData['street'], $quote->getShippingAddress()->getStreet()); + unset($addressData['street']); + + $this->assertEquals('shipping', $savedData['address_type']); + //check the rest of fields + foreach ($addressData as $key => $value) { + $this->assertEquals($value, $savedData[$key], 'Invalid value for ' . $key); + } + } + + /** + * Set address to quote with virtual products only + * + * @expectedException \Exception + * @expectedExceptionMessage Cart contains virtual product(s) only. Shipping address is not applicable + * + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_virtual_product_and_address.php + */ + public function testSetAddressForVirtualQuote() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_with_virtual_product', 'reserved_order_id'); + $cartId = $this->getQuoteMaskedId($quote->getId()); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/shipping-address', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Assign', + ], + ]; + + $addressData = [ + 'firstname' => 'John', + 'lastname' => 'Smith', + 'email' => 'cat@dog.com', + 'company' => 'eBay Inc', + 'street' => ['Typical Street', 'Tiny House 18'], + 'city' => 'Big City', + 'region_id' => 12, + 'region' => 'California', + 'region_code' => 'CA', + 'postcode' => '0985432', + 'country_id' => 'US', + 'telephone' => '88776655', + 'fax' => '44332255', + ]; + $requestData = [ + "cartId" => $cartId, + 'address' => $addressData, + ]; + + $this->_webApiCall($serviceInfo, $requestData); + } +} diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestShippingMethodManagementTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestShippingMethodManagementTest.php new file mode 100644 index 0000000000000000000000000000000000000000..54b89387651643a72a5c7aac9a789898942dd28e --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestShippingMethodManagementTest.php @@ -0,0 +1,334 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Quote\Api; + +use Magento\Quote\Api\Data\ShippingMethodInterface; +use Magento\TestFramework\ObjectManager; +use Magento\TestFramework\TestCase\WebapiAbstract; + +class GuestShippingMethodManagementTest extends WebapiAbstract +{ + const SERVICE_VERSION = 'V1'; + const SERVICE_NAME = 'quoteGuestShippingMethodManagementV1'; + const RESOURCE_PATH = '/V1/guest-carts/'; + + /** + * @var ObjectManager + */ + private $objectManager; + + /** + * @var \Magento\Quote\Model\Quote + */ + protected $quote; + + protected function setUp() + { + $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); + $this->quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + } + + protected function getServiceInfo() + { + return [ + 'rest' => [ + 'resourcePath' => '/V1/carts/' . $this->quote->getId() . '/selected-shipping-method', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Set', + ], + ]; + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testSetMethod() + { + $this->quote->load('test_order_1', 'reserved_order_id'); + $serviceInfo = $this->getServiceInfo(); + + $cartId = $this->quote->getId(); + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $requestData = [ + 'cartId' => $cartId, + 'carrierCode' => 'flatrate', + 'methodCode' => 'flatrate', + ]; + $result = $this->_webApiCall($serviceInfo, $requestData); + $this->assertEquals(true, $result); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testSetMethodWrongMethod() + { + $expectedMessage = 'Carrier with such method not found: %1, %2'; + $this->quote->load('test_order_1', 'reserved_order_id'); + $serviceInfo = $this->getServiceInfo(); + $carrierCode = 'flatrate'; + $methodCode = 'wrongMethod'; + + $cartId = $this->quote->getId(); + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $requestData = [ + 'cartId' => $cartId, + 'carrierCode' => $carrierCode, + 'methodCode' => $methodCode, + ]; + try { + $this->_webApiCall($serviceInfo, $requestData); + } catch (\SoapFault $e) { + $this->assertContains( + $expectedMessage, + $e->getMessage(), + 'SoapFault does not contain expected message.' + ); + } catch (\Exception $e) { + $errorObj = $this->processRestExceptionResult($e); + $this->assertEquals($expectedMessage, $errorObj['message']); + $this->assertEquals([$carrierCode, $methodCode], $errorObj['parameters']); + } + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_simple_product_saved.php + */ + public function testSetMethodWithoutShippingAddress() + { + $this->quote->load('test_order_with_simple_product_without_address', 'reserved_order_id'); + $serviceInfo = $this->getServiceInfo(); + + $cartId = $this->quote->getId(); + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $requestData = [ + 'cartId' => $cartId, + 'carrierCode' => 'flatrate', + 'methodCode' => 'flatrate', + ]; + try { + $this->_webApiCall($serviceInfo, $requestData); + } catch (\SoapFault $e) { + $message = $e->getMessage(); + } catch (\Exception $e) { + $message = json_decode($e->getMessage())->message; + } + $this->assertEquals('Shipping address is not set', $message); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_shipping_method.php + */ + public function testGetMethod() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + + $cartId = $quote->getId(); + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $shippingAddress = $quote->getShippingAddress(); + list($carrierCode, $methodCode) = explode('_', $shippingAddress->getShippingMethod()); + list($carrierTitle, $methodTitle) = explode(' - ', $shippingAddress->getShippingDescription()); + $data = [ + ShippingMethodInterface::KEY_CARRIER_CODE => $carrierCode, + ShippingMethodInterface::KEY_METHOD_CODE => $methodCode, + ShippingMethodInterface::KEY_CARRIER_TITLE => $carrierTitle, + ShippingMethodInterface::KEY_METHOD_TITLE => $methodTitle, + ShippingMethodInterface::KEY_SHIPPING_AMOUNT => $shippingAddress->getShippingAmount(), + ShippingMethodInterface::KEY_BASE_SHIPPING_AMOUNT => $shippingAddress->getBaseShippingAmount(), + ShippingMethodInterface::KEY_AVAILABLE => true, + ]; + + $requestData = ["cartId" => $cartId]; + $this->assertEquals($data, $this->_webApiCall($this->getSelectedMethodServiceInfo($cartId), $requestData)); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_virtual_product_and_address.php + */ + public function testGetMethodOfVirtualCart() + { + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $cartId = $quote->load('test_order_with_virtual_product', 'reserved_order_id')->getId(); + + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $result = $this->_webApiCall($this->getSelectedMethodServiceInfo($cartId), ["cartId" => $cartId]); + $this->assertEquals([], $result); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testGetMethodOfCartWithNoShippingMethod() + { + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $cartId = $quote->load('test_order_1', 'reserved_order_id')->getId(); + + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $result = $this->_webApiCall($this->getSelectedMethodServiceInfo($cartId), ["cartId" => $cartId]); + $this->assertEquals([], $result); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_virtual_product_and_address.php + * + */ + public function testGetListForVirtualCart() + { + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $cartId = $quote->load('test_order_with_virtual_product', 'reserved_order_id')->getId(); + + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $this->assertEquals([], $this->_webApiCall($this->getListServiceInfo($cartId), ["cartId" => $cartId])); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testGetList() + { + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + $cartId = $quote->getId(); + if (!$cartId) { + $this->fail('quote fixture failed'); + } + + /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ + $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); + $quoteIdMask->load($cartId); + //Use masked cart Id + $cartId = $quoteIdMask->getMaskedId(); + + $quote->getShippingAddress()->collectShippingRates(); + $expectedRates = $quote->getShippingAddress()->getGroupedAllShippingRates(); + + $expectedData = $this->convertRates($expectedRates, $quote->getQuoteCurrencyCode()); + + $requestData = ["cartId" => $cartId]; + + $returnedRates = $this->_webApiCall($this->getListServiceInfo($cartId), $requestData); + $this->assertEquals($expectedData, $returnedRates); + } + + /** + * @param string $cartId + * @return array + * @SuppressWarnings(PHPMD.UnusedLocalVariable) + */ + protected function getSelectedMethodServiceInfo($cartId) + { + return $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-shipping-method', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'Get', + ], + ]; + } + + /** + * Service info + * + * @param int $cartId + * @return array + */ + protected function getListServiceInfo($cartId) + { + return [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/shipping-methods', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + 'soap' => [ + 'service' => self::SERVICE_NAME, + 'serviceVersion' => self::SERVICE_VERSION, + 'operation' => self::SERVICE_NAME . 'GetList', + ], + ]; + } + + /** + * Convert rate models array to data array + * + * @param string $currencyCode + * @param \Magento\Quote\Model\Quote\Address\Rate[] $groupedRates + * @return array + */ + protected function convertRates($groupedRates, $currencyCode) + { + $result = []; + /** @var \Magento\Quote\Model\Cart\ShippingMethodConverter $converter */ + $converter = $this->objectManager->create('\Magento\Quote\Model\Cart\ShippingMethodConverter'); + foreach ($groupedRates as $carrierRates) { + foreach ($carrierRates as $rate) { + $result[] = $converter->modelToDataObject($rate, $currencyCode)->__toArray(); + } + } + return $result; + } +} diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/PaymentMethodManagementTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/PaymentMethodManagementTest.php index 8288f1f9b5d874e3ca80bd323ee1777c8de751f3..b4aa67ab9fa7d3061541f02879d878e84a1e110f 100644 --- a/dev/tests/api-functional/testsuite/Magento/Quote/Api/PaymentMethodManagementTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/PaymentMethodManagementTest.php @@ -33,7 +33,7 @@ class PaymentMethodManagementTest extends \Magento\TestFramework\TestCase\Webapi $serviceInfo = [ 'rest' => [ - 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-methods', + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-method', 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, ], 'soap' => [ @@ -70,7 +70,7 @@ class PaymentMethodManagementTest extends \Magento\TestFramework\TestCase\Webapi $serviceInfo = [ 'rest' => [ - 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-methods', + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-method', 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, ], 'soap' => [ @@ -106,7 +106,7 @@ class PaymentMethodManagementTest extends \Magento\TestFramework\TestCase\Webapi $serviceInfo = [ 'rest' => [ - 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-methods', + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-method', 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, ], 'soap' => [ @@ -145,7 +145,7 @@ class PaymentMethodManagementTest extends \Magento\TestFramework\TestCase\Webapi $serviceInfo = [ 'rest' => [ - 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-methods', + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-method', 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, ], 'soap' => [ @@ -183,7 +183,7 @@ class PaymentMethodManagementTest extends \Magento\TestFramework\TestCase\Webapi $serviceInfo = [ 'rest' => [ - 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-methods', + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-method', 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, ], 'soap' => [ @@ -253,7 +253,7 @@ class PaymentMethodManagementTest extends \Magento\TestFramework\TestCase\Webapi $serviceInfo = [ 'rest' => [ - 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-methods', + 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-method', 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, ], 'soap' => [ @@ -266,22 +266,126 @@ class PaymentMethodManagementTest extends \Magento\TestFramework\TestCase\Webapi $requestData = ["cartId" => $cartId]; $requestResponse = $this->_webApiCall($serviceInfo, $requestData); - $this->assertArrayHasKey('method', $requestResponse); - $this->assertArrayHasKey('po_number', $requestResponse); - $this->assertArrayHasKey('cc_owner', $requestResponse); - $this->assertArrayHasKey('cc_type', $requestResponse); - $this->assertArrayHasKey('cc_exp_year', $requestResponse); - $this->assertArrayHasKey('cc_exp_month', $requestResponse); - $this->assertArrayHasKey('additional_data', $requestResponse); - - $this->assertNotNull($requestResponse['method']); - $this->assertNotNull($requestResponse['po_number']); - $this->assertNotNull($requestResponse['cc_owner']); - $this->assertNotNull($requestResponse['cc_type']); - $this->assertNotNull($requestResponse['cc_exp_year']); - $this->assertNotNull($requestResponse['cc_exp_month']); - $this->assertNotNull($requestResponse['additional_data']); + foreach ($this->getPaymentMethodFieldsForAssert() as $field) { + $this->assertArrayHasKey($field, $requestResponse); + $this->assertNotNull($requestResponse[$field]); + } $this->assertEquals('checkmo', $requestResponse['method']); } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testGetListMine() + { + $this->_markTestAsRestOnly(); + + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . 'mine/payment-methods', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + 'token' => $this->getCustomerToken() + ] + ]; + + $requestResponse = $this->_webApiCall($serviceInfo); + + $expectedResponse = [ + 'code' => 'checkmo', + 'title' => 'Check / Money order', + ]; + + $this->assertGreaterThan(0, count($requestResponse)); + $this->assertContains($expectedResponse, $requestResponse); + } + + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_payment_saved.php + */ + public function testGetMine() + { + $this->_markTestAsRestOnly(); + + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1_with_payment', 'reserved_order_id'); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . 'mine/selected-payment-method', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + 'token' => $this->getCustomerToken() + ] + ]; + + $requestResponse = $this->_webApiCall($serviceInfo); + + foreach ($this->getPaymentMethodFieldsForAssert() as $field) { + $this->assertArrayHasKey($field, $requestResponse); + $this->assertNotNull($requestResponse[$field]); + } + $this->assertEquals('checkmo', $requestResponse['method']); + } + + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testSetPaymentWithSimpleProductMine() + { + $this->_markTestAsRestOnly(); + + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('\Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . 'mine/selected-payment-method', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + 'token' => $this->getCustomerToken() + ] + ]; + + $requestData = [ + "method" => [ + 'method' => 'checkmo', + 'po_number' => '200', + 'cc_owner' => 'tester', + 'cc_type' => 'test', + 'cc_exp_year' => '2014', + 'cc_exp_month' => '1', + ], + ]; + + $this->assertNotNull($this->_webApiCall($serviceInfo, $requestData)); + } + + /** + * @return array + */ + protected function getPaymentMethodFieldsForAssert() + { + return ['method', 'po_number', 'cc_owner', 'cc_type', 'cc_exp_year', 'cc_exp_month', 'additional_data']; + } + + /** + * Get customer ID token + * + * @return string + */ + protected function getCustomerToken() + { + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + return $token; + } } diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/ShippingAddressManagementTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/ShippingAddressManagementTest.php index ff9c032601f880b6bac99622c94f2e5f6ba7915a..9a8db29b15a7abfe050ccf675c24b701eab51538 100644 --- a/dev/tests/api-functional/testsuite/Magento/Quote/Api/ShippingAddressManagementTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/ShippingAddressManagementTest.php @@ -207,4 +207,124 @@ class ShippingAddressManagementTest extends WebapiAbstract $this->_webApiCall($serviceInfo, $requestData); } + + /** + * Test getting shipping address based on the customer's authentication token. + * + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testGetMyAddress() + { + $this->_markTestAsRestOnly(); + + // get customer ID token + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + + /** @var \Magento\Quote\Model\Quote\Address $address */ + $address = $quote->getShippingAddress(); + + $addressData = [ + AddressInterface::KEY_COUNTRY_ID => $address->getCountryId(), + AddressInterface::KEY_ID => (int)$address->getId(), + AddressInterface::KEY_CUSTOMER_ID => $address->getCustomerId(), + AddressInterface::KEY_REGION => $address->getRegion(), + AddressInterface::KEY_REGION_ID => $address->getRegionId(), + AddressInterface::KEY_REGION_CODE => $address->getRegionCode(), + AddressInterface::KEY_STREET => $address->getStreet(), + AddressInterface::KEY_COMPANY => $address->getCompany(), + AddressInterface::KEY_TELEPHONE => $address->getTelephone(), + AddressInterface::KEY_POSTCODE => $address->getPostcode(), + AddressInterface::KEY_CITY => $address->getCity(), + AddressInterface::KEY_FIRSTNAME => $address->getFirstname(), + AddressInterface::KEY_LASTNAME => $address->getLastname(), + AddressInterface::KEY_EMAIL => $address->getEmail() + ]; + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . 'mine/shipping-address', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + 'token' => $token + ], + ]; + + $requestData = []; + $this->assertEquals($addressData, $this->_webApiCall($serviceInfo, $requestData)); + } + + /** + * Test setting shipping address based on the customer's authentication token. + * + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testSetMyAddress() + { + $this->_markTestAsRestOnly(); + + // get customer ID token + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + /** @var \Magento\Quote\Model\Quote $quote */ + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => self::RESOURCE_PATH . 'mine/shipping-address', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST, + 'token' => $token + ], + ]; + + $addressData = [ + 'firstname' => 'John', + 'lastname' => 'Smith', + 'email' => 'cat@dog.com', + 'company' => 'eBay Inc', + 'street' => ['Typical Street', 'Tiny House 18'], + 'city' => 'Big City', + 'region_id' => 12, + 'region' => 'California', + 'region_code' => 'CA', + 'postcode' => '0985432', + 'country_id' => 'US', + 'telephone' => '88776655', + 'fax' => '44332255', + ]; + $requestData = [ + 'address' => $addressData, + ]; + + $addressId = $this->_webApiCall($serviceInfo, $requestData); + + //reset $quote to reload data + $quote = $this->objectManager->create('Magento\Quote\Model\Quote'); + $quote->load('test_order_1', 'reserved_order_id'); + $address = $quote->getShippingAddress(); + $address->getRegionCode(); + $savedData = $address->getData(); + $this->assertEquals($addressId, $savedData['address_id'], 'Invalid address ID'); + $this->assertEquals(0, $savedData['same_as_billing']); + //custom checks for street, region and address_type + $this->assertEquals($addressData['street'], $quote->getShippingAddress()->getStreet()); + unset($addressData['street']); + + $this->assertEquals('shipping', $savedData['address_type']); + //check the rest of fields + foreach ($addressData as $key => $value) { + $this->assertEquals($value, $savedData[$key], 'Invalid value for ' . $key); + } + } } diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/ShippingMethodManagementTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/ShippingMethodManagementTest.php index 6217cc99b088f063669901fdc5e1d492794e1e2c..60865f081c99f6e7fdbdc93b6a901e95189e0509 100644 --- a/dev/tests/api-functional/testsuite/Magento/Quote/Api/ShippingMethodManagementTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/ShippingMethodManagementTest.php @@ -117,6 +117,50 @@ class ShippingMethodManagementTest extends WebapiAbstract $this->assertEquals('Shipping address is not set', $message); } + /** + * @magentoApiDataFixture Magento/Customer/_files/customer.php + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testSetMethodForMyCart() + { + $this->_markTestAsRestOnly(); + + $this->quote->load('test_order_1', 'reserved_order_id'); + + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => '/V1/carts/mine/selected-shipping-method', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, + 'token' => $token + ] + ]; + + $requestData = [ + 'cartId' => 999, + 'carrierCode' => 'flatrate', + 'methodCode' => 'flatrate', + ]; // cartId 999 will be overridden + + $result = $this->_webApiCall($serviceInfo, $requestData); + $this->assertEquals(true, $result); + + /** @var \Magento\Quote\Api\ShippingMethodManagementInterface $shippingMethodManagementService */ + $shippingMethodManagementService = $this->objectManager->create( + 'Magento\Quote\Api\ShippingMethodManagementInterface' + ); + $shippingMethod = $shippingMethodManagementService->get($this->quote->getId()); + + $this->assertNotNull($shippingMethod); + $this->assertEquals('flatrate', $shippingMethod->getCarrierCode()); + $this->assertEquals('flatrate', $shippingMethod->getMethodCode()); + } + /** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_shipping_method.php */ @@ -169,6 +213,41 @@ class ShippingMethodManagementTest extends WebapiAbstract $this->assertEquals([], $result); } + /** + * @magentoApiDataFixture Magento/Customer/_files/customer.php + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testGetMethodForMyCart() + { + $this->_markTestAsRestOnly(); + + $this->quote->load('test_order_1', 'reserved_order_id'); + + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + /** @var \Magento\Quote\Api\ShippingMethodManagementInterface $shippingMethodManagementService */ + $shippingMethodManagementService = $this->objectManager->create( + 'Magento\Quote\Api\ShippingMethodManagementInterface' + ); + $shippingMethodManagementService->set($this->quote->getId(), 'flatrate', 'flatrate'); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => '/V1/carts/mine/selected-shipping-method', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + 'token' => $token + ] + ]; + + $result = $this->_webApiCall($serviceInfo, []); + $this->assertEquals('flatrate', $result[ShippingMethodInterface::KEY_CARRIER_CODE]); + $this->assertEquals('flatrate', $result[ShippingMethodInterface::KEY_METHOD_CODE]); + } + /** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_virtual_product_and_address.php * @@ -204,6 +283,54 @@ class ShippingMethodManagementTest extends WebapiAbstract $this->assertEquals($expectedData, $returnedRates); } + /** + * @magentoApiDataFixture Magento/Customer/_files/customer.php + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php + */ + public function testGetListForMyCart() + { + $this->_markTestAsRestOnly(); + + $this->quote->load('test_order_1', 'reserved_order_id'); + + /** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */ + $customerTokenService = $this->objectManager->create( + 'Magento\Integration\Service\V1\CustomerTokenServiceInterface' + ); + $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password'); + + /** @var \Magento\Quote\Api\ShippingMethodManagementInterface $shippingMethodManagementService */ + $shippingMethodManagementService = $this->objectManager->create( + 'Magento\Quote\Api\ShippingMethodManagementInterface' + ); + $shippingMethodManagementService->set($this->quote->getId(), 'flatrate', 'flatrate'); + + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => '/V1/carts/mine/shipping-methods', + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + 'token' => $token + ] + ]; + + $result = $this->_webApiCall($serviceInfo, []); + $this->assertNotEmpty($result); + $this->assertCount(1, $result); + + $shippingMethod = $shippingMethodManagementService->get($this->quote->getId()); + $expectedData = [ + ShippingMethodInterface::KEY_CARRIER_CODE => $shippingMethod->getCarrierCode(), + ShippingMethodInterface::KEY_METHOD_CODE => $shippingMethod->getMethodCode(), + ShippingMethodInterface::KEY_CARRIER_TITLE => $shippingMethod->getCarrierTitle(), + ShippingMethodInterface::KEY_METHOD_TITLE => $shippingMethod->getMethodTitle(), + ShippingMethodInterface::KEY_SHIPPING_AMOUNT => $shippingMethod->getAmount(), + ShippingMethodInterface::KEY_BASE_SHIPPING_AMOUNT => $shippingMethod->getBaseAmount(), + ShippingMethodInterface::KEY_AVAILABLE => $shippingMethod->getAvailable(), + ]; + + $this->assertEquals($expectedData, $result[0]); + } + /** * @param string $cartId * @return array diff --git a/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProduct/Associated.php b/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProduct/Associated.php index 00e3a4896a7fd2e3f979d9eefffd284b1839cda0..427bc6c11cd4edfd7ed82f34ccafe2b6229d88e2 100644 --- a/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProduct/Associated.php +++ b/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProduct/Associated.php @@ -198,19 +198,19 @@ class Associated implements FixtureInterface 'id' => '%id%', 'name' => '%item1_simple::getProductName%', 'position' => '%position%', - 'qty' => 17, + 'qty' => 3, ], [ 'id' => '%id%', 'name' => '%item1_simple::getProductName%', 'position' => '%position%', - 'qty' => 36, + 'qty' => 1, ], [ 'id' => '%id%', 'name' => '%item1_simple::getProductName%', 'position' => '%position%', - 'qty' => 20, + 'qty' => 2, ], ], 'products' => [ diff --git a/dev/tests/functional/tests/app/Magento/Ups/Test/Repository/ConfigData.xml b/dev/tests/functional/tests/app/Magento/Ups/Test/Repository/ConfigData.xml index 5351224a4f52e4bc04b92617f30d0190b5963fb3..f6c7bd8341526c7fa4e6f48a79f020fb5830b2b8 100644 --- a/dev/tests/functional/tests/app/Magento/Ups/Test/Repository/ConfigData.xml +++ b/dev/tests/functional/tests/app/Magento/Ups/Test/Repository/ConfigData.xml @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" ?> <!-- /** * Copyright © 2015 Magento. All rights reserved. diff --git a/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/AddProductsToCartFromCustomerWishlistOnFrontendTest.xml b/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/AddProductsToCartFromCustomerWishlistOnFrontendTest.xml index 066996237682324629b01255adc02af4a05a67af..1cf13be71e2cd00324fbc5303d2a6bd31230fa33 100644 --- a/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/AddProductsToCartFromCustomerWishlistOnFrontendTest.xml +++ b/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/AddProductsToCartFromCustomerWishlistOnFrontendTest.xml @@ -33,28 +33,24 @@ <constraint name="Magento\Wishlist\Test\Constraint\AssertProductsIsAbsentInWishlist" /> </variation> <variation name="AddProductsToCartFromCustomerWishlistOnFrontendTestVariation5"> - <data name="issue" xsi:type="string">Bug: MAGETWO-36224</data> <data name="products" xsi:type="string">downloadableProduct::with_two_separately_links</data> <data name="qty" xsi:type="string">-</data> <constraint name="Magento\Checkout\Test\Constraint\AssertProductQtyInShoppingCart" /> <constraint name="Magento\Wishlist\Test\Constraint\AssertProductsIsAbsentInWishlist" /> </variation> <variation name="AddProductsToCartFromCustomerWishlistOnFrontendTestVariation6"> - <data name="issue" xsi:type="string">Bug: MAGETWO-36224</data> <data name="products" xsi:type="string">configurableProduct::default</data> <data name="qty" xsi:type="string">3</data> <constraint name="Magento\Checkout\Test\Constraint\AssertProductQtyInShoppingCart" /> <constraint name="Magento\Wishlist\Test\Constraint\AssertProductsIsAbsentInWishlist" /> </variation> <variation name="AddProductsToCartFromCustomerWishlistOnFrontendTestVariation7"> - <data name="issue" xsi:type="string">Bug: MAGETWO-36224</data> <data name="products" xsi:type="string">bundleProduct::bundle_dynamic_product</data> <data name="qty" xsi:type="string">2</data> <constraint name="Magento\Checkout\Test\Constraint\AssertProductQtyInShoppingCart" /> <constraint name="Magento\Wishlist\Test\Constraint\AssertProductsIsAbsentInWishlist" /> </variation> <variation name="AddProductsToCartFromCustomerWishlistOnFrontendTestVariation8"> - <data name="issue" xsi:type="string">Bug: MAGETWO-36224</data> <data name="products" xsi:type="string">bundleProduct::bundle_fixed_product</data> <data name="qty" xsi:type="string">2</data> <constraint name="Magento\Checkout\Test\Constraint\AssertProductQtyInShoppingCart" /> diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/discount_10percent_generalusers.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/discount_10percent_generalusers.php new file mode 100644 index 0000000000000000000000000000000000000000..c66670aa8719af2cc1a5575596f7b8c65661bf58 --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/discount_10percent_generalusers.php @@ -0,0 +1,28 @@ +<?php +/** + * SalesRule 10% discount coupon + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +/** @var \Magento\SalesRule\Model\Rule $salesRule */ +$salesRule = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\SalesRule\Model\Rule'); + +$data = [ + 'name' => 'Test Coupon for General', + 'is_active' => true, + 'website_ids' => [ + \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get( + 'Magento\Store\Model\StoreManagerInterface' + )->getStore()->getWebsiteId() + ], + 'customer_group_ids' => [1], + 'coupon_type' => \Magento\SalesRule\Model\Rule::COUPON_TYPE_SPECIFIC, + 'coupon_code' => uniqid(), + 'simple_action' => \Magento\SalesRule\Model\Rule::BY_PERCENT_ACTION, + 'discount_amount' => 10, + 'discount_step' => 1 +]; + +$salesRule->loadPost($data)->setUseAutoGeneration(false)->save(); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/discount_10percent_generalusers_rollback.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/discount_10percent_generalusers_rollback.php new file mode 100644 index 0000000000000000000000000000000000000000..a6f462f767443532421f66b9e8d144335469233e --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/discount_10percent_generalusers_rollback.php @@ -0,0 +1,12 @@ +<?php +/** + * SalesRule 10% discount coupon + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +/** @var \Magento\SalesRule\Model\Rule $salesRule */ +$salesRule = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\SalesRule\Model\Rule'); +$salesRule->load('Test Coupon for General', 'name'); +$salesRule->delete(); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/discount_10percent_rollback.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/discount_10percent_rollback.php new file mode 100644 index 0000000000000000000000000000000000000000..53c90ee1778f1eb0c67b16c1af81e4a87f9cb47f --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/discount_10percent_rollback.php @@ -0,0 +1,12 @@ +<?php +/** + * SalesRule 10% discount coupon + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +/** @var \Magento\SalesRule\Model\Rule $salesRule */ +$salesRule = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\SalesRule\Model\Rule'); +$salesRule->load('Test Coupon', 'name'); +$salesRule->delete(); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_address_saved.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_address_saved.php index 65cdb896f134ccdc968d833ae6816ebf8a15ab70..c06216ed07d89f96f5e144815c68a97964e6300b 100644 --- a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_address_saved.php +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_address_saved.php @@ -12,3 +12,11 @@ require 'quote_with_address.php'; $quote->collectTotals()->save(); + +/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ +$quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); +$quoteIdMask->setId($quote->getId()); +$quoteIdMask->setDataChanges(true); +$quoteIdMask->save(); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_address_saved_rollback.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_address_saved_rollback.php index 9bc73ec6d964fc69c7bdc78fa6a8fa15b83a0583..098b8e746cd5b099605ed37fb437cd2ba8e82781 100644 --- a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_address_saved_rollback.php +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_address_saved_rollback.php @@ -10,3 +10,7 @@ $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); $quote = $objectManager->create('Magento\Quote\Model\Quote'); $quote->load('test_order_1', 'reserved_order_id')->delete(); + +/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ +$quoteIdMask = $objectManager->create('Magento\Quote\Model\QuoteIdMask'); +$quoteIdMask->delete($quote->getId()); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_check_payment.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_check_payment.php index 355706e20824a14eea670c5cc3678c2cdf2ee9d0..1f0a0a45197c70eec8b032eea8555dba723c18e9 100644 --- a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_check_payment.php +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_check_payment.php @@ -19,3 +19,11 @@ $quote->getPayment()->setMethod('checkmo'); $quote->collectTotals(); $quote->save(); $quote->getPayment()->setMethod('checkmo'); + +/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ +$quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); +$quoteIdMask->setId($quote->getId()); +$quoteIdMask->setDataChanges(true); +$quoteIdMask->save(); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_check_payment_rollback.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_check_payment_rollback.php index 7d04f85c78907dae2949522fef4d0001086cdac0..e999e00ff14336961e2581ba9983960cd1e0e9fe 100644 --- a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_check_payment_rollback.php +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_check_payment_rollback.php @@ -5,7 +5,10 @@ * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ +require __DIR__ . '/../../Sales/_files/default_rollback.php'; /** @var $objectManager \Magento\TestFramework\ObjectManager */ $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); $objectManager->get('Magento\Framework\Registry')->unregister('quote'); +$quote = $objectManager->create('Magento\Quote\Model\Quote'); +$quote->load('test_order_1', 'reserved_order_id')->delete(); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_items_saved.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_items_saved.php index d017de00edb5e8a0a476d4804a84903e70160489..dcf8ab45afc9802ac729f00210a68f59bfee159d 100644 --- a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_items_saved.php +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_items_saved.php @@ -42,3 +42,11 @@ $quoteProduct = $product->load($product->getIdBySku('simple_one')); $quote->setReservedOrderId('test_order_item_with_items') ->addProduct($product->load($product->getIdBySku('simple_one')), 1); $quote->collectTotals()->save(); + +/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ +$quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); +$quoteIdMask->setId($quote->getId()); +$quoteIdMask->setDataChanges(true); +$quoteIdMask->save(); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_payment_saved.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_payment_saved.php index d39da02e43d07343fa5d566c23e1016fa6f2bde2..e15c08b356f56ffc6677a1018b6613a1f4223a74 100644 --- a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_payment_saved.php +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_payment_saved.php @@ -25,3 +25,11 @@ $quote->getPayment() ->setAdditionalData(serialize($paymentDetails)); $quote->collectTotals()->save(); + +/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ +$quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); +$quoteIdMask->setId($quote->getId()); +$quoteIdMask->setDataChanges(true); +$quoteIdMask->save(); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_payment_saved_rollback.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_payment_saved_rollback.php index c828e4acf0c793a28d33237f0c31a815ca3b8095..92d03e750c176358c6927bd9724022b80e40a565 100644 --- a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_payment_saved_rollback.php +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_payment_saved_rollback.php @@ -10,3 +10,7 @@ $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); $quote = $objectManager->create('Magento\Quote\Model\Quote'); $quote->load('test_order_1_with_payment', 'reserved_order_id')->delete(); + +/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ +$quoteIdMask = $objectManager->create('Magento\Quote\Model\QuoteIdMask'); +$quoteIdMask->delete($quote->getId()); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_simple_product_saved.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_simple_product_saved.php index 3d410ba47f558b83bcc8d91d93bed5221a22f37c..e917e5c33e8ddfcb09eafeb08420a2df028ef886 100644 --- a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_simple_product_saved.php +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_simple_product_saved.php @@ -26,3 +26,11 @@ $quote->setStoreId( ); $quote->collectTotals()->save(); + +/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ +$quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); +$quoteIdMask->setId($quote->getId()); +$quoteIdMask->setDataChanges(true); +$quoteIdMask->save(); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_simple_product_saved_rollback.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_simple_product_saved_rollback.php index 60b8a06b2dcfe58c829b67db2fcde71798e88e1f..5639fc74d602ef9f26a9ebcaa5e50a23e03052e4 100644 --- a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_simple_product_saved_rollback.php +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_simple_product_saved_rollback.php @@ -10,3 +10,7 @@ $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); $quote = $objectManager->create('Magento\Quote\Model\Quote'); $quote->load('test_order_with_simple_product_without_address', 'reserved_order_id')->delete(); + +/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ +$quoteIdMask = $objectManager->create('Magento\Quote\Model\QuoteIdMask'); +$quoteIdMask->delete($quote->getId()); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_and_address.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_and_address.php index f892d8e7abade648085ddb2cb5b6f1cc44d79a48..56ae6b1a7643bd074ebd807ea00a77d60da41769 100644 --- a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_and_address.php +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_and_address.php @@ -52,3 +52,11 @@ $quote->setStoreId( ); $quote->collectTotals()->save(); + +/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ +$quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); +$quoteIdMask->setId($quote->getId()); +$quoteIdMask->setDataChanges(true); +$quoteIdMask->save(); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_and_address_rollback.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_and_address_rollback.php index abd211dba8b7844b3644c2ae0e406b867da88c0b..c87f4d43a8ac58aab785cb180a22c241c9f6aba7 100644 --- a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_and_address_rollback.php +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_and_address_rollback.php @@ -9,3 +9,7 @@ $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); $quote = $objectManager->create('Magento\Quote\Model\Quote'); $quote->load('test_order_with_virtual_product', 'reserved_order_id')->delete(); + +/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ +$quoteIdMask = $objectManager->create('Magento\Quote\Model\QuoteIdMask'); +$quoteIdMask->delete($quote->getId()); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_saved.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_saved.php index d68124215662e455600af9d538dc7f2db59f7c51..1d19150c3a3a52f274c6301d4559e17245293717 100644 --- a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_saved.php +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_saved.php @@ -19,3 +19,11 @@ $quote->setStoreId(1) ); $quote->collectTotals()->save(); + +/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ +$quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); +$quoteIdMask->setId($quote->getId()); +$quoteIdMask->setDataChanges(true); +$quoteIdMask->save(); diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_saved_rollback.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_saved_rollback.php index 4447d3cf57862f35cded4b095ccc5d0285bd06e0..914ec199cfd3308429bb94bd660ca8f5c04da531 100644 --- a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_saved_rollback.php +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_virtual_product_saved_rollback.php @@ -10,3 +10,7 @@ $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); $quote = $objectManager->create('Magento\Quote\Model\Quote'); $quote->load('test_order_with_virtual_product_without_address', 'reserved_order_id')->delete(); + +/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ +$quoteIdMask = $objectManager->create('Magento\Quote\Model\QuoteIdMask'); +$quoteIdMask->delete($quote->getId()); diff --git a/dev/tests/integration/testsuite/Magento/Customer/Model/Resource/GroupRepositoryTest.php b/dev/tests/integration/testsuite/Magento/Customer/Model/Resource/GroupRepositoryTest.php index f147db9a5a5cc26f376e77d0080e766967e7344e..905a5a9affc1d62dd9ba398a247cf40dbfc12780 100644 --- a/dev/tests/integration/testsuite/Magento/Customer/Model/Resource/GroupRepositoryTest.php +++ b/dev/tests/integration/testsuite/Magento/Customer/Model/Resource/GroupRepositoryTest.php @@ -7,6 +7,7 @@ namespace Magento\Customer\Model\Resource; use Magento\Customer\Api\Data\GroupInterface; +use Magento\Framework\Api\SearchCriteria; /** * Integration test for \Magento\Customer\Model\Resource\GroupRepository @@ -28,12 +29,16 @@ class GroupRepositoryTest extends \PHPUnit_Framework_TestCase /** @var \Magento\Framework\Api\SearchCriteriaBuilder */ private $searchCriteriaBuilder; + /** @var \Magento\Framework\Api\SortOrderBuilder */ + private $sortOrderBuilder; + protected function setUp() { $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); $this->groupRepository = $this->objectManager->create('Magento\Customer\Api\GroupRepositoryInterface'); $this->groupFactory = $this->objectManager->create('Magento\Customer\Api\Data\GroupInterfaceFactory'); $this->searchCriteriaBuilder = $this->objectManager->create('Magento\Framework\Api\SearchCriteriaBuilder'); + $this->sortOrderBuilder = $this->objectManager->create('Magento\Framework\Api\SortOrderBuilder'); } /** @@ -249,6 +254,95 @@ class GroupRepositoryTest extends \PHPUnit_Framework_TestCase 3 => [GroupInterface::CODE => 'Retailer', GroupInterface::TAX_CLASS_ID => 3] ], ], + 'like_tax_name' => [ + [ + $builder->setField(GroupInterface::TAX_CLASS_NAME)->setValue('Retail Customer') + ->setConditionType('like') + ->create(), + ], + [], + [ + 0 => [GroupInterface::CODE => 'NOT LOGGED IN', GroupInterface::TAX_CLASS_ID => 3], + 1 => [GroupInterface::CODE => 'General', GroupInterface::TAX_CLASS_ID => 3], + 2 => [GroupInterface::CODE => 'Wholesale', GroupInterface::TAX_CLASS_ID => 3], + 3 => [GroupInterface::CODE => 'Retailer', GroupInterface::TAX_CLASS_ID => 3], + ], + ], + ]; + } + + /** + * @param string $field + * @param string, $direction + * @param string, $methodName + * @param array $expectedResult + * + * @dataProvider sortOrderDataProvider + */ + public function testGetListSortOrder($field, $direction, $methodName, $expectedResult) + { + /** @var \Magento\Framework\Api\SortOrder $sortOrder */ + /** @var string $direction */ + $direction = ($direction == 'ASC') ? SearchCriteria::SORT_ASC : SearchCriteria::SORT_DESC; + $sortOrder = $this->sortOrderBuilder->setField($field)->setDirection($direction)->create(); + $this->searchCriteriaBuilder->addSortOrder($sortOrder); + + $searchResults = $this->groupRepository->getList($this->searchCriteriaBuilder->create()); + + /** @var \Magento\Customer\Api\Data\GroupInterface[] $resultItems */ + $resultItems = $searchResults->getItems(); + $this->assertTrue(count($resultItems) > 0); + + $result = []; + foreach ($resultItems as $item) { + /** @var \Magento\Customer\Model\Data\Group $item */ + $result[] = $item->$methodName(); + } + $this->assertEquals($expectedResult, $result); + } + + /** + * @return array + */ + public function sortOrderDataProvider() + { + return [ + [ + GroupInterface::ID, + 'ASC', + 'getId', + [0, 1, 2, 3], + ], + [ + GroupInterface::ID, + 'DESC', + 'getId', + [3, 2, 1, 0], + ], + [ + GroupInterface::CODE, + 'ASC', + 'getCode', + ['General', 'NOT LOGGED IN', 'Retailer', 'Wholesale'], + ], + [ + GroupInterface::CODE, + 'DESC', + 'getCode', + ['Wholesale', 'Retailer', 'NOT LOGGED IN', 'General'], + ], + [ + GroupInterface::TAX_CLASS_NAME, + 'ASC', + 'getTaxClassName', + ['Retail Customer', 'Retail Customer', 'Retail Customer', 'Retail Customer'] + ], + [ + GroupInterface::TAX_CLASS_NAME, + 'DESC', + 'getTaxClassName', + ['Retail Customer', 'Retail Customer', 'Retail Customer', 'Retail Customer'] + ], ]; } } diff --git a/dev/tests/integration/testsuite/Magento/Sales/_files/quote.php b/dev/tests/integration/testsuite/Magento/Sales/_files/quote.php index 8bdafe16f41aa3263b3a75e208e2a8545efbaa5d..2fb7467a1c15bc58a2a6391dfb9eb8854c3c456e 100644 --- a/dev/tests/integration/testsuite/Magento/Sales/_files/quote.php +++ b/dev/tests/integration/testsuite/Magento/Sales/_files/quote.php @@ -65,3 +65,11 @@ $quote->getPayment()->setMethod('checkmo'); $quote->setIsMultiShipping('1'); $quote->collectTotals(); $quote->save(); + +/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ +$quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); +$quoteIdMask->setId($quote->getId()); +$quoteIdMask->setDataChanges(true); +$quoteIdMask->save(); diff --git a/dev/tests/integration/testsuite/Magento/Sales/_files/quote_with_customer.php b/dev/tests/integration/testsuite/Magento/Sales/_files/quote_with_customer.php index 8d5992519026fd63f5669052fc465a5f932accff..40e14157ff895104bac231809bc61c6b81f98bfc 100644 --- a/dev/tests/integration/testsuite/Magento/Sales/_files/quote_with_customer.php +++ b/dev/tests/integration/testsuite/Magento/Sales/_files/quote_with_customer.php @@ -15,3 +15,11 @@ $customerRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager( ->create('Magento\Customer\Api\CustomerRepositoryInterface'); $customer = $customerRepository->getById(1); $quote->setCustomer($customer)->setCustomerIsGuest(false)->save(); + +/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */ +$quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create('Magento\Quote\Model\QuoteIdMaskFactory') + ->create(); +$quoteIdMask->setId($quote->getId()); +$quoteIdMask->setDataChanges(true); +$quoteIdMask->save(); diff --git a/dev/tests/performance/benchmark.jmx b/dev/tests/performance/benchmark.jmx index 34b8617830f417808bcc2e5086b8ecf6efe94c72..9ebd36053e18e2ae06bac1cbd26ad7d0381d9748 100644 --- a/dev/tests/performance/benchmark.jmx +++ b/dev/tests/performance/benchmark.jmx @@ -5,7 +5,7 @@ * See COPYING.txt for license details. */ --> -<jmeterTestPlan version="1.2" properties="2.6" jmeter="2.11 r1554548"> +<jmeterTestPlan version="1.2" properties="2.7" jmeter="2.12 r1636949"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Toolkit" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> @@ -116,9 +116,10 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp> <stringProp name="HTTPSampler.path"></stringProp> + <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp> <stringProp name="HTTPSampler.concurrentPool">4</stringProp> </ConfigTestElement> <hashTree/> @@ -196,15 +197,14 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -277,15 +277,14 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -344,15 +343,14 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/cache/massDisable/</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -396,7 +394,7 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> @@ -404,7 +402,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -431,7 +428,7 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> @@ -439,7 +436,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -466,7 +462,7 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}${simple_product_url_key}${url_suffix}</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> @@ -474,7 +470,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -489,7 +484,7 @@ <intProp name="Assertion.test_type">2</intProp> </ResponseAssertion> <hashTree/> - <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor: Extarct product id" enabled="true"> + <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor: Extract product id" enabled="true"> <stringProp name="XPathExtractor.default"></stringProp> <stringProp name="XPathExtractor.refname">simple_product_id</stringProp> <stringProp name="XPathExtractor.xpathQuery">.//input[@type="hidden" and @name="product"]/@value</stringProp> @@ -533,7 +528,7 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> @@ -541,7 +536,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -589,7 +583,7 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}${configurable_product_url_key}${url_suffix}</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> @@ -597,7 +591,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -612,7 +605,7 @@ <intProp name="Assertion.test_type">2</intProp> </ResponseAssertion> <hashTree/> - <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor: Extarct product id" enabled="true"> + <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor: Extract product id" enabled="true"> <stringProp name="XPathExtractor.default"></stringProp> <stringProp name="XPathExtractor.refname">configurable_product_id</stringProp> <stringProp name="XPathExtractor.xpathQuery">.//input[@type="hidden" and @name="product"]/@value</stringProp> @@ -621,7 +614,7 @@ <boolProp name="XPathExtractor.namespace">false</boolProp> </XPathExtractor> <hashTree/> - <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extarct product attribute id" enabled="true"> + <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product attribute id" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">configurable_attribute_id</stringProp> <stringProp name="RegexExtractor.regex">"spConfig":[\s]*\{"attributes":\{"(\d+)"</stringProp> @@ -630,7 +623,7 @@ <stringProp name="RegexExtractor.match_number">1</stringProp> </RegexExtractor> <hashTree/> - <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extarct product attribute option id" enabled="true"> + <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product attribute option id" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">configurable_option_id</stringProp> <stringProp name="RegexExtractor.regex">"options":\[\{"id":"(\d+)"</stringProp> @@ -681,7 +674,7 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> @@ -689,7 +682,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -737,7 +729,7 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}checkout/onepage/</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> @@ -745,7 +737,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -830,15 +821,14 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -987,15 +977,14 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}checkout/onepage/saveBilling/</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1058,15 +1047,14 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}checkout/onepage/saveShippingMethod/</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1122,15 +1110,14 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}checkout/onepage/savePayment/</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1187,15 +1174,14 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}checkout/onepage/saveOrder/</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1222,7 +1208,7 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}checkout/onepage/success/</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> @@ -1230,7 +1216,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1258,15 +1243,14 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1344,6 +1328,9 @@ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> + <hostname>true</hostname> + <threadCounts>true</threadCounts> + <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">${response_time_file_name}</stringProp> diff --git a/dev/tests/performance/testsuite/_samples/_template.jmx b/dev/tests/performance/testsuite/_samples/_template.jmx index 1effe714f7bbb3d7fa93632793245cdedad049d3..2602b87dade56c7b2bea8e561c2889da1141515b 100644 --- a/dev/tests/performance/testsuite/_samples/_template.jmx +++ b/dev/tests/performance/testsuite/_samples/_template.jmx @@ -1,13 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * @category Magento - * @package performance_tests * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ --> -<jmeterTestPlan version="1.2" properties="2.1"> +<jmeterTestPlan version="1.2" properties="2.7" jmeter="2.12 r1636949"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> @@ -64,8 +62,10 @@ <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp> <stringProp name="HTTPSampler.path"></stringProp> + <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp> + <stringProp name="HTTPSampler.concurrentPool">4</stringProp> </ConfigTestElement> <hashTree/> <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true"> @@ -101,6 +101,9 @@ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> + <hostname>true</hostname> + <threadCounts>true</threadCounts> + <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename"></stringProp> diff --git a/dev/tests/performance/testsuite/add_to_cart.jmx b/dev/tests/performance/testsuite/add_to_cart.jmx index b6a872202945507a5fa61f6792518172cea810dc..ec07b71db12101578fa518576a0652d00dd548d1 100644 --- a/dev/tests/performance/testsuite/add_to_cart.jmx +++ b/dev/tests/performance/testsuite/add_to_cart.jmx @@ -1,13 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * @category Magento - * @package performance_tests * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ --> -<jmeterTestPlan version="1.2" properties="2.1"> +<jmeterTestPlan version="1.2" properties="2.7" jmeter="2.12 r1636949"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> @@ -60,7 +58,7 @@ </collectionProp> </Arguments> <hashTree/> - <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Add to Cart - Product View" enabled="true"> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add to Cart - Product View" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> @@ -68,7 +66,7 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}${product_url_key}</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> @@ -78,7 +76,7 @@ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> - </HTTPSampler> + </HTTPSamplerProxy> <hashTree> <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract "product_id"" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> @@ -121,7 +119,7 @@ </ResponseAssertion> <hashTree/> </hashTree> - <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Cart Add Product & View Redirect" enabled="true"> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Cart Add Product & View Redirect" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="product" elementType="HTTPArgument"> @@ -151,8 +149,8 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/product/${product_id}/</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> @@ -161,7 +159,7 @@ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> - </HTTPSampler> + </HTTPSamplerProxy> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> @@ -175,7 +173,7 @@ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> <stringProp name="1554014413"><a href="${base_uri}${product_url_key}">${product_name}</a></stringProp> - <stringProp name="1472794794">You added ${product_name} to your shopping cart.</stringProp> + <stringProp name="-149996652">You added ${product_name} to your shopping cart.</stringProp> </collectionProp> <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> <boolProp name="Assertion.assume_success">false</boolProp> @@ -197,9 +195,11 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp> <stringProp name="HTTPSampler.path">${base_path}</stringProp> + <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp> + <stringProp name="HTTPSampler.concurrentPool">4</stringProp> </ConfigTestElement> <hashTree/> </hashTree> @@ -230,6 +230,9 @@ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> + <hostname>true</hostname> + <threadCounts>true</threadCounts> + <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename"></stringProp> diff --git a/dev/tests/performance/testsuite/advanced_search.jmx b/dev/tests/performance/testsuite/advanced_search.jmx index f0c4b5ea01fe28b23c71dcf980de62ac0d37af29..9b9679b2311b6bf69094920dfb2c42bc49b6ec5f 100644 --- a/dev/tests/performance/testsuite/advanced_search.jmx +++ b/dev/tests/performance/testsuite/advanced_search.jmx @@ -1,13 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * @category Magento - * @package performance_tests * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ --> -<jmeterTestPlan version="1.2" properties="2.3"> +<jmeterTestPlan version="1.2" properties="2.7" jmeter="2.12 r1636949"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Advanced Search" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> @@ -69,7 +67,7 @@ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> - <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> @@ -81,14 +79,13 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assertion: Header Presence" enabled="true"> <collectionProp name="Asserion.test_strings"> - <stringProp name="-462078532">Advanced Search</stringProp> + <stringProp name="-1680539802">Advanced Search</stringProp> </collectionProp> <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> <boolProp name="Assertion.assume_success">false</boolProp> @@ -143,19 +140,18 @@ </elementProp> </collectionProp> </elementProp> - <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${PATH}catalogsearch/advanced/result/</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -215,6 +211,9 @@ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> + <hostname>true</hostname> + <threadCounts>true</threadCounts> + <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename"></stringProp> @@ -249,6 +248,21 @@ </collectionProp> </HeaderManager> <hashTree/> + <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp> + <stringProp name="HTTPSampler.path"></stringProp> + <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp> + <stringProp name="HTTPSampler.concurrentPool">4</stringProp> + </ConfigTestElement> + <hashTree/> </hashTree> </hashTree> </jmeterTestPlan> diff --git a/dev/tests/performance/testsuite/backend.jmx b/dev/tests/performance/testsuite/backend.jmx index fbf480529e8084e7895f66a1541972d697f9e046..7108005cdfa54d60462f05c561aff65d064fec08 100644 --- a/dev/tests/performance/testsuite/backend.jmx +++ b/dev/tests/performance/testsuite/backend.jmx @@ -1,13 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * @category Magento - * @package performance_tests * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ --> -<jmeterTestPlan version="1.2" properties="2.4" jmeter="2.9 r1437961"> +<jmeterTestPlan version="1.2" properties="2.7" jmeter="2.12 r1636949"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Backend High Load Testing" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> @@ -88,7 +86,7 @@ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> - <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> @@ -100,14 +98,13 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Total Number of Products" enabled="true"> <collectionProp name="Asserion.test_strings"> - <stringProp name="-1786510475"><h1 class="title">Products</h1></stringProp> + <stringProp name="658046956"><h1 class="title">Products</h1></stringProp> <stringProp name="-1952867632">Total ${products_number} records found</stringProp> </collectionProp> <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> @@ -120,26 +117,25 @@ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> - <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF8</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${ADMIN_PATH}customer/</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Total Number of Customers" enabled="true"> <collectionProp name="Asserion.test_strings"> - <stringProp name="-5737002"><h1 class="title">Customers</h1></stringProp> + <stringProp name="-1533867969"><h1 class="title">Customers</h1></stringProp> <stringProp name="1843270971">Total ${customers_number} records found</stringProp> </collectionProp> <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> @@ -152,19 +148,18 @@ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> - <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF8</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${ADMIN_PATH}sales/order/</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -185,6 +180,21 @@ <boolProp name="CookieManager.clearEachIteration">true</boolProp> </CookieManager> <hashTree/> + <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp> + <stringProp name="HTTPSampler.path"></stringProp> + <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp> + <stringProp name="HTTPSampler.concurrentPool">4</stringProp> + </ConfigTestElement> + <hashTree/> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> @@ -212,6 +222,9 @@ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> + <hostname>true</hostname> + <threadCounts>true</threadCounts> + <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename"></stringProp> diff --git a/dev/tests/performance/testsuite/category_view.jmx b/dev/tests/performance/testsuite/category_view.jmx index c5954e9be980fd0b3cb30a2db248413238bc2f6e..5697ace521dd272df24023823501f3378d6998e2 100644 --- a/dev/tests/performance/testsuite/category_view.jmx +++ b/dev/tests/performance/testsuite/category_view.jmx @@ -1,13 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * @category Magento - * @package performance_tests * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ --> -<jmeterTestPlan version="1.2" properties="2.2"> +<jmeterTestPlan version="1.2" properties="2.7" jmeter="2.12 r1636949"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Category View" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> @@ -64,11 +62,11 @@ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> - <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${PATH}${CATEGORY_URI}</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> @@ -76,7 +74,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -105,7 +102,7 @@ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> <stringProp name="-1004972625">Category 1</stringProp> - <stringProp name="952135968">Simple Product</stringProp> + <stringProp name="1413426305">Simple Product</stringProp> </collectionProp> <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> <boolProp name="Assertion.assume_success">false</boolProp> @@ -114,6 +111,21 @@ <hashTree/> </hashTree> </hashTree> + <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp> + <stringProp name="HTTPSampler.path"></stringProp> + <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp> + <stringProp name="HTTPSampler.concurrentPool">4</stringProp> + </ConfigTestElement> + <hashTree/> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> @@ -141,6 +153,9 @@ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> + <hostname>true</hostname> + <threadCounts>true</threadCounts> + <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename"></stringProp> diff --git a/dev/tests/performance/testsuite/checkout.jmx b/dev/tests/performance/testsuite/checkout.jmx index 5dda04cb25a9e0a66328da0833506d92c7f7a71a..aa9c58a401a7a44444d236e723da72d3951057e7 100644 --- a/dev/tests/performance/testsuite/checkout.jmx +++ b/dev/tests/performance/testsuite/checkout.jmx @@ -1,13 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * @category Magento - * @package performance_tests * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ --> -<jmeterTestPlan version="1.2" properties="2.3"> +<jmeterTestPlan version="1.2" properties="2.7" jmeter="2.12 r1636949"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="One Page Checkout" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> @@ -74,7 +72,7 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${ADMIN_PATH}sales/order/</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> @@ -82,7 +80,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -172,7 +169,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -250,14 +246,13 @@ <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${PATH}checkout/cart/add/product/${product_id}/</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -307,7 +302,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -339,14 +333,13 @@ <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${PATH}checkout/onepage/saveMethod/</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -526,14 +519,13 @@ <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${PATH}checkout/onepage/saveBilling/</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -586,14 +578,13 @@ <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${PATH}checkout/onepage/getAdditional/</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -648,7 +639,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -692,14 +682,13 @@ <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${PATH}checkout/onepage/saveShippingMethod/</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -752,14 +741,13 @@ <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${PATH}checkout/onepage/progress/</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -799,14 +787,13 @@ <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${PATH}checkout/onepage/savePayment/</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -859,14 +846,13 @@ <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${PATH}checkout/onepage/progress/</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -914,14 +900,13 @@ <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${PATH}checkout/onepage/saveOrder/</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -981,7 +966,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1067,6 +1051,9 @@ if (numAfter !== null) { // The asserion is called for every sampler, but we wan <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> + <hostname>true</hostname> + <threadCounts>true</threadCounts> + <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename"></stringProp> @@ -1081,8 +1068,9 @@ if (numAfter !== null) { // The asserion is called for every sampler, but we wan <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol">http</stringProp> - <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp> <stringProp name="HTTPSampler.path"></stringProp> + <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp> <stringProp name="HTTPSampler.concurrentPool">4</stringProp> </ConfigTestElement> <hashTree/> diff --git a/dev/tests/performance/testsuite/home_page.jmx b/dev/tests/performance/testsuite/home_page.jmx index 91f82ddcaecc43aa548b832ad6a83bdeb714ccea..b335bdceb5ac27c8275ba7791b7f0e423ff75c52 100644 --- a/dev/tests/performance/testsuite/home_page.jmx +++ b/dev/tests/performance/testsuite/home_page.jmx @@ -1,13 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * @category Magento - * @package performance_tests * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ --> -<jmeterTestPlan version="1.2" properties="2.5" jmeter="2.10 r1533061"> +<jmeterTestPlan version="1.2" properties="2.7" jmeter="2.12 r1636949"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> @@ -53,7 +51,7 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> @@ -61,7 +59,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -105,11 +102,29 @@ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> + <hostname>true</hostname> + <threadCounts>true</threadCounts> + <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> + <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain"></stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp> + <stringProp name="HTTPSampler.path"></stringProp> + <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp> + <stringProp name="HTTPSampler.concurrentPool">4</stringProp> + </ConfigTestElement> + <hashTree/> </hashTree> </hashTree> </jmeterTestPlan> diff --git a/dev/tests/performance/testsuite/product_edit.jmx b/dev/tests/performance/testsuite/product_edit.jmx index 199c36235c16396d48dcfed93ed116ec14dd5b72..384381cac015b0f43400f9790a8539e25d95bee9 100644 --- a/dev/tests/performance/testsuite/product_edit.jmx +++ b/dev/tests/performance/testsuite/product_edit.jmx @@ -1,13 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * @category Magento - * @package performance_tests * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ --> -<jmeterTestPlan version="1.2" properties="2.3"> +<jmeterTestPlan version="1.2" properties="2.7" jmeter="2.12 r1636949"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Admin - Edit Product" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> @@ -100,11 +98,11 @@ </elementProp> </collectionProp> </elementProp> - <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${ADMIN_PATH}catalog/product/grid/product_filter/${grid_product_filter}/</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> @@ -112,7 +110,6 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -163,11 +160,11 @@ vars.put("grid_product_filter", gridProductFilter);</stringProp> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> - <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${ADMIN_PATH}catalog/product/edit/id/${product_id}/</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> @@ -175,7 +172,6 @@ vars.put("grid_product_filter", gridProductFilter);</stringProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -193,6 +189,21 @@ vars.put("grid_product_filter", gridProductFilter);</stringProp> </ResponseAssertion> <hashTree/> </hashTree> + <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp> + <stringProp name="HTTPSampler.path"></stringProp> + <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp> + <stringProp name="HTTPSampler.concurrentPool">4</stringProp> + </ConfigTestElement> + <hashTree/> <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true"> <collectionProp name="CookieManager.cookies"/> <boolProp name="CookieManager.clearEachIteration">true</boolProp> @@ -226,6 +237,9 @@ vars.put("grid_product_filter", gridProductFilter);</stringProp> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> + <hostname>true</hostname> + <threadCounts>true</threadCounts> + <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename"></stringProp> diff --git a/dev/tests/performance/testsuite/product_view.jmx b/dev/tests/performance/testsuite/product_view.jmx index 44598d85913f78269299018dd404c4a1d22c9a6a..218f3478b1101a1fba42b6fed7ee60cd770b7dac 100644 --- a/dev/tests/performance/testsuite/product_view.jmx +++ b/dev/tests/performance/testsuite/product_view.jmx @@ -1,13 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * @category Magento - * @package performance_tests * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ --> -<jmeterTestPlan version="1.2" properties="2.1"> +<jmeterTestPlan version="1.2" properties="2.7" jmeter="2.12 r1636949"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Product View" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> @@ -55,15 +53,15 @@ <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> - <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Product View" enabled="true"> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Product View" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> - <stringProp name="HTTPSampler.domain">${base_host}</stringProp> + <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${base_path}${product_url_key}</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> @@ -73,7 +71,7 @@ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> - </HTTPSampler> + </HTTPSamplerProxy> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> @@ -86,6 +84,21 @@ <hashTree/> </hashTree> </hashTree> + <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${base_host}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp> + <stringProp name="HTTPSampler.path"></stringProp> + <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp> + <stringProp name="HTTPSampler.concurrentPool">4</stringProp> + </ConfigTestElement> + <hashTree/> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> @@ -113,6 +126,9 @@ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> + <hostname>true</hostname> + <threadCounts>true</threadCounts> + <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename"></stringProp> diff --git a/dev/tests/performance/testsuite/quick_search.jmx b/dev/tests/performance/testsuite/quick_search.jmx index 8aaf25840e63788e5bd9e391352801222c55a4db..82ab754249e5b72acc767bdb30f25db1faf2b8da 100644 --- a/dev/tests/performance/testsuite/quick_search.jmx +++ b/dev/tests/performance/testsuite/quick_search.jmx @@ -1,13 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * @category Magento - * @package performance_tests * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ --> -<jmeterTestPlan version="1.2" properties="2.1"> +<jmeterTestPlan version="1.2" properties="2.7" jmeter="2.12 r1636949"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Quick Search" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> @@ -60,7 +58,7 @@ <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> - <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Quick Search" enabled="true"> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Quick Search" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="q" elementType="HTTPArgument"> @@ -72,7 +70,7 @@ </elementProp> </collectionProp> </elementProp> - <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> @@ -86,7 +84,7 @@ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> - </HTTPSampler> + </HTTPSamplerProxy> <hashTree> <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> <collectionProp name="HeaderManager.headers"> @@ -119,7 +117,7 @@ <hashTree/> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> - <stringProp name="-887183200">Search results for: '${search_query}'</stringProp> + <stringProp name="-382529492">Search results for: '${search_query}'</stringProp> </collectionProp> <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> <boolProp name="Assertion.assume_success">false</boolProp> @@ -128,6 +126,21 @@ <hashTree/> </hashTree> </hashTree> + <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp> + <stringProp name="HTTPSampler.path"></stringProp> + <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp> + <stringProp name="HTTPSampler.concurrentPool">4</stringProp> + </ConfigTestElement> + <hashTree/> <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true"> <collectionProp name="CookieManager.cookies"/> <boolProp name="CookieManager.clearEachIteration">true</boolProp> diff --git a/dev/tests/performance/testsuite/reusable/admin_login.jmx b/dev/tests/performance/testsuite/reusable/admin_login.jmx index 6d271217d8989d6d97eb0aaf52f9627c5ddcb9f8..57f291edb6a81a9f407a7e481a46e5b6781b3ba6 100644 --- a/dev/tests/performance/testsuite/reusable/admin_login.jmx +++ b/dev/tests/performance/testsuite/reusable/admin_login.jmx @@ -1,13 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /** - * @category Magento - * @package performance_tests * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ --> -<jmeterTestPlan version="1.2" properties="2.4" jmeter="2.9 r1437961"> +<jmeterTestPlan version="1.2" properties="2.7" jmeter="2.12 r1636949"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Admin - Login" enabled="true"> <stringProp name="TestPlan.comments">Reusable scenario to log-in to admin backend. Needs: HOST, ADMIN_PATH, ADMIN_USER, ADMIN_PASSWORD, Http Cookie Manager</stringProp> @@ -29,7 +27,7 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${ADMIN_PATH}</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> @@ -37,14 +35,13 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true"> <collectionProp name="Asserion.test_strings"> - <stringProp name="1661392365">Log into Magento Admin Page</stringProp> + <stringProp name="731356397">Log into Magento Admin Page</stringProp> </collectionProp> <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> <boolProp name="Assertion.assume_success">false</boolProp> @@ -91,11 +88,11 @@ </elementProp> </collectionProp> </elementProp> - <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">${ADMIN_PATH}</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> @@ -103,14 +100,13 @@ <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert logged-in" enabled="true"> <collectionProp name="Asserion.test_strings"> - <stringProp name="934841248">${ADMIN_USER}</stringProp> + <stringProp name="-348322869">${ADMIN_USER}</stringProp> <stringProp name="-989788387">Account Setting</stringProp> <stringProp name="374398571">Sign Out</stringProp> </collectionProp> @@ -176,6 +172,21 @@ </Arguments> <hashTree/> </hashTree> + <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${HOST}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp> + <stringProp name="HTTPSampler.path"></stringProp> + <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp> + <stringProp name="HTTPSampler.concurrentPool">4</stringProp> + </ConfigTestElement> + <hashTree/> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> @@ -203,6 +214,9 @@ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> + <hostname>true</hostname> + <threadCounts>true</threadCounts> + <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename"></stringProp> diff --git a/dev/tools/performance-toolkit/README.txt b/dev/tools/performance-toolkit/README.txt index 24e2a3cafd0c7f2f6a6d22b1e47ee45d1d958ce3..7f09be4ad422af069d0705edfd48a9ed227234ad 100644 --- a/dev/tools/performance-toolkit/README.txt +++ b/dev/tools/performance-toolkit/README.txt @@ -85,22 +85,3 @@ Details http://jmeter.apache.org/usermanual/component_reference.html#View_Result About other types read on http://jmeter.apache.org/usermanual/component_reference.html - - -Testing environment ------------ - -jMeter: apache-jmeter-2.11 -OS (where jMeter is running): Windows 7 SP1 -Server (where Magento is hosted): Intel(R) Core(TM)2 Duo CPU T7700 @2.40GHz, memtotal 4gb. -PHP: 5.4.19 (memory_limit 2Gb) -MySQL: 5.5.29 MySQL Community Server -Magento version: ver. 2.0.0.0-dev70 (rev 16b68a0f8e0fad4375f33b7238e2f2964ac3aadc) -Magento database (Small plan in Fixture Generation Tool): -jMeter parameters (all default parameters): - users: 100 - ramp_period: 300 - view_product_add_to_cart_percent: 62 - view_catalog_percent: 30 - guest_checkout_percent: 4 - customer_checkout_percent: 4 diff --git a/dev/tools/performance-toolkit/benchmark.jmx b/dev/tools/performance-toolkit/benchmark.jmx index 7d3d7aef7fa0ab39b7dce61fa73f45e9972e59bd..dba0ec039cd9c0bfd757424f3be3cfb379918ec5 100644 --- a/dev/tools/performance-toolkit/benchmark.jmx +++ b/dev/tools/performance-toolkit/benchmark.jmx @@ -5,7 +5,7 @@ * See COPYING.txt for license details. */ --> -<jmeterTestPlan version="1.2" properties="2.6" jmeter="2.11 r1554548"> +<jmeterTestPlan version="1.2" properties="2.7" jmeter="2.12 r1636949"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Toolkit" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> @@ -122,9 +122,10 @@ <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> - <stringProp name="HTTPSampler.protocol"></stringProp> - <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.protocol">http</stringProp> + <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp> <stringProp name="HTTPSampler.path"></stringProp> + <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp> <stringProp name="HTTPSampler.concurrentPool">4</stringProp> </ConfigTestElement> <hashTree/> @@ -249,7 +250,6 @@ if (!slash.equals(path.substring(path.length() -1)) || !slash.equals(path.substr <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> <stringProp name="TestPlan.comments">Site - Get Category 1</stringProp> @@ -322,7 +322,6 @@ props.put("category_name", vars.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -340,7 +339,7 @@ props.put("category_name", vars.get("category_name"));</stri <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">simple_products_url_keys</stringProp> - <stringProp name="RegexExtractor.regex"><a class="product-item-link" href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}">Simple</stringProp> + <stringProp name="RegexExtractor.regex"><a class="product-item-link"\s*href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}"></stringProp> <stringProp name="RegexExtractor.template">$2$</stringProp> <stringProp name="RegexExtractor.default"></stringProp> <stringProp name="RegexExtractor.match_number">-1</stringProp> @@ -369,7 +368,6 @@ props.put("category_name", vars.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -477,7 +475,6 @@ productList.add(productMap); </stringProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -495,7 +492,7 @@ productList.add(productMap); </stringProp> <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">configurable_products_url_keys</stringProp> - <stringProp name="RegexExtractor.regex"><a class="product-item-link" href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}">Configurable</stringProp> + <stringProp name="RegexExtractor.regex"><a class="product-item-link"\s*href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}">\s*Configurable</stringProp> <stringProp name="RegexExtractor.template">$2$</stringProp> <stringProp name="RegexExtractor.default"></stringProp> <stringProp name="RegexExtractor.match_number">-1</stringProp> @@ -524,7 +521,6 @@ productList.add(productMap); </stringProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -674,7 +670,6 @@ productList.add(productMap); </stringProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -755,7 +750,6 @@ productList.add(productMap); </stringProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -786,7 +780,6 @@ productList.add(productMap); </stringProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -856,7 +849,6 @@ vars.put("searchData", new String(Base64Encoder.encode(searchData)));< <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -996,7 +988,6 @@ if (orders > 0) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1074,7 +1065,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1110,7 +1100,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1146,7 +1135,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1183,7 +1171,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1220,7 +1207,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1314,7 +1300,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1350,7 +1335,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1386,7 +1370,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1404,7 +1387,7 @@ vars.put("category_name", props.get("category_name"));</stri <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form action" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">simple_product_1_form_action</stringProp> - <stringProp name="RegexExtractor.regex"><form action="([^'"]+)" method="post" id="product_addtocart_form"></stringProp> + <stringProp name="RegexExtractor.regex"><form action="([^'"]+)"\s*method="post"\s*id="product_addtocart_form"></stringProp> <stringProp name="RegexExtractor.template">$1$</stringProp> <stringProp name="RegexExtractor.default"></stringProp> <stringProp name="RegexExtractor.match_number">1</stringProp> @@ -1479,7 +1462,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1524,7 +1506,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1542,7 +1523,7 @@ vars.put("category_name", props.get("category_name"));</stri <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form action" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">simple_product_2_form_action</stringProp> - <stringProp name="RegexExtractor.regex"><form action="([^'"]+)" method="post" id="product_addtocart_form"></stringProp> + <stringProp name="RegexExtractor.regex"><form action="([^'"]+)"\s*method="post"\s*id="product_addtocart_form"></stringProp> <stringProp name="RegexExtractor.template">$1$</stringProp> <stringProp name="RegexExtractor.default"></stringProp> <stringProp name="RegexExtractor.match_number">1</stringProp> @@ -1617,7 +1598,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1662,7 +1642,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1680,7 +1659,7 @@ vars.put("category_name", props.get("category_name"));</stri <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form action" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">configurable_product_form_action</stringProp> - <stringProp name="RegexExtractor.regex"><form action="([^'"]+)" method="post" id="product_addtocart_form"></stringProp> + <stringProp name="RegexExtractor.regex"><form action="([^'"]+)"\s*method="post"\s*id="product_addtocart_form"></stringProp> <stringProp name="RegexExtractor.template">$1$</stringProp> <stringProp name="RegexExtractor.default"></stringProp> <stringProp name="RegexExtractor.match_number">1</stringProp> @@ -1762,7 +1741,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1864,7 +1842,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1900,7 +1877,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1936,7 +1912,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -1954,7 +1929,7 @@ vars.put("category_name", props.get("category_name"));</stri <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form action" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">simple_product_1_form_action</stringProp> - <stringProp name="RegexExtractor.regex"><form action="([^'"]+)" method="post" id="product_addtocart_form"></stringProp> + <stringProp name="RegexExtractor.regex"><form action="([^'"]+)"\s*method="post"\s*id="product_addtocart_form"></stringProp> <stringProp name="RegexExtractor.template">$1$</stringProp> <stringProp name="RegexExtractor.default"></stringProp> <stringProp name="RegexExtractor.match_number">1</stringProp> @@ -2029,7 +2004,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -2074,7 +2048,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -2092,7 +2065,7 @@ vars.put("category_name", props.get("category_name"));</stri <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form action" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">simple_product_2_form_action</stringProp> - <stringProp name="RegexExtractor.regex"><form action="([^'"]+)" method="post" id="product_addtocart_form"></stringProp> + <stringProp name="RegexExtractor.regex"><form action="([^'"]+)"\s*method="post"\s*id="product_addtocart_form"></stringProp> <stringProp name="RegexExtractor.template">$1$</stringProp> <stringProp name="RegexExtractor.default"></stringProp> <stringProp name="RegexExtractor.match_number">1</stringProp> @@ -2167,7 +2140,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -2212,7 +2184,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -2230,7 +2201,7 @@ vars.put("category_name", props.get("category_name"));</stri <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form action" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">configurable_product_form_action</stringProp> - <stringProp name="RegexExtractor.regex"><form action="([^'"]+)" method="post" id="product_addtocart_form"></stringProp> + <stringProp name="RegexExtractor.regex"><form action="([^'"]+)"\s*method="post"\s*id="product_addtocart_form"></stringProp> <stringProp name="RegexExtractor.template">$1$</stringProp> <stringProp name="RegexExtractor.default"></stringProp> <stringProp name="RegexExtractor.match_number">1</stringProp> @@ -2312,7 +2283,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -2357,7 +2327,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -2444,7 +2413,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -2630,7 +2598,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -2697,7 +2664,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -2771,7 +2737,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -2837,7 +2802,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -2873,7 +2837,6 @@ vars.put("category_name", props.get("category_name"));</stri <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -2983,7 +2946,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -3019,7 +2981,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -3055,7 +3016,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -3073,7 +3033,7 @@ if (emailsCount < 1) { <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form action" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">simple_product_1_form_action</stringProp> - <stringProp name="RegexExtractor.regex"><form action="([^'"]+)" method="post" id="product_addtocart_form"></stringProp> + <stringProp name="RegexExtractor.regex"><form action="([^'"]+)"\s*method="post"\s*id="product_addtocart_form"></stringProp> <stringProp name="RegexExtractor.template">$1$</stringProp> <stringProp name="RegexExtractor.default"></stringProp> <stringProp name="RegexExtractor.match_number">1</stringProp> @@ -3148,7 +3108,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -3193,7 +3152,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -3211,7 +3169,7 @@ if (emailsCount < 1) { <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form action" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">simple_product_2_form_action</stringProp> - <stringProp name="RegexExtractor.regex"><form action="([^'"]+)" method="post" id="product_addtocart_form"></stringProp> + <stringProp name="RegexExtractor.regex"><form action="([^'"]+)"\s*method="post"\s*id="product_addtocart_form"></stringProp> <stringProp name="RegexExtractor.template">$1$</stringProp> <stringProp name="RegexExtractor.default"></stringProp> <stringProp name="RegexExtractor.match_number">1</stringProp> @@ -3286,7 +3244,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -3331,7 +3288,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -3349,7 +3305,7 @@ if (emailsCount < 1) { <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form action" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">configurable_product_form_action</stringProp> - <stringProp name="RegexExtractor.regex"><form action="([^'"]+)" method="post" id="product_addtocart_form"></stringProp> + <stringProp name="RegexExtractor.regex"><form action="([^'"]+)"\s*method="post"\s*id="product_addtocart_form"></stringProp> <stringProp name="RegexExtractor.template">$1$</stringProp> <stringProp name="RegexExtractor.default"></stringProp> <stringProp name="RegexExtractor.match_number">1</stringProp> @@ -3431,7 +3387,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -3476,7 +3431,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -3570,7 +3524,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -3728,7 +3681,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -3800,7 +3752,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -3865,7 +3816,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -3931,7 +3881,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -3967,7 +3916,6 @@ if (emailsCount < 1) { <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> - <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSamplerProxy> @@ -4054,6 +4002,9 @@ props.remove("customer_emails_list");</stringProp> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> + <hostname>true</hostname> + <threadCounts>true</threadCounts> + <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">${report_save_path}/view-results-tree.log</stringProp> @@ -4086,6 +4037,9 @@ props.remove("customer_emails_list");</stringProp> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <url>true</url> + <hostname>true</hostname> + <threadCounts>true</threadCounts> + <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">${report_save_path}/detailed-urls-report.log</stringProp> @@ -4118,6 +4072,9 @@ props.remove("customer_emails_list");</stringProp> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> + <hostname>true</hostname> + <threadCounts>true</threadCounts> + <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">${report_save_path}/summary-report.log</stringProp> diff --git a/lib/internal/Magento/Framework/App/Action/AbstractAction.php b/lib/internal/Magento/Framework/App/Action/AbstractAction.php index b0027ca824ec085480664fcbfe0ce6d36e0c60bd..d6119f9fe876b972e7a7513050c4af994d95bf53 100644 --- a/lib/internal/Magento/Framework/App/Action/AbstractAction.php +++ b/lib/internal/Magento/Framework/App/Action/AbstractAction.php @@ -24,6 +24,11 @@ abstract class AbstractAction implements \Magento\Framework\App\ActionInterface */ protected $resultRedirectFactory; + /** + * @var \Magento\Framework\Controller\ResultFactory + */ + protected $resultFactory; + /** * @param \Magento\Framework\App\Action\Context $context */ @@ -33,6 +38,7 @@ abstract class AbstractAction implements \Magento\Framework\App\ActionInterface $this->_request = $context->getRequest(); $this->_response = $context->getResponse(); $this->resultRedirectFactory = $context->getResultRedirectFactory(); + $this->resultFactory = $context->getResultFactory(); } /** diff --git a/lib/internal/Magento/Framework/App/Action/Context.php b/lib/internal/Magento/Framework/App/Action/Context.php index 22aef5cc083c9dd8278100b6afcd6fffc6858884..a812800bc059948ac5b0cdd85eb04f7891445379 100644 --- a/lib/internal/Magento/Framework/App/Action/Context.php +++ b/lib/internal/Magento/Framework/App/Action/Context.php @@ -5,6 +5,8 @@ */ namespace Magento\Framework\App\Action; +use Magento\Framework\Controller\ResultFactory; + class Context implements \Magento\Framework\ObjectManager\ContextInterface { /** @@ -57,6 +59,11 @@ class Context implements \Magento\Framework\ObjectManager\ContextInterface */ protected $resultRedirectFactory; + /** + * @var \Magento\Framework\Controller\ResultFactory + */ + protected $resultFactory; + /** * @param \Magento\Framework\App\RequestInterface $request * @param \Magento\Framework\App\ResponseInterface $response @@ -68,6 +75,7 @@ class Context implements \Magento\Framework\ObjectManager\ContextInterface * @param \Magento\Framework\App\ViewInterface $view * @param \Magento\Framework\Message\ManagerInterface $messageManager * @param \Magento\Framework\Controller\Result\RedirectFactory $resultRedirectFactory + * @param \Magento\Framework\Controller\ResultFactory $resultFactory * * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ @@ -81,7 +89,8 @@ class Context implements \Magento\Framework\ObjectManager\ContextInterface \Magento\Framework\App\ActionFlag $actionFlag, \Magento\Framework\App\ViewInterface $view, \Magento\Framework\Message\ManagerInterface $messageManager, - \Magento\Framework\Controller\Result\RedirectFactory $resultRedirectFactory + \Magento\Framework\Controller\Result\RedirectFactory $resultRedirectFactory, + ResultFactory $resultFactory ) { $this->_request = $request; $this->_response = $response; @@ -93,6 +102,7 @@ class Context implements \Magento\Framework\ObjectManager\ContextInterface $this->_view = $view; $this->messageManager = $messageManager; $this->resultRedirectFactory = $resultRedirectFactory; + $this->resultFactory = $resultFactory; } /** @@ -174,4 +184,12 @@ class Context implements \Magento\Framework\ObjectManager\ContextInterface { return $this->resultRedirectFactory; } + + /** + * @return \Magento\Framework\Controller\ResultFactory + */ + public function getResultFactory() + { + return $this->resultFactory; + } } diff --git a/lib/internal/Magento/Framework/AppInterface.php b/lib/internal/Magento/Framework/AppInterface.php index 67e77a1191cb06fcd64edd0a0283184976913921..7bf9c70ada1b61682217450ee8aa846de7e01943 100644 --- a/lib/internal/Magento/Framework/AppInterface.php +++ b/lib/internal/Magento/Framework/AppInterface.php @@ -17,7 +17,7 @@ interface AppInterface /** * Magento version */ - const VERSION = '0.74.0-beta5'; + const VERSION = '0.74.0-beta6'; /** * Launch application diff --git a/lib/internal/Magento/Framework/Phrase.php b/lib/internal/Magento/Framework/Phrase.php index 992834a4816e1c14f8a56c488a739ed97c3d70f4..f4194f69b02d8c46e2907d43dc8574a2f503044f 100644 --- a/lib/internal/Magento/Framework/Phrase.php +++ b/lib/internal/Magento/Framework/Phrase.php @@ -9,7 +9,7 @@ namespace Magento\Framework; use Zend\Stdlib\JsonSerializable; use Magento\Framework\Phrase\RendererInterface; -use Magento\Framework\Phrase\Renderer\Placeholder; +use Magento\Framework\Phrase\Renderer\Placeholder as RendererPlaceholder; class Phrase implements JsonSerializable { @@ -52,11 +52,10 @@ class Phrase implements JsonSerializable */ public static function getRenderer() { - if (self::$renderer) { - return self::$renderer; - } else { - self::$renderer = new \Magento\Framework\Phrase\Renderer\Placeholder(); + if (!self::$renderer) { + self::$renderer = new RendererPlaceholder(); } + return self::$renderer; } /** @@ -98,7 +97,11 @@ class Phrase implements JsonSerializable */ public function render() { - return self::getRenderer() ? self::getRenderer()->render([$this->text], $this->arguments) : $this->text; + try { + return self::getRenderer()->render([$this->text], $this->getArguments()); + } catch (\Exception $e) { + return $this->getText(); + } } /** diff --git a/lib/internal/Magento/Framework/Phrase/Renderer/Composite.php b/lib/internal/Magento/Framework/Phrase/Renderer/Composite.php index 4b93aee4b42b041e4b09e75a7e1355258168a371..91d8f40139887d3323815a11570418482beb3750 100644 --- a/lib/internal/Magento/Framework/Phrase/Renderer/Composite.php +++ b/lib/internal/Magento/Framework/Phrase/Renderer/Composite.php @@ -17,7 +17,7 @@ class Composite implements RendererInterface protected $_renderers; /** - * @param RendererInterface[] $renderers + * @param \Magento\Framework\Phrase\RendererInterface[] $renderers * @throws \InvalidArgumentException */ public function __construct(array $renderers) diff --git a/lib/internal/Magento/Framework/Phrase/Renderer/Inline.php b/lib/internal/Magento/Framework/Phrase/Renderer/Inline.php index 5d3f094d859909e5e105b3466afb1bf9335be1d0..0cb074943f9b7a352e7062fded30cd1d406e4280 100644 --- a/lib/internal/Magento/Framework/Phrase/Renderer/Inline.php +++ b/lib/internal/Magento/Framework/Phrase/Renderer/Inline.php @@ -7,7 +7,12 @@ */ namespace Magento\Framework\Phrase\Renderer; -class Inline implements \Magento\Framework\Phrase\RendererInterface +use Magento\Framework\Phrase\RendererInterface; +use Magento\Framework\TranslateInterface; +use Magento\Framework\Translate\Inline\ProviderInterface; +use Psr\Log\LoggerInterface; + +class Inline implements RendererInterface { /** * @var \Magento\Framework\TranslateInterface @@ -19,16 +24,24 @@ class Inline implements \Magento\Framework\Phrase\RendererInterface */ protected $inlineProvider; + /** + * @var \Psr\Log\LoggerInterface + */ + protected $logger; + /** * @param \Magento\Framework\TranslateInterface $translator * @param \Magento\Framework\Translate\Inline\ProviderInterface $inlineProvider + * @param \Psr\Log\LoggerInterface $logger */ public function __construct( - \Magento\Framework\TranslateInterface $translator, - \Magento\Framework\Translate\Inline\ProviderInterface $inlineProvider + TranslateInterface $translator, + ProviderInterface $inlineProvider, + LoggerInterface $logger ) { $this->translator = $translator; $this->inlineProvider = $inlineProvider; + $this->logger = $logger; } /** @@ -37,22 +50,29 @@ class Inline implements \Magento\Framework\Phrase\RendererInterface * @param [] $source * @param [] $arguments * @return string + * @throws \Exception + * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function render(array $source, array $arguments) { $text = end($source); - if (!$this->inlineProvider->get()->isAllowed()) { - return $text; - } + try { + if (!$this->inlineProvider->get()->isAllowed()) { + return $text; + } - if (strpos($text, '{{{') === false - || strpos($text, '}}}') === false - || strpos($text, '}}{{') === false - ) { - $text = '{{{' - . implode('}}{{', array_reverse($source)) - . '}}{{' . $this->translator->getTheme() . '}}}'; + if (strpos($text, '{{{') === false + || strpos($text, '}}}') === false + || strpos($text, '}}{{') === false + ) { + $text = '{{{' + . implode('}}{{', array_reverse($source)) + . '}}{{' . $this->translator->getTheme() . '}}}'; + } + } catch (\Exception $e) { + $this->logger->critical($e->getMessage()); + throw $e; } return $text; diff --git a/lib/internal/Magento/Framework/Phrase/Renderer/Placeholder.php b/lib/internal/Magento/Framework/Phrase/Renderer/Placeholder.php index a9e6ed62f35216dfef1549983e020221f5dc593b..db2551a0157465783a74bb8b17e0291a4c290a09 100644 --- a/lib/internal/Magento/Framework/Phrase/Renderer/Placeholder.php +++ b/lib/internal/Magento/Framework/Phrase/Renderer/Placeholder.php @@ -7,7 +7,9 @@ */ namespace Magento\Framework\Phrase\Renderer; -class Placeholder implements \Magento\Framework\Phrase\RendererInterface +use Magento\Framework\Phrase\RendererInterface; + +class Placeholder implements RendererInterface { /** * Render source text @@ -23,7 +25,7 @@ class Placeholder implements \Magento\Framework\Phrase\RendererInterface if ($arguments) { $placeholders = []; foreach (array_keys($arguments) as $key) { - $placeholders[] = "%" . (is_int($key) ? strval($key + 1) : $key); + $placeholders[] = '%' . (is_int($key) ? strval($key + 1) : $key); } $text = str_replace($placeholders, $arguments, $text); } diff --git a/lib/internal/Magento/Framework/Phrase/Renderer/Translate.php b/lib/internal/Magento/Framework/Phrase/Renderer/Translate.php index 6f981a679377e57c5924b16230d24d0ac1393f47..449b34d61c094435b6b1eb448b5d1ff7c6f3260f 100644 --- a/lib/internal/Magento/Framework/Phrase/Renderer/Translate.php +++ b/lib/internal/Magento/Framework/Phrase/Renderer/Translate.php @@ -7,21 +7,34 @@ */ namespace Magento\Framework\Phrase\Renderer; -class Translate implements \Magento\Framework\Phrase\RendererInterface +use Magento\Framework\Phrase\RendererInterface; +use Magento\Framework\TranslateInterface; +use Psr\Log\LoggerInterface; + +class Translate implements RendererInterface { /** * @var \Magento\Framework\TranslateInterface */ protected $translator; + /** + * @var \Psr\Log\LoggerInterface + */ + protected $logger; + /** * Renderer construct * * @param \Magento\Framework\TranslateInterface $translator + * @param \Psr\Log\LoggerInterface $logger */ - public function __construct(\Magento\Framework\TranslateInterface $translator) - { + public function __construct( + TranslateInterface $translator, + LoggerInterface $logger + ) { $this->translator = $translator; + $this->logger = $logger; } /** @@ -30,12 +43,19 @@ class Translate implements \Magento\Framework\Phrase\RendererInterface * @param [] $source * @param [] $arguments * @return string + * @throws \Exception + * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function render(array $source, array $arguments) { $text = end($source); - $data = $this->translator->getData(); + try { + $data = $this->translator->getData(); + } catch (\Exception $e) { + $this->logger->critical($e->getMessage()); + throw $e; + } return array_key_exists($text, $data) ? $data[$text] : $text; } diff --git a/lib/internal/Magento/Framework/Phrase/Test/Unit/Renderer/CompositeTest.php b/lib/internal/Magento/Framework/Phrase/Test/Unit/Renderer/CompositeTest.php index ebb58aeade6b561ed1216a06b92a3e7e3a9c635f..b3fccdee663776d2bebeb6622907a57c263bcb5f 100644 --- a/lib/internal/Magento/Framework/Phrase/Test/Unit/Renderer/CompositeTest.php +++ b/lib/internal/Magento/Framework/Phrase/Test/Unit/Renderer/CompositeTest.php @@ -77,4 +77,17 @@ class CompositeTest extends \PHPUnit_Framework_TestCase $this->assertEquals($resultAfterSecond, $this->object->render([$text], $arguments)); } + + public function testRenderException() + { + $message = 'something went wrong'; + $exception = new \Exception($message); + + $this->rendererOne->expects($this->once()) + ->method('render') + ->willThrowException($exception); + + $this->setExpectedException('Exception', $message); + $this->object->render(['text'], []); + } } diff --git a/lib/internal/Magento/Framework/Phrase/Test/Unit/Renderer/InlineTest.php b/lib/internal/Magento/Framework/Phrase/Test/Unit/Renderer/InlineTest.php index 59174a88a4e90dd8e97cce09d590eeab03eb6fce..68be45b7e99b7cb17065a5ed5208c3ece0a0cc38 100644 --- a/lib/internal/Magento/Framework/Phrase/Test/Unit/Renderer/InlineTest.php +++ b/lib/internal/Magento/Framework/Phrase/Test/Unit/Renderer/InlineTest.php @@ -8,28 +8,36 @@ namespace Magento\Framework\Phrase\Test\Unit\Renderer; class InlineTest extends \PHPUnit_Framework_TestCase { /** - * @var \Magento\Framework\TranslateInterface + * @var \Magento\Framework\TranslateInterface|\PHPUnit_Framework_MockObject_MockObject */ protected $translator; /** * @var \Magento\Framework\Phrase\Renderer\Translate */ - protected $_renderer; + protected $renderer; /** - * @var \Magento\Framework\Translate\Inline\ProviderInterface + * @var \Magento\Framework\Translate\Inline\ProviderInterface|\PHPUnit_Framework_MockObject_MockObject */ protected $provider; + /** + * @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject + */ + protected $loggerMock; + protected function setUp() { $this->translator = $this->getMock('Magento\Framework\TranslateInterface', [], [], '', false); $this->provider = $this->getMock('Magento\Framework\Translate\Inline\ProviderInterface', [], [], '', false); + $this->loggerMock = $this->getMockBuilder('Psr\Log\LoggerInterface') + ->getMock(); $this->renderer = new \Magento\Framework\Phrase\Renderer\Inline( $this->translator, - $this->provider + $this->provider, + $this->loggerMock ); } @@ -70,4 +78,17 @@ class InlineTest extends \PHPUnit_Framework_TestCase $this->assertEquals($text, $this->renderer->render([$text], [])); } + + public function testRenderException() + { + $message = 'something went wrong'; + $exception = new \Exception($message); + + $this->provider->expects($this->once()) + ->method('get') + ->willThrowException($exception); + + $this->setExpectedException('Exception', $message); + $this->renderer->render(['text'], []); + } } diff --git a/lib/internal/Magento/Framework/Phrase/Test/Unit/Renderer/TranslateTest.php b/lib/internal/Magento/Framework/Phrase/Test/Unit/Renderer/TranslateTest.php index 61d541127514c236838f4cb0e7ad01f0c8491c1a..e6581ae4825ed7d39bc43d47f4761fa2fbb3e60d 100644 --- a/lib/internal/Magento/Framework/Phrase/Test/Unit/Renderer/TranslateTest.php +++ b/lib/internal/Magento/Framework/Phrase/Test/Unit/Renderer/TranslateTest.php @@ -17,14 +17,24 @@ class TranslateTest extends \PHPUnit_Framework_TestCase */ protected $_renderer; + /** + * @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject + */ + protected $loggerMock; + protected function setUp() { $this->_translator = $this->getMock('Magento\Framework\TranslateInterface', [], [], '', false); + $this->loggerMock = $this->getMockBuilder('Psr\Log\LoggerInterface') + ->getMock(); $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); $this->_renderer = $objectManagerHelper->getObject( 'Magento\Framework\Phrase\Renderer\Translate', - ['translator' => $this->_translator] + [ + 'translator' => $this->_translator, + 'logger' => $this->loggerMock + ] ); } @@ -41,4 +51,17 @@ class TranslateTest extends \PHPUnit_Framework_TestCase $this->assertEquals($translate, $this->_renderer->render([$translatedText], [])); $this->assertEquals($text, $this->_renderer->render([$text], [])); } + + public function testRenderException() + { + $message = 'something went wrong'; + $exception = new \Exception($message); + + $this->_translator->expects($this->once()) + ->method('getData') + ->willThrowException($exception); + + $this->setExpectedException('Exception', $message); + $this->_renderer->render(['text'], []); + } } diff --git a/lib/internal/Magento/Framework/Reflection/TypeProcessor.php b/lib/internal/Magento/Framework/Reflection/TypeProcessor.php index f458d7bd8ece62465704e1d8ef22fd8980ec18a5..580be037ad2062b87fa247b6e5e23f89e75b9241 100644 --- a/lib/internal/Magento/Framework/Reflection/TypeProcessor.php +++ b/lib/internal/Magento/Framework/Reflection/TypeProcessor.php @@ -6,12 +6,14 @@ namespace Magento\Framework\Reflection; use Magento\Framework\Exception\SerializationException; +use Magento\Framework\Phrase; use Zend\Code\Reflection\ClassReflection; use Zend\Code\Reflection\ParameterReflection; -use Magento\Framework\Phrase; /** * Type processor of config reader properties + * + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class TypeProcessor { @@ -108,6 +110,9 @@ class TypeProcessor public function register($type) { $typeName = $this->normalizeType($type); + if (null === $typeName) { + return null; + } if (!$this->isTypeSimple($typeName) && !$this->isTypeAny($typeName)) { $typeSimple = $this->getArrayItemType($type); if (!(class_exists($typeSimple) || interface_exists($typeSimple))) { @@ -288,6 +293,9 @@ class TypeProcessor */ public function normalizeType($type) { + if ($type == 'null') { + return null; + } $normalizationMap = [ self::STRING_TYPE => self::NORMALIZED_STRING_TYPE, self::INT_TYPE => self::NORMALIZED_INT_TYPE, diff --git a/lib/internal/Magento/Framework/Test/Unit/PhraseTest.php b/lib/internal/Magento/Framework/Test/Unit/PhraseTest.php index f3e8c8d9e0195e9fd64d659d6a020d71c8f93f88..72bff033c0c7402e782aa7bd350afa041912e7fc 100755 --- a/lib/internal/Magento/Framework/Test/Unit/PhraseTest.php +++ b/lib/internal/Magento/Framework/Test/Unit/PhraseTest.php @@ -5,7 +5,7 @@ */ namespace Magento\Framework\Test\Unit; -use \Magento\Framework\Phrase; +use Magento\Framework\Phrase; class PhraseTest extends \PHPUnit_Framework_TestCase { @@ -19,11 +19,6 @@ class PhraseTest extends \PHPUnit_Framework_TestCase */ protected $rendererMock; - /** - * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager - */ - protected $objectManager; - /** * SetUp method * @@ -34,7 +29,6 @@ class PhraseTest extends \PHPUnit_Framework_TestCase $this->defaultRenderer = Phrase::getRenderer(); $this->rendererMock = $this->getMockBuilder('Magento\Framework\Phrase\RendererInterface') ->getMock(); - $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); } /** @@ -57,10 +51,7 @@ class PhraseTest extends \PHPUnit_Framework_TestCase $text = 'some text'; $arguments = ['arg1', 'arg2']; $result = 'rendered text'; - $phrase = $this->objectManager->getObject('Magento\Framework\Phrase', [ - 'text' => $text, - 'arguments' => $arguments, - ]); + $phrase = new Phrase($text, $arguments); Phrase::setRenderer($this->rendererMock); $this->rendererMock->expects($this->once()) @@ -81,9 +72,7 @@ class PhraseTest extends \PHPUnit_Framework_TestCase $this->rendererMock->expects($this->never()) ->method('render'); - $this->objectManager->getObject('Magento\Framework\Phrase', [ - 'text' => 'some text', - ]); + new Phrase('some text'); } /** @@ -96,10 +85,7 @@ class PhraseTest extends \PHPUnit_Framework_TestCase $text = 'some text'; $arguments = ['arg1', 'arg2']; $result = 'rendered text'; - $phrase = $this->objectManager->getObject('Magento\Framework\Phrase', [ - 'text' => $text, - 'arguments' => $arguments, - ]); + $phrase = new Phrase($text, $arguments); Phrase::setRenderer($this->rendererMock); $this->rendererMock->expects($this->once()) @@ -119,9 +105,6 @@ class PhraseTest extends \PHPUnit_Framework_TestCase { $text = 'some text'; $phrase = new Phrase($text); - $phrase = $this->objectManager->getObject('Magento\Framework\Phrase', [ - 'text' => $text, - ]); $this->assertEquals($text, $phrase->getText()); } @@ -135,36 +118,31 @@ class PhraseTest extends \PHPUnit_Framework_TestCase { $text = 'some text'; $arguments = ['arg1', 'arg2']; - $phrase1 = $this->objectManager->getObject('Magento\Framework\Phrase', [ - 'text' => $text, - ]); - $phrase2 = $this->objectManager->getObject('Magento\Framework\Phrase', [ - 'text' => $text, - 'arguments' => $arguments, - ]); + $phrase1 = new Phrase($text); + $phrase2 = new Phrase($text, $arguments); $this->assertEquals([], $phrase1->getArguments()); $this->assertEquals($arguments, $phrase2->getArguments()); } + public function testToStringWithExceptionOnRender() + { + $text = 'raw text'; + $exception = new \Exception('something went wrong'); + $phrase = new Phrase($text); + + $this->rendererMock->expects($this->any()) + ->method('render') + ->willThrowException($exception); + + $this->assertEquals($text, (string)$phrase); + } + /** - * Test default rendering - * - * @return void + * Test default renderer */ - public function testDefaultRendering() + public function testDefaultRenderer() { - $text = 'parameter1 is replaced by %1 parameter2 is replaced by %2'; - $arguments = ['arg1', 'arg2']; - $result = 'parameter1 is replaced by arg1 parameter2 is replaced by arg2'; - $phrase = $this->objectManager->getObject('Magento\Framework\Phrase', [ - 'text' => $text, - 'arguments' => $arguments, - ]); - - $this->assertEquals($text, $phrase->getText()); - $this->assertEquals($arguments, $phrase->getArguments()); - $this->assertTrue($phrase->getRenderer() instanceof \Magento\Framework\Phrase\Renderer\Placeholder); - $this->assertEquals($result, $phrase->render()); + $this->assertInstanceOf('Magento\Framework\Phrase\Renderer\Placeholder', Phrase::getRenderer()); } } diff --git a/lib/internal/Magento/Framework/Webapi/Rest/Request/ParamOverriderInterface.php b/lib/internal/Magento/Framework/Webapi/Rest/Request/ParamOverriderInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..92d748e923eb148cadd2b8a2af7a8628116f2630 --- /dev/null +++ b/lib/internal/Magento/Framework/Webapi/Rest/Request/ParamOverriderInterface.php @@ -0,0 +1,37 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Framework\Webapi\Rest\Request; + +/** + * Override parameter values + * + * Parameters in the webapi.xml can be forced. This ensures that on specific routes, a specific value is always used. + * For instance, if there is a ".../me/..." route, the route should use only user information specific to the + * currently logged in user. More specifically, if there was a "/customers/me/addresses" route, the service method + * invoked could have a signature of "getAddresses($customerId)", but in the webapi.xml, the $customerId parameter + * would be forced to be the customer id of the current authenticated user. + * + * The forced override parameter configuration is in the webapi.xml. + * + * <data> + * <parameter name="customer.id" force="true">%customer_id%</parameter> + * </data> + * + * Classes which implement ParamOverriderInterface would return the real value for the parameter, so a + * ParamOverriderCustomerId would return the current authenticated user's customer id. If you + * create new ParamOverriderInterface implementations, you can register new implementations by + * adding to the parameter list for ParamsOverrider's dependency injection configuration. + */ +interface ParamOverriderInterface +{ + /** + * Returns the overridden value to use. + * + * @return string|int|null + */ + public function getOverriddenValue(); +} diff --git a/lib/internal/Magento/Framework/composer.json b/lib/internal/Magento/Framework/composer.json index 55a443c3ffaccff1df8157e147561ad3d84e0cb0..769a3a5d91d3f53dba9d6c08ee4fb4a25dbe4732 100644 --- a/lib/internal/Magento/Framework/composer.json +++ b/lib/internal/Magento/Framework/composer.json @@ -2,7 +2,7 @@ "name": "magento/framework", "description": "N/A", "type": "magento2-library", - "version": "0.74.0-beta5", + "version": "0.74.0-beta6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/package.json b/package.json index eaee4e18e2484b09731ec9a8e2a165eef83ae29c..69657eb7702c63f3d94d50a5d2f613ae6643f33e 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "grunt-contrib-watch": "^0.6.1", "grunt-exec": "^0.4.6", "grunt-styledocco": "^0.1.4", - "grunt-template-jasmine-requirejs": "^0.2.0", + "grunt-template-jasmine-requirejs": "^0.2.3", "grunt-text-replace": "^0.4.0", "imagemin-svgo": "^4.0.1", "load-grunt-config": "^0.16.0",