- // 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;
- }).join();
- };
-
- var set_stage = function(key, opt) {
- var stage = $("select[name=stage] option[value!=]").eq(key).val();
- $.post($('input[name=chunk_mass_edit_url]').val(),
- {
- ids: get_ids(),
- stage: stage,
- },
- function(data, status) {
- location.reload(true);
- }
- );
- };
-
- $.contextMenu({
- selector: '#file-list',
- items: {
- "stage": {
- name: "Set stage",
- items: $.map($("select[name=stage] option[value!=]"),
- function(ele, idx) {
- return {
- name: $(ele).text(),
- callback: set_stage,
- };
- }),
- },
-/* "user": {
- name: "Set user",
-
- },
- "status": {
- name: "Set status",
- items:
- },*/
-
- },
- });
-
+
+ // 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();
+ };
+
+ 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 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')),
+ },
+ },
+ });
+
+