Defect #17071 » 0001-Multiple-Watcher-Selection-Patch.patch
| app/views/watchers/_new.html.erb | ||
|---|---|---|
| 21 | 21 |
:project_id => @project) }')" %> |
| 22 | 22 |
<div id="users_for_watcher"> |
| 23 |
<%= principals_check_box_tags('watcher[user_ids][]', users) %>
|
|
| 23 |
<%= principals_check_box_tags('watchers[]', users) %>
|
|
| 24 | 24 |
</div> |
| 25 |
<div id="users_watching_issue" style="display: none;"></div> |
|
| 26 |
<%= javascript_tag "var persistentWatcher = new persistWatchersList('watcher[user_ids][]', 'users_watching_issue', 'users_for_watcher');" %>
|
|
| 27 |
<%= javascript_tag do -%> |
|
| 28 |
$(document).ajaxSuccess(function (evt, xhr, settings ) {
|
|
| 29 |
if (/^\/watchers\/autocomplete_for_user\?/.test(settings.url)) {
|
|
| 30 |
persistentWatcher.bindCheckboxes(); |
|
| 31 |
} |
|
| 32 |
}); |
|
| 33 |
<% end -%> |
|
| 25 | 34 |
<p class="buttons"> |
| 26 | 35 |
<%= submit_tag l(:button_add), :name => nil, :onclick => "hideModal(this);" %> |
| app/views/watchers/autocomplete_for_user.html.erb | ||
|---|---|---|
| 1 |
<%= principals_check_box_tags 'watcher[user_ids][]', @users %> |
|
| 1 |
<%= principals_check_box_tags 'watchers[]', @users %> |
|
| public/javascripts/application.js | ||
|---|---|---|
| 796 | 796 |
} |
| 797 | 797 |
} |
| 798 |
function persistWatchersList(inputName, inputContainer, checkboxContainer) {
|
|
| 799 |
this.inputName = inputName; |
|
| 800 |
this.inputContainer = $('#' + inputContainer);
|
|
| 801 |
this.checkboxContainer = $('#' + checkboxContainer);
|
|
| 802 |
this.bindCheckboxes(); |
|
| 803 |
} |
|
| 804 | ||
| 805 |
persistWatchersList.prototype = {
|
|
| 806 |
bindCheckboxes: function () {
|
|
| 807 |
var oThis = this; |
|
| 808 |
this.checkboxContainer.find("input[type='checkbox']").each(function (idx) {
|
|
| 809 |
var checkbox = $(this); |
|
| 810 |
oThis.inputContainer.find("input[type='hidden']").each(function (index) {
|
|
| 811 |
if ($(this).val() == checkbox.val()) {
|
|
| 812 |
checkbox.prop('checked', true);
|
|
| 813 |
} |
|
| 814 |
}); |
|
| 815 |
checkbox.change(function (evt) {
|
|
| 816 |
oThis.watcherChange($(this)); |
|
| 817 |
}); |
|
| 818 |
}); |
|
| 819 |
}, |
|
| 820 | ||
| 821 |
watcherChange: function (input) {
|
|
| 822 |
if (input.is(':checked')) {
|
|
| 823 |
this.inputContainer.append( |
|
| 824 |
'<input type="hidden" name="' + this.inputName + '" value="' + input.val() + '" />' |
|
| 825 |
); |
|
| 826 |
} else {
|
|
| 827 |
this.inputContainer.find('input[name="' + this.inputName + '"][value="' + input.val() + '"]').remove();
|
|
| 828 |
} |
|
| 829 |
} |
|
| 830 |
}; |
|
| 831 | ||
| 832 | ||
| 798 | 833 |
(function ( $ ) {
|
| 799 | 834 |
// detect if native date input is supported |