<?php
/**
 * Maho
 *
 * @category    design
 * @package     rwd_default
 * @copyright   Copyright (c) 2006-2020 Magento, Inc. (https://magento.com)
 * @copyright   Copyright (c) 2021-2024 The OpenMage Contributors (https://openmage.org)
 * @copyright   Copyright (c) 2024 Maho (https://mahocommerce.com)
 * @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 Mage_Catalog_Block_Product_List $this 
 */
?>
<?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"><?= $this->__('There are no products matching the selection.') ?></p>
<?php else: ?>
<div class="category-products">
    <?= $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="<?= $_product->getProductUrl() ?>" title="<?= $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-<?= $_product->getId() ?>" width="<?= $_imgSize ?>" height="<?= $_imgSize ?>"
                     src="<?= $this->helper('catalog/image')->init($_product, 'small_image')->keepFrame(false)->resize($_imgSize) ?>"
                     alt="<?= $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="<?= $_product->getProductUrl() ?>" title="<?= $_productNameStripped ?>"><?= $_helper->productAttribute($_product, $_product->getName() , 'name') ?></a></h2>
                        <?php if($_product->getRatingSummary()): ?>
                        <?= $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">
                        <?= $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="<?= $this->quoteEscape($this->__('Add to Cart')) ?>"
                                        class="button btn-cart"
                                        onclick="customFormSubmit('<?= $_cartUrl ?>', '<?= $_params ?>', 'post')">
                                    <?= $this->__('Add to Cart') ?>
                                </button>
                            </p>
                        <?php elseif($_product->getStockItem() && $_product->getStockItem()->getIsInStock()): ?>
                            <p class="action"><a title="<?= $this->quoteEscape($this->__('View Details')) ?>" class="button" href="<?= $_product->getProductUrl() ?>"><?= $this->__('View Details') ?></a></p>
                        <?php else: ?>
                            <p class="action availability out-of-stock"><span><?= $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="<?= $_wishlistUrl ?>"
                                       data-params="<?= $_params ?>"
                                       class="link-wishlist"
                                       onclick="customFormSubmit('<?= $_wishlistUrl ?>', '<?= $_params ?>', 'post')">
                                        <?= $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('<?= $_compareUrl ?>', '<?= $_params ?>', 'post')">
                                        <?= $this->__('Add to Compare') ?>
                                    </a>
                                </li>
                            <?php endif ?>
                        </ul>
                    </div>
                    <div class="desc std">
                        <?= $_helper->productAttribute($_product, $_product->getShortDescription(), 'short_description') ?>
                        <a href="<?= $_product->getProductUrl() ?>" title="<?= $_productNameStripped ?>" class="link-learn"><?= $this->__('Learn More') ?></a>
                    </div>
                </div>
            </div>
        </li>
    <?php endforeach ?>
    </ol>

    <?php else: ?>

    <?php // Grid Mode ?>

    <?php $_collectionSize = $_productCollection->count() ?>
    <?php $_columnCount = $this->getColumnCount(); ?>
    <ul class="products-grid products-grid--max-<?= $_columnCount ?>-col">
        <?php $i=0; foreach ($_productCollection as $_product): ?>
            <li class="item">
                <a href="<?= $_product->getProductUrl() ?>" title="<?= $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image">
                    <?php $_imgSize = 210; ?>
                    <img id="product-collection-image-<?= $_product->getId() ?>" width="<?= $_imgSize ?>" height="<?= $_imgSize ?>"
                         src="<?= $this->helper('catalog/image')->init($_product, 'small_image')->resize($_imgSize) ?>"
                         alt="<?= $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" />
                </a>
                <div class="product-info">
                    <h2 class="product-name"><a href="<?= $_product->getProductUrl() ?>" title="<?= $this->stripTags($_product->getName(), null, true) ?>"><?= $_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();
                        }
                    }
                    ?>
                    <?= $this->getPriceHtml($_product, true) ?>
                    <?php if($_product->getRatingSummary()): ?>
                    <?= $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="<?= $this->quoteEscape($this->__('Add to Cart')) ?>"
                                    class="button btn-cart"
                                    onclick="customFormSubmit('<?= $_cartUrl ?>', '<?= $_params ?>', 'post')">
                                <?= $this->__('Add to Cart') ?>
                            </button>
                        <?php elseif($_product->getStockItem() && $_product->getStockItem()->getIsInStock()): ?>
                            <a title="<?= $this->quoteEscape($this->__('View Details')) ?>" class="button" href="<?= $_product->getProductUrl() ?>"><?= $this->__('View Details') ?></a>
                        <?php else: ?>
                            <p class="availability out-of-stock"><span><?= $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="<?= $_wishlistUrl ?>"
                                       data-params="<?= $_params ?>"
                                       class="link-wishlist"
                                       onclick="customFormSubmit('<?= $_wishlistUrl ?>', '<?= $_params ?>', 'post')">
                                        <?= $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('<?= $_compareUrl ?>', '<?= $_params ?>', 'post')">
                                        <?= $this->__('Add to Compare') ?>
                                    </a>
                                </li>
                            <?php endif ?>
                        </ul>
                    </div>
                </div>
            </li>
        <?php endforeach ?>
    </ul>
    <?php endif ?>

    <div class="toolbar-bottom">
        <?= $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();
    }
}
?>
