<?php $__env->startSection('head'); ?>
    <script type="text/javascript">
        $(function() {
            function updateSitemapPositions(positions) {
                $.each(positions, function(key, data) {
                    // find current nestedSortable position in sitemap data
                    var sitemapItem;
                    $.each(sitemapItems, function(key, item) {
                        if(item.core_smi_id == data.item_id) {
                            sitemapItem = item;
                            return;
                        }
                    });

                    // Update lft and rgt positions in sitemap data
                    sitemapItem.core_smi_lft = data.left;
                    sitemapItem.core_smi_rgt = data.right;
                });
            }

            function showNotSavedWarning() {
                sitemapItemsNotSaved = true;
                $("#not-saved-warning").show('slide', {direction:"up"});
            }

            function hideNotSavedWarning() {
                sitemapItemsNotSaved = false;
                $("#not-saved-warning").hide();
            }

            function showNotSavedDialogIfNecessary(callback) {
                if(sitemapItemsNotSaved === true) {
                    App.popupConfirmationDialog(Env.Translations.to_continue_save_tree_order_changes_dialog_title, Env.Translations.to_continue_save_tree_order_changes_dialog_message, function(modal) {
                        modal.modal("hide");

                        saveSitemapOrder(function() {
                            callback(); 
                        });
                    });
                } else {
                    callback();
                }
            }

            function saveSitemapOrder(callback) {
                var callback = callback || function() {};

                sitemapBox.fadeTo(400, 0.5);
                sitemapBox.spin();

                var sitemapItemsOrder = {};
                var keyCount = 0;
                $.each(sitemapItems, function(key, val) {
                    sitemapItemsOrder[keyCount] = {core_smi_id: val.core_smi_id, core_smi_lft: val.core_smi_lft, core_smi_rgt: val.core_smi_rgt};

                    keyCount++;
                });

                var data = {
                    data: sitemapItemsOrder,
                    _token: Env.Request.csrfToken
                };

                $.ajax({
                    url: sitemapSaveOrderUrl,
                    type: "POST",
                    data: data,
                }).done(function(response) {
                    if(typeof response.error_message !== "undefined") {
                        App.errorMessage(Env.Translations.error, response.error_message);
                    }

                    if(typeof response.success_message !== "undefined") {
                        App.successMessage(Env.Translations.success, response.success_message);
                        hideNotSavedWarning();

                        callback();
                    }

                }).always(function() {
                    sitemapBox.fadeTo(1, 1);
                    sitemapBox.spin(false);
                });
            }

            var sitemapItemsNotSaved = false;

            var sitemapBox = $("#sitemap-box");

            $("[data-manage-sitemap-item-modal]").bind("click", function(e) {
                e.preventDefault();

                var link = this;

                showNotSavedDialogIfNecessary(function() {
                    App.xhrModalForm({
                        type: "GET",
                        url: $(link).data("manage-sitemap-item-modal")
                    });
                });
            });

            // Bind sitemap item removal
            $("[data-delete-sitemap-item-confirmation]").bind("click", function(e) {
                e.preventDefault();

                var url = $(this).data("delete-sitemap-item-confirmation");

                showNotSavedDialogIfNecessary(function() {
                    App.popupConfirmationDialog(
                        Env.Translations.deleteConfirmationDialogTitle,
                        Env.Translations.deleteConfirmationDialogMessage,

                        // Confirm callback 
                        function(modalContainer) {
                            var form = $("<form>")
                                .attr({
                                    action: url,
                                    method: "POST"
                                })
                                .css({display: "none"});

                            form.appendTo("body");

                            form.submit();
                        }
                    );
                });
            });

            $("#sitemap-tree").nestedSortable({
                handle: 'div.item',
                items: 'li.item-row',
                toleranceElement: '> div.item',
                forcePlaceholderSize: true,
                helper: 'clone',
                opacity: .6,
                maxLevels: 6,
                revert: 250,
                tabSize: 32,
                placeholder: 'mjs-nestedSortable-placeholder',
                update: function() {
                    var positions = $("#sitemap-tree").nestedSortable("toArray");

                    positions = App.Helper.fixNestedSortablePositions(positions);

                    updateSitemapPositions(positions);

                    showNotSavedWarning();
                }
            });

            $("#save-sitemap-order-button").bind("click", function(e) {
                e.preventDefault();
 
                saveSitemapOrder();
            });
        });
    </script>
<?php $__env->stopSection(); ?>


<?php $__env->startSection('content'); ?>
    <?php echo HTML::widgetBox(
        [
            'name' => trans('Sitemap::common.sitemap_for_language', ['sitemap_name' => $sitemap->core_sm_name, 'lang' => $lang]),
            'icon' => 'icon-sitemap',
            'attributes' => [
                'id' => 'sitemap-box',
            ],
        ],
        [
            [
                'name' => trans('GlobalTranslations::common.add'),
                'url' => '#',
                'icon' => 'icon-plus',
                'attributes' => [
                    'data-manage-sitemap-item-modal' => route('backend_xhr_manage_sitemap_item', ['sitemapId' => Route::getCurrentRoute()->getParameter('id'), 'lang' => BackendHelper::getContextLanguage()]),
                ],
            ],
            [
                'name' => trans('GlobalTranslations::common.update_tree_order'),
                'url' => '#',
                'icon' => 'icon-save',
                'attributes' => [
                    'id' => 'save-sitemap-order-button',
                ],
            ],
        ]
    ); ?>


    <div id="not-saved-warning" class="no-display alert alert-danger no-border-radius no-margin">
        <strong class="label label-danger"><?php echo trans('GlobalTranslations::common.warning'); ?>!</strong>
        <?php echo trans('GlobalTranslations::common.changes_in_order_not_saved_warning'); ?>

    </div>

    <?php echo $tree; ?>


    <?php echo HTML::widgetBox(false); ?>

<?php $__env->stopSection(); ?>
<?php echo $__env->make('Backend::layout', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>