layout demo: update up/down controls when adding elements from toolbox

This commit is contained in:
Jörn Zaefferer 2008-09-03 15:29:45 +00:00
parent 4ea6490a7b
commit b48b8db2d1

View File

@ -1,5 +1,6 @@
(function($){ (function($){
function updateUpDown(sortable) { function updateUpDown(sortable) {
console.log(this, sortable)
$('dl:not(.ui-sortable-helper)', sortable) $('dl:not(.ui-sortable-helper)', sortable)
.removeClass('first').removeClass('last') .removeClass('first').removeClass('last')
.find('.up, .down').removeClass('disabled').end() .find('.up, .down').removeClass('disabled').end()
@ -22,9 +23,15 @@
updateUpDown(dl.parent()); updateUpDown(dl.parent());
}; };
function addControls() {
$(this).append('<span class="options"><a class="up">up</a><a class="down">down</a></span>')
.find('a.up, a.down').bind('click', moveUpDown);
updateUpDown($(this).parents(".ui-sortable:first"));
}
var counter = 1; var counter = 1;
function addItem() { function addItem() {
var sortable = $(this).parents('.ui-sortable'); var sortable = $(this).parents('.ui-sortable:first');
var options = '<span class="options"><a class="up">up</a><a class="down">down</a></span>'; var options = '<span class="options"><a class="up">up</a><a class="down">down</a></span>';
var tpl = '<dl class="sort"><dt>{name}' + options + '</dt><dd>{desc}</dd></dl>'; var tpl = '<dl class="sort"><dt>{name}' + options + '</dt><dd>{desc}</dd></dl>';
var html = tpl.replace(/{name}/g, 'Dynamic name ' + counter).replace(/{desc}/g, 'Description'); var html = tpl.replace(/{name}/g, 'Dynamic name ' + counter).replace(/{desc}/g, 'Description');
@ -60,10 +67,11 @@
var $els = $(els.toString()); var $els = $(els.toString());
$('h2', $els.slice(0,-1)).append('<span class="options"><a class="add">add</a></span>'); $('h2', $els.slice(0,-1)).append('<span class="options"><a class="add">add</a></span>');
$('dt', $els).append('<span class="options"><a class="up">up</a><a class="down">down</a></span>'); $('dt', $els).each(addControls);
//$('dt', $els).append('<span class="options"><a class="up">up</a><a class="down">down</a></span>');
$('a.add').bind('click', addItem); $('a.add').bind('click', addItem);
$('a.up, a.down').bind('click', moveUpDown); //$('a.up, a.down').bind('click', moveUpDown);
$els.each(function(){ $els.each(function(){
updateUpDown(this); updateUpDown(this);
@ -85,6 +93,8 @@
}, },
change: sortableChange, change: sortableChange,
update: sortableUpdate update: sortableUpdate
}).bind("sortreceive", function(e, ui) {
$(ui.item).removeClass('ui-draggable').find('dt').each(addControls);
}); });
$('#components > dl').draggable({ $('#components > dl').draggable({
connectToSortable: $els.not("#trashcan"), connectToSortable: $els.not("#trashcan"),