Bug 11351 - Add support for SIP2 media types
Koha's SIP2 server implementation does not currently support the SIP2 protocol field "media type" ( CK ). This patch implements the SIP2 media type by allowing an arbitrary mapping of itemtypes to SIP2 media types. Test Plan: 1) Apply this patch 2) Run updatedatabase 3) Edit an itemtype, select a SIP media type, and save the changes 4) Make a SIP2 Item Information Request 5) Verify that the CK field of the Item Information Response contains the correct media type code. Signed-off-by: Benjamin Rokseth <benjamin.rokseth@kul.oslo.kommune.no> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
parent
f402bcc540
commit
fd3ab5e21a
|
|
@ -21,6 +21,7 @@ use C4::Items;
|
|||
use C4::Circulation;
|
||||
use C4::Members;
|
||||
use C4::Reserves;
|
||||
use Koha::Database;
|
||||
|
||||
our $VERSION = 3.07.00.049;
|
||||
|
||||
|
|
@ -86,7 +87,10 @@ sub new {
|
|||
$item->{permanent_location}= $item->{homebranch};
|
||||
$item->{'collection_code'} = $item->{ccode};
|
||||
$item->{ 'call_number' } = $item->{itemcallnumber};
|
||||
# $item->{'destination_loc'} = ?
|
||||
|
||||
my $it = C4::Context->preference('item-level_itypes') ? $item->{itype} : $item->{itemtype};
|
||||
my $itemtype = Koha::Database->new()->schema()->resultset('Itemtype')->find( $it );
|
||||
$item->{sip_media_type} = $itemtype->sip_media_type() if $itemtype;
|
||||
|
||||
# check if its on issue and if so get the borrower
|
||||
my $issue = GetItemIssue($item->{'itemnumber'});
|
||||
|
|
|
|||
|
|
@ -1,21 +1,17 @@
|
|||
use utf8;
|
||||
package Koha::Schema::Result::Itemtype;
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader
|
||||
# DO NOT MODIFY THE FIRST PART OF THIS FILE
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Koha::Schema::Result::Itemtype
|
||||
|
||||
=cut
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
|
||||
=head1 TABLE: C<itemtypes>
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Koha::Schema::Result::Itemtype
|
||||
|
||||
=cut
|
||||
|
||||
|
|
@ -70,6 +66,13 @@ __PACKAGE__->table("itemtypes");
|
|||
is_nullable: 0
|
||||
size: 16
|
||||
|
||||
=head2 sip_media_type
|
||||
|
||||
data_type: 'varchar'
|
||||
default_value: (empty string)
|
||||
is_nullable: 0
|
||||
size: 3
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->add_columns(
|
||||
|
|
@ -94,18 +97,9 @@ __PACKAGE__->add_columns(
|
|||
is_nullable => 0,
|
||||
size => 16,
|
||||
},
|
||||
"sip_media_type",
|
||||
{ data_type => "varchar", default_value => "", is_nullable => 0, size => 3 },
|
||||
);
|
||||
|
||||
=head1 PRIMARY KEY
|
||||
|
||||
=over 4
|
||||
|
||||
=item * L</itemtype>
|
||||
|
||||
=back
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->set_primary_key("itemtype");
|
||||
|
||||
=head1 RELATIONS
|
||||
|
|
@ -141,8 +135,8 @@ __PACKAGE__->might_have(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07025 @ 2013-10-14 20:56:21
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:BmFEWUxi2Ha50Hv6nQhDKQ
|
||||
# Created by DBIx::Class::Schema::Loader v0.07000 @ 2013-12-09 08:22:44
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:uGDyscA28BOAzCTb2gBcCg
|
||||
|
||||
|
||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||
|
|
|
|||
|
|
@ -43,4 +43,9 @@ sub GetByCode {
|
|||
return encode( 'UTF-8', GetAuthorisedValueByCode( $category, $code, $opac ) );
|
||||
}
|
||||
|
||||
sub Get {
|
||||
my ( $self, $category, $selected, $opac ) = @_;
|
||||
return GetAuthorisedValues( $category, $selected, $opac );
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@ if ( $op eq 'add_form' ) {
|
|||
checkinmsgtype => $data->{'checkinmsgtype'},
|
||||
imagesets => $imagesets,
|
||||
remote_image => $remote_image,
|
||||
sip_media_type => $data->{sip_media_type},
|
||||
);
|
||||
|
||||
# END $OP eq ADD_FORM
|
||||
|
|
@ -145,6 +146,7 @@ elsif ( $op eq 'add_validate' ) {
|
|||
, summary = ?
|
||||
, checkinmsg = ?
|
||||
, checkinmsgtype = ?
|
||||
, sip_media_type = ?
|
||||
WHERE itemtype = ?
|
||||
';
|
||||
$sth = $dbh->prepare($query2);
|
||||
|
|
@ -162,15 +164,16 @@ elsif ( $op eq 'add_validate' ) {
|
|||
$input->param('summary'),
|
||||
$input->param('checkinmsg'),
|
||||
$input->param('checkinmsgtype'),
|
||||
$input->param('sip_media_type'),
|
||||
$input->param('itemtype')
|
||||
);
|
||||
}
|
||||
else { # add a new itemtype & not modif an old
|
||||
my $query = "
|
||||
INSERT INTO itemtypes
|
||||
(itemtype,description,rentalcharge, notforloan, imageurl, summary, checkinmsg, checkinmsgtype)
|
||||
(itemtype,description,rentalcharge, notforloan, imageurl, summary, checkinmsg, checkinmsgtype, sip_media_type)
|
||||
VALUES
|
||||
(?,?,?,?,?,?,?,?);
|
||||
(?,?,?,?,?,?,?,?,?);
|
||||
";
|
||||
my $sth = $dbh->prepare($query);
|
||||
my $image = $input->param('image');
|
||||
|
|
@ -185,6 +188,7 @@ elsif ( $op eq 'add_validate' ) {
|
|||
$input->param('summary'),
|
||||
$input->param('checkinmsg'),
|
||||
$input->param('checkinmsgtype'),
|
||||
$input->param('sip_media_type'),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -57,3 +57,16 @@ INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('REPORT_
|
|||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('REPORT_GROUP', 'PAT', 'Benutzer');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('REPORT_GROUP', 'ACQ', 'Erwerbung');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('REPORT_GROUP', 'ACC', 'Gebühren');
|
||||
|
||||
-- SIP2 media types
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '000', 'Other');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '001', 'Book');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '002', 'Magazine');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '003', 'Bound journal');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '004', 'Audio tape');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '005', 'Video tape');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '006', 'CD/CDROM');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '007', 'Diskette');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '008', 'Book with deskette');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '009', 'Book with cd');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '010', 'Book with audio tape');
|
||||
|
|
|
|||
|
|
@ -57,3 +57,16 @@ INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('REPORT_
|
|||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('REPORT_GROUP', 'PAT', 'Patrons');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('REPORT_GROUP', 'ACQ', 'Acquisitions');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('REPORT_GROUP', 'ACC', 'Accounts');
|
||||
|
||||
-- SIP2 media types
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '000', 'Other');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '001', 'Book');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '002', 'Magazine');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '003', 'Bound journal');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '004', 'Audio tape');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '005', 'Video tape');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '006', 'CD/CDROM');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '007', 'Diskette');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '008', 'Book with deskette');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '009', 'Book with cd');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '010', 'Book with audio tape');
|
||||
|
|
|
|||
|
|
@ -50,3 +50,16 @@ INSERT INTO `authorised_values` (category, authorised_value, lib) VALUES ('BOR_N
|
|||
-- OPAC Suggestions reasons
|
||||
INSERT INTO authorised_values (category,authorised_value,lib,lib_opac) VALUES ('OPAC_SUG','damaged','The copy on the shelf is damaged','The copy on the shelf is damaged');
|
||||
INSERT INTO authorised_values (category,authorised_value,lib,lib_opac) VALUES ('OPAC_SUG','bestseller','Upcoming title by popular author','Upcoming title by popular author');
|
||||
|
||||
-- SIP2 media types
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '000', 'Other');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '001', 'Book');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '002', 'Magazine');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '003', 'Bound journal');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '004', 'Audio tape');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '005', 'Video tape');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '006', 'CD/CDROM');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '007', 'Diskette');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '008', 'Book with deskette');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '009', 'Book with cd');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '010', 'Book with audio tape');
|
||||
|
|
|
|||
|
|
@ -1242,6 +1242,7 @@ CREATE TABLE `itemtypes` ( -- defines the item types
|
|||
summary text, -- information from the summary field, may include HTML
|
||||
checkinmsg VARCHAR(255), -- message that is displayed when an item with the given item type is checked in
|
||||
checkinmsgtype CHAR(16) DEFAULT 'message' NOT NULL, -- type (CSS class) for the checkinmsg, can be "alert" or "message"
|
||||
sip_media_type VARCHAR(3) DEFAULT NULL, -- SIP2 protocol media type for this itemtype
|
||||
PRIMARY KEY (`itemtype`),
|
||||
UNIQUE KEY `itemtype` (`itemtype`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
|
|
|||
|
|
@ -78,3 +78,16 @@ INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('REPORT_
|
|||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('REPORT_GROUP', 'PAT', 'Lånere');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('REPORT_GROUP', 'ACQ', 'Innkjøp');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('REPORT_GROUP', 'ACC', 'Gebyrer');
|
||||
|
||||
-- SIP2 media types
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '000', 'Other');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '001', 'Book');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '002', 'Magazine');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '003', 'Bound journal');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '004', 'Audio tape');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '005', 'Video tape');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '006', 'CD/CDROM');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '007', 'Diskette');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '008', 'Book with deskette');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '009', 'Book with cd');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '010', 'Book with audio tape');
|
||||
|
|
|
|||
|
|
@ -38,3 +38,16 @@ INSERT INTO `authorised_values` (category, authorised_value, lib) VALUES ('NOT_L
|
|||
|
||||
-- restricted status of an item, linked to items.restricted
|
||||
INSERT INTO `authorised_values` (category, authorised_value, lib) VALUES ('RESTRICTED','1','Restricted Access');
|
||||
|
||||
-- SIP2 media types
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '000', 'Other');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '001', 'Book');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '002', 'Magazine');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '003', 'Bound journal');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '004', 'Audio tape');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '005', 'Video tape');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '006', 'CD/CDROM');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '007', 'Diskette');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '008', 'Book with deskette');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '009', 'Book with cd');
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES ('SIP_MEDIA_TYPE', '010', 'Book with audio tape');
|
||||
|
|
|
|||
|
|
@ -8202,6 +8202,29 @@ if ( CheckVersion($DBversion) ) {
|
|||
SetVersion($DBversion);
|
||||
}
|
||||
|
||||
$DBversion = "3.15.00.XXX";
|
||||
if(CheckVersion($DBversion)) {
|
||||
$dbh->do(q{
|
||||
ALTER TABLE itemtypes ADD sip_media_type VARCHAR( 3 ) DEFAULT NULL
|
||||
});
|
||||
$dbh->do(q{
|
||||
INSERT INTO authorised_values (category, authorised_value, lib) VALUES
|
||||
('SIP_MEDIA_TYPE', '000', 'Other'),
|
||||
('SIP_MEDIA_TYPE', '001', 'Book'),
|
||||
('SIP_MEDIA_TYPE', '002', 'Magazine'),
|
||||
('SIP_MEDIA_TYPE', '003', 'Bound journal'),
|
||||
('SIP_MEDIA_TYPE', '004', 'Audio tape'),
|
||||
('SIP_MEDIA_TYPE', '005', 'Video tape'),
|
||||
('SIP_MEDIA_TYPE', '006', 'CD/CDROM'),
|
||||
('SIP_MEDIA_TYPE', '007', 'Diskette'),
|
||||
('SIP_MEDIA_TYPE', '008', 'Book with deskette'),
|
||||
('SIP_MEDIA_TYPE', '009', 'Book with cd'),
|
||||
('SIP_MEDIA_TYPE', '010', 'Book with audio tape')
|
||||
});
|
||||
print "Upgrade to $DBversion done (Bug 11351 - Add support for SIP2 media type)\n";
|
||||
SetVersion($DBversion);
|
||||
}
|
||||
|
||||
=head1 FUNCTIONS
|
||||
|
||||
=head2 TableExists($table)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
[% USE EncodeUTF8 %]
|
||||
[% USE AuthorisedValues %]
|
||||
[% INCLUDE 'doc-head-open.inc' %]
|
||||
<title>Koha › Administration › Item types [% IF ( add_form ) %]›
|
||||
[% IF ( itemtype ) %]
|
||||
|
|
@ -193,6 +195,19 @@ Item types administration
|
|||
[% END %]
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<label for="sip_media_type">SIP media type: </label>
|
||||
<select id="sip_media_type" name="sip_media_type">
|
||||
<option value=""></option>
|
||||
[% FOREACH a IN AuthorisedValues.Get('SIP_MEDIA_TYPE', sip_media_type ) %]
|
||||
[% IF a.selected %]
|
||||
<option value="[% a.authorised_value %]" selected="selected">[% a.lib | $EncodeUTF8 %]</option>
|
||||
[% ELSE %]
|
||||
<option value="[% a.authorised_value %]">[% a.lib | $EncodeUTF8 %]</option>
|
||||
[% END %]
|
||||
[% END %]
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<label for="summary">Summary: </label>
|
||||
<textarea id="summary" name="summary" cols="55" rows="5">[% summary %]</textarea>
|
||||
|
|
|
|||
Loading…
Reference in New Issue