materio-base-legacy/js/flag_lists_ops.js
bachy 04d628c609 first import from 7.x-1.1
Signed-off-by: bachy <git@g-u-i.net>
2012-10-17 15:19:21 +02:00

80 lines
3.1 KiB
JavaScript

(function ($) {
Drupal.behaviors.flagListsOps = {
attach: function(context) {
// Hide the go button, as it is not needed for JS enabled browsers.
$('.flag-lists-ops-go', context).hide();
// Make select all checkbox work
$('input.flo-table-select-all', context).each(function(i) {
var selectall = $(this);
if (!selectall.hasClass('processed')) {
selectall.change(function(e) {
$('input.flo-select', $(this).parents('form')).attr('checked', $(this).attr('checked'));
}).addClass('processed');
}
});
// Animate the deletion for AJAX deleting.
$('.flo-deleted-value', context).each(function(i) {
var parent = $(this).parents('.view');
$('.flo-select[value='+$(this).val()+']', parent).each(function(i) {
$(this).parents('.views-row, tr').fadeOut().delay(300).remove();
});
});
// Add new options to bottom of list ops dropdown to create new lists on the spot
$('.flag-lists-ops-dropdown', context).each(function(i) {
var select = $(this);
if (!select.hasClass('new-list-processed')) {
select.addClass('new-list-processed');
if (Drupal.settings.flag_lists.types.length > 0) {
$(this).after('<a href="#" class="create-a-new-list">New list?</a><div class="new-list-form"><form><select name="type" class="type"></select><label for="name">List name</label><input type="textfield" name="name" class="name" /></form></div>');
var dialog = $('.new-list-form', $(this).parent()).dialog({
autoOpen: false,
height: 300,
width: 350,
modal: true,
buttons: {
"Create a new list": function() {
var name = $('input.name', $(this)).val();
var type = $('select.type', $(this)).val();
$.getJSON(Drupal.settings.flag_lists.json_path.replace('%', type)+'?name='+name, function(data) {
if (data.error) {
alert(data.error);
}
else {
select.append('<option value="'+data.flag.fid+'">'+data.flag.title+'</option>');
$('input.name', $(this)).val('');
dialog.dialog('close');
}
});
},
Cancel: function() {
dialog.dialog('close');
}
},
close: function() {
}
});
$('.create-a-new-list', $(this).parent())
.button()
.click(function(e) {
dialog.dialog('open');
});
}
// Put entries into the optgroup
for (j in Drupal.settings.flag_lists.types) {
var type = Drupal.settings.flag_lists.types[j];
$('.new-list-form form select.type').append('<option value="'+type+'" class="'+type+'">List for '+type+'</option>');
}
}
});
}
}
})(jQuery);