// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
|
|
//
|
|
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
|
|
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
|
|
// $Id$
|
|
(function ($) {
|
|
|
|
$(document).on('mouseenter', '.edit-ml tbody:not(.ui-sortable) .icon-sort', function () {
|
|
$(this).closest('tbody').filter(':not(.ui-sortable)').sortable({
|
|
handle: '.icon-sort',
|
|
stop: function () {
|
|
$(this).closest('table').trigger('model-update');
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('change', '.edit-ml .selection', function () {
|
|
var value = $(this).val(), $add = $(this).closest('table').find('.add-learner');
|
|
|
|
if (! $add.data('original-href')) {
|
|
$add.data('original-href', $add.attr('href'));
|
|
}
|
|
|
|
$add
|
|
.attr('href', $add.data('original-href') + '&class=' + value);
|
|
});
|
|
|
|
$(document).on('click', '.edit-ml .add-learner', $.clickModal({
|
|
success: function (data) {
|
|
var $row = $(this).closest('table').find('tbody tr.d-none').clone().removeClass('d-none').appendTo($(this).closest('table').find('tbody'));
|
|
|
|
$('.learner', $row[0]).val(data.learner);
|
|
$('.arguments', $row[0]).text(data.arguments).attr('href', $('.arguments', $row[0]).attr('href')+'&class='+data.payload.class);
|
|
$('.serialized-args', $row[0]).val(JSON.stringify(data.payload));
|
|
|
|
$(this).closest('table').trigger('model-update');
|
|
|
|
$.closeModal();
|
|
}
|
|
}));
|
|
|
|
var populate_arguments = function(args) {
|
|
for (var i = 0, l = args.length; i < l; i++) {
|
|
var arg = args[i];
|
|
$('input[name="args['+arg.name+']"]', this).val(arg.value);
|
|
if (arg.input_type == 'rubix' && arg.value) {
|
|
var iargs = arg.value;
|
|
$('[name="args['+arg.name+'][class]"]', this).val(iargs.class);
|
|
$('textarea[name="args['+arg.name+'][args]"]', this).val(JSON.stringify(iargs.args));
|
|
}
|
|
if (arg.input_type == 'layers' && arg.value) {
|
|
for (var j = 0, lj = arg.value.length; j < lj; j++) {
|
|
var $container = $(this).find('.ml-layers:last')
|
|
var iargs = arg.value[j];
|
|
$('[name="args['+arg.name+'][classes][]"]', $container).val(iargs.class);
|
|
$('textarea[name="args['+arg.name+'][args][]"]', $container).val(JSON.stringify(iargs.args));
|
|
if (j+1 < lj) {
|
|
$('.ml-add-layer', this).click();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$(document).on('click', '.edit-ml .arguments', function(e) {
|
|
var $row = $(this).closest('tr');
|
|
var payload = JSON.parse($row.find('.serialized-args').val());
|
|
$.clickModal({
|
|
open: function() {
|
|
populate_arguments.bind(this)(payload.args);
|
|
},
|
|
success: function (data) {
|
|
$('.arguments', $row[0]).text(data.arguments);
|
|
$('.serialized-args', $row[0]).val(JSON.stringify(data.payload));
|
|
|
|
$row.closest('table').trigger('model-update');
|
|
|
|
$.closeModal();
|
|
}
|
|
}, $(this).attr('href'))(e);
|
|
return false;
|
|
});
|
|
|
|
$(document).on('change', '.ml-class', function(e) {
|
|
var cl = $(this).val();
|
|
if (! cl) {
|
|
return false;
|
|
}
|
|
var $storage = $(this).parent().find('textarea');
|
|
var payload = JSON.parse($storage.val() || '[]');
|
|
$.clickModal({
|
|
open: function() {
|
|
populate_arguments.bind(this)(payload);
|
|
},
|
|
success: function (data) {
|
|
$storage.val(JSON.stringify(data.payload.args));
|
|
$.closeModal();
|
|
}
|
|
}, $(this).data('href')+($(this).data('href').indexOf('?') > -1 ? '&' : '?')+'class='+cl)(e);
|
|
return false;
|
|
});
|
|
|
|
$(document).on('click', '.ml-add-layer', function(e) {
|
|
e.preventDefault();
|
|
$(this).prev().clone().insertBefore($(this));
|
|
});
|
|
|
|
$(document).on('click', '.edit-ml .remove', function (e) {
|
|
var $table = $(this).closest('table');
|
|
e.preventDefault();
|
|
$(this).closest('tr').remove();
|
|
$table.trigger('model-update');
|
|
});
|
|
|
|
$(document).on('model-update', '.edit-ml table', function () {
|
|
var payload = [];
|
|
|
|
$('tbody tr:not(.d-none) .serialized-args', this).each(function () {
|
|
payload.push(JSON.parse($(this).val()));
|
|
});
|
|
|
|
$('textarea[name=payload]').val(JSON.stringify(payload));
|
|
});
|
|
|
|
}(jQuery));
|