Файл: sys/static/js/admin.widgets.js
Строк: 161
<?php
jQuery(function($) {
    function updateWidgetsData() 
    {
        var data = []; 
        $('.widgets-area .widget-ui').each(function(index, elem) {
            var widget_id = $(elem).data('widget_id'); 
            data.push({
                id: $(elem).data('widget'), 
                widget_id: widget_id, 
            }); 
        }); 
        var widgets = JSON.stringify(data); 
        $('[name="widgets_area_content"]').val(widgets); 
        $.ajax({
            url: '/ds-ajax/',  
            type: "POST", 
            dataType: "json", 
            data: {
                action: 'widgets_area_save', 
                area_id: $('.widgets-area').data('area'), 
                widgets: widgets, 
            }, 
            success: function(json) {
                console.log(json);
            },
            error: function(response) { 
                console.log('Ошибка. Данные не отправлены.');
            }
         });
    }
    function sortableWidgetTo(e, to) {
        var widget = $(e).closest('.widget-ui'); 
        if (to === -1) {
            widget.insertBefore(widget.prev());
        } else {
            widget.insertAfter(widget.next());
        }
        updateWidgetsData(); 
    }
    $(document).on('click', '.widget-area-add', function() {
        var widgetsList = $('.widgets-list'); 
        if (widgetsList.hasClass('active')) {
            widgetsList.removeClass('active');
            $('.widget-area-add-close').remove(); 
        } else {
            widgetsList.addClass('active');
            $('body').append('<div class="widget-area-add-close widget-area-add"></div>'); 
        }
    }); 
    $(document).on('click', '.widget-add', function() {
        var widget = $(this).closest('.widget-ui'); 
        var widgetWith = $('<div/>', {
            class: 'widget-ui widget-ui-loaded', 
            'data-widget': widget.data('widget'), 
            'data-loaded': 0, 
            append: [
                widget.find('.ui-move-handle').clone(), 
                $('<div/>', {
                    class: 'widget-content', 
                    append: [
                        $('<div/>', {
                            class: 'widget-title',
                            text: widget.find('.widget-title').text(),  
                        }), 
                        $('<div/>', {
                            class: 'widget-links',
                            append: [
                                $('<a/>', {
                                    text: 'Редактировать', 
                                    class: 'widget-ui-edit',
                                }), 
                                $('<span/>', {
                                    text: ' | ', 
                                }), 
                                $('<a/>', {
                                    text: 'Удалить', 
                                    class: 'ds-link-delete widget-ui-remove', 
                                }), 
                            ]
                        }), 
                        $('<div/>', {
                            class: 'widget-editor',
                            append: $('<span/>', {
                                class: 'button-process', 
                            }),  
                        }), 
                    ], 
                }), 
                $('<div/>', {
                    class: 'widget-action', 
                    append: [
                        $('<a/>', {
                            class: 'widget-up', 
                            append: $('<i/>', {
                                class: 'fa fa-chevron-up', 
                            })
                        }), 
                        $('<a/>', {
                            class: 'widget-down', 
                            append: $('<i/>', {
                                class: 'fa fa-chevron-down', 
                            })
                        }), 
                    ]
                })
            ], 
        });
        $('.widgets-area').append(widgetWith); 
        $.ajax(ajax_url, {
            data: { 
                action: 'widget_edit_form', 
                widget_name: widget.data('widget'), 
                widget_area: $(widgetWith).closest('.widgets-area').data('area'), 
                widget_id: 0, 
            }, 
            method: 'POST', 
            success: function(resp) {
                var widget_id = $(resp).find('[name="widget_id"]').val();
                $(widgetWith).find('.widget-editor').addClass('active').html(resp);
                $(widgetWith).attr('data-loaded', 1); 
                $(widgetWith).attr('data-widget_id', widget_id); 
                updateWidgetsData(); 
            }
        }); 
        $('.widgets-list').removeClass('active');
        $('.widget-area-add-close').remove(); 
    }); 
    $(document).on('click', '.widget-up', function() {
        sortableWidgetTo(this, -1);
    }); 
    $(document).on('click', '.widget-down', function() {
        sortableWidgetTo(this, 1);
    }); 
    $(document).on('click', '.widget-ui-remove', function() {
        $(this).closest('.widget-ui').remove(); 
        updateWidgetsData(); 
    }); 
    $(document).on('click', '.widget-ui-edit', function() {
        var widget = $(this).closest('.widget-ui'); 
        var editor = widget.find('.widget-editor'); 
        var widget_area = widget.closest('.widgets-area').data('area') || 0; 
        var widget_id = widget.data('widget_id') || 0; 
        var widget_name = widget.data('widget') || false; 
        if (editor.hasClass('active')) {
            editor.removeClass('active'); 
        } else {
            $('.widget-editor').removeClass('active'); 
            editor.addClass('active');
        }
        var loaded = widget.data('loaded') || false; 
        if (loaded === false) {
            $.ajax(ajax_url, {
                data: { 
                    action: 'widget_edit_form', 
                    widget_name: widget_name, 
                    widget_area: widget_area, 
                    widget_id: widget_id, 
                }, 
                method: 'POST', 
                success: function(resp) {
                    editor.addClass('active').html(resp);
                    widget.attr('data-loaded', 1); 
                    updateWidgetsData(); 
                }
            }); 
        }
    }); 
    $(document).on('submit', '.widget_form', function() {
        event.preventDefault();
        var submit = $(this).find('[type="submit"]'); 
        var alert = $(this).find('.widget-alert'); 
            alert.addClass('text-process show').text('Сохранение..').removeClass('hide text-success text-error'); 
        $.ajax({
            url: '/ds-ajax/?action=widget_edit_save', 
            type: "POST", 
            dataType: "json", 
            data: $(this).serialize(), 
            success: function(json) {
                setTimeout(function() {
                    alert.text('Успешно').addClass('text-success hide').removeClass('show text-process'); 
                }, 1000); 
            },
            error: function(response) { 
                alert.text('Ошибка. Данные не отправлены.').addClass('text-error').removeClass('text-process'); 
            }
         });
        return false; 
    }); 
    $('.sortable-ui').sortable({ 
        revert: true, 
        placeholder: "ui-placeholder", 
        handle: ".ui-move-handle",
        update: function(event, ui) {
            var widget_name = $(ui.item).data('widget');
            var widget_id = $(ui.item).data('widget_id') || 0;
            var loaded = $(ui.item).data('loaded');
            if (loaded !== -1) {
                updateWidgetsData(); 
                return ;
            }
            var widgetWith = $('<div/>', {
                class: 'widget-ui widget-ui-loaded', 
                'data-widget': widget_name, 
                'data-loaded': 0, 
                append: [
                    $(ui.item).find('.ui-move-handle'), 
                    $('<div/>', {
                        class: 'widget-content', 
                        append: [
                            $('<div/>', {
                                class: 'widget-title',
                                text: $(ui.item).find('.widget-title').text(),  
                            }), 
                            $('<div/>', {
                                class: 'widget-links',
                                append: [
                                    $('<a/>', {
                                        text: 'Редактировать', 
                                        class: 'widget-ui-edit',
                                    }), 
                                    $('<span/>', {
                                        text: ' | ', 
                                    }), 
                                    $('<a/>', {
                                        text: 'Удалить', 
                                        class: 'ds-link-delete widget-ui-remove', 
                                    }), 
                                ]
                            }), 
                            $('<div/>', {
                                class: 'widget-editor',
                                append: $('<span/>', {
                                    class: 'button-process', 
                                }),  
                            }), 
                        ], 
                    }), 
                    $('<div/>', {
                        class: 'widget-action', 
                        append: [
                            $('<a/>', {
                                class: 'widget-up', 
                                append: $('<i/>', {
                                    class: 'fa fa-chevron-up', 
                                })
                            }), 
                            $('<a/>', {
                                class: 'widget-down', 
                                append: $('<i/>', {
                                    class: 'fa fa-chevron-down', 
                                })
                            }), 
                        ]
                    })
                ], 
            });
            $(ui.item).replaceWith(widgetWith); 
            $.ajax(ajax_url, {
                data: { 
                    action: 'widget_edit_form', 
                    widget_name: widget_name, 
                    widget_area: $(widgetWith).closest('.widgets-area').data('area'), 
                    widget_id: widget_id, 
                }, 
                method: 'POST', 
                success: function(resp) {
                    var widget_id = $(resp).find('[name="widget_id"]').val();
                    $(widgetWith).find('.widget-editor').addClass('active').html(resp);
                    $(widgetWith).attr('data-loaded', 1); 
                    $(widgetWith).attr('data-widget_id', widget_id); 
                    updateWidgetsData(); 
                }
            }); 
        }
    }).disableSelection();
    $('.widget-ui[data-draggable="1"]').draggable({ 
        helper: "clone", 
        handle: ".ui-move-handle",
        connectToSortable: '.sortable-ui',
        drag: function(event, ui) {
            
        }
    });
    var el = 0; 
    $('.widgets-area').droppable({
        drop: function(event, ui) {
        }
    });
});
?>