Bug 21946: Update Administration->Item types to allow for defining parent types

To test:
1 - Browse to Administration -> Item types
2 - Not a new colum for prent type
3 - Edit an existing type and not you can select any type (except the current) as a parent
4 - Select one
5 - Edit the type you selected as parent
6 - Note it cannot have a parent defined
7 - Edit a new type, note you can select a parent

Signed-off-by: Liz Rea <wizzyrea@gmail.com>

Signed-off-by: Lisette Scheer <lisetteslatah@gmail.com>
Signed-off-by: Alex Arnaud <alex.arnaud@biblibre.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Nick Clemens 2019-04-02 14:47:16 +00:00 committed by Jonathan Druart
parent 4f3a0a4b89
commit 453fd5ce90
3 changed files with 84 additions and 15 deletions

View File

@ -139,6 +139,20 @@ sub _library_limits {
};
}
=head3 parent
Returns the ItemType object of the parent_type or undef.
=cut
sub parent {
my ( $self ) = @_;
my $parent_rs = $self->_result->parent_type;
return unless $parent_rs;
return Koha::ItemType->_new_from_dbic( $parent_rs );
}
=head3 type
=cut

View File

@ -71,11 +71,16 @@ if ( $op eq 'add_form' ) {
};
}
my $parent_type = $itemtype ? $itemtype->parent_type : undef;
my $parent_types = Koha::ItemTypes->search({parent_type=>undef,itemtype => {'!='=>$itemtype_code}});
my $imagesets = C4::Koha::getImageSets( checked => ( $itemtype ? $itemtype->imageurl : undef ) );
my $searchcategory = GetAuthorisedValues("ITEMTYPECAT");
my $translated_languages = C4::Languages::getTranslatedLanguages( undef , C4::Context->preference('template') );
$template->param(
itemtype => $itemtype,
parent_type => $parent_type,
parent_types => $parent_types,
is_a_parent => $itemtype ? Koha::ItemTypes->search({parent_type=>$itemtype_code})->count : 0,
imagesets => $imagesets,
searchcategory => $searchcategory,
can_be_translated => ( scalar(@$translated_languages) > 1 ? 1 : 0 ),
@ -84,6 +89,7 @@ if ( $op eq 'add_form' ) {
} elsif ( $op eq 'add_validate' ) {
my $is_a_modif = $input->param('is_a_modif');
my $itemtype = Koha::ItemTypes->find($itemtype_code);
my $parent_type = $input->param('parent_type') || undef;
my $description = $input->param('description');
my $rentalcharge = $input->param('rentalcharge');
my $rentalcharge_daily = $input->param('rentalcharge_daily');
@ -110,6 +116,7 @@ if ( $op eq 'add_form' ) {
if ( $itemtype and $is_a_modif ) { # it's a modification
$itemtype->description($description);
$itemtype->parent_type($parent_type);
$itemtype->rentalcharge($rentalcharge);
$itemtype->rentalcharge_daily($rentalcharge_daily);
$itemtype->rentalcharge_hourly($rentalcharge_hourly);
@ -141,6 +148,7 @@ if ( $op eq 'add_form' ) {
{
itemtype => $itemtype_code,
description => $description,
parent_type => $parent_type,
rentalcharge => $rentalcharge,
rentalcharge_daily => $rentalcharge_daily,
rentalcharge_hourly => $rentalcharge_hourly,

View File

@ -115,6 +115,27 @@ Item types administration
<input type="text" id="itemtype" name="itemtype" size="10" maxlength="10" required="required" /> <span class="required">Required</span>
</li>
[% END %]
<li>
<label for="parent_type">Parent item type: </label>
[% IF !is_a_parent && parent_types %]
<select name="parent_type" id="parent_type">
<option value="">None</option>
[% FOREACH pt IN parent_types %]
[% IF parent_type == pt.itemtype %]
<option value="[% pt.itemtype | html %]" selected="selected">[% pt.description | html %]</option>
[% ELSE %]
<option value="[% pt.itemtype | html %]">[% pt.description | html %]</option>
[% END %]
[% END %]
</select>
[% ELSIF is_a_parent %]
<input type="text" id="parent_type" value="[% parent_type | html %]" name="parent_type" size="10" maxlength="10" disabled/>
<p>Is a parent to another type, cannot have a parent</p>
[% ELSE %]
<input type="text" id="parent_type" value="[% parent_type | html %]" name="parent_type" size="10" maxlength="10" disabled/>
<p>No available parent types</p>
[% END %]
</li>
<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>
@ -369,8 +390,9 @@ Item types administration
<table id="table_item_type">
<thead>
[% UNLESS Koha.Preference('noItemTypeImages') && Koha.Preference('OpacNoItemTypeImages') %]<th class="noExport">Image</th>[% END %]
<th>Code</th>
<th>Description</th>
<th>Code</th>
<th>Parent code</th>
<th>Search category</th>
<th>Not for loan</th>
<th>Hide in OPAC</th>
@ -391,25 +413,50 @@ Item types administration
[% IF image_location %]<img src="[% image_location | html %]" alt="" />[% ELSE %]&nbsp;[% END %]
</td>
[% END %]
<td>
[% IF itemtype.parent_type %]
[% IF itemtype.parent.translated_descriptions.size %]
[% itemtype.parent.description | html %] (default)<br/>
[% ELSE %]
[% itemtype.parent.description | html %]
[% END %]
</br>
[% IF itemtype.translated_descriptions.size %]
[% itemtype.description | html %] (default)<br/>
[% FOR description IN itemtype.translated_descriptions %]
[% IF description.translation == itemtype.translated_description %]
-- <b>[% description.translation | html %]</b>
[% ELSE %]
-- [% description.translation | html %] ([% description.lang | html %])
[% END %]
<br/>
[% END %]
[% ELSE %]
-- [% itemtype.description | html %]
[% END %]
[% ELSE %]
[% IF itemtype.translated_descriptions.size %]
[% itemtype.description | html %] (default)<br/>
[% FOR description IN itemtype.translated_descriptions %]
[% IF description.translation == itemtype.translated_description %]
<b>[% description.translation | html %]</b>
[% ELSE %]
[% description.translation | html %] ([% description.lang | html %])
[% END %]
<br/>
[% END %]
[% ELSE %]
[% itemtype.description | html %]
[% END %]
[% END %]
</td>
<td>
<a href="/cgi-bin/koha/admin/itemtypes.pl?op=add_form&amp;itemtype=[% itemtype.itemtype | uri %]">
[% itemtype.itemtype | html %]
</a>
</td>
<td>
[% IF itemtype.translated_descriptions.size %]
[% itemtype.description | html %] (default)<br/>
[% FOR description IN itemtype.translated_descriptions %]
[% IF description.translation == itemtype.translated_description %]
<b>[% description.translation | html %]</b>
[% ELSE %]
[% description.translation | html %] ([% description.lang | html %])
[% END %]
<br/>
[% END %]
[% ELSE %]
[% itemtype.description | html %]
[% END %]
[% itemtype.parent_type | html %]
</td>
<td>[% itemtype.searchcategory | html %]</td>
<td>[% IF ( itemtype.notforloan ) %]Yes[% ELSE %]&nbsp;[% END %]</td>
@ -493,7 +540,7 @@ Item types administration
"aoColumnDefs": [
{ "aTargets": [ -1 ], "bSortable": false, "bSearchable": false },
],
"aaSorting": [[ 2, "asc" ]],
"aaSorting": [[ 1, "asc" ]],
"iDisplayLength": 10,
"sPaginationType": "full"
}, columns_settings);