123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- /**
- * @author Magento Core Team <core@magentocommerce.com>
- */
- namespace Magento\Sales\Block\Order;
- /**
- * Sales order view items block.
- *
- * @api
- * @since 100.0.2
- */
- class Items extends \Magento\Sales\Block\Items\AbstractItems
- {
- /**
- * Core registry
- *
- * @var \Magento\Framework\Registry
- */
- protected $_coreRegistry = null;
- /**
- * Order items per page.
- *
- * @var int
- */
- private $itemsPerPage;
- /**
- * @var \Magento\Sales\Model\ResourceModel\Order\Item\CollectionFactory
- */
- private $itemCollectionFactory;
- /**
- * @var \Magento\Sales\Model\ResourceModel\Order\Item\Collection|null
- */
- private $itemCollection;
- /**
- * @param \Magento\Framework\View\Element\Template\Context $context
- * @param \Magento\Framework\Registry $registry
- * @param array $data
- * @param \Magento\Sales\Model\ResourceModel\Order\Item\CollectionFactory|null $itemCollectionFactory
- */
- public function __construct(
- \Magento\Framework\View\Element\Template\Context $context,
- \Magento\Framework\Registry $registry,
- array $data = [],
- \Magento\Sales\Model\ResourceModel\Order\Item\CollectionFactory $itemCollectionFactory = null
- ) {
- $this->_coreRegistry = $registry;
- $this->itemCollectionFactory = $itemCollectionFactory ?: \Magento\Framework\App\ObjectManager::getInstance()
- ->get(\Magento\Sales\Model\ResourceModel\Order\Item\CollectionFactory::class);
- parent::__construct($context, $data);
- }
- /**
- * Init pager block and item collection with page size and current page number
- *
- * @return $this
- * @since 100.1.7
- */
- protected function _prepareLayout()
- {
- $this->itemsPerPage = $this->_scopeConfig->getValue('sales/orders/items_per_page');
- $this->itemCollection = $this->itemCollectionFactory->create();
- $this->itemCollection->setOrderFilter($this->getOrder());
- /** @var \Magento\Theme\Block\Html\Pager $pagerBlock */
- $pagerBlock = $this->getChildBlock('sales_order_item_pager');
- if ($pagerBlock) {
- $pagerBlock->setLimit($this->itemsPerPage);
- //here pager updates collection parameters
- $pagerBlock->setCollection($this->itemCollection);
- $pagerBlock->setAvailableLimit([$this->itemsPerPage]);
- $pagerBlock->setShowAmounts($this->isPagerDisplayed());
- }
- return parent::_prepareLayout();
- }
- /**
- * Determine if the pager should be displayed for order items list.
- *
- * To be called from templates(after _prepareLayout()).
- *
- * @return bool
- * @since 100.1.7
- */
- public function isPagerDisplayed()
- {
- $pagerBlock = $this->getChildBlock('sales_order_item_pager');
- return $pagerBlock && ($this->itemCollection->getSize() > $this->itemsPerPage);
- }
- /**
- * Get visible items for current page.
- *
- * To be called from templates(after _prepareLayout()).
- *
- * @return \Magento\Framework\DataObject[]
- * @since 100.1.7
- */
- public function getItems()
- {
- return $this->itemCollection->getItems();
- }
- /**
- * Get pager HTML according to our requirements.
- *
- * To be called from templates(after _prepareLayout()).
- *
- * @return string HTML output
- * @since 100.1.7
- */
- public function getPagerHtml()
- {
- /** @var \Magento\Theme\Block\Html\Pager $pagerBlock */
- $pagerBlock = $this->getChildBlock('sales_order_item_pager');
- return $pagerBlock ? $pagerBlock->toHtml() : '';
- }
- /**
- * Retrieve current order model instance
- *
- * @return \Magento\Sales\Model\Order
- */
- public function getOrder()
- {
- return $this->_coreRegistry->registry('current_order');
- }
- }
|