Jonathan Druart
d3f3a55e0b
We have different classes we can use to set specific behaviours on table columns: title-string, string-sort, anti-the and NoSort. We should not need to pass them to the DataTable constructor, we could teach it that we always want to apply them. It will avoid bug like bug 26233 The goal is to define them in a centralised place (columns_settings.inc) then only use the class on the th Test plan: Different behaviour and tables must be tested to confirm it works correctly. Focus must be put on table when aoColumnsDefs is passed from the template and confirm that this will add more info to aoColumnsDefs and not remove the existing ones. Note that this only work when KohaTable is used. Signed-off-by: Owen Leonard <oleonard@myacpl.org> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
310 lines
18 KiB
Text
310 lines
18 KiB
Text
[% USE raw %]
|
|
[% USE Asset %]
|
|
[% USE AuthorisedValues %]
|
|
[% USE ItemTypes %]
|
|
[% USE Branches %]
|
|
[% USE TablesSettings %]
|
|
[% SET footerjs = 1 %]
|
|
[% INCLUDE 'doc-head-open.inc' %]
|
|
<title>Koha › Course reserves › Course details for [% course.course_name | html %]</title>
|
|
[% INCLUDE 'doc-head-close.inc' %]
|
|
|
|
<style>
|
|
#instructors {
|
|
float: left;
|
|
}
|
|
.instructor_line {
|
|
padding: 0 .1em;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body id="courses_course_details" class="course">
|
|
|
|
[% INCLUDE 'header.inc' %]
|
|
[% INCLUDE 'cat-search.inc' %]
|
|
|
|
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/course_reserves/course-reserves.pl">Course reserves</a> › Course details for <i>[% course.course_name | html %]</i></div>
|
|
|
|
<div class="main container-fluid">
|
|
<div class="row">
|
|
<div class="col-md-10 col-md-offset-1">
|
|
|
|
[% IF CAN_user_coursereserves_add_reserves OR CAN_user_coursereserves_manage_courses OR CAN_user_coursereserves_manage_courses %]
|
|
<div id="toolbar">
|
|
[% IF CAN_user_coursereserves_add_reserves %]
|
|
<a class="btn btn-default" id="add_items" href="/cgi-bin/koha/course_reserves/add_items.pl?course_id=[% course.course_id | html %]"><i class="fa fa-plus"></i> Add reserves</a>
|
|
<a class="btn btn-default" id="add_items" href="/cgi-bin/koha/course_reserves/batch_add_items.pl?course_id=[% course.course_id | html %]"><i class="fa fa-plus"></i> Batch add reserves</a>
|
|
[% END %]
|
|
[% IF CAN_user_coursereserves_delete_reserves && course_reserves %]
|
|
<a class="btn btn-default" id="rm_items" href="/cgi-bin/koha/course_reserves/course-details.pl?course_id=[% course.course_id | html %]&action=rm_all"><i class="fa fa-minus"></i> Remove all reserves</a>
|
|
[% END %]
|
|
[% IF ( CAN_user_coursereserves_manage_courses ) %]
|
|
<a class="btn btn-default" id="edit_course" href="/cgi-bin/koha/course_reserves/course.pl?course_id=[% course.course_id | html %]"><i class="fa fa-pencil"></i> Edit course</a>
|
|
[% END %]
|
|
[% IF ( CAN_user_coursereserves_manage_courses ) %]
|
|
<a class="btn btn-default" id="delete_course" href="/cgi-bin/koha/course_reserves/mod_course.pl?course_id=[% course.course_id | html %]&action=del"><i class="fa fa-trash"></i> Delete course</a>
|
|
[% END %]
|
|
</div><!-- /toolbar -->
|
|
[% END %]
|
|
|
|
<div class="rows">
|
|
<ol>
|
|
<li><span class="label">Course name</span> [% course.course_name | html %]</li>
|
|
<li><span class="label">Term</span> [% AuthorisedValues.GetByCode( 'TERM', course.term ) | html %]</li>
|
|
<li><span class="label">Department</span> [% AuthorisedValues.GetByCode( 'DEPARTMENT', course.department ) | html %]</li>
|
|
<li><span class="label">Course number</span> [% course.course_number | html %]</li>
|
|
<li><span class="label">Section</span> [% course.section | html %]</li>
|
|
<li>
|
|
<span class="label">Instructors</span>
|
|
<div id="instructors">
|
|
[% FOREACH i IN course.instructors %]
|
|
<div class="instructor_line">
|
|
<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% i.borrowernumber | uri %]">[% i.firstname | html %] [% i.surname | html %]</a>
|
|
</div>
|
|
[% END %]
|
|
</div>
|
|
</li>
|
|
<li><span class="label">Staff note</span> [% course.staff_note | html %]</li>
|
|
<li><span class="label">Public note</span> [% course.public_note | $raw %]</li>
|
|
<li><span class="label">Student count</span> [% course.students_count | html %]</li>
|
|
<li><span class="label">Status</span> [% IF course.enabled == 'yes' %]Active[% ELSE %]Inactive[% END %]</li>
|
|
</ol>
|
|
</div>
|
|
|
|
[% IF course_reserves %]
|
|
<h1>Reserves</h1>
|
|
<table id="course_reserves_table">
|
|
<thead>
|
|
<tr>
|
|
<th class="anti-the">Title</th>
|
|
<th>Author</th>
|
|
<th>Barcode</th>
|
|
<th>Call number</th>
|
|
[% IF item_level_itypes %]<th>Item type</th>[% END %]
|
|
<th>Collection</th>
|
|
<th>Location</th>
|
|
<th>Home library</th>
|
|
<th>Holding library</th>
|
|
<th>Staff note</th>
|
|
<th>Public note</th>
|
|
<th>Link</th>
|
|
<th class="NoSort">Other course reserves</th>
|
|
<th>Status</th>
|
|
[% IF CAN_user_coursereserves_add_reserves || CAN_user_coursereserves_delete_reserves %]
|
|
<th class="NoSort">Actions</th>
|
|
[% END %]
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
[% FOREACH cr IN course_reserves %]
|
|
<tr>
|
|
<td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% cr.biblio.biblionumber | uri %]">[% INCLUDE 'biblio-title.inc' biblio=cr.biblio %]</a></td>
|
|
<td>[% cr.biblio.author | html %]</td>
|
|
<td><a href="/cgi-bin/koha/catalogue/moredetail.pl?itemnumber=[% cr.item.itemnumber | uri %]&biblionumber=[% cr.biblio.biblionumber | uri %]&bi=[% cr.biblioitem.biblioitemnumber | uri %]">[% cr.item.barcode | html %]</a></td>
|
|
<td>[% cr.item.itemcallnumber | html %]</td>
|
|
[% IF item_level_itypes %]
|
|
<td>
|
|
[% IF cr.course_item.itype_enabled %]
|
|
[% IF cr.course_item.enabled == 'yes' %]
|
|
<strong>[% ItemTypes.GetDescription( cr.item.effective_itemtype ) | html %]</strong>
|
|
([% ItemTypes.GetDescription( cr.course_item.itype_storage ) | html %])
|
|
[% ELSE %]
|
|
[% ItemTypes.GetDescription( cr.course_item.itype ) | html %]
|
|
(<strong>[% ItemTypes.GetDescription( cr.item.effective_itemtype) | html %]</strong>)
|
|
[% END %]
|
|
[% ELSE %]
|
|
<i>Unchanged</i>
|
|
[% IF cr.item.itype %]
|
|
([% ItemTypes.GetDescription( cr.item.itype ) | html %])
|
|
[% END %]
|
|
[% END %]
|
|
</td>
|
|
[% END %]
|
|
<td>
|
|
[% IF cr.course_item.ccode_enabled %]
|
|
[% IF cr.course_item.enabled == 'yes' %]
|
|
<strong>[% AuthorisedValues.GetByCode( 'CCODE', cr.item.ccode ) | html %]</strong>
|
|
[% IF cr.item.ccode %]
|
|
([% AuthorisedValues.GetByCode( 'CCODE', cr.course_item.ccode_storage ) | html %])
|
|
[% END %]
|
|
[% ELSE %]
|
|
[% AuthorisedValues.GetByCode( 'CCODE', cr.course_item.ccode ) | html %]
|
|
[% IF cr.item.ccode %]
|
|
(<strong>[% AuthorisedValues.GetByCode( 'CCODE', cr.item.ccode ) | html %]</strong>)
|
|
[% END %]
|
|
[% END %]
|
|
[% ELSE %]
|
|
<i>Unchanged</i>
|
|
[% IF cr.item.ccode %]
|
|
([% AuthorisedValues.GetByCode( 'CCODE', cr.item.ccode ) | html %])
|
|
[% END %]
|
|
[% END %]
|
|
</td>
|
|
<td>
|
|
[% IF cr.course_item.location_enabled %]
|
|
[% IF cr.course_item.enabled == 'yes' %]
|
|
<strong>[% AuthorisedValues.GetByCode( 'LOC', cr.item.permanent_location ) | html %]</strong>
|
|
[% IF cr.item.permanent_location %]
|
|
([% AuthorisedValues.GetByCode( 'LOC', cr.course_item.location_storage ) | html %])
|
|
[% END %]
|
|
[% ELSE %]
|
|
[% AuthorisedValues.GetByCode( 'LOC', cr.course_item.location ) | html %]
|
|
[% IF cr.item.permanent_location %]
|
|
(<strong>[% AuthorisedValues.GetByCode( 'LOC', cr.item.permanent_location ) | html %]</strong>)
|
|
[% END %]
|
|
[% END %]
|
|
[% ELSE %]
|
|
<i>Unchanged</i>
|
|
[% IF cr.item.permanent_location %]
|
|
([% AuthorisedValues.GetByCode( 'LOC', cr.item.permanent_location ) | html %])
|
|
[% END %]
|
|
[% END %]
|
|
</td>
|
|
<td>
|
|
[% IF cr.course_item.homebranch_enabled %]
|
|
[% IF cr.course_item.enabled == 'yes' %]
|
|
<strong>[% Branches.GetName( cr.item.homebranch ) | html %]</strong>
|
|
[% IF cr.item.homebranch %]
|
|
([% Branches.GetName( cr.course_item.homebranch_storage ) | html %])
|
|
[% END %]
|
|
[% ELSE %]
|
|
[% Branches.GetName( cr.course_item.homebranch ) | html %]
|
|
[% IF cr.item.homebranch %]
|
|
(<strong>[% Branches.GetName( cr.item.homebranch ) | html %]</strong>)
|
|
[% END %]
|
|
[% END %]
|
|
[% ELSE %]
|
|
<i>Unchanged</i>
|
|
[% IF cr.item.homebranch %]
|
|
([% Branches.GetName( cr.item.homebranch ) | html %])
|
|
[% END %]
|
|
[% END %]
|
|
</td>
|
|
<td>
|
|
[% IF cr.course_item.holdingbranch_enabled %]
|
|
[% IF cr.course_item.enabled == 'yes' %]
|
|
<strong>[% Branches.GetName( cr.item.holdingbranch ) | html %]</strong>
|
|
[% IF cr.item.holdingbranch %]
|
|
([% Branches.GetName( cr.course_item.holdingbranch_storage ) | html %])
|
|
[% END %]
|
|
[% ELSE %]
|
|
[% Branches.GetName( cr.course_item.holdingbranch ) | html %]
|
|
[% IF cr.item.holdingbranch %]
|
|
(<strong>[% Branches.GetName( cr.item.holdingbranch ) | html %]</strong>)
|
|
[% END %]
|
|
[% END %]
|
|
[% ELSE %]
|
|
<i>Unchanged</i>
|
|
[% IF cr.item.holdingbranch %]
|
|
([% Branches.GetName( cr.item.holdingbranch ) | html %])
|
|
[% END %]
|
|
[% END %]
|
|
</td>
|
|
<td>[% IF (cr.staff_note) %]
|
|
[% cr.staff_note | html %]
|
|
[% ELSIF (cr.item.itemnotes_nonpublic) %]
|
|
[% cr.item.itemnotes_nonpublic | html %]
|
|
[% END %]
|
|
</td>
|
|
<td>[% IF (cr.public_note) %]
|
|
[% cr.public_note | $raw %]
|
|
[% ELSIF (cr.item.itemnotes) %]
|
|
[% cr.item.itemnotes | $raw %]
|
|
[% END %]
|
|
</td>
|
|
|
|
<td>
|
|
[% IF (cr.item.uri) %]
|
|
<a href="[% cr.item.uri | url %]">Item URI</a>
|
|
[% ELSIF (cr.biblioitem.url) %]
|
|
<a href="[% cr.biblioitem.url | url %]">Record URL</a>
|
|
[% END %]
|
|
</td>
|
|
|
|
<td>
|
|
[% FOREACH c IN cr.courses %]
|
|
[% UNLESS cr.course_id == c.course_id %]
|
|
<p>
|
|
<a href="course-details.pl?course_id=[% c.course_id | uri %]">
|
|
[% c.course_name | html %]
|
|
[% IF c.section %] [% c.section | html %] [% END %]
|
|
[% IF c.term %] [% AuthorisedValues.GetByCode( 'TERM', c.term ) | html %] [% END %]
|
|
</a>
|
|
</p>
|
|
[% END %]
|
|
[% END %]
|
|
</td>
|
|
|
|
<td class="status">
|
|
<span>
|
|
[% IF cr.item.onloan %]
|
|
Checked out
|
|
[% ELSE %]
|
|
Available
|
|
[% END %]
|
|
</span>
|
|
</td>
|
|
|
|
[% IF CAN_user_coursereserves_add_reserves || CAN_user_coursereserves_delete_reserves %]
|
|
<td class="actions">
|
|
[% IF CAN_user_coursereserves_add_reserves %]
|
|
<a class="btn btn-default btn-xs" href="add_items.pl?course_id=[% course.course_id | html %]&itemnumber=[% cr.item.itemnumber | html %]&action=lookup&return=[% course.course_id | html %]&is_edit=1"><i class="fa fa-pencil"></i> Edit</a>
|
|
[% END %]
|
|
|
|
[% IF CAN_user_coursereserves_delete_reserves %]
|
|
<a class="btn btn-default btn-xs delete_item" href="course-details.pl?course_id=[% course.course_id | html %]&action=del_reserve&cr_id=[% cr.cr_id | html %]">
|
|
<i class="fa fa-trash"></i> Remove</a>
|
|
[% END %]
|
|
</td>
|
|
[% END %]
|
|
|
|
</tr>
|
|
[% END %]
|
|
</tbody>
|
|
</table>
|
|
[% END %]
|
|
</div>
|
|
</div>
|
|
|
|
[% MACRO jsinclude BLOCK %]
|
|
[% INCLUDE 'datatables.inc' %]
|
|
[% INCLUDE 'columns_settings.inc' %]
|
|
<script>
|
|
var columns_settings = [% TablesSettings.GetColumns( 'coursereserves', 'reserves', 'course_reserves_table', 'json' ) | $raw %];
|
|
$(document).ready(function(){
|
|
var rtable = KohaTable("course_reserves_table", {
|
|
"sPaginationType": "full",
|
|
"bAutoWidth": false,
|
|
}, columns_settings );
|
|
|
|
$(".delete_item").click(function(){
|
|
return confirmDelete(_("Are you sure you want to remove this item from the course?"));
|
|
});
|
|
|
|
$("#rm_items").click(function(){
|
|
return confirmDelete(_("Are you sure you want to remove all items from the course?"));
|
|
});
|
|
|
|
$("#delete_course").click(function(){
|
|
[% SET count = course_reserves.size || 0 %]
|
|
[% IF count == 1 %]
|
|
return confirmDelete(_("Are you sure you want to delete this course? There is %s attached item.").format([% count | html %]) );
|
|
[% ELSIF count > 1 %]
|
|
return confirmDelete(_("Are you sure you want to delete this course? There are %s attached items.").format([% count | html %]) );
|
|
[% ELSE %]
|
|
return confirmDelete(_("Are you sure you want to delete this course?"));
|
|
[% END %]
|
|
});
|
|
$(".disabled").tooltip().on("click", function(e){
|
|
e.preventDefault();
|
|
if( $(this).hasClass("checkedout") ){
|
|
alert(_("This item cannot be removed. It is checked out"));
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
[% END %]
|
|
|
|
[% INCLUDE 'intranet-bottom.inc' %]
|