Bug 11534: fix bug that made it impossible to remove instructors from a course

In some cases clicking the "remove" link to remove a course instructor
when editing a course reserves course doesn't work. I suspect this is
caused by leading zeroes in the card number. This patch refactors the
relevant function to fix the problem and to remove inline JavaScript
from generated markup.

Other changes:

- Make the "Remove" text translatable
- Re-order the first name and last name when added by JavaScript to
match the template's "surname, firstname" order.

To test:

1. If necessary, create or modify a patron to have a card number
   with leading zeroes.
2. Go to Course reserves and add or edit a course.
3. If you are editing a course and there are existing instructors, click
   the "remove" link. Nothing will happen.
4. Perform a patron search and choose one of the results. The name
   should be added to the list of instructors in the format "surname,
   firstname."
5. Click the "remove" link next to the patron name which was just added.
   Nothing will happen.
6. Apply the patch and repeat step 4. The "remove" link should work.
7. Add an instructor and save the course reserve. Repeat steps 2 and 3.
   The "remove" link should now work.

To test the translation fix, after applying the patch run "translate
update [language code]" and confirm that the "Remove" string is listed
in the updated po file for course_reserves/course.tt.

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
This commit is contained in:
Owen Leonard 2014-01-29 12:52:51 -05:00 committed by Galen Charlton
parent 1a5da08342
commit d567733f23

View file

@ -43,7 +43,7 @@
source: "/cgi-bin/koha/circ/ysearch.pl",
minLength: 3,
select: function( event, ui ) {
AddInstructor( ui.item.firstname + " " + ui.item.surname, ui.item.cardnumber );
AddInstructor( ui.item.surname + ", " + ui.item.firstname, ui.item.cardnumber );
return false;
}
})
@ -54,17 +54,32 @@
.appendTo( ul );
};
if ( ! $('#instructors').html() ) {
$('#course_instructors').hide();
}
$("body").on("click",".removeInstructor",function(e){
e.preventDefault();
var divid = $(this).parent().attr("id");
var cardnumber = divid.replace("borrower_","");
RemoveInstructor(cardnumber);
});
});
function AddInstructor( name, cardnumber ) {
div = "<div id='borrower_" + cardnumber + "'>" + name + " ( <a href='#' onclick='RemoveInstructor(" + cardnumber + ");return false;'> Remove </a> ) <input type='hidden' name='instructors' value='" + cardnumber + "' /></div>";
div = "<div id='borrower_" + cardnumber + "'>" + name + " ( <a href='#' class='removeInstructor'> " + _("Remove")+ " </a> ) <input type='hidden' name='instructors' value='" + cardnumber + "' /></div>";
$('#instructors').append( div );
$('#find_instructor').val('').focus();
$('#course_instructors').show();
}
function RemoveInstructor( cardnumber ) {
$( '#borrower_' + cardnumber ).remove();
if ( ! $('#instructors').html() ) {
$('#course_instructors').hide( 800 );
}
}
//]]>
@ -143,15 +158,9 @@
<li>
<span class="label">Instructors:</span>
<fieldset>
<div id="instructors">
[% FOREACH i IN instructors %]
<div id="borrower_[% i.cardnumber %]">
[% i.surname %], [% i.firstname %] ( <a href='#' onclick='RemoveInstructor( [% i.cardnumber %] );'> Remove </a> )
<input type='hidden' name='instructors' value='[% i.cardnumber %]' />
</div>
[% END %]
</div>
<fieldset id="course_instructors">
<div id="instructors">[% FOREACH i IN instructors %]<div id="borrower_[% i.cardnumber %]">[% i.surname %], [% i.firstname %] ( <a href="#" class="removeInstructor"> Remove </a> )
<input type='hidden' name='instructors' value='[% i.cardnumber %]' /></div>[% END %]</div>
</fieldset>
<fieldset>