jQuery UI Портлеты и куки. Добавление функции закрытия окна - PullRequest
0 голосов
/ 25 ноября 2011

Я работаю с портлетами пользовательского интерфейса jQuery, в которых состояние переключения сохраняется в cookie с помощью плагина jQuery Cookie. Я пытаюсь добавить функцию «закрыть окно портлета», которая будет сохранена и прочитана из файла cookie.

Я использую код из онлайн-примера , так как я действительно незнаком с написанием файлов cookie. Во всяком случае, вот разметка ...

<div class="column" id="col1">
<div class="portlet" id="box_feeds">
    <div class="portlet-header">Feeds</div>
    <div class="portlet-content">
        Lorem ipsum dolor sit amet, consectetuer adipiscing elit
    </div>
</div>
<div class="portlet" id="box_news">
    <div class="portlet-header">News</div>
    <div class="portlet-content">
        Lorem ipsum dolor sit amet, consectetuer adipiscing elit
    </div>
</div>

А вот и код ...

// function that writes the list order to a cookie
function saveOrder() {
    $(".column").each(function(index, value) {
        var colid = value.id;
        var cookieName = "cookie-" + colid;
        // Get the order for this column.
        var order = $('#' + colid).sortable("toArray");
        // For each portlet in the column
        for (var i = 0, n = order.length; i < n; i++) {
            // Determine if it is 'opened' or 'closed'
            var v = $('#' + order[i]).find('.portlet-content').is(':visible');
            // Modify the array we're saving to indicate what's open and
            //  what's not.
            order[i] = order[i] + ":" + v;
        }
        $.cookie(cookieName, order, {
            path: "/",
            expiry: new Date(2012, 1, 1)
        });
    });
}

// function that restores the list order from a cookie
function restoreOrder() {
    $(".column").each(function(index, value) {
        var colid = value.id;
        var cookieName = "cookie-" + colid
        var cookie = $.cookie(cookieName);
        if (cookie == null) {
            return;
        }
        var IDs = cookie.split(",");
        for (var i = 0, n = IDs.length; i < n; i++) {
            var toks = IDs[i].split(":");
            if (toks.length != 2) {
                continue;
            }
            var portletID = toks[0];
            var visible = toks[1]
            var portlet = $(".column").find('#' + portletID).appendTo($('#' + colid));
            if (visible === 'false') {
                portlet.find(".ui-icon").toggleClass("ui-icon-minus");
                portlet.find(".ui-icon").toggleClass("ui-icon-plus");
                portlet.find(".portlet-content").hide();
            }
        }
    });
}

$(document).ready(function() {
    $(".column").sortable({
        connectWith: ['.column'],
        stop: function() {
            saveOrder();
        }
    });

    $(".portlet").addClass("ui-widget ui-widget-content").addClass("ui-helper-clearfix ui-corner-all").find(".portlet-header").addClass("ui-widget-header ui-corner-all").prepend('<span class="ui-icon ui-icon-minus"></span><span class="ui-icon ui-icon-closethick icon-close"></span>').end().find(".portlet-content");

    restoreOrder();

    $(".portlet-header .ui-icon").click(function() {
        $(this).toggleClass("ui-icon-minus");
        $(this).toggleClass("ui-icon-plus");
        $(this).parents(".portlet:first").find(".portlet-content").toggle();
        saveOrder(); // This is important
    });

    $(".portlet-header .ui-icon").hover(

    function() {
        $(this).addClass("ui-icon-hover");
    }, function() {
        $(this).removeClass('ui-icon-hover');
    });
});

Чтобы закрыть окно, я работал с этим ...

$( " .icon-close" ).click(function() {
        //$( this ).toggleClass( "ui-icon-minusthick" ).toggleClass( "ui-icon-plusthick" );
        $( this ).parents( ".portlet:first" ).hide();
        saveOrder(); // This is important
    });

но я не могу интегрировать это в cookie: (

Спасибо, что посмотрели ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...