Я работаю с портлетами пользовательского интерфейса 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: (
Спасибо, что посмотрели ...