From 51489ab0362444ddeb7379bfdf425bbc4ac57212 Mon Sep 17 00:00:00 2001 From: Jake Deery Date: Mon, 1 Dec 2025 14:45:40 +0000 Subject: [PATCH] Bug 14962: On Display code for Intranet scripts & templates This patch makes the necessary changes to the Intranet to make sure effective locations, collection codes, and branches are correctly displayed. Please see the test files commit for instructions on how to test this bundle of patches. Sponsored-by: ByWater Solutions Signed-of-by: Martin Renvoize --- admin/library_groups.pl | 4 + basket/basket.pl | 19 +- catalogue/itemsearch.pl | 7 + catalogue/moredetail.pl | 39 +- catalogue/search.pl | 1 + cataloguing/additem.pl | 15 + circ/overdue.pl | 65 +-- circ/pendingreserves.pl | 26 +- circ/returns.pl | 2 + circ/view_holdsqueue.pl | 28 +- display/display-home.pl | 54 +++ .../prog/css/src/staff-global.scss | 5 + .../prog/en/includes/action-logs.inc | 10 + .../prog/en/includes/cat-toolbar.inc | 70 +++ .../catalogue/itemsearch_item.csv.inc | 2 +- .../catalogue/itemsearch_item.json.inc | 11 +- .../prog/en/includes/display-search.inc | 35 ++ .../intranet-tmpl/prog/en/includes/header.inc | 3 + .../tables/items/catalogue_detail.inc | 222 +++++++++- .../prog/en/includes/permissions.inc | 24 + .../prog/en/includes/waiting_holds.inc | 2 +- .../prog/en/modules/admin/library_groups.tt | 24 +- .../admin/preferences/circulation.pref | 7 + .../en/modules/admin/preferences/logs.pref | 6 + .../prog/en/modules/basket/basket.tt | 4 +- .../prog/en/modules/catalogue/detail.tt | 413 ++++++++++++++++++ .../prog/en/modules/catalogue/moredetail.tt | 17 +- .../prog/en/modules/catalogue/results.tt | 10 + .../prog/en/modules/cataloguing/additem.tt | 267 ++++++----- .../prog/en/modules/circ/article-requests.tt | 12 +- .../prog/en/modules/circ/branchtransfers.tt | 2 +- .../prog/en/modules/circ/on-site_checkouts.tt | 2 +- .../prog/en/modules/circ/overdue.tt | 2 +- .../prog/en/modules/circ/pendingbookings.tt | 10 +- .../prog/en/modules/circ/pendingreserves.tt | 22 +- .../prog/en/modules/circ/returns.tt | 9 +- .../prog/en/modules/circ/view_holdsqueue.tt | 34 +- .../prog/en/modules/display/display-home.tt | 36 ++ .../prog/en/modules/intranet-main.tt | 6 + .../en/modules/recalls/recalls_to_pull.tt | 4 +- .../prog/en/modules/reports/itemslost.tt | 2 +- .../prog/en/modules/tags/list.tt | 2 +- .../prog/en/modules/tools/viewlog.tt | 2 +- .../prog/en/modules/virtualshelves/shelves.tt | 4 +- .../prog/js/fetch/display-api-client.js | 6 +- .../prog/js/fetch/item-api-client.js | 11 +- .../Display/DisplaysBatchAddItems.vue | 47 +- .../Display/DisplaysBatchRemoveItems.vue | 38 +- .../components/Display/DisplaysResource.vue | 174 ++++---- .../prog/js/vue/components/Display/Main.vue | 26 +- .../prog/js/vue/fetch/api-client.js | 4 +- .../prog/js/vue/routes/display.js | 8 +- recalls/recalls_to_pull.pl | 2 +- reserve/request.pl | 5 + 54 files changed, 1492 insertions(+), 370 deletions(-) create mode 100755 display/display-home.pl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/display-search.inc create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/display/display-home.tt diff --git a/admin/library_groups.pl b/admin/library_groups.pl index 5cf759928d9..0f5c50f6255 100755 --- a/admin/library_groups.pl +++ b/admin/library_groups.pl @@ -52,6 +52,7 @@ if ( $op eq 'cud-add' ) { my $ft_search_groups_staff = $cgi->param('ft_search_groups_staff') || 0; my $ft_local_hold_group = $cgi->param('ft_local_hold_group') || 0; my $ft_local_float_group = $cgi->param('ft_local_float_group') || 0; + my $ft_display_group = $cgi->param('ft_display_group') || 0; if ( !$branchcode && Koha::Library::Groups->search( { title => $title } )->count() ) { $template->param( error_duplicate_title => $title ); @@ -68,6 +69,7 @@ if ( $op eq 'cud-add' ) { ft_local_hold_group => $ft_local_hold_group, ft_limit_item_editing => $ft_limit_item_editing, ft_local_float_group => $ft_local_float_group, + ft_display_group => $ft_display_group, branchcode => $branchcode, } )->store(); @@ -88,6 +90,7 @@ if ( $op eq 'cud-add' ) { my $ft_search_groups_staff = $cgi->param('ft_search_groups_staff') || 0; my $ft_local_hold_group = $cgi->param('ft_local_hold_group') || 0; my $ft_local_float_group = $cgi->param('ft_local_float_group') || 0; + my $ft_display_group = $cgi->param('ft_display_group') || 0; if ($id) { my $group = Koha::Library::Groups->find($id); @@ -102,6 +105,7 @@ if ( $op eq 'cud-add' ) { ft_search_groups_staff => $ft_search_groups_staff, ft_local_hold_group => $ft_local_hold_group, ft_local_float_group => $ft_local_float_group, + ft_display_group => $ft_display_group, } )->store(); diff --git a/basket/basket.pl b/basket/basket.pl index 49d98371f4c..1ff5c4d7937 100755 --- a/basket/basket.pl +++ b/basket/basket.pl @@ -17,6 +17,7 @@ use Modern::Perl; use CGI qw ( -utf8 ); +use C4::Context; use C4::Koha; use C4::Biblio qw( GetMarcSeries @@ -29,6 +30,7 @@ use C4::Output qw( output_html_with_http_headers ); use Koha::AuthorisedValues; use Koha::Biblios; use Koha::CsvProfiles; +use Koha::Items; my $query = CGI->new; @@ -87,7 +89,15 @@ foreach my $biblionumber (@bibs) { $num++; $dat->{biblionumber} = $biblionumber; - $dat->{ITEM_RESULTS} = $biblio->items->search_ordered; + my $items = $biblio->items->search_ordered; + + # Add effective_location for display module support + if ( C4::Context->preference('UseDisplayModule') ) { + foreach my $item ( $items->as_list ) { + $item->{effective_location} = $item->effective_location; + } + } + $dat->{ITEM_RESULTS} = $items; $dat->{MARCNOTES} = $marcnotesarray; $dat->{MARCSUBJCTS} = $marcsubjctsarray; $dat->{MARCAUTHORS} = $marcauthorsarray; @@ -107,9 +117,10 @@ my $resultsarray = \@results; # my $itemsarray=\@items; $template->param( - BIBLIO_RESULTS => $resultsarray, - csv_profiles => Koha::CsvProfiles->search( { type => 'marc', used_for => 'export_records' } ), - bib_list => $bib_list, + BIBLIO_RESULTS => $resultsarray, + csv_profiles => Koha::CsvProfiles->search( { type => 'marc', used_for => 'export_records' } ), + bib_list => $bib_list, + UseDisplayModule => C4::Context->preference('UseDisplayModule'), ); output_html_with_http_headers $query, $cookie, $template->output; diff --git a/catalogue/itemsearch.pl b/catalogue/itemsearch.pl index ae8dd8241d6..6ac30c47d71 100755 --- a/catalogue/itemsearch.pl +++ b/catalogue/itemsearch.pl @@ -30,6 +30,7 @@ use C4::Koha qw( GetAuthorisedValues ); use Koha::AuthorisedValues; use Koha::Biblios; use Koha::Item::Search::Field qw(GetItemSearchFields); +use Koha::Items; use Koha::ItemTypes; use Koha::Libraries; @@ -292,6 +293,12 @@ if ( defined $format and $format ne 'shareable' ) { $item->{biblioitem} = $biblio->biblioitem->unblessed; my $checkout = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } ); $item->{checkout} = $checkout; + + # Add effective_location for display module support + if ( C4::Context->preference('UseDisplayModule') ) { + my $item_obj = Koha::Items->find( $item->{itemnumber} ); + $item->{effective_location} = $item_obj ? $item_obj->effective_location : $item->{location}; + } } } diff --git a/catalogue/moredetail.pl b/catalogue/moredetail.pl index cdd6c09be08..3806f6c0d30 100755 --- a/catalogue/moredetail.pl +++ b/catalogue/moredetail.pl @@ -158,10 +158,10 @@ foreach my $item (@items) { my $item_info = $item->unblessed; $item_info->{object} = $item; - $item_info->{itype} = $itemtypes->{ $item->itype }->{'translated_description'} - if exists $itemtypes->{ $item->itype }; - $item_info->{effective_itemtype} = $itemtypes->{ $item->effective_itemtype }; - $item_info->{'ccode'} = $ccodes->{ $item->ccode } if $ccodes && $item->ccode && exists $ccodes->{ $item->ccode }; + $item_info->{itype} = $itemtypes->{ $item->effective_itemtype }->{'translated_description'} + if exists $itemtypes->{ $item->effective_itemtype }; + $item_info->{'ccode'} = $ccodes->{ $item->effective_collection_code } + if $ccodes && $item->effective_collection_code && exists $ccodes->{ $item->effective_collection_code }; if ( defined $item->copynumber ) { $item_info->{'displaycopy'} = 1; if ( defined $copynumbers->{ $item_info->{'copynumber'} } ) { @@ -256,6 +256,37 @@ foreach my $item (@items) { $item_info->{nomod} = !$patron->can_edit_items_from( $item->homebranch ); + if ( C4::Context->preference('UseDisplayModule') ) { + my @displays; + my @display_items = Koha::DisplayItems->search( + { itemnumber => $item->itemnumber }, + { + order_by => { '-desc' => 'date_added' }, + } + )->as_list; + + foreach my $display_item (@display_items) { + push @displays, $display_item->display; + } + + $item_info->{display_items} = \@display_items if @display_items; + $item_info->{displays} = \@displays if @displays; + } + + if ( C4::Context->preference('UseDisplayModule') && $item->effective_homebranch ) { + my $effective_homebranch = $item->effective_homebranch; + my $effective_homebranch_id = $item->effective_homebranch->branchcode; + + $item_info->{homebranch} = $effective_homebranch_id; + } + + if ( C4::Context->preference('UseDisplayModule') && $item->effective_holdingbranch ) { + my $effective_holdingbranch = $item->effective_holdingbranch; + my $effective_holdingbranch_id = $item->effective_holdingbranch->branchcode; + + $item_info->{holdingbranch} = $effective_holdingbranch_id; + } + push @item_data, $item_info; } diff --git a/catalogue/search.pl b/catalogue/search.pl index 957a9f9dcfc..aa38fc5824a 100755 --- a/catalogue/search.pl +++ b/catalogue/search.pl @@ -708,6 +708,7 @@ if ($hits) { sort_by => \@sort_by } ); + $template->param( hits_to_paginate => $hits_to_paginate ); $template->param( SEARCH_RESULTS => \@newresults ); diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl index 5c3e2005124..784be908f7b 100755 --- a/cataloguing/additem.pl +++ b/cataloguing/additem.pl @@ -165,6 +165,11 @@ if ( $op eq 'edititem' || $op eq 'dupeitem' ) { if ( !$item ) { $template->param( biblio => $biblio, item_doesnt_exist => 1 ); output_and_exit( $input, $cookie, $template, 'unknown_item' ); + } else { + my $ondisplay = $item->active_display ? 1 : undef; + my $nomod = $ondisplay; + + $template->param( ondisplay => $ondisplay, nomod => $nomod ); } } @@ -698,6 +703,16 @@ my @items; for my $item ( $biblio->items->as_list, $biblio->host_items->as_list ) { my $i = $item->columns_to_str; $i->{nomod} = 1 unless $patron->can_edit_items_from( $item->homebranch ); + + if ( C4::Context->preference('UseDisplayModule') ) { + if ( $item->active_display ) { + $i->{active_display_id} = $item->active_display->display_id; + $i->{active_display_name} = $item->active_display->display_name; + $i->{ondisplay} = 1; + $i->{nomod} = 1; + } + } + push @items, $i; } diff --git a/circ/overdue.pl b/circ/overdue.pl index 2d58dd27ee4..9d91eb9ab45 100755 --- a/circ/overdue.pl +++ b/circ/overdue.pl @@ -28,6 +28,7 @@ use Koha::DateUtils qw( dt_from_string ); use Koha::Patron::Attribute::Types; use DateTime; use DateTime::Format::MySQL; +use Koha::Items; my $input = CGI->new; my $showall = $input->param('showall'); @@ -349,36 +350,40 @@ if ($noreport) { } push @overduedata, { - patron => Koha::Patrons->find( $data->{borrowernumber} ), - duedate => $data->{date_due}, - borrowernumber => $data->{borrowernumber}, - cardnumber => $data->{cardnumber}, - borrowertitle => $data->{borrowertitle}, - surname => $data->{surname}, - firstname => $data->{firstname}, - streetnumber => $data->{streetnumber}, - streettype => $data->{streettype}, - address => $data->{address}, - address2 => $data->{address2}, - city => $data->{city}, - zipcode => $data->{zipcode}, - country => $data->{country}, - phone => $data->{phone}, - email => $data->{email}, - branchcode => $data->{branchcode}, - barcode => $data->{barcode}, - datelastborrowed => $data->{datelastborrowed}, - itemnum => $data->{itemnumber}, - issuedate => $data->{issuedate}, - biblionumber => $data->{biblionumber}, - title => $data->{title}, - subtitle => $data->{subtitle}, - part_number => $data->{part_number}, - part_name => $data->{part_name}, - author => $data->{author}, - homebranchcode => $data->{homebranch}, - holdingbranchcode => $data->{holdingbranch}, - location => $data->{location}, + patron => Koha::Patrons->find( $data->{borrowernumber} ), + duedate => $data->{date_due}, + borrowernumber => $data->{borrowernumber}, + cardnumber => $data->{cardnumber}, + borrowertitle => $data->{borrowertitle}, + surname => $data->{surname}, + firstname => $data->{firstname}, + streetnumber => $data->{streetnumber}, + streettype => $data->{streettype}, + address => $data->{address}, + address2 => $data->{address2}, + city => $data->{city}, + zipcode => $data->{zipcode}, + country => $data->{country}, + phone => $data->{phone}, + email => $data->{email}, + branchcode => $data->{branchcode}, + barcode => $data->{barcode}, + datelastborrowed => $data->{datelastborrowed}, + itemnum => $data->{itemnumber}, + issuedate => $data->{issuedate}, + biblionumber => $data->{biblionumber}, + title => $data->{title}, + subtitle => $data->{subtitle}, + part_number => $data->{part_number}, + part_name => $data->{part_name}, + author => $data->{author}, + homebranchcode => $data->{homebranch}, + holdingbranchcode => $data->{holdingbranch}, + location => $data->{location}, + effective_location => do { + my $item = Koha::Items->find( $data->{itemnumber} ); + $item ? $item->effective_location : ''; + }, itemcallnumber => $data->{itemcallnumber}, replacementprice => $data->{replacementprice}, itemnotes_nonpublic => $data->{itemnotes_nonpublic}, diff --git a/circ/pendingreserves.pl b/circ/pendingreserves.pl index 140b7b0bd11..1457dec5a60 100755 --- a/circ/pendingreserves.pl +++ b/circ/pendingreserves.pl @@ -260,7 +260,7 @@ foreach my $bibnum (@biblionumbers) { # get available item types for each biblio my @res_itemtypes; if ( C4::Context->preference('item-level_itypes') ) { - @res_itemtypes = uniq map { defined $_->itype ? $_->itype : () } @$items; + @res_itemtypes = uniq map { defined $_->effective_itemtype ? $_->effective_itemtype : () } @$items; } else { @res_itemtypes = Koha::Biblioitems->search( { biblionumber => $bibnum, itemtype => { '!=', undef } }, @@ -270,19 +270,20 @@ foreach my $bibnum (@biblionumbers) { } )->get_column('itemtype'); } + $hold_info->{itemtypes} = \@res_itemtypes; my $res_info = $all_holds->{$bibnum}; # get available values for each biblio my $fields = { - collections => 'ccode', - locations => 'location', + collections => 'effective_collection_code', + locations => 'effective_location', callnumbers => 'itemcallnumber', enumchrons => 'enumchron', copynumbers => 'copynumber', barcodes => 'barcode', - holdingbranches => 'holdingbranch' + holdingbranches => 'effective_holdingbranch_id' }; while ( my ( $key, $field ) = each %$fields ) { @@ -316,6 +317,23 @@ foreach my $bibnum (@biblionumbers) { $hold_info->{hold} = $res_info; $hold_info->{item_group} = $res_info->item_group; + if ( C4::Context->preference('UseDisplayModule') ) { + my @displays; + my @display_items = Koha::DisplayItems->search( + { itemnumber => $hold_info->{item}->itemnumber }, + { + order_by => { '-desc' => 'date_added' }, + } + )->as_list; + + foreach my $display_item (@display_items) { + push @displays, $display_item->display; + } + + $hold_info->{display_items} = \@display_items if @display_items; + $hold_info->{displays} = \@displays if @displays; + } + push @holds_info, $hold_info; } diff --git a/circ/returns.pl b/circ/returns.pl index 97b23534900..24206f53a48 100755 --- a/circ/returns.pl +++ b/circ/returns.pl @@ -759,6 +759,8 @@ foreach my $code ( keys %$messages ) { ; } elsif ( $code eq 'InBundle' ) { $template->param( InBundle => $messages->{InBundle} ); + } elsif ( $code eq 'RemovedFromDisplay' ) { + $template->param( RemovedFromDisplay => $messages->{RemovedFromDisplay} ); } elsif ( $code eq 'UpdateLastSeenError' ) { $err{UpdateLastSeenError} = $messages->{UpdateLastSeenError}; } else { diff --git a/circ/view_holdsqueue.pl b/circ/view_holdsqueue.pl index 460c5d6ba90..ef2d6c9e09f 100755 --- a/circ/view_holdsqueue.pl +++ b/circ/view_holdsqueue.pl @@ -27,6 +27,7 @@ use C4::Auth qw( get_template_and_user ); use C4::Output qw( output_html_with_http_headers ); use C4::HoldsQueue qw( GetHoldsQueueItems ); use Koha::BiblioFrameworks; +use Koha::Items; use Koha::ItemTypes; my $query = CGI->new; @@ -59,13 +60,38 @@ if ($run_report) { } ); + my @itemsloop; + foreach my $item ( $items->as_list ) { + my $itemsloo = $item->unblessed; + $itemsloo->{object} = $item; + + if ( C4::Context->preference('UseDisplayModule') ) { + my @displays; + my @display_items = Koha::DisplayItems->search( + { itemnumber => $item->itemnumber }, + { + order_by => { '-desc' => 'date_added' }, + } + )->as_list; + + foreach my $display_item (@display_items) { + push @displays, $display_item->display; + } + + $itemsloo->{display_items} = \@display_items if @display_items; + $itemsloo->{displays} = \@displays if @displays; + } + + push @itemsloop, $itemsloo; + } + $template->param( branchlimit => $branchlimit, itemtypeslimit => $itemtypeslimit, ccodeslimit => $ccodeslimit, locationslimit => $locationslimit, total => $items->count, - itemsloop => $items, + itemsloop => \@itemsloop, run_report => $run_report, ); } diff --git a/display/display-home.pl b/display/display-home.pl new file mode 100755 index 00000000000..798e7f5ec7c --- /dev/null +++ b/display/display-home.pl @@ -0,0 +1,54 @@ +#!/usr/bin/perl + +# Copyright 2025-2026 Open Fifth Ltd +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; + +use CGI qw ( -utf8 ); +use C4::Auth qw( get_template_and_user ); +use C4::Output qw( output_html_with_http_headers ); + +use Koha::Database::Columns; + +my $query = CGI->new; +my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user( + { + template_name => 'display/display-home.tt', + query => $query, + type => 'intranet', + flagsrequired => { displays => '*' }, + } +); + +my $columns = Koha::Database::Columns::columns; +$template->param( + db_columns => { + map { + my $table = $_; + map { ( $table . '.' . $_ => $columns->{$table}->{$_} ) } + keys %{ $columns->{$table} } + } qw( biblio biblioitems items ) + }, + api_mappings => { + items => Koha::Item->to_api_mapping, + biblioitems => Koha::Biblioitem->to_api_mapping, + biblio => Koha::Biblio->to_api_mapping, + }, +); + +output_html_with_http_headers $query, $cookie, $template->output; diff --git a/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss b/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss index fc2cf1f12f2..327e053395a 100644 --- a/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss +++ b/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss @@ -2028,6 +2028,11 @@ i { font-style: italic; } +// style for displays in catalogsearch +.displays { + display: block; +} + #closewindow { margin-top: 2em; text-align: center; diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/action-logs.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/action-logs.inc index 867173a69c7..cb2f44cbe3f 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/action-logs.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/action-logs.inc @@ -24,6 +24,8 @@ Circulation[% UNLESS Koha.Preference('IssueLog') %][% END %] [% CASE 'CLAIMS' %] Claims[% UNLESS Koha.Preference('ClaimsLog') %][% END %] + [% CASE 'DISPLAYS' %] + Displays[% UNLESS Koha.Preference('DisplayItemsLog') %][% END %] [% CASE 'FINES' %] Fines[% UNLESS Koha.Preference('FinesLog') %][% END %] [% CASE 'SYSTEMPREFERENCE' %] @@ -159,6 +161,14 @@ Modify cardnumber [% CASE 'RESET 2FA' %] Reset 2FA + [% CASE 'ENABLE' %] + Enable + [% CASE 'DISABLE' %] + Disable + [% CASE 'ADD_ITEM' %] + Add item + [% CASE 'REMOVE_ITEM' %] + Remove item [% CASE %] [% action | html %] [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc index 68b4c24e45c..18476132ae2 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc @@ -308,11 +308,81 @@ [% END %] [% END %] + [% IF Koha.Preference('UseDisplayModule') && CAN_user_displays %] +
+ + +
+ [% END %] + [% FOREACH p IN plugins %] [% p.intranet_catalog_biblio_enhancements_toolbar_button | $raw %] [% END %] + +[% IF Koha.Preference('UseDisplayModule') && CAN_user_displays %] + +[% END %] + @@ -235,6 +241,12 @@ Is local float group

+

+ +

@@ -331,7 +343,8 @@ var ft_search_groups_staff = $(this).data("groupFt_search_groups_staff"); var ft_local_hold_group = $(this).data("groupFt_local_hold_group"); var ft_local_float_group = $(this).data("groupFt_local_float_group"); - edit_group(id, parent_id, title, description, ft_hide_patron_info, ft_search_groups_opac, ft_search_groups_staff, ft_local_hold_group, ft_limit_item_editing, ft_local_float_group); + var ft_display_group = $(this).data("groupFt_display_group"); + edit_group(id, parent_id, title, description, ft_hide_patron_info, ft_search_groups_opac, ft_search_groups_staff, ft_local_hold_group, ft_limit_item_editing, ft_local_float_group, ft_display_group); }); $(".delete-group").on("click", function (e) { @@ -368,6 +381,7 @@ $("#add-group-modal-ft_search_groups_staff").prop("checked", false); $("#add-group-modal-ft_local_hold_group").prop("checked", false); $("#add-group-modal-ft_local_float_group").prop("checked", false); + $("#add-group-modal-ft_display_group").prop("checked", false); if (parent_id) { $("#root-group-features-add").hide(); } else { @@ -376,7 +390,7 @@ $("#add-group-modal").modal("show"); } - function edit_group(id, parent_id, title, description, ft_hide_patron_info, ft_search_groups_opac, ft_search_groups_staff, ft_local_hold_group, ft_limit_item_editing, ft_local_float_group) { + function edit_group(id, parent_id, title, description, ft_hide_patron_info, ft_search_groups_opac, ft_search_groups_staff, ft_local_hold_group, ft_limit_item_editing, ft_local_float_group, ft_display_group) { $("#edit-group-modal-id").val(id); $("#edit-group-modal-title").val(title); $("#edit-group-modal-description").val(description); @@ -387,6 +401,7 @@ $("#edit-group-modal-ft_search_groups_staff").prop("checked", false); $("#edit-group-modal-ft_local_hold_group").prop("checked", false); $("#edit-group-modal-ft_local_float_group").prop("checked", false); + $("#edit-group-modal-ft_display_group").prop("checked", false); $("#root-group-features-edit").hide(); } else { $("#edit-group-modal-ft_hide_patron_info").prop("checked", ft_hide_patron_info ? true : false); @@ -395,6 +410,7 @@ $("#edit-group-modal-ft_search_groups_staff").prop("checked", ft_search_groups_staff ? true : false); $("#edit-group-modal-ft_local_hold_group").prop("checked", ft_local_hold_group ? true : false); $("#edit-group-modal-ft_local_float_group").prop("checked", ft_local_float_group ? true : false); + $("#edit-group-modal-ft_display_group").prop("checked", ft_display_group ? true : false); $("#root-group-features-edit").show(); } @@ -455,6 +471,9 @@ [% IF group.ft_local_float_group %]
  • Is local float group
  • [% END %] + [% IF group.ft_display_group %] +
  • Is display group
  • + [% END %] [% END %] @@ -486,6 +505,7 @@ data-group-ft_local_hold_group="[% group.ft_local_hold_group | html %]" data-group-ft_limit_item_editing="[% group.ft_limit_item_editing | html %]" data-group-ft_local_float_group="[% group.ft_local_float_group | html %]" + data-group-ft_display_group="[% group.ft_display_group | html %]" > Edit diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref index 29d80b0e20b..10d3e98a840 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref @@ -1375,6 +1375,13 @@ Circulation: 1: Use 0: "Don't use" - "course reserves." + Display module: + - + - pref: UseDisplayModule + choices: + 1: Use + 0: "Don't use" + - "the display module for managing item displays." Batch checkout: - - pref: BatchCheckouts diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/logs.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/logs.pref index 1861a0de4e6..c05dc2f8022 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/logs.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/logs.pref @@ -90,6 +90,12 @@ Logging: 1: Log 0: "Don't log" - information from cron jobs. + - + - pref: DisplayItemsLog + choices: + 1: Log + 0: "Don't log" + - when displays are created, edited, deleted, or when items are added to or removed from displays. - - pref: ReportsLog choices: diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/basket/basket.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/basket/basket.tt index c8a76b2f961..7ec0e402302 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/basket/basket.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/basket/basket.tt @@ -243,7 +243,7 @@ [% FOREACH ITEM_RESULT IN BIBLIO_RESULT.ITEM_RESULTS %]

    [% Branches.GetName(ITEM_RESULT.holdingbranch) | html %] - [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => ITEM_RESULT.location ) | html %] + [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => ITEM_RESULT.effective_location ) | html %] [% IF ( ITEM_RESULT.itemcallnumber ) %] ([% ITEM_RESULT.itemcallnumber | html %]) [% END %] @@ -337,7 +337,7 @@ [% ITEM_RESULT.itemcallnumber | html %] [% Branches.GetName(ITEM_RESULT.holdingbranch) | html %] - [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => ITEM_RESULT.location ) | html %] + [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => ITEM_RESULT.effective_location ) | html %] [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt index 763cda06baf..2fd7eca2b20 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt @@ -1046,6 +1046,27 @@ [% END %] +

    +