Bugzilla – Attachment 45769 Details for
Bug 14828
Move the item types related code to Koha::ItemTypes
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 14828: use Koha::ItemType[s] in admin/itemtypes
Bug-14828-use-KohaItemTypes-in-adminitemtypes.patch (text/plain), 44.81 KB, created by
Jonathan Druart
on 2015-12-17 12:54:22 UTC
(
hide
)
Description:
Bug 14828: use Koha::ItemType[s] in admin/itemtypes
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2015-12-17 12:54:22 UTC
Size:
44.81 KB
patch
obsolete
>From f3bbe10d53f2358dcabfff81f81fa891e518e314 Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Tue, 15 Sep 2015 14:20:22 +0100 >Subject: [PATCH] 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). >--- > admin/itemtypes.pl | 331 ++++-------- > .../prog/en/modules/admin/itemtypes.tt | 576 +++++++++++---------- > 2 files changed, 407 insertions(+), 500 deletions(-) > >diff --git a/admin/itemtypes.pl b/admin/itemtypes.pl >index 9e2fdfe..f5182cd 100755 >--- a/admin/itemtypes.pl >+++ b/admin/itemtypes.pl >@@ -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 $op = $input->param('op') // 'list'; >+my $input = new CGI; >+my $searchfield = $input->param('description'); >+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, >+ itemtype => $itemtype, >+ imagesets => $imagesets, >+ 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' ) { >- 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') >- ); >- } >- 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'), >+} elsif ( $op eq 'add_validate' ) { >+ my $is_a_modif = $input->param('is_a_modif'); >+ 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, >+ } > ); >- } >- else { >- push @messages, { >- type => 'error', >+ 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', > 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' ) { >+ $op = 'list'; >+} 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 ); >+ >+ 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, ); >+ } > >- 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 >- ); >+} 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' }; >+ } > >- # 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 ################################## >+ $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, >- messages => \@messages, >+ itemtypes => $itemtypes, >+ messages => \@messages, > ); > } > >+$template->param( op => $op ); >+ > output_html_with_http_headers $input, $cookie, $template->output; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/itemtypes.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/itemtypes.tt >index 6b2ab05..077eb7e 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/itemtypes.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/itemtypes.tt >@@ -1,20 +1,22 @@ >+[% USE Koha %] > [% USE AuthorisedValues %] >+[% USE Price %] > [% INCLUDE 'doc-head-open.inc' %] >-<title>Koha › Administration › Item types [% IF ( add_form ) %]› >+<title>Koha › Administration › Item types [% IF op == 'add_form' %]› > [% IF ( itemtype ) %] >-Modify item type '[% itemtype %]' >+Modify item type '[% itemtype.itemtype %]' > [% ELSE %] > Add item type > [% END %] > [% END %] >-[% IF ( delete_confirm ) %]› >+[% IF op == 'delete_confirm' %]› > [% 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 ) %]› >+[% IF op == 'delete_confirmed' %]› > Data deleted > [% END %] > </title> >@@ -55,312 +57,336 @@ Data deleted > [% INCLUDE 'header.inc' %] > [% INCLUDE 'cat-search.inc' %] > >-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> › [% IF ( add_form ) %] >- [% IF ( itemtype ) %] >-<a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> › Modify item type '[% itemtype %]' >+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> › [% IF op == 'add_form' %] >+ [% IF itemtype %] >+<a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> › Modify item type '[% itemtype.itemtype %]' > [% ELSE %] > <a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> › Add item type > [% END %] > [% END %] >-[% IF ( delete_confirm ) %] >- [% IF ( total ) %] >-<a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> › Cannot delete item type '[% itemtype %]' >+[% IF op == 'delete_confirm' %] >+ [% IF total %] >+<a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> › Cannot delete item type '[% itemtype.itemtype %]' > [% ELSE %] >-<a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> › Delete item type '[% itemtype %]'? >+<a href="/cgi-bin/koha/admin/itemtypes.pl">Item types</a> › 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> ›Data deleted > [% END %] >-[% IF ( else ) %] >+[% IF op == 'list' %] > Item types administration > [% END %]</div> > > <div id="doc3" class="yui-t2"> >- >+ > <div id="bd"> > <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' %] >- This item type already exists. >- [% END %] >- </div> >+[% 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 ) %] >- <h3>Modify item type</h3> >- [% ELSE %] >- <h3>Add item type</h3> >- [% END %] >-<form action="[% script_name %]" 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 ) %] >- <li> >- <input type="hidden" name="is_a_modif" value="1" /> >- <span class="label">Item type: </span> <input type="hidden" name="itemtype" value="[% 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> >- </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> >- </li> >- <li> >- <span class="label">Search category</span> >- <select id="searchcategory" name="searchcategory"> >- <option value="">None</option> >- [% FOREACH cat IN searchcategory %] >- [% IF ( cat.selected ) %] >- <option value="[% cat.authorised_value %]" selected="selected"> >- [% cat.lib %] >- </option> >- [% ELSE %] >- <option value="[% cat.authorised_value %]" > >- [% cat.lib %] >- </option> >- [% END %] >- [% END %] >- </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&searchfield=noItemTypeImages">noItemTypeImages system preference</a></li></ol> >- [% ELSE %]</ol> >- <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> >- [% END %] >- [% IF ( remote_image ) %]<li class="ui-tabs-active">[% ELSE %]<li>[% END %]<a href="#remote">Remote image</a></li> >- </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> >- >- [% FOREACH imageset IN imagesets %] >- <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 ) %] >- <img src="[% image.StaffImageUrl %]" alt="[% image.StaffImageUrl %]" title="[% image.StaffImageUrl %]" /> >- [% ELSE %] >- [% END %] >- [% IF ( image.checked ) %] >- <input type="radio" name="image" value="[% image.KohaImage %]" checked="checked" /> >+[% IF op == 'add_form' %] >+ [% IF itemtype %] >+ <h3>Modify item type</h3> > [% ELSE %] >- [% IF ( image.KohaImage ) %] <!-- to delete the radio button if there is no image after --> >- <input type="radio" name="image" value="[% image.KohaImage %]" /> >- [% END %] >+ <h3>Add item type</h3> > [% END %] >- </label> >- </li> >- [% END %] >- </ul> >- <br class="clear" /> >- </div> >- [% END %] >-<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 ) %] >- <img src="[% remote_image %]" alt="" /> >- [% END %]</li> >-</ul> >- <br class="clear" /> >-</div> >-</div> >-[% END %] >-<ol> >- <li> >- <label for="hideinopac">Hide in OPAC: </label> >- [% IF ( hideinopac ) %] >- <input type="checkbox" id="hideinopac" name="hideinopac" checked="checked" value="1" /> >- [% ELSE %] >- <input type="checkbox" id="hideinopac" name="hideinopac" value="1" /> >- [% END %] >- (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 ) %] >- <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 %]" /> >- </li> >- <li> >- <label for="checkinmsg">Checkin message: </label> >- <textarea id="checkinmsg" name="checkinmsg" cols="55" rows="5">[% checkinmsg %]</textarea> >- </li> >- <li> >- <label for="checkinmsgtype">Checkin message type: </label> >- <select type="text" id="checkinmsgtype" name="checkinmsgtype"> >- [% IF ( checkinmsgtype == 'message' ) %] >- <option value="message" selected="selected">Message</option> >- [% ELSE %] >- <option value="message">Message</option> >- [% END %] >- [% IF ( checkinmsgtype == 'alert' ) %] >- <option value="alert" selected="selected">Alert</option> >- [% ELSE %] >- <option value="alert">Alert</option> >- [% 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 %]</option> >- [% ELSE %] >- <option value="[% a.authorised_value %]">[% a.lib %]</option> >- [% END %] >- [% END %] >- </select> >- </li> >- <li> >- <label for="summary">Summary: </label> >- <textarea id="summary" name="summary" cols="55" rows="5">[% summary %]</textarea> >- <p>Enter a summary that will overwrite the default one in search results lists. Example, for a website itemtype : </p> >- <p><b><a href="[856u]">open site</a></b> will show the link just below the title</p> >- </li> >- </ol> >- </fieldset> >+ <form action="/cgi-bin/koha/admin/itemtypes.pl" name="Aform" method="post" id="itemtypeentry"> >+ <input type="hidden" name="op" value="add_validate" /> >+ <fieldset class="rows"> >+ <ol> >+ [% 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 %]" /> >+ [% 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> >+ </li> >+ [% END %] >+ <li> >+ <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 %] >+ <option value="[% cat.authorised_value %]" selected="selected"> >+ [% cat.lib %] >+ </option> >+ [% ELSE %] >+ <option value="[% cat.authorised_value %]" > >+ [% cat.lib %] >+ </option> >+ [% END %] >+ [% END %] >+ </select> >+ (Options are defined as the authorized values for the ITEMTYPECAT category) >+ </li> >+ [% 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&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> >+ [% 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> >+ <li><label for="noimage">No image: </label><input type="radio" name="image" id="noimage" value="removeImage" /></li> >+ </ul> >+ <br class="clear" /> >+ </div> > >- <fieldset class="action"> >- <input type="submit" value="Save changes" /> >- <a href="/cgi-bin/koha/admin/itemtypes.pl" class="cancel">Cancel</a> >- </fieldset> >-</form> >-[% END %] >+ [% FOREACH imageset IN imagesets %] >+ <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 %] >+ <img src="[% image.StaffImageUrl %]" alt="[% image.StaffImageUrl %]" title="[% image.StaffImageUrl %]" /> >+ [% END %] >+ [% IF image.checked %] >+ <input type="radio" name="image" value="[% image.KohaImage %]" checked="checked" /> >+ [% ELSIF image.KohaImage %] <!-- to delete the radio button if there is no image after --> >+ <input type="radio" name="image" value="[% image.KohaImage %]" /> >+ [% END %] >+ </label> >+ </li> >+ [% END %] >+ </ul> >+ <br class="clear" /> >+ </div> >+ [% 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> >+ <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 ) %] >+ <img src="[% remote_image %]" alt="" /> >+ [% END %] >+ </li> >+ </ul> >+ <br class="clear" /> >+ </div> >+ </div> >+ [% END %] >+ <ol> >+ <li> >+ <label for="hideinopac">Hide in OPAC: </label> >+ [% IF ( hideinopac ) %] >+ <input type="checkbox" id="hideinopac" name="hideinopac" checked="checked" value="1" /> >+ [% ELSE %] >+ <input type="checkbox" id="hideinopac" name="hideinopac" value="1" /> >+ [% END %] >+ (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 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="[% itemtype.rentalcharge %]" /> >+ </li> >+ <li> >+ <label for="checkinmsg">Checkin message: </label> >+ <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 itemtype.checkinmsgtype == 'message' %] >+ <option value="message" selected="selected">Message</option> >+ [% ELSE %] >+ <option value="message">Message</option> >+ [% END %] >+ [% IF itemtype.checkinmsgtype == 'alert' %] >+ <option value="alert" selected="selected">Alert</option> >+ [% ELSE %] >+ <option value="alert">Alert</option> >+ [% 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', itemtype.sip_media_type ) %] >+ [% IF a.selected %] >+ <option value="[% a.authorised_value %]" selected="selected">[% a.lib %]</option> >+ [% ELSE %] >+ <option value="[% a.authorised_value %]">[% a.lib %]</option> >+ [% END %] >+ [% END %] >+ </select> >+ </li> >+ <li> >+ <label for="summary">Summary: </label> >+ <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><a href="[856u]">open site</a></b> will show the link just below the title</p> >+ </li> >+ </ol> >+ </fieldset> >+ >+ <fieldset class="action"> >+ <input type="submit" value="Save changes" /> >+ <a href="/cgi-bin/koha/admin/itemtypes.pl" class="cancel">Cancel</a> >+ </fieldset> >+ </form> > [% END %] >-<table> >- <tr> >- <th scope="row">Item type</th> >- <td>[% itemtype %]</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> >- >+[% 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.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> >+ [% END %] >+ <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"> >- <thead> >- [% UNLESS ( noItemTypeImages ) %]<th>Image</th>[% END %] >- <th>Code</th> >- <th>Description</th> >- <th>Search category</th> >- <th>Not for loan</th> >- <th>Hide in OPAC</th> >- <th>Charge</th> >- <th>Checkin message</th> >- <th>Actions</th> >- </thead> >- [% FOREACH loo IN loop %] >- <tr> >- [% UNLESS ( noItemTypeImages ) %] <td>[% IF ( loo.imageurl ) %]<img src="[% loo.imageurl %]" alt="" />[% ELSE %] [% END %]</td>[% END %] >- <td> >- <a href="[% loo.script_name %]?op=add_form&itemtype=[% loo.itemtype |html %]"> >- [% loo.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 %] >- <b>[% description.translation %]</b> >+[% IF op == 'list' %] >+ <h2>Item types administration</h2> >+ [% IF itemtypes %] >+ <table id="table_item_type"> >+ <thead> >+ [% UNLESS Koha.Preference('noItemTypeImages') %]<th>Image</th>[% END %] >+ <th>Code</th> >+ <th>Description</th> >+ <th>Search category</th> >+ <th>Not for loan</th> >+ <th>Hide in OPAC</th> >+ <th>Charge</th> >+ <th>Checkin message</th> >+ <th>Actions</th> >+ </thead> >+ [% FOREACH itemtype IN itemtypes %] >+ <tr> >+ [% UNLESS Koha.Preference('noItemTypeImages') %] <td>[% IF itemtype.image_location %]<img src="[% itemtype.image_location %]" alt="" />[% ELSE %] [% END %]</td>[% END %] >+ <td> >+ <a href="/cgi-bin/koha/admin/itemtypes.pl?op=add_form&itemtype=[% itemtype.itemtype |html %]"> >+ [% itemtype.itemtype %] >+ </a> >+ </td> >+ <td> >+ [% 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 %]) >+ [% END %] >+ <br/> >+ [% END %] > [% ELSE %] >- [% description.translation %] ([% description.lang %]) >+ [% itemtype.description %] > [% END %] >- <br/> >+ </td> >+ <td>[% itemtype.searchcategory %]</td> >+ <td>[% IF ( itemtype.notforloan ) %]Yes[% ELSE %] [% END %]</td> >+ <td>[% IF ( itemtype.hideinopac ) %]Yes[% ELSE %] [% END %]</td> >+ <td> >+ [% UNLESS ( itemtype.notforloan ) %] >+ [% itemtype.rentalcharge | $Price %] > [% END %] >- [% ELSE %] >- [% loo.description %] >- [% END %] >- </td> >- <td>[% loo.searchcategory %]</td> >- <td>[% IF ( loo.notforloan ) %]Yes[% ELSE %] [% END %]</td> >- <td>[% IF ( loo.hideinopac ) %]Yes[% ELSE %] [% END %]</td> >- <td> >- [% UNLESS ( loo.notforloan ) %] >- [% loo.rentalcharge %] >+ </td> >+ <td>[% itemtype.checkinmsg | html_line_break %]</td> >+ <td> >+ <a href="/cgi-bin/koha/admin/itemtypes.pl?op=add_form&itemtype=[% itemtype.itemtype |html %]">Edit</a> >+ <a href="/cgi-bin/koha/admin/itemtypes.pl?op=delete_confirm&itemtype=[% itemtype.itemtype |html %]">Delete</a> >+ </td> >+ </tr> >+ [% END %] >+ </table> >+ [% ELSE %] >+ <div class="dialog message">There are no itemtypes defined</div> > [% END %] >- </td> >- <td>[% loo.checkinmsg | html_line_break %]</td> >- <td> >- <a href="[% loo.script_name %]?op=add_form&itemtype=[% loo.itemtype |html %]">Edit</a> >- <a href="[% loo.script_name %]?op=delete_confirm&itemtype=[% loo.itemtype |html %]">Delete</a> >- </td> >- </tr> >- [% END %] >-</table>[% ELSE %] >-<div class="dialog message">There are no itemtypes defined</div> >-[% END %] >- >-<div class="pages">[% pagination_bar %]</div> >- > [% END %] > >- >- > </div> > </div> > <div class="yui-b"> >-- >2.1.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 14828
:
42566
|
42567
|
42568
|
42569
|
45748
|
45749
|
45750
|
45751
|
45769
|
45771
|
45772
|
45773
|
45774
|
46731
|
46732
|
46733
|
46734
|
46735
|
47341
|
47342
|
47343
|
47344
|
47345