Defect #17071 » patch_commit_6682c6d40dc8.patch
app/views/watchers/_new.html.erb | ||
---|---|---|
17 | 17 |
:project_id => @project) }')" %> |
18 | 18 | |
19 | 19 |
<div id="users_for_watcher"> |
20 |
<%= principals_check_box_tags('watcher[user_ids][]', users) %>
|
|
20 |
<%= principals_check_box_tags('watchers[]', users) %>
|
|
21 | 21 |
</div> |
22 |
<div id="users_watching_issue" style="display: none;"></div> |
|
23 |
<%= javascript_tag "var persistentWatcher = new persistWatchersList('watcher[user_ids][]', 'users_watching_issue', 'users_for_watcher');" %> |
|
24 |
<%= javascript_tag do -%> |
|
25 |
$(document).ajaxSuccess(function (evt, xhr, settings ) { |
|
26 |
if (/^\/watchers\/autocomplete_for_user\?/.test(settings.url)) { |
|
27 |
persistentWatcher.bindCheckboxes(); |
|
28 |
} |
|
29 |
}); |
|
30 |
<% end -%> |
|
31 | ||
22 | 32 | |
23 | 33 |
<p class="buttons"> |
24 | 34 |
<%= 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 | ||
---|---|---|
602 | 602 |
function toggleDisabledInit() { |
603 | 603 |
$('input[data-disables], input[data-enables]').each(toggleDisabledOnChange); |
604 | 604 |
} |
605 | ||
606 |
function persistWatchersList(inputName, inputContainer, checkboxContainer) { |
|
607 |
this.inputName = inputName; |
|
608 |
this.inputContainer = $('#' + inputContainer); |
|
609 |
this.checkboxContainer = $('#' + checkboxContainer); |
|
610 |
|
|
611 |
this.bindCheckboxes(); |
|
612 |
} |
|
613 | ||
614 |
persistWatchersList.prototype = { |
|
615 |
bindCheckboxes: function () { |
|
616 |
var oThis = this; |
|
617 |
this.checkboxContainer.find("input[type='checkbox']").each(function(idx) { |
|
618 |
var checkbox = $(this); |
|
619 |
oThis.inputContainer.find("input[type='hidden']").each(function (index) { |
|
620 |
if ($(this).val() == checkbox.val()) { |
|
621 |
checkbox.prop('checked', true); |
|
622 |
} |
|
623 |
}); |
|
624 |
checkbox.change(function (evt) { oThis.watcherChange($(this)); }); |
|
625 |
}); |
|
626 |
}, |
|
627 |
|
|
628 |
watcherChange: function(input) { |
|
629 |
if (input.is(':checked')) { |
|
630 |
this.inputContainer.append( |
|
631 |
'<input type="hidden" name="' + this.inputName + '" value="' + input.val() + '" />' |
|
632 |
); |
|
633 |
} else { |
|
634 |
this.inputContainer.find('input[name="' + this.inputName + '"][value="' + input.val() + '"]').remove(); |
|
635 |
} |
|
636 |
} |
|
637 |
} |
|
638 | ||
605 | 639 |
$(document).ready(function(){ |
606 | 640 |
$('#content').on('change', 'input[data-disables], input[data-enables]', toggleDisabledOnChange); |
607 | 641 |
toggleDisabledInit(); |