From 40f4c024f3d45563d82edebaa5dcdc309f95f1d0 Mon Sep 17 00:00:00 2001 From: Baptiste Date: Wed, 23 Jul 2025 15:39:03 +0200 Subject: [PATCH] Bug 37661: Add a new syspref EnableBooking This patch makes the Booking module dependant of a new YesNo syspref: EnableBooking To do this, I tried and get all changes using the graph of Bug 29002 and got interrested in every tt change to make changes on this depend on the new syspref. File inside the booking module should not be amended. Here are the files I found relevant for each patch Bug 37737: - koha-tmpl/intranet-tmpl/prog/en/includes/patron-detail-tabs.inc - koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt Bug 37736: - koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation-home.tt Bug 29002: - koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc - koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/ISBDdetail.tt - koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/MARCdetail.tt - koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt - koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/imageviewer.tt - koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/labeledMARCdetail.tt - koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt TEST PLAN: 1 - Set "Bookable = 1" on a given item 2 - Make sure you know where are located - The field bookable on exemplaries - The button "Place booking" in item toolbae - The link "Bookings (0)" in item menu 3 - Apply patch and update database 4 - Check that every field listed in 2 - is still present 5 - Set the syspref "EnableBooking" to "Disable" 6 - Check that every field listed in 2 - is still present 7 - Browse Norme, ISBD, Marc, Items tabs + pages imageviewer.pl, labeledMARCdetail.pl and check that nothing is broken Signed-off-by: Martin Renvoize --- .../bug_37661-EnableBooking_syspref.pl | 17 +++++ installer/data/mysql/mandatory/sysprefs.sql | 1 + .../prog/en/includes/biblio-view-menu.inc | 2 +- .../prog/en/includes/cat-toolbar.inc | 3 +- .../prog/en/includes/patron-detail-tabs.inc | 38 +++++----- .../admin/preferences/circulation.pref | 10 ++- .../prog/en/modules/catalogue/ISBDdetail.tt | 10 ++- .../prog/en/modules/catalogue/MARCdetail.tt | 10 ++- .../prog/en/modules/catalogue/detail.tt | 13 +++- .../prog/en/modules/catalogue/imageviewer.tt | 10 ++- .../en/modules/catalogue/labeledMARCdetail.tt | 10 ++- .../prog/en/modules/catalogue/moredetail.tt | 74 ++++++++++--------- .../prog/en/modules/circ/circulation-home.tt | 10 ++- .../prog/en/modules/members/moremember.tt | 10 ++- 14 files changed, 140 insertions(+), 78 deletions(-) create mode 100755 installer/data/mysql/atomicupdate/bug_37661-EnableBooking_syspref.pl diff --git a/installer/data/mysql/atomicupdate/bug_37661-EnableBooking_syspref.pl b/installer/data/mysql/atomicupdate/bug_37661-EnableBooking_syspref.pl new file mode 100755 index 00000000000..1fd8bb1796b --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_37661-EnableBooking_syspref.pl @@ -0,0 +1,17 @@ +use Modern::Perl; +use Koha::Installer::Output qw(say_warning say_success say_info); + +return { + bug_number => "37661", + description => "Add a way to enable/disable bookings", + up => sub { + my ($args) = @_; + my ( $dbh, $out ) = @$args{qw(dbh out)}; + + $dbh->do( + q{INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('EnableBooking','1',NULL,'If enabled, activate every functionalities related with Bookings module','YesNo')} + ); + + say_success( $out, "Added new system preference 'EnableBooking'" ); + }, +}; diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql index 45baff7c915..ea60db69b7c 100644 --- a/installer/data/mysql/mandatory/sysprefs.sql +++ b/installer/data/mysql/mandatory/sysprefs.sql @@ -253,6 +253,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('EmailPurchaseSuggestions','0','0|EmailAddressForSuggestions|BranchEmailAddress|KohaAdminEmailAddress','Choose email address that new purchase suggestions will be sent to: ','Choice'), ('EmailSMSSendDriverFromAddress', '', '', 'Email SMS send driver from address override', 'Free'), ('EnableAdvancedCatalogingEditor','0','','Enable the Rancor advanced cataloging editor','YesNo'), +('EnableBooking','1',NULL,'If enabled, activate every functionnalities related with Bookings module','YesNo'), ('EnableBorrowerFiles','0',NULL,'If enabled, allows librarians to upload and attach arbitrary files to a borrower record.','YesNo'), ('EnableExpiredPasswordReset', '0', NULL, 'Enable ability for patrons with expired password to reset their password directly', 'YesNo'), ('EnableItemGroupHolds','0','','Enable item groups holds feature','YesNo'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/biblio-view-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/biblio-view-menu.inc index 7d304bceaf2..dd32ca07a2d 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/biblio-view-menu.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/biblio-view-menu.inc @@ -43,7 +43,7 @@ [% END %] - [% IF ( CAN_user_circulate_manage_bookings && biblio.items.filter_by_bookable.count ) %] + [% IF ( Koha.Preference('EnableBooking') && CAN_user_circulate_manage_bookings && biblio.items.filter_by_bookable.count ) %]
  • Bookings ([% biblio.bookings.filter_by_active.count | html %])
  • 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 f760ebc8117..454dd266c20 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc @@ -283,8 +283,7 @@ [% END %] [% END %] [% END %] - - [% IF ( CAN_user_circulate_manage_bookings && biblio.items.filter_by_bookable.count ) %] + [% IF ( Koha.Preference('EnableBooking') && CAN_user_circulate_manage_bookings && biblio.items.filter_by_bookable.count ) %]
    diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-detail-tabs.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-detail-tabs.inc index 654a41a3dee..69b41b4dfb5 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-detail-tabs.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-detail-tabs.inc @@ -24,10 +24,12 @@ [% WRAPPER tab_item tabname= "holds" %] Holds ([% holds_count || 0 | html %]) [% END %] - [% WRAPPER tab_item tabname="bookings" %] - [% SET bookings_count = patron.bookings.filter_by_active.count %] - [% SET expired_bookings_count = patron.bookings.count - bookings_count %] - Bookings ([% bookings_count || 0 | html %]) + [% IF Koha.Preference('EnableBooking') %] + [% WRAPPER tab_item tabname="bookings" %] + [% SET bookings_count = patron.bookings.filter_by_active.count %] + [% SET expired_bookings_count = patron.bookings.count - bookings_count %] + Bookings ([% bookings_count || 0 | html %]) + [% END %] [% END %] [% END %] @@ -191,19 +193,21 @@ [% END %] [% END # /tab_panel#holds %] - [% WRAPPER tab_panel tabname="bookings" %] - [% IF ( bookings_count ) %] -
    - Show expired -
    -
    - [% ELSIF ( expired_bookings_count ) %] -
    - Hide expired -
    -
    - [% ELSE %] -

    Patron has nothing booked.

    + [% IF Koha.Preference('EnableBooking') %] + [% WRAPPER tab_panel tabname="bookings" %] + [% IF ( bookings_count ) %] +
    + Show expired +
    +
    + [% ELSIF ( expired_bookings_count ) %] +
    + Hide expired +
    +
    + [% ELSE %] +

    Patron has nothing booked.

    + [% END %] [% END %] [% END %] [% END %] 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 39978263968..82070552d6c 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 @@ -1540,4 +1540,12 @@ Circulation: choices: 1: Enable 0: Disable - - "the curbside pickup module." \ No newline at end of file + - "the curbside pickup module." + + Booking module: + - + - pref: EnableBooking + choices: + 1: Enable + 0: Disable + - "the booking module." diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/ISBDdetail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/ISBDdetail.tt index 8fdd39fb2cc..85c511aa8a3 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/ISBDdetail.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/ISBDdetail.tt @@ -82,10 +82,14 @@ - [% INCLUDE 'calendar.inc' %] - [% INCLUDE 'select2.inc' %] [% Asset.js("js/catalog.js") | $raw %] - [% Asset.js("js/modals/place_booking.js") | $raw %] + + [% IF Koha.Preference('EnableBooking') %] + [% INCLUDE 'calendar.inc' %] + [% INCLUDE 'select2.inc' %] + [% Asset.js("js/modals/place_booking.js") | $raw %] + [% END %] + [% Asset.js("js/browser.js") | $raw %] [% IF ( Koha.Preference('CatalogConcerns') ) %] - [% INCLUDE 'calendar.inc' %] - [% INCLUDE 'select2.inc' %] [% Asset.js("js/catalog.js") | $raw %] - [% Asset.js("js/modals/place_booking.js") | $raw %] + + [% IF Koha.Preference('EnableBooking') %] + [% INCLUDE 'calendar.inc' %] + [% INCLUDE 'select2.inc' %] + [% Asset.js("js/modals/place_booking.js") | $raw %] + [% END %] + [% Asset.js("js/browser.js") | $raw %] [% IF ( Koha.Preference('CatalogConcerns') ) %] - [% INCLUDE 'calendar.inc' %] - [% INCLUDE 'select2.inc' %] [% Asset.js("js/catalog.js") | $raw %] - [% Asset.js("js/modals/place_booking.js") | $raw %] + + [% IF Koha.Preference('EnableBooking') %] + [% INCLUDE 'calendar.inc' %] + [% INCLUDE 'select2.inc' %] + [% Asset.js("js/modals/place_booking.js") | $raw %] + [% END %] + [% IF ( Koha.Preference('CatalogConcerns') ) %] - [% INCLUDE 'calendar.inc' %] - [% INCLUDE 'select2.inc' %] [% Asset.js("js/catalog.js") | $raw %] - [% Asset.js("js/modals/place_booking.js") | $raw %] [% Asset.js("js/browser.js") | $raw %] + + [% IF Koha.Preference('EnableBooking') %] + [% INCLUDE 'calendar.inc' %] + [% INCLUDE 'select2.inc' %] + [% Asset.js("js/modals/place_booking.js") | $raw %] + [% END %] + [% IF ( Koha.Preference('CatalogConcerns') ) %] [% INCLUDE 'js-patron-format.inc' %] - [% INCLUDE 'calendar.inc' %] - [% INCLUDE 'select2.inc' %] [% Asset.js("js/catalog.js") | $raw %] - [% Asset.js("js/modals/place_booking.js") | $raw %] [% Asset.js("js/browser.js") | $raw %] [% Asset.js("js/checkout_renewals_modal.js") | $raw %] + + [% IF Koha.Preference('EnableBooking') %] + [% INCLUDE 'calendar.inc' %] + [% INCLUDE 'select2.inc' %] + [% Asset.js("js/modals/place_booking.js") | $raw %] + [% END %] + [% IF ( Koha.Preference('CatalogConcerns') ) %] [% Asset.js("js/checkouts.js") | $raw %] - [% Asset.js("js/tables/bookings.js") | $raw %] [% END %] [% INCLUDE 'intranet-bottom.inc' %] -- 2.43.0