67 lines
2.0 KiB
JavaScript
67 lines
2.0 KiB
JavaScript
|
|
||
|
$(function() {
|
||
|
var $agenda_list = $('ol.agenda_list');
|
||
|
|
||
|
var rebuildOpenersClosers = function ( ) {
|
||
|
$agenda_list.find("li").each(function() {
|
||
|
var $li = $(this);
|
||
|
if ($li.find("> ol").length > 0) $li.find("> div .opener_closer").show();
|
||
|
else $li.find("> div .opener_closer").hide();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
var rebuildNesting = function( $root, level, parent_id ) {
|
||
|
var $children = $root.find('> li'),
|
||
|
curr_weight = -50;
|
||
|
|
||
|
$children.each(function() {
|
||
|
var $child = $(this),
|
||
|
$curr_element = $child.find('> div'),
|
||
|
my_id = $curr_element.find('.menu-mlid').val();
|
||
|
|
||
|
$curr_element.find('.menu-plid').val(parent_id);
|
||
|
$curr_element.find('.menu-weight').val(curr_weight);
|
||
|
curr_weight++;
|
||
|
|
||
|
$child.find('> ol').each(function() {
|
||
|
rebuildNesting( $(this), level + 1, my_id );
|
||
|
});
|
||
|
|
||
|
});
|
||
|
|
||
|
};
|
||
|
|
||
|
if ($agenda_list.hasClass("sortable")) $agenda_list.nestedSortable({
|
||
|
forcePlaceholderSize: true,
|
||
|
handle: 'div',
|
||
|
helper: 'clone',
|
||
|
items: 'li',
|
||
|
opacity: .6,
|
||
|
placeholder: 'placeholder',
|
||
|
revert: 250,
|
||
|
tabSize: 25,
|
||
|
tolerance: 'pointer',
|
||
|
toleranceElement: '> div',
|
||
|
isTree: true,
|
||
|
expandOnHover: 700,
|
||
|
startCollapsed: true,
|
||
|
update: function (event, ui) {
|
||
|
var $this = $(this);
|
||
|
rebuildNesting($this, 0, 0);
|
||
|
$('#changed-order-message').show();
|
||
|
rebuildOpenersClosers();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
rebuildOpenersClosers();
|
||
|
|
||
|
$agenda_list.find(".opener_closer .opener").click(function(ev) {
|
||
|
ev.preventDefault();
|
||
|
$(this).parents("li").first().removeClass("closed");
|
||
|
});
|
||
|
$agenda_list.find(".opener_closer .closer").click(function(ev) {
|
||
|
ev.preventDefault();
|
||
|
$(this).parents("li").first().addClass("closed");
|
||
|
});
|
||
|
});
|