jQuery(document).ready(function($) { var load_cb, memberstab, update_cb; init_members_cb = function () { formatItems = function (item, container, query) { var match = item.name.toUpperCase().indexOf(query.term.toUpperCase()), tl = query.term.length, markup = []; if (match < 0) { return "" + OpenProject.Helpers.markupEscape(item.name) + ""; } markup.push(OpenProject.Helpers.markupEscape( item.name.substring(0, match))); markup.push(""); markup.push(OpenProject.Helpers.markupEscape( item.name.substring(match, match + tl))); markup.push(""); markup.push(OpenProject.Helpers.markupEscape( item.name.substring(match + tl, item.name.length))); return markup.join(""); } formatItemSelection = function (item) { return OpenProject.Helpers.markupEscape(item.name); } $("#members_add_form select.select2-select").each(function (ix, elem){ if ($(elem).hasClass("remote") || $(elem).attr("data-ajaxURL") !== undefined) { // remote loading if (!$.isEmptyObject(elem.siblings('div.select2-select.select2-container'))) { setTimeout (function () { var attributes, allowed, currentName, fakeInput; attributes = {} allowed = ["title", "placeholder"]; for(var i = 0; i < $(elem).get(0).attributes.length; i++) { currentName = $(elem).get(0).attributes[i].name; if(currentName.indexOf("data-") == 0 || $.inArray(currentName, allowed)); //only ones starting with data- attributes[currentName] = $(elem).attr(currentName); } fakeInput = $(elem).after("").siblings(":input:first"); fakeInput.attr(attributes); $(fakeInput).select2({ multiple: fakeInput.attr("multiple"), minimumInputLength: fakeInput.attr("data-minimumInputLength") || 0, ajax: { url: $(fakeInput).attr("data-ajaxURL"), quietMillis: 500, dataType: 'json', data: function (term, page) { return { q: term, //search term page_limit: 10, // page size page: page, // current page number id: fakeInput.attr("data-projectId") // current project id }; }, results: function (data, page) { active_items = [] data.results.items.each(function (e) { e.name = $('
').text(e.name).html(); active_items.push(e); }); return {'results': active_items, 'more': data.results.more}; } }, formatResult: formatItems, formatSelection: formatItemSelection }); $(elem).remove(); }, 0); } } else { // no remote loading! $(elem).select2(); } }); } memberstab = $('#tab-members').first(); if ((memberstab != null) && (memberstab.hasClass("selected"))) { init_members_cb(); } else { memberstab.click(init_members_cb); } });