<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

/* @var $block \Magento\Backend\Block\Store\Switcher */
?>
<?php if ($websites = $block->getWebsites()) : ?>

<div class="store-switcher store-view">
    <span class="store-switcher-label"><?= $block->escapeHtml(__('Scope:')) ?></span>
    <div class="actions dropdown closable">
        <input type="hidden" name="store_switcher" id="store_switcher"
               data-role="store-view-id" data-param="<?= $block->escapeHtmlAttr($block->getStoreVarName()) ?>"
               value="<?= $block->escapeHtmlAttr($block->getStoreId()) ?>"
               onchange="switchScope(this);"<?= /* @noEscape */ $block->getUiId() ?> />
        <input type="hidden" name="store_group_switcher" id="store_group_switcher"
               data-role="store-group-id" data-param="<?= $block->escapeHtmlAttr($block->getStoreGroupVarName()) ?>"
               value="<?= $block->escapeHtmlAttr($block->getStoreGroupId()) ?>"
               onchange="switchScope(this);"<?= /* @noEscape */ $block->getUiId() ?> />
        <input type="hidden" name="website_switcher" id="website_switcher"
               data-role="website-id" data-param="<?= $block->escapeHtmlAttr($block->getWebsiteVarName()) ?>"
               value="<?= $block->escapeHtmlAttr($block->getWebsiteId()) ?>"
               onchange="switchScope(this);"<?= /* @noEscape */ $block->getUiId() ?> />
        <button
            type="button"
            class="admin__action-dropdown"
            data-mage-init='{"dropdown":{}}'
            data-toggle="dropdown"
            aria-haspopup="true"
            id="store-change-button">
            <?= $block->escapeHtml($block->getCurrentSelectionName()) ?>
        </button>
        <ul class="dropdown-menu" data-role="stores-list">
            <?php if ($block->hasDefaultOption()) : ?>
                <li class="store-switcher-all <?php if (!($block->getDefaultSelectionName() != $block->getCurrentSelectionName())) : ?>disabled<?php endif; ?> <?php if (!$block->hasScopeSelected()) : ?>current<?php endif; ?>">
                    <?php if ($block->getDefaultSelectionName() != $block->getCurrentSelectionName()) : ?>
                        <a data-role="store-view-id" data-value="" href="#">
                            <?= $block->escapeHtml($block->getDefaultSelectionName()) ?>
                        </a>
                    <?php else : ?>
                        <span><?= $block->escapeHtml($block->getDefaultSelectionName()) ?></span>
                    <?php endif; ?>
                </li>
            <?php endif; ?>
            <?php foreach ($websites as $website) : ?>
                <?php $showWebsite = false; ?>
                <?php foreach ($website->getGroups() as $group) : ?>
                    <?php $showGroup = false; ?>
                    <?php foreach ($block->getStores($group) as $store) : ?>
                        <?php if ($showWebsite == false) : ?>
                            <?php $showWebsite = true; ?>
                            <li class="store-switcher-website <?php if (!($block->isWebsiteSwitchEnabled() && ! $block->isWebsiteSelected($website))) : ?>disabled<?php endif; ?> <?php if ($block->isWebsiteSelected($website)) : ?>current<?php endif; ?>">
                                <?php if ($block->isWebsiteSwitchEnabled() && ! $block->isWebsiteSelected($website)) : ?>
                                    <a data-role="website-id" data-value="<?= $block->escapeHtmlAttr($website->getId()) ?>" href="#">
                                        <?= $block->escapeHtml($website->getName()) ?>
                                    </a>
                                <?php else : ?>
                                    <span><?= $block->escapeHtml($website->getName()) ?></span>
                                <?php endif; ?>
                            </li>
                        <?php endif; ?>
                        <?php if ($showGroup == false) : ?>
                            <?php $showGroup = true; ?>
                            <li class="store-switcher-store <?php if (!($block->isStoreGroupSwitchEnabled() && ! $block->isStoreGroupSelected($group))) : ?>disabled<?php endif; ?> <?php if ($block->isStoreGroupSelected($group)) : ?>current<?php endif; ?>">
                                <?php if ($block->isStoreGroupSwitchEnabled() && ! $block->isStoreGroupSelected($group)) : ?>
                                    <a data-role="store-group-id" data-value="<?= $block->escapeHtmlAttr($group->getId()) ?>" href="#">
                                        <?= $block->escapeHtml($group->getName()) ?>
                                    </a>
                                <?php else : ?>
                                    <span><?= $block->escapeHtml($group->getName()) ?></span>
                                <?php endif; ?>
                            </li>
                        <?php endif; ?>
                        <li class="store-switcher-store-view <?php if (!($block->isStoreSwitchEnabled() && !$block->isStoreSelected($store))) : ?>disabled<?php endif; ?> <?php if ($block->isStoreSelected($store)) :?>current<?php endif; ?>">
                            <?php if ($block->isStoreSwitchEnabled() && ! $block->isStoreSelected($store)) : ?>
                                <a data-role="store-view-id" data-value="<?= $block->escapeHtmlAttr($store->getId()) ?>" href="#">
                                    <?= $block->escapeHtml($store->getName()) ?>
                                </a>
                            <?php else : ?>
                                <span><?= $block->escapeHtml($store->getName()) ?></span>
                            <?php endif; ?>
                        </li>
                    <?php endforeach; ?>
                <?php endforeach; ?>
            <?php endforeach; ?>
            <?php if ($block->getShowManageStoresLink() && $block->getAuthorization()->isAllowed('Magento_Backend::store')) : ?>
                <li class="dropdown-toolbar">
                    <a href="<?= /* @noEscape */ $block->getUrl('*/system_store') ?>"><?= $block->escapeHtml(__('Stores Configuration')) ?></a>
                </li>
            <?php endif; ?>
        </ul>
    </div>
    <?= $block->getHintHtml() ?>
