<?php
/**
 * OpenMage
 *
 * This source file is subject to the Academic Free License (AFL 3.0)
 * that is bundled with this package in the file LICENSE_AFL.txt.
 * It is also available at https://opensource.org/license/afl-3-0-php
 *
 * @category    design
 * @package     rwd_default
 * @copyright   Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
 * @copyright   Copyright (c) 2020-2022 The OpenMage Contributors (https://www.openmage.org)
 * @license     https://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
 */
?>
<?php
/**
 * Product list template
 *
 * @see Mage_Catalog_Block_Product_List
 */
/* @var $this Mage_Catalog_Block_Product_List */
?>
<?php
$_productCollection = $this->getLoadedProductCollection();
$_productCollectionCount = count($_productCollection);
$_helper = $this->helper('catalog/output');
$_params = $this->escapeHtml(json_encode(['form_key' => $this->getFormKey()]));
?>
<?php if(!$_productCollection->count()): ?>
    <p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p>
<?php else: ?>
    <div class="category-products">
        <?php echo $this->getToolbarHtml() ?>
        <?php // List mode ?>
        <?php if($this->getMode()!='grid'): ?>
            <?php $_iterator = 0; ?>
            <ol class="products-list" id="products-list">
                <?php foreach ($_productCollection as $_product): ?>
                    <li class="item<?php if(++$_iterator === $_productCollectionCount): ?> last<?php endif ?>">
                        <?php // Product Image ?>
                        <a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image">
                            <?php /* Based on the native RWD styling, product images are displayed at a max of ~400px wide when viewed on a
                        one column page layout with four product columns from a 1280px viewport. For bandwidth reasons,
                        we are going to serve a 300px image, as it will look fine at 400px and most of the times, the image
                        will be displayed at a smaller size (eg, if two column are being used or viewport is smaller than 1280px).
                        This $_imgSize value could even be decreased further, based on the page layout
                        (one column, two column, three column) and number of product columns. */ ?>
                            <?php $_imgSize = 300; ?>
                            <img id="product-collection-image-<?php echo $_product->getId(); ?>"
                                 src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->keepFrame(false)->resize($_imgSize); ?>"
                                 alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" />
                        </a>
                        <?php // Product description ?>
                        <div class="product-shop">
                            <div class="f-fix">
                                <div class="product-primary">
                                    <?php $_productNameStripped = $this->stripTags($_product->getName(), null, true); ?>
                                    <h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped; ?>"><?php echo $_helper->productAttribute($_product, $_product->getName() , 'name'); ?></a></h2>
                                    <?php if($_product->getRatingSummary()): ?>
                                        <?php echo $this->getReviewsSummaryHtml($_product) ?>
                                    <?php endif ?>
                                    <?php
                                    // Provides extra blocks on which to hang some features for products in the list
                                    // Features providing UI elements targeting this block will display directly below the product name
                                    if ($this->getChild('name.after')) {
                                        $_nameAfterChildren = $this->getChild('name.after')->getSortedChildren();
                                        foreach ($_nameAfterChildren as $_nameAfterChildName) {
                                            $_nameAfterChild = $this->getChild('name.after')->getChild($_nameAfterChildName);
                                            $_nameAfterChild->setProduct($_product);
                                            echo $_nameAfterChild->toHtml();
                                        }
                                    }
                                    ?>
                                </div>
                                <div class="product-secondary">
                                    <?php echo $this->getPriceHtml($_product, true) ?>
                                </div>
                                <div class="product-secondary">
                                    <?php if(!$_product->canConfigure() && $_product->isSaleable()): ?>
                                        <p class="action">
                                            <?php $_cartUrl = $this->getAddToCartUrlCustom($_product, [], false); ?>
                                            <button type="button"
                                                    title="<?php echo $this->quoteEscape($this->__('Add to Cart')) ?>"
                                                    class="button btn-cart"
                                                    onclick="customFormSubmit('<?php echo $_cartUrl ?>', '<?php echo $_params ?>', 'post')">
                                                <span><span><?php echo $this->__('Add to Cart') ?></span></span>
                                            </button>
                                        </p>
                                    <?php elseif($_product->getStockItem() && $_product->getStockItem()->getIsInStock()): ?>
                                        <p class="action"><a title="<?php echo $this->quoteEscape($this->__('View Details')) ?>" class="button" href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->__('View Details') ?></a></p>
                                    <?php else: ?>
                                        <p class="action availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
                                    <?php endif ?>
                                    <ul class="add-to-links">
                                        <?php if ($this->helper('wishlist')->isAllow()) : ?>
                                            <?php $_wishlistUrl = $this->helper('wishlist')->getAddUrlWithCustomParams($_product, [], false); ?>
                                            <li><a href="#"
                                                   data-url="<?php echo $_wishlistUrl ?>"
                                                   data-params="<?php echo $_params ?>"
                                                   class="link-wishlist"
                                                   onclick="customFormSubmit('<?php echo $_wishlistUrl ?>', '<?php echo $_params ?>', 'post')">
                                                    <?php echo $this->__('Add to Wishlist') ?>
                                                </a>
                                            </li>
                                        <?php endif ?>
                                        <?php if ($_compareUrl = $this->getAddToCompareUrlCustom($_product, false)) : ?>
                                            <li>
                                                <span class="separator">|</span>
                                                <a href="#"
                                                   onclick="customFormSubmit('<?php echo $_compareUrl ?>', '<?php echo $_params ?>', 'post')">
                                                    <?php echo $this->__('Add to Compare') ?>
                                                </a>
                                            </li>
                                        <?php endif ?>
                                    </ul>
                                </div>
                                <div class="desc std">
                                    <?php echo $_helper->productAttribute($_product, $_product->getShortDescription(), 'short_description') ?>
                                    <a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped ?>" class="link-learn"><?php echo $this->__('Learn More') ?></a>
                                </div>
                            </div>
                        </div>
                    </li>
                <?php endforeach ?>
            </ol>
            <script type="text/javascript">decorateList('products-list', 'none-recursive')</script>

        <?php else: ?>

        <?php // Grid Mode ?>

        <?php $_collectionSize = $_productCollection->count() ?>
        <?php $_columnCount = $this->getColumnCount(); ?>
            <ul class="products-grid products-grid--max-<?php echo $_columnCount; ?>-col">
                <?php $i=0; foreach ($_productCollection as $_product): ?>
                    <?php /*if ($i++%$_columnCount==0): ?>
            <?php endif*/ ?>
                    <li class="item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0): ?> last<?php endif ?>">
                        <a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image">
                            <?php $_imgSize = 210; ?>
                            <img id="product-collection-image-<?php echo $_product->getId(); ?>"
                                 src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize($_imgSize); ?>"
                                 alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" />
                        </a>
                        <div class="product-info">
                            <h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></a></h2>
                            <?php
                            // Provides extra blocks on which to hang some features for products in the list
                            // Features providing UI elements targeting this block will display directly below the product name
                            if ($this->getChild('name.after')) {
                                $_nameAfterChildren = $this->getChild('name.after')->getSortedChildren();
                                foreach ($_nameAfterChildren as $_nameAfterChildName) {
                                    $_nameAfterChild = $this->getChild('name.after')->getChild($_nameAfterChildName);
                                    $_nameAfterChild->setProduct($_product);
                                    echo $_nameAfterChild->toHtml();
                                }
                            }
                            ?>
                            <?php echo $this->getPriceHtml($_product, true) ?>
                            <?php if($_product->getRatingSummary()): ?>
                                <?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>
                            <?php endif ?>
                            <div class="actions">
                                <?php if(!$_product->canConfigure() && $_product->isSaleable()): ?>
                                    <?php $_cartUrl = $this->getAddToCartUrlCustom($_product, [], false); ?>
                                    <button type="button"
                                            title="<?php echo $this->quoteEscape($this->__('Add to Cart')) ?>"
                                            class="button btn-cart"
                                            onclick="customFormSubmit('<?php echo $_cartUrl ?>', '<?php echo $_params ?>', 'post')">
                                        <span><span><?php echo $this->__('Add to Cart') ?></span></span>
                                    </button>
                                <?php elseif($_product->getStockItem() && $_product->getStockItem()->getIsInStock()): ?>
                                    <a title="<?php echo $this->quoteEscape($this->__('View Details')) ?>" class="button" href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->__('View Details') ?></a>
                                <?php else: ?>
                                    <p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
                                <?php endif ?>
                                <ul class="add-to-links">
                                    <?php if ($this->helper('wishlist')->isAllow()) : ?>
                                        <?php $_wishlistUrl = $this->helper('wishlist')->getAddUrlWithCustomParams($_product, [], false); ?>
                                        <li>
                                            <a href="#"
                                               data-url="<?php echo $_wishlistUrl ?>"
                                               data-params="<?php echo $_params ?>"
                                               class="link-wishlist"
                                               onclick="customFormSubmit('<?php echo $_wishlistUrl ?>', '<?php echo $_params ?>', 'post')">
                                                <?php echo $this->__('Add to Wishlist') ?>
                                            </a>
                                        </li>
                                    <?php endif ?>
                                    <?php if ($_compareUrl = $this->getAddToCompareUrlCustom($_product, false)) : ?>
                                        <li>
                                            <span class="separator">|</span>
                                            <a href="#"
                                               class="link-compare"
                                               onclick="customFormSubmit('<?php echo $_compareUrl ?>', '<?php echo $_params ?>', 'post')">
                                                <?php echo $this->__('Add to Compare') ?>
                                            </a>
                                        </li>
                                    <?php endif ?>
                                </ul>
                            </div>
                        </div>
                    </li>
                    <?php /*if ($i%$_columnCount==0 || $i==$_collectionSize): ?>
            <?php endif*/ ?>
                <?php endforeach ?>
            </ul>
            <script type="text/javascript">decorateGeneric($$('ul.products-grid'), ['odd','even','first','last'])</script>
        <?php endif ?>

        <div class="toolbar-bottom">
            <?php echo $this->getToolbarHtml() ?>
        </div>
    </div>
<?php endif ?>
<?php
// Provides a block where additional page components may be attached, primarily good for in-page JavaScript
if ($this->getChild('after')) {
    $_afterChildren = $this->getChild('after')->getSortedChildren();
    foreach ($_afterChildren as $_afterChildName) {
        $_afterChild = $this->getChild('after')->getChild($_afterChildName);
        //set product collection on after blocks
        $_afterChild->setProductCollection($_productCollection);
        echo $_afterChild->toHtml();
    }
}
?>
