Bug 12981 - Patron attribute type limit by patron category not working on patron entry form

To reproduce this bug:

- Create a patron attribute type and limit it by patron category
- Create a new patron with that category
- Observe that there is no entry field for the patron attribute type you
  created for that patron category. Inspecting the source should show
  that the entry field has been hidden.

The patron entry form tries to hide patron attribute type input fields
based on the currently selected patron category. It does this based on
the value of $("categorycode"). However, instead of pulling the data
from the categorycode input in the body of the entry form, it pulls it
from the patron search box at the top of the page. The value of that
input is always empty because no category is preselected.

This patch corrects the problem by changing the ID of the categorycode
<select> in the body of the entry form and making corresponding changes
to the JavaScript which depends on it.

To test, apply the patch and load the patron entry form for a patron
category to which a patron attribute type has been limited. That patron
attribute entry field should appear correctly.

Choose a different patron category from the "Category" dropdown. Confirm
that the patron attribute entry field has been hidden.

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
This commit is contained in:
Owen Leonard 2014-09-23 14:41:06 -04:00 committed by Tomas Cohen Arazi
parent 4766318eb6
commit dcad4c38d2

View file

@ -33,8 +33,8 @@
[% IF categorycode %]
update_category_code( "[% categorycode %]" );
[% ELSE %]
if ( $("#categorycode").length > 0 ){
var category_code = $("#categorycode").find("option:selected").val();
if ( $("#categorycode_entry").length > 0 ){
var category_code = $("#categorycode_entry").find("option:selected").val();
update_category_code( category_code );
}
[% END %]
@ -96,7 +96,7 @@
function update_category_code(category_code) {
if ( $(category_code).is("select") ) {
category_code = $("#categorycode").find("option:selected").val();
category_code = $("#categorycode_entry").find("option:selected").val();
}
var mytables = $(".attributes_table");
$(mytables).find("li").hide();
@ -932,8 +932,8 @@
</li>
[% END %]
<li>
<label for="categorycode" class="required">Category: </label>
<select id="categorycode" name="categorycode" onchange="update_category_code(this);">
<label for="categorycode_entry" class="required">Category: </label>
<select id="categorycode_entry" name="categorycode" onchange="update_category_code(this);">
[% FOREACH typeloo IN typeloop %]
[% FOREACH categoryloo IN typeloo.categoryloop %]
[% IF ( loop.first ) %]
@ -1341,7 +1341,7 @@
$('#memberentry_messaging_prefs > *').change(function() {
message_prefs_dirty = true;
});
$('#categorycode').change(function() {
$('#categorycode_entry').change(function() {
var categorycode = $(this).val();
if (message_prefs_dirty) {
if (!confirm('Change messaging preferences to default for this category?')) {