</div>

<script>
require([
    'jquery',
    'Magento_Ui/js/modal/confirm'
], function(jQuery, confirm){

    (function($) {
        var $storesList = $('[data-role=stores-list]');
        $storesList.on('click', '[data-value]', function(event) {
            var val = $(event.target).data('value');
            var role = $(event.target).data('role');
            var switcher = $('[data-role='+role+']');

            event.preventDefault();

            if (!switcher.val() || val != switcher.val()) {
                switcher.val(val).trigger('change'); // Set the value & trigger event
            }
        });
    })(jQuery);

    var scopeSwitcherHandler;

    function switchScope(obj) {
        var switcher = jQuery(obj);
        var scopeId = switcher.val();
        var scopeParams = '';
        if (scopeId) {
            scopeParams = switcher.data('param') + '/' + scopeId + '/';
        }

        if (obj.switchParams) {
            scopeParams += obj.switchParams;
        }

        if ((typeof scopeSwitcherHandler) != 'undefined') {
            var switcherParams = {
                scopeId: scopeId,
                scopeParams: scopeParams,
                useConfirm: <?= (int)$block->getUseConfirm() ?>
            };
            scopeSwitcherHandler(switcherParams);
        } else {

            <?php if ($block->getUseConfirm()) : ?>

            confirm({
                content:  "<?= $block->escapeJs(__('Please confirm scope switching. All data that hasn\'t been saved will be lost.')) ?>",
                actions: {
                    confirm: function() {
                        reload();
                    },
                    cancel: function() {
                        obj.value = '<?= $block->escapeHtml($block->getStoreId()) ?>';
                    }
                }
            });

            <?php else : ?>
                reload();
            <?php endif; ?>
        }

        function reload() {
            <?php if (!$block->isUsingIframe()) : ?>
            var url = '<?= $block->escapeJs($block->getSwitchUrl()) ?>' + scopeParams;
            setLocation(url);
            <?php else : ?>
            jQuery('#preview_selected_store').val(scopeId);
            jQuery('#preview_form').submit();

            jQuery('.store-switcher .dropdown-menu li a').each(function() {
                var $this = jQuery(this);

                if ($this.data('role') === 'store-view-id' && $this.data('value') == scopeId) {
                    jQuery('#store-change-button').html($this.text());
                }
            });

            jQuery('#store-change-button').click();
            <?php endif; ?>
        }
    }

    window.scopeSwitcherHandler = scopeSwitcherHandler;
    window.switchScope = switchScope;

});
</script>
<?php endif; ?>
