@@ -, +, @@
- 2 new sysprefs:
'In-House Use' to enable/disable this feature
'In-House Use Forced' to enable/disable the feature for *all* users.
- 2 new columns issues.inhouse_use and old_issues.inhouse_use
- Datatable on the circulation history pages (readingrec) at the OPAC
and the intranet.
---
C4/Circulation.pm | 17 +-
C4/Items.pm | 6 +
C4/Stats.pm | 2 +-
circ/circulation.pl | 27 ++-
installer/data/mysql/kohastructure.sql | 2 +
installer/data/mysql/sysprefs.sql | 2 +
installer/data/mysql/updatedatabase.pl | 27 +++
.../intranet-tmpl/prog/en/css/staff-global.css | 14 ++
.../intranet-tmpl/prog/en/includes/strings.inc | 1 +
koha-tmpl/intranet-tmpl/prog/en/js/checkouts.js | 33 +++-
.../intranet-tmpl/prog/en/js/pages/circulation.js | 4 +
.../en/modules/admin/preferences/circulation.pref | 12 ++
.../prog/en/modules/catalogue/detail.tt | 8 +
.../prog/en/modules/circ/circulation.tt | 55 ++++--
.../prog/en/modules/members/readingrec.tt | 127 ++++++++------
koha-tmpl/opac-tmpl/prog/en/css/datatables.css | 194 ++++++++++-----------
.../opac-tmpl/prog/en/includes/item-status.inc | 8 +
koha-tmpl/opac-tmpl/prog/en/js/datatables.js | 2 +-
.../prog/en/modules/opac-readingrecord.tt | 100 +++++++----
svc/checkouts | 3 +
20 files changed, 425 insertions(+), 219 deletions(-)
--- a/C4/Circulation.pm
+++ a/C4/Circulation.pm
@@ -1183,9 +1183,12 @@ AddIssue does the following things :
=cut
sub AddIssue {
- my ( $borrower, $barcode, $datedue, $cancelreserve, $issuedate, $sipmode) = @_;
+ my ( $borrower, $barcode, $datedue, $cancelreserve, $issuedate, $sipmode, $params ) = @_;
+ my $inhouse_use = $params->{inhouse_use};
my $dbh = C4::Context->dbh;
- my $barcodecheck=CheckValidBarcode($barcode);
+ my $barcodecheck=CheckValidBarcode($barcode);
+ $inhouse_use = ( $inhouse_use ? 1 : 0 );
+
if ($datedue && ref $datedue ne 'DateTime') {
$datedue = dt_from_string($datedue);
}
@@ -1253,8 +1256,8 @@ sub AddIssue {
my $sth =
$dbh->prepare(
"INSERT INTO issues
- (borrowernumber, itemnumber,issuedate, date_due, branchcode)
- VALUES (?,?,?,?,?)"
+ (borrowernumber, itemnumber,issuedate, date_due, branchcode, inhouse_use)
+ VALUES (?,?,?,?,?,?)"
);
unless ($datedue) {
my $itype = ( C4::Context->preference('item-level_itypes') ) ? $biblio->{'itype'} : $biblio->{'itemtype'};
@@ -1262,12 +1265,14 @@ sub AddIssue {
}
$datedue->truncate( to => 'minute');
+
$sth->execute(
$borrower->{'borrowernumber'}, # borrowernumber
$item->{'itemnumber'}, # itemnumber
$issuedate->strftime('%Y-%m-%d %H:%M:00'), # issuedate
$datedue->strftime('%Y-%m-%d %H:%M:00'), # date_due
- C4::Context->userenv->{'branch'} # branchcode
+ C4::Context->userenv->{'branch'}, # branchcode
+ $inhouse_use,
);
if ( C4::Context->preference('ReturnToShelvingCart') ) { ## ReturnToShelvingCart is on, anything issued should be taken off the cart.
CartToShelf( $item->{'itemnumber'} );
@@ -1308,7 +1313,7 @@ sub AddIssue {
# Record the fact that this book was issued.
&UpdateStats({
branch => C4::Context->userenv->{'branch'},
- type => 'issue',
+ type => ( $inhouse_use ? 'inhouse_use' : 'issue' ),
amount => $charge,
other => ($sipmode ? "SIP-$sipmode" : ''),
itemnumber => $item->{'itemnumber'},
--- a/C4/Items.pm
+++ a/C4/Items.pm
@@ -1284,6 +1284,10 @@ sub GetItemsInfo {
holding.branchname,
holding.opac_info as holding_branch_opac_info,
home.opac_info as home_branch_opac_info
+ ";
+ $query .= ", issues.inhouse_use"
+ if C4::Context->preference("In-House Use");
+ $query .= "
FROM items
LEFT JOIN branches AS holding ON items.holdingbranch = holding.branchcode
LEFT JOIN branches AS home ON items.homebranch=home.branchcode
@@ -1291,6 +1295,8 @@ sub GetItemsInfo {
LEFT JOIN biblioitems ON biblioitems.biblioitemnumber = items.biblioitemnumber
LEFT JOIN itemtypes ON itemtypes.itemtype = "
. (C4::Context->preference('item-level_itypes') ? 'items.itype' : 'biblioitems.itemtype');
+ $query .= " LEFT JOIN issues ON issues.itemnumber = items.itemnumber"
+ if C4::Context->preference("In-House Use");
$query .= " WHERE items.biblionumber = ? ORDER BY home.branchname, items.enumchron, LPAD( items.copynumber, 8, '0' ), items.dateaccessioned DESC" ;
my $sth = $dbh->prepare($query);
$sth->execute($biblionumber);
--- a/C4/Stats.pm
+++ a/C4/Stats.pm
@@ -87,7 +87,7 @@ sub UpdateStats {
return () if ! defined $params;
# change these arrays if new types of transaction or new parameters are allowed
my @allowed_keys = qw (type branch amount other itemnumber itemtype borrowernumber accountno ccode);
- my @allowed_circulation_types = qw (renew issue localuse return);
+ my @allowed_circulation_types = qw (renew issue localuse return inhouse_use);
my @allowed_accounts_types = qw (writeoff payment);
my @circulation_mandatory_keys = qw (type branch borrowernumber itemnumber ccode itemtype);
my @accounts_mandatory_keys = qw (type branch borrowernumber amount);
--- a/circ/circulation.pl
+++ a/circ/circulation.pl
@@ -25,6 +25,8 @@
use strict;
use warnings;
use CGI;
+use DateTime;
+use DateTime::Duration;
use C4::Output;
use C4::Print;
use C4::Auth qw/:DEFAULT get_session/;
@@ -316,13 +318,15 @@ if ($barcode) {
}
}
- delete $question->{'DEBT'} if ($debt_confirmed);
- foreach my $impossible ( keys %$error ) {
- $template->param(
- $impossible => $$error{$impossible},
- IMPOSSIBLE => 1
- );
- $blocker = 1;
+ unless( $query->param('inhouse_use') and C4::Context->preference("In-House Use Force") ) {
+ delete $question->{'DEBT'} if ($debt_confirmed);
+ foreach my $impossible ( keys %$error ) {
+ $template->param(
+ $impossible => $$error{$impossible},
+ IMPOSSIBLE => 1
+ );
+ $blocker = 1;
+ }
}
if( !$blocker ){
my $confirm_required = 0;
@@ -338,13 +342,15 @@ if ($barcode) {
$needsconfirmation => $$question{$needsconfirmation},
getTitleMessageIteminfo => $getmessageiteminfo->{'title'},
getBarcodeMessageIteminfo => $getmessageiteminfo->{'barcode'},
- NEEDSCONFIRMATION => 1
+ NEEDSCONFIRMATION => 1,
+ inhouse_use => $query->param('inhouse_use'),
);
$confirm_required = 1;
}
}
unless($confirm_required) {
- AddIssue( $borrower, $barcode, $datedue, $cancelreserve );
+ my $inhouse_use = $query->param('inhouse_use');
+ AddIssue( $borrower, $barcode, $datedue, $cancelreserve, undef, undef, { inhouse_use => $inhouse_use } );
$inprocess = 1;
}
}
@@ -574,6 +580,9 @@ $template->param(
export_with_csv_profile => C4::Context->preference("ExportWithCsvProfile"),
canned_bor_notes_loop => $canned_notes,
debarments => GetDebarments({ borrowernumber => $borrowernumber }),
+ todaysdate => dt_from_string()->set(hour => 23)->set(minute => 59),
+ inhouse_use_feature => C4::Context->preference("In-House Use"),
+ inhouse_use_forced => C4::Context->preference("In-House Use Force"),
);
output_html_with_http_headers $query, $cookie, $template->output;
--- a/installer/data/mysql/kohastructure.sql
+++ a/installer/data/mysql/kohastructure.sql
@@ -1125,6 +1125,7 @@ CREATE TABLE `issues` ( -- information related to check outs or issues
`renewals` tinyint(4) default NULL, -- lists the number of times the item was renewed
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- the date and time this record was last touched
`issuedate` datetime default NULL, -- date the item was checked out or issued
+ `inhouse_use` int(1) NOT NULL default 0, -- in house use flag
KEY `issuesborridx` (`borrowernumber`),
KEY `itemnumber_idx` (`itemnumber`),
KEY `branchcode_idx` (`branchcode`),
@@ -1596,6 +1597,7 @@ CREATE TABLE `old_issues` ( -- lists items that were checked out and have been r
`renewals` tinyint(4) default NULL, -- lists the number of times the item was renewed
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- the date and time this record was last touched
`issuedate` datetime default NULL, -- date the item was checked out or issued
+ `inhouse_use` int(1) NOT NULL default 0, -- in house use flag
KEY `old_issuesborridx` (`borrowernumber`),
KEY `old_issuesitemidx` (`itemnumber`),
KEY `branchcode_idx` (`branchcode`),
--- a/installer/data/mysql/sysprefs.sql
+++ a/installer/data/mysql/sysprefs.sql
@@ -146,6 +146,8 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
('ImageLimit','5','','Limit images stored in the database by the Patron Card image manager to this number.','Integer'),
('IncludeSeeFromInSearches','0','','Include see-from references in searches.','YesNo'),
('IndependentBranches','0',NULL,'If ON, increases security between libraries','YesNo'),
+('In-House use','0','','Enable/Disable the in-house use feature','YesNo'),
+('In-House use Force','0','','Enable/Disable the in-house for all cases (Even if a user is debarred, etc.)','YesNo'),
('InProcessingToShelvingCart','0','','If set, when any item with a location code of PROC is \'checked in\', it\'s location code will be changed to CART.','YesNo'),
('INTRAdidyoumean',NULL,NULL,'Did you mean? configuration for the Intranet. Do not change, as this is controlled by /cgi-bin/koha/admin/didyoumean.pl.','Free'),
('IntranetBiblioDefaultView','normal','normal|marc|isbd|labeled_marc','Choose the default detail view in the staff interface; choose between normal, labeled_marc, marc or isbd','Choice'),
--- a/installer/data/mysql/updatedatabase.pl
+++ a/installer/data/mysql/updatedatabase.pl
@@ -8751,6 +8751,33 @@ if ( CheckVersion($DBversion) ) {
SetVersion($DBversion);
}
+
+
+
+
+
+$DBversion = "3.17.00.XXX";
+if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
+ $dbh->do(q{
+ INSERT IGNORE INTO systempreferences
+ (variable,value,explanation,options,type)
+ VALUES('In-House use','0','Enable/Disable the in-house use feature','','YesNo');
+ });
+ $dbh->do(q{
+ INSERT IGNORE INTO systempreferences
+ (variable,value,explanation,options,type)
+ VALUES('In-House use Force','0','Enable/Disable the in-house for all cases (Even if a user is debarred, etc.)','','YesNo');
+ });
+ $dbh->do(q{
+ ALTER TABLE issues ADD COLUMN inhouse_use INT(1) NOT NULL DEFAULT 0 AFTER issuedate;
+ });
+ $dbh->do(q{
+ ALTER TABLE old_issues ADD COLUMN inhouse_use INT(1) NOT NULL DEFAULT 0 AFTER issuedate;
+ });
+ print "Upgrade to $DBversion done (Bug 10860: Add new system preference In-House use + fields [old_]issues.inhouse_use)\n";
+ SetVersion($DBversion);
+}
+
=head1 FUNCTIONS
=head2 TableExists($table)
--- a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css
+++ a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css
@@ -2713,3 +2713,17 @@ span.browse-button {
#i18nMenu .dropdown-menu a:focus {
color : #FFF;
}
+
+.inhouse_use-select {
+ font-size : 85%;
+ font-weight: normal;
+ padding-top : .3em;
+}
+#circ_circulation_issue .inhouse_use-select label,
+.inhouse_use-select label {
+ font-size : inherit;
+ font-weight: normal;
+}
+span.inhouse_use {
+ color: red;
+}
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/strings.inc
+++ a/koha-tmpl/intranet-tmpl/prog/en/includes/strings.inc
@@ -24,5 +24,6 @@
var NOT_TRANSFERRED_YET = _("Item hasn't been transferred yet from %s");
var NO = _("No");
var YES = _("Yes");
+ var INHOUSE_USE = _("In-house use");
//]]>
--- a/koha-tmpl/intranet-tmpl/prog/en/js/checkouts.js
+++ a/koha-tmpl/intranet-tmpl/prog/en/js/checkouts.js
@@ -192,6 +192,11 @@ $(document).ready(function() {
title += " - " + oObj.itemnotes + " "
}
+ var inhouse_use = '';
+ if ( oObj.inhouse_use == 1 ) {
+ inhouse_use += " ("+INHOUSE_USE+") ";
+ }
+
title += " "
+ ""
+ oObj.barcode
- + " ";
+ + ""
+ + inhouse_use;
return title;
}
@@ -230,10 +236,21 @@ $(document).ready(function() {
var span_class = "";
content += "";
- content += "" + oObj.renewals_count + " ";
- if ( oObj.can_renew ) {
+ if ( inhouse_use == 0 ) {
+ content += "" + oObj.renewals_count + " ";
+ }
+
+ if ( oObj.can_renew && inhouse_use == 0 ) {
// Do nothing
+ } else if ( oObj.inhouse_use == 1 ) {
+ // If the issue is an in-house use, it is not renewable
+ content += ""
+ + NOT_RENEWABLE
+ + " ";
+
+ span_style = "display: none";
+ span_class = "renewals-allowed";
} else if ( oObj.can_renew_error == "on_reserve" ) {
content += ""
+ "" + ON_HOLD + " "
@@ -268,7 +285,7 @@ $(document).ready(function() {
+ " "
+ " ";
- if ( oObj.renewals_remaining ) {
+ if ( oObj.renewals_remaining && inhouse_use == 0 ) {
content += "("
+ RENEWALS_REMAINING.format( oObj.renewals_remaining, oObj.renewals_allowed )
+ ") ";
@@ -399,6 +416,11 @@ $(document).ready(function() {
title += " - " + oObj.itemnotes + " "
}
+ var inhouse_use = '';
+ if ( oObj.inhouse_use == 1 ) {
+ inhouse_use += " ("+INHOUSE_USE+") ";
+ }
+
title += " "
+ ""
+ oObj.barcode
- + " ";
+ + ""
+ + inhouse_use;
return title;
}
--- a/koha-tmpl/intranet-tmpl/prog/en/js/pages/circulation.js
+++ a/koha-tmpl/intranet-tmpl/prog/en/js/pages/circulation.js
@@ -46,6 +46,10 @@ $(document).ready(function() {
return false;
});
+ toggle_inhouse_use();
+ $("#inhouse_use").click(function(){
+ toggle_inhouse_use();
+ });
});
function export_checkouts(format) {
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
@@ -383,6 +383,18 @@ Circulation:
- This is a list of value pairs. When an item is checked in, if the not for loan value on the left matches the items not for loan value
- "it will be updated to the right-hand value. E.g. '-1: 0' will cause an item that was set to 'Ordered' to now be available for loan."
- Each pair of values should be on a separate line.
+ -
+ - pref: In-House use
+ choices:
+ yes: Enable
+ no: Disable
+ - the in-house use feature.
+ -
+ - pref: In-House use Force
+ choices:
+ yes: Enable
+ no: Disable
+ - the in-house for all cases (Even if a user is debarred, etc.).
Holds Policy:
-
- pref: AllowHoldPolicyOverride
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt
@@ -586,9 +586,17 @@ function verify_images() {
[% IF ( item.datedue ) %]
+ [% IF inhouse_use %]
+ Currently in local use
+ [% ELSE %]
Checked out
+ [% END %]
[% UNLESS ( item.NOTSAMEBRANCH ) %]
+ [% IF inhouse_use %]
+ by
+ [% ELSE %]
to
+ [% END %]
[% IF ( item.hidepatronname ) %]
[% item.cardnumber %]
[% ELSE %]
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt
@@ -53,6 +53,21 @@ $(document).ready(function() {
});
[% END %]
});
+
+// In-house use
+function toggle_inhouse_use(){
+ if ( $("#inhouse_use").attr('checked') ) {
+ $("#duedatespec").val("[% todaysdate | $KohaDates with_hours => 1%]")
+ $("#duedatespec").datetimepicker('destroy');
+ } else {
+ $("#duedatespec").datetimepicker({
+ onClose: function(dateText, inst) { $("#barcode").focus(); },
+ hour: 23,
+ minute: 59
+ });
+ }
+}
+
//]]>
@@ -285,6 +300,7 @@ $(document).ready(function() {
[% ELSE %]
[% END %]
+
[% END %]
@@ -463,7 +479,7 @@ No patron matched [% message %]
[% IF ( borrowernumber ) %]
-[% UNLESS ( noissues ) %]
+[% IF !noissues || inhouse_use_forced %]
[% IF ( flagged ) %]
[% ELSE %]
@@ -501,6 +517,18 @@ No patron matched [% message %]
[% END %]
Clear
[% END %]
+
+ [% IF inhouse_use_feature %]
+
+ [% IF noissues %]
+ In-house use
+
+ [% ELSE %]
+ In-house use
+ [% END %]
+
+ [% END %]
+
@@ -515,17 +543,24 @@ No patron matched
[% message %]
[% IF ( noissues ) %]
[% ELSE %]
[% END %]
- [% IF ( flagged ) %]
- [% IF ( noissues ) %]
-
Checking out to [% INCLUDE 'patron-title.inc' %]
-
- [% ELSE %]
+ [% IF flagged %]
+ [% IF NOT noissues || ( noissues && inhouse_use_forced ) %]
- [% END %]
+ [% ELSE %]
+
Checking out to [% INCLUDE 'patron-title.inc' %]
+
+ [% END %]
+
+ [% IF noissues %]
+ Cannot check out!
+ [% IF inhouse_use_forced %]
+ Only in-house use is allowed
+ [% END %]
+ [% ELSE %]
+ Attention:
+ [% END %]
+
-
[% IF ( noissues ) %]
- Cannot check out!
- [% ELSE %]Attention:[% END %]
[% IF ( warndeparture ) %]
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/readingrec.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/members/readingrec.tt
@@ -8,7 +8,7 @@
//
@@ -42,64 +54,79 @@
-
-
-
- Date
- Title
- Author
- Call no.
- Barcode
- Number of renewals
- Checked out on
- Checked out from
- Date due
- Return date
-
-
-
-[% FOREACH issue IN loop_reading %]
- [% IF issue.returndate %][% ELSE %] [% END %]
-
+
+
+
+
+
+ Type
+ Date
+ Title
+ Author
+ Call no.
+ Barcode
+ Number of renewals
+ Checked out on
+ Checked out from
+ Date due
+ Return date
+
+
+ [% FOREACH issue IN loop_reading %]
+ [% IF issue.returndate %][% ELSE %] [% END %]
+
+ [% IF issue.inhouse_use %]
+ inhouse_use
+ [% ELSE %]
+ checkout
+ [% END %]
+
+
[% issue.issuestimestamp | $KohaDates %]
-
- [% issue.title |html %]
+
+ [% issue.title |html %]
- [% issue.author %]
+ [% issue.author %]
-
+
[% IF issue.classification %]
[% issue.classification %]
[% ELSE %]
[% issue.itemcallnumber %]
[% END %]
-
-
- [% issue.barcode %]
+
-
- [% issue.renewals %]
-
- [% issue.issuedate | $KohaDates %]
-
- [% issue.issuingbranch %]
- [% IF issue.date_due %]
- [% issue.date_due | $KohaDates %]
- [% ELSE %]
-
- [% END %]
-
-
- [% IF issue.returndate %]
- [% issue.returndate | $KohaDates %]
- [% ELSE %]
- Checked out
- [% END %]
-
-
-[% END %]
-
-
+
[% issue.barcode %]
+
[% issue.renewals %]
+
+ [% issue.issuedate | $KohaDates %]
+
+ [% issue.issuedate | $KohaDates %]
+ [% issue.issuingbranch %]
+
+ [% IF issue.date_due %]
+ [% issue.date_due | $KohaDates %]
+ [% ELSE %]
+
+ [% END %]
+
+
+ [% IF issue.returndate %]
+ [% issue.returndate | $KohaDates %]
+ [% ELSE %]
+ Checked Out
+ [% END %]
+
+
+ [% END %]
+
+
+
+
[% END %]
--- a/koha-tmpl/opac-tmpl/prog/en/css/datatables.css
+++ a/koha-tmpl/opac-tmpl/prog/en/css/datatables.css
@@ -3,23 +3,23 @@ input.search_init {
}
.sorting_asc {
padding-right: 19px;
- background: url("../../img/asc.gif") no-repeat scroll right center #EEEEEE;
+ background: url("../../images/asc.gif") no-repeat scroll right center #EEEEEE;
}
.sorting_desc {
padding-right: 19px;
- background: url("../../img/desc.gif") no-repeat scroll right center #EEEEEE;
+ background: url("../../images/desc.gif") no-repeat scroll right center #EEEEEE;
}
.sorting {
padding-right: 19px;
- background: url("../../img/ascdesc.gif") no-repeat scroll right center #EEEEEE;
+ background: url("../../images/ascdesc.gif") no-repeat scroll right center #EEEEEE;
}
.sorting_asc_disabled {
padding-right: 19px;
- background: url("../../img/datatables/sort_asc_disabled.png") no-repeat scroll right center #EEEEEE;
+ background: url("../../images/datatables/sort_asc_disabled.png") no-repeat scroll right center #EEEEEE;
}
.sorting_desc_disabled {
padding-right: 19px;
- background: url("../../img/datatables/sort_desc_disabled.png") no-repeat scroll right center #EEEEEE;
+ background: url("../../images/datatables/sort_desc_disabled.png") no-repeat scroll right center #EEEEEE;
}
.sorting_disabled {
padding-right: 19px;
@@ -64,12 +64,11 @@ div.dataTables_filter {
}
div.dataTables_paginate {
background-color : #F4F4F4;
- font-size: 110%;
padding : 0;
}
-.paging_full_numbers span.paginate_button,
-.paging_full_numbers span.paginate_active {
+.paging_full_numbers a.paginate_button,
+.paging_full_numbers a.paginate_active {
border-right : 1px solid #AAA;
border-left : 1px solid #FFF;
display : block;
@@ -79,48 +78,48 @@ div.dataTables_paginate {
cursor: pointer;
}
-.paging_full_numbers span.paginate_button {
+.paging_full_numbers a.paginate_button {
color : #0000CC;
}
-.paging_full_numbers span.paginate_button.first {
- background-image : url('../../img/first.png');
+.paging_full_numbers a.paginate_button.first {
+ background-image : url('../../images/first.png');
background-repeat: no-repeat;
- background-position : 2px center;
+ background-position : 1% center;
padding-left : 2em;
}
-.paging_full_numbers span.paginate_button.previous {
- background-image : url('../../img/prev.png');
+.paging_full_numbers a.paginate_button.previous {
+ background-image : url('../../images/prev.png');
background-repeat: no-repeat;
- background-position : 2px center;
+ background-position : 1% center;
padding-left : 2em;
}
-.paging_full_numbers span.paginate_button.next {
- background-image : url('../../img/next.png');
+.paging_full_numbers a.paginate_button.next {
+ background-image : url('../../images/next.png');
background-repeat: no-repeat;
- background-position : right center;
+ background-position : 96% center;
padding-right : 2em;
}
-.paging_full_numbers span.paginate_button.last {
- background-image : url('../../img/last.png');
+.paging_full_numbers a.paginate_button.last {
+ background-image : url('../../images/last.png');
background-repeat: no-repeat;
- background-position : right center;
+ background-position : 96% center;
border-right : 1px solid #686868;
padding-right : 2em;
}
-div.bottom.pager .paging_full_numbers span.paginate_button.last {
+div.bottom.pager .paging_full_numbers a.paginate_button.last {
border-right-width : 0;
}
-.paging_full_numbers span.paginate_active {
+.paging_full_numbers a.paginate_active {
background-color : #FFFFEA;
color : #000;
font-weight: bold;
}
-.paging_full_numbers span.paginate_button:hover {
+.paging_full_numbers a.paginate_button:hover {
background-color: #FFC;
}
-.paging_full_numbers span.paginate_button.paginate_button_disabled {
+.paging_full_numbers a.paginate_button.paginate_button_disabled {
color : #666;
}
@@ -131,7 +130,7 @@ div.dataTables_paginate.paging_four_button {
background-color : transparent;
border-right : 1px solid #686868;
border-left : 1px solid #FFF;
- line-height : 1.8em;
+ line-height : 2.5em;
}
.paginate_disabled_first,
.paginate_enabled_first,
@@ -141,55 +140,67 @@ div.dataTables_paginate.paging_four_button {
.paginate_enabled_next,
.paginate_disabled_last,
.paginate_enabled_last {
- float: left;
- height: 16px;
- margin: .5em;
- width: 16px;
+ cursor: pointer;
+ *cursor: hand;
+ padding: .1em 0;
+}
+
+.paginate_disabled_previous,
+.paginate_enabled_previous,
+.paginate_disabled_next,
+.paginate_enabled_next {
+ color: #111 !important;
+}
+
+.paginate_disabled_previous,
+.paginate_enabled_previous {
+ padding-left: 23px;
}
+.paginate_disabled_next,
+.paginate_enabled_next,
+.paginate_disabled_last,
+.paginate_enabled_last {
+ padding-right: 23px;
+ margin-left: 10px;
+ margin-right : .3em;
+}
+
+.paging_four_button .paginate_disabled_first,
+.paging_four_button .paginate_disabled_previous,
+.paging_four_button .paginate_enabled_first,
+.paging_four_button .paginate_enabled_previous {
+ margin-left : .3em;
+}
+
.paginate_disabled_first {
- background-image: url("../../img/first-disabled.png");
+ background: transparent url("../../images/first-disabled.png") no-repeat 3px top;
}
.paginate_enabled_first {
- background-image: url("../../img/first.png");
+ background: transparent url("../../images/first.png") no-repeat 3px top;
cursor: pointer;
}
.paginate_disabled_previous {
- background-image: url("../../img/prev-disabled.png");
+ background: transparent url("../../images/prev-disabled.png") no-repeat 3px top;
}
.paginate_enabled_previous {
- background-image: url("../../img/prev.png");
+ background: transparent url("../../images/prev.png") no-repeat 3px top;
cursor: pointer;
}
.paginate_disabled_next {
- background-image: url("../../img/next-disabled.png");
+ background: transparent url("../../images/next-disabled.png") no-repeat right top;
}
.paginate_enabled_next {
- background-image: url("../../img/next.png");
+ background: transparent url("../../images/next.png") no-repeat right top;
cursor: pointer;
}
.paginate_disabled_last {
- background-image: url("../../img/last-disabled.png");
+ background: transparent url("../../images/last-disabled.png") no-repeat right top;
}
.paginate_enabled_last {
- background-image: url("../../img/last.png");
+ background: transparent url("../../images/last.png") no-repeat right top;
cursor: pointer;
}
-
-/*
-table.display {
- width: 100%;
-}
-table.display thead th {
- border-bottom: 1px solid black;
- cursor: pointer;
- font-weight: bold;
- padding: 3px 18px 3px 10px;
-}
-.dataTables_wrapper {
- clear: both;
- position: relative;
-}
.dataTables_processing {
background-color: white;
border: 1px solid #DDDDDD;
@@ -205,61 +216,44 @@ table.display thead th {
top: 50%;
width: 250px;
}
-.dataTables_info {
- float: left;
- width: 60%;
-}
-.dataTables_paginate {
- float: right;
- text-align: right;
- width: 44px;
-}
-.paging_full_numbers {
- height: 22px;
- line-height: 22px;
- width: 400px;
-}
-.paging_full_numbers span.paginate_button,
- .paging_full_numbers span.paginate_active {
- border: 1px solid #aaa;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- padding: 2px 5px;
- margin: 0 3px;
- cursor: pointer;
- *cursor: hand;
-}
-.paging_full_numbers span.paginate_button {
- background-color: #ddd;
+tr.odd.selected td {
+ background-color: #D3D3D3;
}
-.paging_full_numbers span.paginate_button:hover {
- background-color: #ccc;
+tr.even.selected td {
+ background-color: #D3D3D3;
}
-.paging_full_numbers span.paginate_active {
- background-color: #99B3FF;
-}
-.paginate_disabled_previous, .paginate_enabled_previous, .paginate_disabled_next, .paginate_enabled_next {
- float: left;
- height: 19px;
- margin-left: 3px;
- width: 19px;
+/* ColumnFilter */
+span.filter_column > input.text_filter {
+ font-size: 80%;
+ width: 100%;
}
-.paginate_disabled_previous {
- background-image: url("../../img/datatables/back_disabled.jpg");
+
+div.pager {
+ background-color : #E8E8E8;
+ border : 1px solid #BCBCBC;
+ -moz-border-radius : 5px;
+ border-radius : 5px;
+ display : inline-block;
+ font-size : 85%;
+ padding : .3em .5em .3em .5em;
+ margin : .4em 0;
}
-.paginate_enabled_previous {
- background-image: url("../../img/datatables/back_enabled.jpg");
+div.pager img {
+ vertical-align : middle;
}
-.paginate_disabled_next {
- background-image: url("../../img/datatables/forward_disabled.jpg");
+
+div.pager img.last {
+ padding-right: 5px;
}
-.paginate_enabled_next {
- background-image: url("../../img/datatables/forward_enabled.jpg");
+div.pager input.pagedisplay {
+ border : 0;
+ background-color : transparent;
+ font-weight: bold;
+ text-align : center;
}
-.spacer {
- clear: both;
- height: 20px;
+div.pager p {
+ margin: 0;
}
--- a/koha-tmpl/opac-tmpl/prog/en/includes/item-status.inc
+++ a/koha-tmpl/opac-tmpl/prog/en/includes/item-status.inc
@@ -19,11 +19,19 @@ not use an API to fetch items that populates item.datedue.
[% END %]
[% END %]
[% ELSIF ( item.datedue || issue.date_due ) %]
+ [% IF inhouse_use %]
+ [% IF ( OPACShowCheckoutName ) %]
+ Currently in local use by [% item.cardnumber %] [% item.firstname %] [% item.surname %]
+ [% ELSE %]
+ Currently in local use
+ [% END %]
+ [% ELSE %]
[% IF ( OPACShowCheckoutName ) %]
Checked out to [% item.cardnumber %] [% item.firstname %] [% item.surname %]
[% ELSE %]
Checked out
[% END %]
+ [% END %]
[% ELSIF ( item.transfertwhen ) %]
In transit from [% item.transfertfrom %]
to [% item.transfertto %] since [% item.transfertwhen %]
--- a/koha-tmpl/opac-tmpl/prog/en/js/datatables.js
+++ a/koha-tmpl/opac-tmpl/prog/en/js/datatables.js
@@ -97,4 +97,4 @@ jQuery.extend( jQuery.fn.dataTableExt.oSort, {
}
});
-}());
+}());
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-readingrecord.tt
+++ a/koha-tmpl/opac-tmpl/prog/en/modules/opac-readingrecord.tt
@@ -3,15 +3,32 @@
[% INCLUDE 'doc-head-open.inc' %]
[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog › Your checkout history
[% INCLUDE 'doc-head-close.inc' %]
-
+
+[% INCLUDE 'datatables.inc' %]
@@ -31,43 +48,51 @@ $(document).ready(function(){
You have never borrowed anything from this library.
[% ELSE %]
+
+ [% IF showfulllink %]
+ [% IF limit %]
+ Show All Items | Showing Last 50 Items
+ [% ELSE %]
+ Showing All Items | Show Last 50 Items Only
+ [% END %]
+ [% ELSE %]
+ Showing All Items
+ [% END %]
+
+
-
-
-
-
-
-Title
-Item type
-Call no.
-Date
-[% IF ( OPACMySummaryHTML ) %]
-Links
-[% END %]
-
-
-[% FOREACH issue IN READING_RECORD %]
+
+
+
+
+
+
+ Type
+
+ Title
+ Item type
+ Call no.
+ Date
+ [% IF ( OPACMySummaryHTML ) %]
+ Links
+ [% END %]
+
+
+
+ [% FOREACH issue IN READING_RECORD %]
+
+
+ [% IF issue.inhouse_use %]
+ inhouse_use
+ [% ELSE %]
+ checkout
+ [% END %]
+
-[% IF loop.even %] [% ELSE %] [% END %]
[% IF OPACAmazonCoverImages %]
[% IF issue.normalized_isbn %]
@@ -130,6 +155,7 @@ You have never borrowed anything from this library.
[% END %]
+
[% END %]
--- a/svc/checkouts
+++ a/svc/checkouts
@@ -62,6 +62,8 @@ my $sql = '
date_due,
date_due < now() as date_due_overdue,
+ inhouse_use,
+
biblionumber,
biblio.title,
author,
@@ -150,6 +152,7 @@ while ( my $c = $sth->fetchrow_hashref() ) {
issuedate => $c->{issuedate},
date_due => $c->{date_due},
date_due_overdue => $c->{date_due_overdue} ? JSON::true : JSON::false,
+ inhouse_use => $c->{inhouse_use},
renewals_count => $renewals_count,
renewals_allowed => $renewals_allowed,
renewals_remaining => $renewals_remaining,
--