(function($) {
$(function() {
- // clicking on book checks chunks, too
- $("input[name=select_book]").change(function(ev) {
- $book = $(this);
- $book.closest("table").find("input[name=select_chunk][data-book-id=" + $book.val() + "]").attr("checked", $book.is(':checked'));
- });
- // initialize context menu
-
- var get_ids = function() {
- return $.map($("input[name=select_chunk]:checked"), function(ele, idx) {
- return ele.value;
- }).concat(
- $.map($("input[name=select_book][data-chunk-id!=]:checked"), function(ele, idx) {
- return $(ele).attr("data-chunk-id");
- })).join();
- };
-
+ // clicking on book checks chunks, too
+ $("input[name=select_book]").change(function(ev) {
+ $book = $(this);
+ $book.closest("table").find("input[name=select_chunk][data-book-id=" + $book.val() + "]").attr("checked", $book.is(':checked'));
+ });
- var set_field = function(key, ops) {
- var kp = key.split('_');
- var field = kp[0];
- var idx = parseInt(kp[1]);
+ // initialize context menu
- var fds = {}
- fds.stage = "";
- fds.user = "";
- fds.status = "";
- fds[field] = $("select[name="+field+"] option[value!=]").eq(idx).val();
- $("#chunk_mass_edit [name=ids]").val(get_ids());
- for (var fn in fds) {
- $("#chunk_mass_edit [name="+fn+"]").val(fds[fn]);
- }
+ var get_ids = function() {
+ return $.map($("input[name=select_chunk]:checked"), function(ele, idx) {
+ return ele.value;
+ }).concat(
+ $.map($("input[name=select_book][data-chunk-id!=]:checked"), function(ele, idx) {
+ return $(ele).attr("data-chunk-id");
+ })).join();
+ };
- $.post($("#chunk_mass_edit").attr("action"),
- $("#chunk_mass_edit").serialize(),
- function(data, status) {
- location.reload(true);
- }
- );
+ var get_callback = function(form_field_name) {
+ var $form = $("#chunk_mass_edit");
+ var $field = $("[name=" + form_field_name + "]", $form);
+ var $ids_field = $("[name=ids]").val(get_ids());
+ var usable_callback = function(value) {
+ $field.val(value);
+ $ids_field.val(get_ids());
+ $.post($form.attr("action"),
+ $form.serialize(),
+ function(data, status) {
+ location.reload(true);
+ }
+ );
return true;
+ };
+ return usable_callback;
+ };
-
- };
+ var get_items = function(field, callback) {
+ var d = {};
+ $.each($("select[name="+field+"] option[value!=]"),
+ function(idx, ele) {
+ d[field + "_" + idx] = {
+ name: $(ele).text(),
+ callback: function() {callback($(ele).attr('value'));}
+ };
+ });
+ return d;
+ };
- var get_items = function(field) {
- var d = {};
- $.each($("select[name="+field+"] option[value!=]"),
- function(idx, ele) {
- d[field+"_"+idx] = { name: $(ele).text() };
- });
- return d;
- };
+ var user_callback = get_callback('user');
+ var users = [
+ get_items("user", user_callback),
+ {sep: '----'},
+ get_items("other-user", user_callback)
+ ];
+ var current_user_items = user_items = {};
+ var i = 0;
+ var more_label = $("label[for=mass_edit_more_users]").text();
+ for (user_table in users) {
+ for (user in users[user_table]) {
+ if (i && i % 20 == 0) {
+ var more_items = {};
+ current_user_items['more'] = {
+ name: more_label,
+ items: more_items
+ };
+ current_user_items = more_items;
+ }
+ current_user_items[user] = users[user_table][user];
+ i += 1;
+ }
+ }
+ $.contextMenu({
+ selector: '#file-list',
+ items: {
+ stage: {
+ name: $("label[for=mass_edit_stage]").text(),
+ items: get_items("stage", get_callback('stage')),
+ icon: "clock",
+ },
+ user: {
+ name: $("label[for=mass_edit_user]").text(),
+ items: user_items,
+ icon: "user",
+ },
+ project: {
+ name: $("label[for=mass_edit_project]").text(),
+ items: get_items("project", get_callback('project')),
+ },
+ },
+ });
- $.contextMenu({
- selector: '#file-list',
- items: {
- "stage": {
- name: "Set stage",
- items: get_items("stage"),
- },
- "user": {
- name: "Set user",
- items: get_items("user"),
- },
- "status": {
- name: "set status",
- items: get_items("status"),
- },
- },
- callback: set_field,
- });
-
});
})(jQuery);