Bug 14828: use Koha::ItemType[s] in admin/itemtypes

Test plan:
Add/edit/remove item types from the administration module
(admin/itemtypes.pl).
You should get message feedback after each action.
Don't forget to play with the image and try to remove an item type
linked to records (you should not be able to remove it).

Signed-off-by: Marc Véron <veron@veron.ch>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com
This commit is contained in:
Jonathan Druart 2015-09-15 14:20:22 +01:00 committed by Brendan Gallagher
parent 38567b224b
commit 95f0caed38
2 changed files with 412 additions and 505 deletions

View file

@ -1,6 +1,7 @@
#!/usr/bin/perl
# Copyright 2000-2002 Katipo Communications
# Copyright 2002 Paul Poulain
#
# This file is part of Koha.
#
@ -19,32 +20,11 @@
=head1 admin/itemtypes.pl
script to administer the categories table
written 20/02/2002 by paul.poulain@free.fr
This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html)
ALGO :
this script use an $op to know what to do.
if $op is empty or none of the above values,
- the default screen is build (with all records, or filtered datas).
- the user can clic on add, modify or delete record.
if $op=add_form
- if primkey exists, this is a modification,so we read the $primkey record
- builds the add/modify form
if $op=add_validate
- the user has just send datas, so we create/modify the record
if $op=delete_form
- we show the record having primkey=$primkey and ask for deletion validation form
if $op=delete_confirm
- we delete the record having primkey=$primkey
=cut
use strict;
#use warnings; FIXME - Bug 2505
use Modern::Perl;
use CGI qw ( -utf8 );
use List::Util qw/min/;
use File::Spec;
use C4::Koha;
@ -52,18 +32,17 @@ use C4::Context;
use C4::Auth;
use C4::Output;
use Koha::ItemTypes;
use Koha::Localizations;
my $input = new CGI;
my $searchfield = $input->param('description');
my $script_name = "/cgi-bin/koha/admin/itemtypes.pl";
my $itemtype = $input->param('itemtype');
my $itemtype_code = $input->param('itemtype');
my $op = $input->param('op') // 'list';
my @messages;
$searchfield =~ s/\,//g;
$searchfield =~ s/\,//g if $searchfield;
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
{
template_name => "admin/itemtypes.tt",
{ template_name => "admin/itemtypes.tt",
query => $input,
type => "intranet",
authnotrequired => 0,
@ -72,228 +51,130 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
}
);
$template->param(script_name => $script_name);
if ($op) {
$template->param($op => 1); # we show only the TMPL_VAR names $op
}
my $dbh = C4::Context->dbh;
my $sip_media_type = $input->param('sip_media_type');
undef($sip_media_type) if defined($sip_media_type) and $sip_media_type =~ /^\s*$/;
################## ADD_FORM ##################################
# called by default. Used to create form to add or modify a record
if ( $op eq 'add_form' ) {
#---- if primkey exists, it's a modify action, so read values to modify...
my $data;
if ($itemtype) {
my $sth = $dbh->prepare(q|
SELECT
itemtypes.itemtype,
itemtypes.description,
itemtypes.rentalcharge,
itemtypes.notforloan,
itemtypes.imageurl,
itemtypes.summary,
itemtypes.checkinmsg,
itemtypes.checkinmsgtype,
itemtypes.sip_media_type,
itemtypes.hideinopac,
itemtypes.searchcategory,
COALESCE( localization.translation, itemtypes.description ) AS translated_description
FROM itemtypes
LEFT JOIN localization ON itemtypes.itemtype = localization.code
AND localization.entity='itemtypes'
AND localization.lang = ?
WHERE itemtype = ?
|);
my $language = C4::Languages::getlanguage();
$sth->execute($language, $itemtype);
$data = $sth->fetchrow_hashref;
}
my $imagesets = C4::Koha::getImageSets( checked => $data->{'imageurl'} );
my $remote_image = undef;
if ( defined $data->{imageurl} and $data->{imageurl} =~ /^http/i ) {
$remote_image = $data->{imageurl};
}
my $searchcategory = GetAuthorisedValues("ITEMTYPECAT", $data->{'searchcategory'});
my $itemtype = Koha::ItemTypes->find($itemtype_code);
my $imagesets = C4::Koha::getImageSets( checked => ( $itemtype ? $itemtype->imageurl : undef ) );
my $searchcategory = GetAuthorisedValues("ITEMTYPECAT", ( $itemtype ? $itemtype->searchcategory : '' ) );
$template->param(
itemtype => $itemtype,
description => $data->{'description'},
rentalcharge => sprintf( "%.2f", $data->{'rentalcharge'} ),
notforloan => $data->{'notforloan'},
imageurl => $data->{'imageurl'},
template => C4::Context->preference('template'),
summary => $data->{summary},
checkinmsg => $data->{'checkinmsg'},
checkinmsgtype => $data->{'checkinmsgtype'},
imagesets => $imagesets,
remote_image => $remote_image,
sip_media_type => $data->{sip_media_type},
hideinopac => $data->{'hideinopac'},
searchcategory => $searchcategory,
);
# END $OP eq ADD_FORM
################## ADD_VALIDATE ##################################
# called by add_form, used to insert/modify data in DB
}
elsif ( $op eq 'add_validate' ) {
} elsif ( $op eq 'add_validate' ) {
my $is_a_modif = $input->param('is_a_modif');
my ( $already_exists ) = $dbh->selectrow_array(q|
SELECT itemtype
FROM itemtypes
WHERE itemtype = ?
|, undef, $itemtype );
if ( $already_exists and $is_a_modif ) { # it's a modification
my $query2 = '
UPDATE itemtypes
SET description = ?
, rentalcharge = ?
, notforloan = ?
, imageurl = ?
, summary = ?
, checkinmsg = ?
, checkinmsgtype = ?
, sip_media_type = ?
, hideinopac = ?
, searchcategory = ?
WHERE itemtype = ?
';
my $sth = $dbh->prepare($query2);
$sth->execute(
$input->param('description'),
$input->param('rentalcharge'),
( $input->param('notforloan') ? 1 : 0 ),
(
$input->param('image') eq 'removeImage' ? '' : (
$input->param('image') eq 'remoteImage'
? $input->param('remoteImage')
: $input->param('image') . ""
)
),
$input->param('summary'),
$input->param('checkinmsg'),
$input->param('checkinmsgtype'),
$sip_media_type,
$input->param('hideinopac') ? 1 : 0,
$input->param('searchcategory'),
$input->param('itemtype')
my $itemtype = Koha::ItemTypes->find($itemtype_code);
my $description = $input->param('description');
my $rentalcharge = $input->param('rentalcharge');
my $image = $input->param('image') || q||;
my $notforloan = $input->param('notforloan') ? 1 : 0;
my $imageurl =
$image eq 'removeImage' ? ''
: (
$image eq 'remoteImage' ? $input->param('remoteImage')
: $image
);
my $summary = $input->param('summary');
my $checkinmsg = $input->param('checkinmsg');
my $checkinmsgtype = $input->param('checkinmsgtype');
my $hideinopac = $input->param('hideinopac') // 0;
my $searchcategory = $input->param('searchcategory');
if ( $itemtype and $is_a_modif ) { # it's a modification
$itemtype->description($description);
$itemtype->rentalcharge($rentalcharge);
$itemtype->notforloan($notforloan);
$itemtype->imageurl($imageurl);
$itemtype->summary($summary);
$itemtype->checkinmsg($checkinmsg);
$itemtype->checkinmsgtype($checkinmsgtype);
$itemtype->sip_media_type($sip_media_type);
$itemtype->hideinopac($hideinopac);
$itemtype->searchcategory($searchcategory);
eval { $itemtype->store; };
if ($@) {
push @messages, { type => 'error', code => 'error_on_update' };
} else {
push @messages, { type => 'message', code => 'success_on_update' };
}
} elsif ( not $itemtype and not $is_a_modif ) {
my $itemtype = Koha::ItemType->new(
{ itemtype => $itemtype_code,
description => $description,
rentalcharge => $rentalcharge,
notforloan => $notforloan,
imageurl => $imageurl,
summary => $summary,
checkinmsg => $checkinmsg,
checkinmsgtype => $checkinmsgtype,
sip_media_type => $sip_media_type,
hideinopac => $hideinopac,
searchcategory => $searchcategory,
}
elsif ( not $already_exists and not $is_a_modif ) {
my $query = "
INSERT INTO itemtypes
(itemtype,description,rentalcharge, notforloan, imageurl, summary, checkinmsg, checkinmsgtype, sip_media_type, hideinopac, searchcategory)
VALUES
(?,?,?,?,?,?,?,?,?,?,?);
";
my $sth = $dbh->prepare($query);
my $image = $input->param('image');
$sth->execute(
$input->param('itemtype'),
$input->param('description'),
$input->param('rentalcharge'),
$input->param('notforloan') ? 1 : 0,
$image eq 'removeImage' ? '' :
$image eq 'remoteImage' ? $input->param('remoteImage') :
$image,
$input->param('summary'),
$input->param('checkinmsg'),
$input->param('checkinmsgtype'),
$sip_media_type,
$input->param('hideinopac') ? 1 : 0,
$input->param('searchcategory'),
);
eval { $itemtype->store; };
if ($@) {
push @messages, { type => 'error', code => 'error_on_insert' };
} else {
push @messages, { type => 'message', code => 'success_on_insert' };
}
else {
push @messages, {
type => 'error',
} else {
push @messages,
{ type => 'error',
code => 'already_exists',
};
}
$searchfield = '';
$op = 'list';
# END $OP eq ADD_VALIDATE
################## DELETE_CONFIRM ##################################
# called by default form, used to confirm deletion of data in DB
}
elsif ( $op eq 'delete_confirm' ) {
} elsif ( $op eq 'delete_confirm' ) {
# Check both items and biblioitems
my $sth = $dbh->prepare('
my ($total) = $dbh->selectrow_array( '
SELECT COUNT(*) AS total FROM (
SELECT itemtype AS t FROM biblioitems
UNION ALL
SELECT itype AS t FROM items
) AS tmp
WHERE tmp.t=?
');
$sth->execute($itemtype);
my $total = $sth->fetchrow_hashref->{'total'};
', {}, $itemtype_code );
my $sth =
$dbh->prepare(
"select itemtype,description,rentalcharge from itemtypes where itemtype=?"
);
$sth->execute($itemtype);
my $data = $sth->fetchrow_hashref;
$template->param(
itemtype => $itemtype,
description => $data->{description},
rentalcharge => sprintf( "%.2f", $data->{rentalcharge} ),
imageurl => $data->{imageurl},
total => $total
);
if ($total) {
push @messages, { type => 'error', code => 'cannot_be_deleted', total => $total };
$op = 'list';
} else {
my $itemtype = Koha::ItemTypes->find($itemtype_code);
$template->param( itemtype => $itemtype, );
}
# END $OP eq DELETE_CONFIRM
################## DELETE_CONFIRMED ##################################
# called by delete_confirm, used to effectively confirm deletion of data in DB
}
elsif ( $op eq 'delete_confirmed' ) {
my $itemtype = uc( $input->param('itemtype') );
my $sth = $dbh->prepare("delete from itemtypes where itemtype=?");
$sth->execute($itemtype);
$sth = $dbh->prepare("delete from issuingrules where itemtype=?");
$sth->execute($itemtype);
print $input->redirect('itemtypes.pl');
exit;
# END $OP eq DELETE_CONFIRMED
################## DEFAULT ##################################
} elsif ( $op eq 'delete_confirmed' ) {
my $itemtype = Koha::ItemTypes->find($itemtype_code);
my $deleted = eval { $itemtype->delete };
if ( $@ or not $deleted ) {
push @messages, { type => 'error', code => 'error_on_delete' };
} else {
push @messages, { type => 'message', code => 'success_on_delete' };
}
$op = 'list';
}
if ( $op eq 'list' ) {
my $results = C4::Koha::GetItemTypes( style => 'array' );
my @loop;
foreach my $itemtype ( @{$results} ) {
$itemtype->{imageurl} = getitemtypeimagelocation( 'intranet', $itemtype->{imageurl} );
$itemtype->{rentalcharge} = sprintf( '%.2f', $itemtype->{rentalcharge} );
my @translated_descriptions = Koha::Localizations->search(
{ entity => 'itemtypes',
code => $itemtype->{itemtype},
}
);
$itemtype->{translated_descriptions} = [ map {
{
lang => $_->lang,
translation => $_->translation,
}
} @translated_descriptions ];
push( @loop, $itemtype );
}
my $itemtypes = Koha::ItemTypes->search;
$template->param(
loop => \@loop,
else => 1,
itemtypes => $itemtypes,
messages => \@messages,
);
}
$template->param( op => $op );
output_html_with_http_headers $input, $cookie, $template->output;

View file

@ -1,20 +1,22 @@
[% USE Koha %]
[% USE AuthorisedValues %]
[% USE Price %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; Administration &rsaquo; Item types [% IF ( add_form ) %]&rsaquo;
<title>Koha &rsaquo; Administration &rsaquo; Item types [% IF op == 'add_form' %]&rsaquo;
[% IF ( itemtype ) %]
Modify item type '[% itemtype %]'
Modify item type '[% itemtype.itemtype %]'
[% ELSE %]
Add item type
[% END %]
[% END %]
[% IF ( delete_confirm ) %]&rsaquo;
[% IF op == 'delete_confirm' %]&rsaquo;
[% IF ( total ) %]
Cannot delete item type '[% itemtype %]'
Cannot delete item type '[% itemtype.itemtype %]'
[% ELSE %]
Delete item type '[% itemtype %]'?
Delete item type '[% itemtype.itemtype %]'?
[% END %]
[% END %]
[% IF ( delete_confirmed ) %]&rsaquo;
[% IF op == 'delete_confirmed' %]&rsaquo;
Data deleted
[% END %]
</title>
@ -55,24 +57,24 @@ Data deleted
[% INCLUDE 'header.inc' %]
[% INCLUDE 'cat-search.inc' %]
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> &rsaquo; [% IF ( add_form ) %]
[% IF ( itemtype ) %]
<a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> &rsaquo; Modify item type '[% itemtype %]'
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> &rsaquo; [% IF op == 'add_form' %]
[% IF itemtype %]
<a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> &rsaquo; Modify item type '[% itemtype.itemtype %]'
[% ELSE %]
<a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> &rsaquo; Add item type
[% END %]
[% END %]
[% IF ( delete_confirm ) %]
[% IF ( total ) %]
<a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> &rsaquo; Cannot delete item type '[% itemtype %]'
[% IF op == 'delete_confirm' %]
[% IF total %]
<a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> &rsaquo; Cannot delete item type '[% itemtype.itemtype %]'
[% ELSE %]
<a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> &rsaquo; Delete item type '[% itemtype %]'?
<a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> &rsaquo; Delete item type '[% itemtype.itemtype %]'?
[% END %]
[% END %]
[% IF ( delete_confirmed ) %]
[% IF op == 'delete_confirmed' %]
<a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> &rsaquo;Data deleted
[% END %]
[% IF ( else ) %]
[% IF op == 'list' %]
Item types administration
[% END %]</div>
@ -82,58 +84,70 @@ Item types administration
<div id="yui-main">
<div class="yui-b">
[% IF ( else ) %]<div id="toolbar" class="btn-toolbar">
[% IF op == 'list' %]<div id="toolbar" class="btn-toolbar">
<a class="btn btn-small" id="newitemtype" href="/cgi-bin/koha/admin/itemtypes.pl?op=add_form"><i class="fa fa-plus"></i> New item type</a>
</div>[% END %]
[% FOREACH message IN messages %]
[% IF message.type == 'success' %]
<div class="dialog message">
[% ELSIF message.type == 'warning' %]
<div class="dialog alert">
[% ELSIF message.type == 'error' %]
<div class="dialog error" style="margin:auto;">
[% END %]
[% IF message.code == 'already_exists' %]
[% FOREACH m IN messages %]
<div class="dialog [% m.type %]">
[% SWITCH m.code %]
[% CASE 'error_on_update' %]
An error occurred when updating this item type. Perhaps the value already exists.
[% CASE 'error_on_insert' %]
An error occurred when inserting this item type. Perhaps the value already exists.
[% CASE 'error_on_delete' %]
An error occurred when deleting this item type. Check the logs.
[% CASE 'success_on_update' %]
Item type updated successfully.
[% CASE 'success_on_insert' %]
Item type inserted successfully.
[% CASE 'success_on_delete' %]
Item type deleted successfully.
[% CASE 'already_exists' %]
This item type already exists.
[% CASE 'cannot_be_deleted' %]
Cannot delete this item type. <p><strong>This record is used [% m.total %] times</strong>. Deletion is not possible.</p>
[% CASE %]
[% m.code %]
[% END %]
</div>
[% END %]
[% IF ( add_form ) %]
[% IF ( itemtype ) %]
[% IF op == 'add_form' %]
[% IF itemtype %]
<h3>Modify item type</h3>
[% ELSE %]
<h3>Add item type</h3>
[% END %]
<form action="[% script_name %]" name="Aform" method="post" id="itemtypeentry">
<form action="/cgi-bin/koha/admin/itemtypes.pl" name="Aform" method="post" id="itemtypeentry">
<input type="hidden" name="op" value="add_validate" />
<input type="hidden" name="checked" value="0" />
<fieldset class="rows">
<ol>
[% IF ( itemtype ) %]
[% IF itemtype %]
<li>
<input type="hidden" name="is_a_modif" value="1" />
<span class="label">Item type: </span> <input type="hidden" name="itemtype" value="[% itemtype %]" />
[% itemtype %]
<span class="label">Item type: </span> <input type="hidden" name="itemtype" value="[% itemtype.itemtype %]" />
[% itemtype.itemtype %]
</li>
[% ELSE %]
<li>
<label for="itemtype" class="required">Item type: </label> <input type="text" id="itemtype" name="itemtype" size="10" maxlength="10" onblur="toUC(this)" required="required" /> <span class="required">Required</span>
<label for="itemtype" class="required">Item type: </label>
<input type="text" id="itemtype" name="itemtype" size="10" maxlength="10" onblur="toUC(this)" required="required" /> <span class="required">Required</span>
</li>
[% END %]
<li>
<label for="description" class="required">Description: </label><input type="text" id="description" name="description" size="48" value="[% description |html %]" required="required" /> <span class="required">Required</span>
<a href="/cgi-bin/koha/admin/localization.pl?entity=itemtypes&code=[% itemtype %]" title="Translate item type [% itemtype %]" rel="gb_page_center[600,500]"><i class="icon-edit"></i> Translate into other languages</a>
<label for="description" class="required">Description: </label>
<input type="text" id="description" name="description" size="48" value="[% itemtype.description |html %]" required="required" /> <span class="required">Required</span>
<a href="/cgi-bin/koha/admin/localization.pl?entity=itemtypes&code=[% itemtype.itemtype %]" title="Translate item type [% itemtype.itemtype %]" rel="gb_page_center[600,500]"><i class="icon-edit"></i> Translate into other languages</a>
</li>
<li>
<span class="label">Search category</span>
<select id="searchcategory" name="searchcategory">
<option value="">None</option>
[% FOREACH cat IN searchcategory %]
[% IF ( cat.selected ) %]
[% IF cat.selected %]
<option value="[% cat.authorised_value %]" selected="selected">
[% cat.lib %]
</option>
@ -146,38 +160,49 @@ Item types administration
</select>
(Options are defined as the authorized values for the ITEMTYPECAT category)
</li>
[% IF ( noItemTypeImages ) %]
<li><span class="label">Image: </span>Item type images are disabled. To enable them, turn off the <a href="/cgi-bin/koha/admin/preferences.pl?op=search&amp;searchfield=noItemTypeImages">noItemTypeImages system preference</a></li></ol>
[% ELSE %]</ol>
[% IF Koha.Preference('noItemTypeImages') %]
<li>
<span class="label">Image: </span>Item type images are disabled. To enable them, turn off the <a href="/cgi-bin/koha/admin/preferences.pl?op=search&amp;searchfield=noItemTypeImages">noItemTypeImages system preference</a>
</li>
[% END %]
</ol>
[% UNLESS Koha.Preference('noItemTypeImages') %]
<div id="icons" class="toptabs" style="clear:both">
<h5 style="margin-left:10px;">Choose an icon:</h5>
<ul>
<li><a href="#none">None</a></li>
[% FOREACH imageset IN imagesets %]
[% IF ( imageset.imagesetactive ) %]<li class="ui-tabs-active">[% ELSE %]<li>[% END %]<a href="#[% imageset.imagesetname %]">[% imageset.imagesetname %]</a></li>
[% IF ( imageset.imagesetactive ) %]
<li class="ui-tabs-active">
[% ELSE %]
<li>
[% END %]
[% IF ( remote_image ) %]<li class="ui-tabs-active">[% ELSE %]<li>[% END %]<a href="#remote">Remote image</a></li>
<a href="#[% imageset.imagesetname %]">[% imageset.imagesetname %]</a>
</li>
[% END %]
[% IF itemtype.image_location.match('^http') %]<li class="ui-tabs-active">[% ELSE %]<li>[% END %]<a href="#remote">Remote image</a></li>
</ul>
<div id="none"><ul>
<div id="none">
<ul>
<li><label for="noimage">No image: </label><input type="radio" name="image" id="noimage" value="removeImage" /></li>
</ul>
<br class="clear" /></div>
<br class="clear" />
</div>
[% FOREACH imageset IN imagesets %]
<div id="[% imageset.imagesetname %]"><ul>
<div id="[% imageset.imagesetname %]">
<ul>
[% FOREACH image IN imageset.images %]
<li style="float: none; display: inline-block; clear : none; width: auto;">
<label> [% IF ( image.StaffImageUrl ) %]
<label>
[% IF image.StaffImageUrl %]
<img src="[% image.StaffImageUrl %]" alt="[% image.StaffImageUrl %]" title="[% image.StaffImageUrl %]" />
[% ELSE %]
[% END %]
[% IF ( image.checked ) %]
[% IF image.checked %]
<input type="radio" name="image" value="[% image.KohaImage %]" checked="checked" />
[% ELSE %]
[% IF ( image.KohaImage ) %] <!-- to delete the radio button if there is no image after -->
[% ELSIF image.KohaImage %] <!-- to delete the radio button if there is no image after -->
<input type="radio" name="image" value="[% image.KohaImage %]" />
[% END %]
[% END %]
</label>
</li>
[% END %]
@ -185,21 +210,27 @@ Item types administration
<br class="clear" />
</div>
[% END %]
<div id="remote"><ul>
<li> <label for="remote_image_check"> Remote image:</label>
[% IF ( remote_image ) %]
<div id="remote">
<ul>
<li>
<label for="remote_image_check"> Remote image:</label>
[% IF remote_image %]
<input type="radio" id="remote_image_check" name="image" value="remoteImage" checked="checked" />
[% ELSE %]
<input type="radio" id="remote_image_check" name="image" value="remoteImage" />
[% END %]<input type="text" name="remoteImage" size="48" maxlength="200" value="[% remote_image %]" onmousedown="document.getElementById('remote_image_check').checked = true;" /> [% IF ( remote_image ) %]
[% END %]
<input type="text" name="remoteImage" size="48" maxlength="200" value="[% remote_image %]" onmousedown="document.getElementById('remote_image_check').checked = true;" />
[% IF ( remote_image ) %]
<img src="[% remote_image %]" alt="" />
[% END %]</li>
</ul>
[% END %]
</li>
</ul>
<br class="clear" />
</div>
</div>
[% END %]
<ol>
</div>
</div>
[% END %]
<ol>
<li>
<label for="hideinopac">Hide in OPAC: </label>
[% IF ( hideinopac ) %]
@ -210,31 +241,31 @@ Item types administration
(if checked, items of this type will be hidden as filters in OPAC's advanced search)
</li>
<li>
<label for="notforloan">Not for loan: </label> [% IF ( notforloan ) %]
<label for="notforloan">Not for loan: </label>
[% IF itemtype.notforloan %]
<input type="checkbox" id="notforloan" name="notforloan" checked="checked" value="1" />
[% ELSE %]
<input type="checkbox" id="notforloan" name="notforloan" value="1" />
[% END %]
(if checked, no item of this type can be issued. If not checked, every item of this type can be issued unless notforloan is set for a specific item)
</li>
<li>
<label for="rentalcharge">Rental charge: </label>
<input type="text" id="rentalcharge" name="rentalcharge" size="10" value="[% rentalcharge %]" />
<input type="text" id="rentalcharge" name="rentalcharge" size="10" value="[% itemtype.rentalcharge %]" />
</li>
<li>
<label for="checkinmsg">Checkin message: </label>
<textarea id="checkinmsg" name="checkinmsg" cols="55" rows="5">[% checkinmsg %]</textarea>
<textarea id="checkinmsg" name="checkinmsg" cols="55" rows="5">[% itemtype.checkinmsg %]</textarea>
</li>
<li>
<label for="checkinmsgtype">Checkin message type: </label>
<select type="text" id="checkinmsgtype" name="checkinmsgtype">
[% IF ( checkinmsgtype == 'message' ) %]
[% IF itemtype.checkinmsgtype == 'message' %]
<option value="message" selected="selected">Message</option>
[% ELSE %]
<option value="message">Message</option>
[% END %]
[% IF ( checkinmsgtype == 'alert' ) %]
[% IF itemtype.checkinmsgtype == 'alert' %]
<option value="alert" selected="selected">Alert</option>
[% ELSE %]
<option value="alert">Alert</option>
@ -245,7 +276,7 @@ Item types administration
<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 ) %]
[% FOREACH a IN AuthorisedValues.Get('SIP_MEDIA_TYPE', itemtype.sip_media_type ) %]
[% IF a.selected %]
<option value="[% a.authorised_value %]" selected="selected">[% a.lib %]</option>
[% ELSE %]
@ -256,7 +287,7 @@ Item types administration
</li>
<li>
<label for="summary">Summary: </label>
<textarea id="summary" name="summary" cols="55" rows="5">[% summary %]</textarea>
<textarea id="summary" name="summary" cols="55" rows="5">[% itemtype.summary %]</textarea>
<p>Enter a summary that will overwrite the default one in search results lists. Example, for a website itemtype : </p>
<p><b>&lt;a href="[856u]"&gt;open site&lt;/a&gt;</b> will show the link just below the title</p>
</li>
@ -267,43 +298,42 @@ Item types administration
<input type="submit" value="Save changes" />
<a href="/cgi-bin/koha/admin/itemtypes.pl" class="cancel">Cancel</a>
</fieldset>
</form>
</form>
[% END %]
[% IF ( delete_confirm ) %]
[% IF ( total ) %]<div class="dialog message">
<h3>Cannot delete item type</h3>
<p><strong>This record is used [% total %] times</strong>. Deletion is not possible.</p>
[% ELSE %]<div class="dialog alert">
<h3>Delete item type '[% itemtype %]'?</h3>
[% END %]
<table>
[% IF op == 'delete_confirm' %]
<div class="dialog message">
<h3>Delete item type '[% itemtype.itemtype %]'?</h3>
<table>
<tr>
<th scope="row">Item type</th>
<td>[% itemtype %]</td>
<td>[% itemtype.itemtype %]</td>
</tr>
<tr><th scope="row">Description</th><td>[% itemtype.translated_description %]</td></tr>
[% UNLESS Koha.Preference('noItemTypeImages') %]
<tr>
<th scope="row">Image</th>
<td>
[% IF itemtype.image_location %]<img src="[% itemtype.image_location %]" alt="" />[% END %]
</td>
</tr>
<tr><th scope="row">Description</th><td>[% translated_description %]</td></tr>
<tr><th scope="row">Loan length</th><td>[% loanlength %]</td></tr>
<tr><th scope="row">Rental charge</th><td>[% rentalcharge %]</td></tr></table>
<form action="[% script_name %]" method="post">
<input type="hidden" name="op" value="delete_confirmed" /><input type="hidden" name="itemtype" value="[% itemtype %]" />[% IF ( total ) %]
</form>
<form action="[% script_name %]" method="post"><input type="submit" class="approve" value="OK" /></form>
[% ELSE %]
<input type="submit" class="approve" value="Delete this Item Type" /></form> <form action="[% script_name %]" method="post"><input type="submit" class="deny" value="Do Not Delete" /></form>
[% END %]
</div>
<tr><th scope="row">Rental charge</th><td>[% itemtype.rentalcharge | $Price %]</td></tr>
</table>
<form action="/cgi-bin/koha/admin/itemtypes.pl" method="post">
<input type="hidden" name="op" value="delete_confirmed" /><input type="hidden" name="itemtype" value="[% itemtype.itemtype %]" />
<input type="submit" class="approve" value="Delete this Item Type" />
</form>
<form action="/cgi-bin/koha/admin/itemtypes.pl" method="post"><input type="submit" class="deny" value="Do Not Delete" /></form>
</div>
[% END %]
[% IF ( else ) %]
<h2>Item types administration</h2>
[% IF ( loop ) %]
<table id="table_item_type">
[% IF op == 'list' %]
<h2>Item types administration</h2>
[% IF itemtypes %]
<table id="table_item_type">
<thead>
[% UNLESS ( noItemTypeImages ) %]<th>Image</th>[% END %]
[% UNLESS Koha.Preference('noItemTypeImages') %]<th>Image</th>[% END %]
<th>Code</th>
<th>Description</th>
<th>Search category</th>
@ -313,19 +343,19 @@ Item types administration
<th>Checkin message</th>
<th>Actions</th>
</thead>
[% FOREACH loo IN loop %]
[% FOREACH itemtype IN itemtypes %]
<tr>
[% UNLESS ( noItemTypeImages ) %] <td>[% IF ( loo.imageurl ) %]<img src="[% loo.imageurl %]" alt="" />[% ELSE %]&nbsp;[% END %]</td>[% END %]
[% UNLESS Koha.Preference('noItemTypeImages') %] <td>[% IF itemtype.image_location %]<img src="[% itemtype.image_location %]" alt="" />[% ELSE %]&nbsp;[% END %]</td>[% END %]
<td>
<a href="[% loo.script_name %]?op=add_form&amp;itemtype=[% loo.itemtype |html %]">
[% loo.itemtype %]
<a href="/cgi-bin/koha/admin/itemtypes.pl?op=add_form&amp;itemtype=[% itemtype.itemtype |html %]">
[% itemtype.itemtype %]
</a>
</td>
<td>
[% IF loo.translated_descriptions.size %]
[% loo.description %] (default)<br/>
[% FOR description IN loo.translated_descriptions %]
[% IF description.translation == loo.translated_description %]
[% IF itemtype.translated_descriptions.size %]
[% itemtype.description %] (default)<br/>
[% FOR description IN itemtype.translated_descriptions %]
[% IF description.translation == itemtype.translated_description %]
<b>[% description.translation %]</b>
[% ELSE %]
[% description.translation %] ([% description.lang %])
@ -333,34 +363,30 @@ Item types administration
<br/>
[% END %]
[% ELSE %]
[% loo.description %]
[% itemtype.description %]
[% END %]
</td>
<td>[% loo.searchcategory %]</td>
<td>[% IF ( loo.notforloan ) %]Yes[% ELSE %]&nbsp;[% END %]</td>
<td>[% IF ( loo.hideinopac ) %]Yes[% ELSE %]&nbsp;[% END %]</td>
<td>[% itemtype.searchcategory %]</td>
<td>[% IF ( itemtype.notforloan ) %]Yes[% ELSE %]&nbsp;[% END %]</td>
<td>[% IF ( itemtype.hideinopac ) %]Yes[% ELSE %]&nbsp;[% END %]</td>
<td>
[% UNLESS ( loo.notforloan ) %]
[% loo.rentalcharge %]
[% UNLESS ( itemtype.notforloan ) %]
[% itemtype.rentalcharge | $Price %]
[% END %]
</td>
<td>[% loo.checkinmsg | html_line_break %]</td>
<td>[% itemtype.checkinmsg | html_line_break %]</td>
<td>
<a href="[% loo.script_name %]?op=add_form&amp;itemtype=[% loo.itemtype |html %]">Edit</a>
<a href="[% loo.script_name %]?op=delete_confirm&amp;itemtype=[% loo.itemtype |html %]">Delete</a>
<a href="/cgi-bin/koha/admin/itemtypes.pl?op=add_form&amp;itemtype=[% itemtype.itemtype |html %]">Edit</a>
<a href="/cgi-bin/koha/admin/itemtypes.pl?op=delete_confirm&amp;itemtype=[% itemtype.itemtype |html %]">Delete</a>
</td>
</tr>
[% END %]
</table>[% ELSE %]
<div class="dialog message">There are no itemtypes defined</div>
</table>
[% ELSE %]
<div class="dialog message">There are no itemtypes defined</div>
[% END %]
[% END %]
<div class="pages">[% pagination_bar %]</div>
[% END %]
</div>
</div>
<div class="yui-b">