155 lines
4.5 KiB
JavaScript
155 lines
4.5 KiB
JavaScript
$(document).ready(function() {
|
|
|
|
$('fieldset.fields').parents('form').submit(function() {
|
|
$('fieldset.fields li.template input, fieldset.fields li.template select').attr('disabled', 'disabled');
|
|
});
|
|
|
|
var defaultValue = $('fieldset.fields li.template input[type=text]').val();
|
|
var selectOnChange = function(select) {
|
|
select.hide();
|
|
select.prev()
|
|
.show()
|
|
.html(select[0].options[select[0].options.selectedIndex].text);
|
|
}
|
|
|
|
var refreshPosition = function() {
|
|
jQuery.each($('fieldset.fields li.added input.position'), function(index) {
|
|
$(this).val(index);
|
|
});
|
|
}
|
|
|
|
/* __ fields ___ */
|
|
$('fieldset.fields li.added select').each(function() {
|
|
var select = $(this)
|
|
.hover(function() {
|
|
clearTimeout(select.attr('timer'));
|
|
}, function() {
|
|
select.attr('timer', setTimeout(function() {
|
|
select.hide();
|
|
select.prev().show();
|
|
}, 1000));
|
|
})
|
|
.change(function() { selectOnChange(select); });
|
|
|
|
select.prev().click(function() {
|
|
$(this).hide();
|
|
select.show();
|
|
});
|
|
});
|
|
|
|
$('fieldset.fields li.template input[type=text]').focus(function() {
|
|
if ($(this).hasClass('void') && $(this).parents('li').hasClass('template'))
|
|
$(this).val('').removeClass('void');
|
|
});
|
|
|
|
$('fieldset.fields li.template button').click(function() {
|
|
var lastRow = $(this).parents('li.template');
|
|
|
|
var label = lastRow.find('input.label').val().trim();
|
|
if (label == '' || label == defaultValue) return false;
|
|
|
|
var newRow = lastRow.clone(true).removeClass('template').addClass('added new').insertBefore(lastRow);
|
|
|
|
var dateFragment = '[' + new Date().getTime() + ']';
|
|
newRow.find('input, select').each(function(index) {
|
|
$(this).attr('name', $(this).attr('name').replace('[-1]', dateFragment));
|
|
});
|
|
|
|
var select = newRow.find('select')
|
|
.val(lastRow.find('select').val())
|
|
.change(function() { selectOnChange(select); })
|
|
.hover(function() {
|
|
clearTimeout(select.attr('timer'));
|
|
}, function() {
|
|
select.attr('timer', setTimeout(function() {
|
|
select.hide();
|
|
select.prev().show();
|
|
}, 1000));
|
|
});
|
|
select.prev()
|
|
.html(select[0].options[select[0].options.selectedIndex].text)
|
|
.click(function() {
|
|
$(this).hide();
|
|
select.show();
|
|
});
|
|
|
|
// then "reset" the form
|
|
lastRow.find('input.label').val(defaultValue).addClass('void');
|
|
|
|
// warn the sortable widget about the new row
|
|
$("fieldset.fields ol").sortable('refresh');
|
|
|
|
refreshPosition();
|
|
});
|
|
|
|
$('fieldset.fields li a.remove').click(function(e) {
|
|
if (confirm($(this).attr('data-confirm'))) {
|
|
var parent = $(this).parents('li');
|
|
|
|
if (parent.hasClass('new'))
|
|
parent.remove();
|
|
else {
|
|
var field = parent.find('input.position')
|
|
field.attr('name', field.attr('name').replace('[position]', '[_destroy]'));
|
|
|
|
parent.hide().removeClass('added')
|
|
}
|
|
|
|
refreshPosition();
|
|
}
|
|
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
});
|
|
|
|
// sortable list
|
|
$("fieldset.fields ol").sortable({
|
|
handle: 'span.handle',
|
|
items: 'li:not(.template)',
|
|
axis: 'y',
|
|
update: refreshPosition
|
|
});
|
|
|
|
// edit in depth custom field
|
|
$('fieldset.fields li.item span.actions a.edit').click(function() {
|
|
var link = $(this);
|
|
$.fancybox({
|
|
titleShow: false,
|
|
content: $(link.attr('href')).parent().html(),
|
|
onComplete: function() {
|
|
$('#fancybox-wrap form').submit(function(e) {
|
|
$.fancybox.close();
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
});
|
|
|
|
var parent = link.parent();
|
|
|
|
if (parent.prevAll('select').val() == 'Text') {
|
|
var formatting = parent.prevAll('.text-formatting').val();
|
|
$('#fancybox-wrap #custom_fields_field_text_formatting').val(formatting);
|
|
$('#fancybox-wrap #custom_fields_field_text_formatting_input').show();
|
|
} else {
|
|
$('#fancybox-wrap #custom_fields_field_text_formatting_input').hide();
|
|
}
|
|
|
|
var alias = parent.prevAll('.alias').val().trim();
|
|
if (alias == '') alias = makeSlug(link.parent().prevAll('.label').val());
|
|
$('#fancybox-wrap #custom_fields_field__alias').val(alias);
|
|
|
|
var hint = parent.prevAll('.hint').val();
|
|
$('#fancybox-wrap #custom_fields_field_hint').val(hint);
|
|
},
|
|
onCleanup: function() {
|
|
var parent = link.parent();
|
|
|
|
var alias = $('#fancybox-wrap #custom_fields_field__alias').val().trim();
|
|
if (alias != '') parent.prevAll('.alias').val(alias);
|
|
var hint = $('#fancybox-wrap #custom_fields_field_hint').val().trim();
|
|
if (hint != '') parent.prevAll('.hint').val(hint);
|
|
var formatting = $('#fancybox-wrap #custom_fields_field_text_formatting').val();
|
|
parent.prevAll('.text-formatting').val(formatting);
|
|
}
|
|
})
|
|
});
|
|
}); |