Bug 31162: Add a cataloging module home page
authorMartin Renvoize <martin.renvoize@ptfs-europe.com>
Fri, 15 Jul 2022 11:37:03 +0000 (12:37 +0100)
committerTomas Cohen Arazi <tomascohen@theke.io>
Tue, 18 Oct 2022 13:20:58 +0000 (10:20 -0300)
This patch adds a new cataloging-home template and controller and
replaces most cases of links to addbooks.  This serves to provide a new
cataloging home page for the cataloging module and keeps it distinct
from the current addbooks page it partially replaces as a starting point
for cataloging.

We migrate most cataloging related tools from the 'Tools' module whilst
opting to move 'Rotating collections' to the 'Circulation' section of
the 'Tools' homepage. We also add links to the cataloging tab of system
preferences and a the adminstration pages if the user has the correct
permissions to have access to these areas.

Signed-off-by: KIT <michaela.sieber@kit.edu>
Signed-off-by: Emmanuel Bétemps <e.betemps@gmail.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
12 files changed:
Koha/Manual.pm
cataloguing/cataloging-home.pl [new file with mode: 0755]
koha-tmpl/intranet-tmpl/prog/en/includes/header.inc
koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt
koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbooks.tt
koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt
koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/cataloging-home.tt [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/editor.tt
koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/linkitem.tt
koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/merge.tt
koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt
koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tt

index 46641f8..1382ebc 100644 (file)
@@ -122,6 +122,7 @@ our $mapping = {
     'catalogue/moredetail'                     => '/cataloging.html#item-records',
     'catalogue/search-history'                 => '/plugins.html#search-history',
     'catalogue/search'                         => '/searching.html',
+    'cataloguing/cataloging-home'              => '/cataloging.html',
     'cataloguing/addbiblio'                    => '/cataloging.html#bibliographic-records',
     'cataloguing/addbooks'                     => '/cataloging.html',
     'cataloguing/additem'                      => '/cataloging.html#item-records',
diff --git a/cataloguing/cataloging-home.pl b/cataloguing/cataloging-home.pl
new file mode 100755 (executable)
index 0000000..7832740
--- /dev/null
@@ -0,0 +1,52 @@
+#!/usr/bin/perl
+
+# 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 <http://www.gnu.org/licenses>.
+#
+
+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 C4::Context;
+
+use Koha::BiblioFrameworks;
+use Koha::Z3950Servers;
+
+my $query = CGI->new;
+my ($template, $loggedinuser, $cookie, $flags) = get_template_and_user(
+    {
+        template_name   => "cataloguing/cataloging-home.tt",
+        query           => $query,
+        type            => "intranet",
+        flagsrequired   => { editcatalogue => '*' },
+    }
+);
+
+my $servers = Koha::Z3950Servers->search(
+    {
+        recordtype => 'biblio',
+        servertype => ['zed','sru'],
+    }
+);
+
+my $frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
+
+$template->param(
+    servers           => $servers,
+    frameworks        => $frameworks
+);
+
+output_html_with_http_headers $query, $cookie, $template->output;
index df45410..c04af1d 100644 (file)
@@ -31,7 +31,7 @@
                 <ul class="dropdown-menu dropdown-menu-right">
                     <li><a href="/cgi-bin/koha/virtualshelves/shelves.pl">Lists</a></li>
                     [% IF ( CAN_user_editcatalogue_edit_catalogue || CAN_user_editcatalogue_edit_items ) %]
-                        <li><a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a></li>
+                        <li><a href="/cgi-bin/koha/cataloguing/cataloging-home.pl">Cataloging</a></li>
                     [% END %]
                     [% IF ( CAN_user_acquisition ) %]
                         <li><a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a></li>
index ddab667..f16f5c8 100644 (file)
@@ -804,7 +804,7 @@ function PopupMARCFieldDoc(field) {
                 <a href="/cgi-bin/koha/mainpage.pl">Home</a>
             </li>
             <li>
-                <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>
+                <a href="/cgi-bin/koha/cataloguing/cataloging-home.pl">Cataloging</a>
             </li>
             <li>
                 <a href="#" aria-current="page">
@@ -953,7 +953,7 @@ function PopupMARCFieldDoc(field) {
                             </div>
                         [% ELSE %]
                             <div class="btn-group">
-                                <a class="btn btn-link" id="cancel" href="/cgi-bin/koha/cataloguing/addbooks.pl">Cancel</a>
+                                <a class="btn btn-link" id="cancel" href="/cgi-bin/koha/cataloguing/cataloging-home.pl">Cancel</a>
                             </div>
                         [% END %]
                         <div id="show-errors" class="btn-group"></div>
index c0aaf44..16f06c2 100644 (file)
@@ -21,7 +21,7 @@
         </li>
         [% IF ( total || breeding_loop ) %]
             <li>
-                <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>
+                <a href="/cgi-bin/koha/cataloguing/cataloging-home.pl">Cataloging</a>
             </li>
             <li>
                 <a href="#" aria-current="page">Search results</a>
index 2d2fff6..b80404a 100644 (file)
@@ -41,7 +41,7 @@
           <a href="/cgi-bin/koha/mainpage.pl">Home</a>
         </li>
         <li>
-            <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>
+            <a href="/cgi-bin/koha/cataloguing/cataloging-home.pl">Cataloging</a>
         </li>
         <li>
             <a href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% biblio.biblionumber | uri %]">Edit <em>[% biblio.title | html %] [% IF ( biblio.author ) %] by [% biblio.author | html %][% END %] (Record #[% biblio.biblionumber | html %])</em></a>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/cataloging-home.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/cataloging-home.tt
new file mode 100644 (file)
index 0000000..a6abbfe
--- /dev/null
@@ -0,0 +1,245 @@
+[% USE raw %]
+[% USE Koha %]
+[% USE Branches %]
+[% SET footerjs = 1 %]
+[% INCLUDE 'doc-head-open.inc' %]
+<title>Cataloging &rsaquo; Koha</title>
+[% INCLUDE 'doc-head-close.inc' %]
+</head>
+
+<body id="cat_cataloging-home" class="cat">
+    [% INCLUDE 'header.inc' %]
+    [% INCLUDE 'cataloging-search.inc' %]
+
+    <nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb">
+        <ol>
+            <li>
+                <a href="/cgi-bin/koha/mainpage.pl">Home</a>
+            </li>
+            <li>
+                <a href="#" aria-current="page">Cataloging</a>
+            </li>
+        </ol>
+    </nav>
+
+    <div class="main container-fluid">
+        <div class="row">
+            <div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
+                [% IF ( CAN_user_editcatalogue_edit_catalogue ) %]
+                <div id="toolbar" class="btn-toolbar">
+                    [% IF Koha.Preference( 'EnableAdvancedCatalogingEditor' ) == 1 && CAN_user_editcatalogue_advanced_editor %]
+                        <a id="useadvanced" href="/cgi-bin/koha/cataloguing/editor.pl" class="btn btn-default"><i class="fa fa-pencil"></i> Advanced editor</a>
+                    [% END %]
+                    <div class="btn-group">
+                        <button class="btn btn-default" id="newRecord"><i class="fa fa-plus"></i> New record</button>
+                        <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
+                        <ul class="dropdown-menu">
+                            <li><a id="newRecordDefault" href="/cgi-bin/koha/cataloguing/addbiblio.pl?frameworkcode=">Default framework</a></li>
+                            [% FOREACH framework IN frameworks %]
+                            <li><a href="/cgi-bin/koha/cataloguing/addbiblio.pl?frameworkcode=[% framework.frameworkcode | uri %]">[% framework.frameworktext | html %]</a></li>
+                            [% END %]
+                        </ul>
+                    </div>
+                    [% IF servers.count > 0 %]
+                    <div class="btn-group">
+                        <button class="btn btn-default" id="z3950search"><i class="fa fa-search"></i> New from Z39.50/SRU</button>
+                        <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
+                        <ul class="dropdown-menu">
+                            <li id="Default" class="z3950searchFw"><a href="#">Default framework</a></li>
+                            [% FOREACH framework IN frameworks %]
+                            <li id="[% framework.frameworkcode | html %]" class="z3950searchFw"><a href="#">[% framework.frameworktext | html %]</a></li>
+                            [% END %]
+                        </ul>
+                    </div>
+                    [% END # /IF servers.count %]
+                </div> <!-- /#toolbar -->
+                [% END # /IF CAN_user_editcatalogue_edit_catalogue %]
+
+                <h1>Cataloging</h1>
+
+                <div class="row">
+
+                    <div class="col-sm-4 col-md-4">
+                        [% IF ( CAN_user_tools_stage_marc_import || CAN_user_tools_manage_staged_marc ) %]
+                        <h3>Import</h3>
+                        <ul class="buttons-list">
+                            [% IF ( CAN_user_tools_stage_marc_import ) %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/tools/stage-marc-import.pl"><i class="fa fa-download"></i> Stage records for import</a>
+                            </li>
+                            [% END %]
+
+                            [% IF ( CAN_user_tools_manage_staged_marc ) %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/tools/manage-marc-import.pl"><i class="fa fa-tasks"></i> Manage staged records</a>
+                            </li>
+                            [% END %]
+                        </ul>
+                        [% END %]
+
+                        [% IF ( CAN_user_tools_export_catalog ) %]
+                        <h3>Export</h3>
+                        <ul class="buttons-list">
+                            [% IF ( CAN_user_tools_export_catalog ) %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/tools/export.pl"><i class="fa fa-upload"></i> Export catalog data</a>
+                            </li>
+                            [% END %]
+                        </ul>
+                        [% END %]
+
+                        [% IF ( CAN_user_tools_inventory ) %]
+                        <h3>Reports</h3>
+                        <ul class="buttons-list">
+                            [% IF ( CAN_user_tools_inventory ) %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/tools/inventory.pl"><i class="fa fa-line-chart"></i> Inventory</a>
+                            </li>
+                            [% END %]
+                        </ul>
+                        [% END %]
+
+                    </div>
+
+                    <div class="col-sm-4 col-md-4">
+
+                        [% IF ( CAN_user_tools_items_batchmod || CAN_user_tools_items_batchdel || CAN_user_tools_records_batchmod || CAN_user_tools_records_batchdel || CAN_user_tools_marc_modification_templates ) %]
+                        <h3>Batch editing</h3>
+                        <ul class="buttons-list">
+                            [% IF ( CAN_user_tools_items_batchmod ) %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/tools/batchMod.pl"><i class="fa fa-pencil"></i> Batch item modification</a>
+                            </li>
+                            [% END %]
+                            [% IF ( CAN_user_tools_items_batchdel ) %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/tools/batchMod.pl?del=1"><i class="fa fa-trash"></i> Batch item deletion</a>
+                            </li>
+                            [% END %]
+                            [% IF CAN_user_tools_records_batchmod %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/tools/batch_record_modification.pl"><i class="fa fa-pencil"></i> Batch record modification</a>
+                            </li>
+                            [% END %]
+                            [% IF CAN_user_tools_records_batchdel %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/tools/batch_delete_records.pl"><i class="fa fa-trash"></i> Batch record deletion</a>
+                            </li>
+                            [% END %]
+
+                            [% IF ( CAN_user_tools_marc_modification_templates ) %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/tools/marc_modification_templates.pl"><i class="fa fa-gear"></i> MARC modification templates</a>
+                            </li>
+                            [% END %]
+                        </ul>
+                        [% END %]
+
+                        [% IF ( CAN_user_tools_items_batchmod || ( CAN_user_stockrotation_manage_rotas && Koha.Preference('StockRotation') ) ) %]
+                        <h3>Automation</h3>
+                        <ul class="buttons-list">
+                            [% IF ( CAN_user_tools_items_batchmod ) %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/tools/automatic_item_modification_by_age.pl"><i class="fa fa-calendar"></i> Item modifications by age</a>
+                            </li>
+                            [% END %]
+                            [% IF ( CAN_user_stockrotation_manage_rotas && Koha.Preference('StockRotation') ) %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/tools/stockrotation.pl"><i class="fa fa-refresh"></i> Stock rotation</a>
+                            </li>
+                            [% END %]
+                        </ul>
+                        [% END %]
+
+                    </div>
+
+                    <div class="col-sm-4 col-md-4">
+
+                        [% IF ( CAN_user_tools_label_creator || CAN_user_tools_upload_local_cover_images ) %]
+                        <h3>Tools</h3>
+                        <ul class="buttons-list">
+                            [% IF ( CAN_user_tools_label_creator ) %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/labels/label-home.pl"><i class="fa fa-hashtag"></i> Label creator</a>
+                            </li>
+
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/labels/barcode-print.pl"><i class="fa fa-barcode"></i> Barcode image generator</a>
+                            </li>
+
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/labels/spinelabel-home.pl"><i class="fa fa-hashtag"></i> Quick spine label creator</a>
+                            </li>
+                            [% END %]
+
+                            [% IF ( CAN_user_tools_upload_local_cover_images ) %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/tools/upload-cover-image.pl"><i class="fa fa-upload"></i> Upload local cover image</a>
+                            </li>
+                            [% END %]
+
+                        </ul>
+                        [% END %]
+
+                        [% IF ( CAN_user_parameters ) %]
+                        <h3>Administration</h3>
+                        <ul class="buttons-list">
+                            [% IF ( CAN_user_parameters_manage_sysprefs ) %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/admin/preferences.pl?tab=cataloguing"><i class="fa fa-tasks"></i> Preferences</a>
+                            </li>
+                            [% END %]
+                            <li>
+                                <a class="circ-button" href="/cgi-bin/koha/admin/admin-home.pl"><i class="fa fa-cogs"></i> Configuration</a>
+                            </li>
+                        </ul>
+                        [% END %]
+
+                    </div>
+                </div>
+            </div>
+        </div>
+
+[% MACRO jsinclude BLOCK %]
+<script>
+    $(document).ready(function() {
+
+        $("#newRecord").click(function(){
+            var url = $("a#newRecordDefault").prop("href");
+            window.location.href = url;
+            return false;
+        });
+
+        $("#z3950search").click(function(){
+            PopupZ3950("Default");
+            return false;
+        });
+
+        $(".z3950searchFw").click(function(){
+            PopupZ3950($(this).prop('id'));
+            return false;
+        });
+
+        $("#useadvanced").click(function(){
+            Cookies.set( "catalogue_editor_[% logged_in_user.borrowernumber | html %]", "advanced", { expires: 365, path: '/', sameSite: 'Lax' } );
+            return true;
+        });
+    });
+
+    /* this function open a popup to search on z3950 server.  */
+    function PopupZ3950(fw) {
+        var strQuery = GetZ3950Terms(fw);
+        if(strQuery){
+            window.open("/cgi-bin/koha/cataloguing/z3950_search.pl?biblionumber=[% biblionumber | html %]"+strQuery,"z3950search",'width=800,height=500,location=yes,toolbar=no,scrollbars=yes,resize=yes');
+        }
+    }
+
+    /* provide Z3950 search points */
+    function GetZ3950Terms(fw){
+        var strQuery="&frameworkcode=" + fw;
+        return strQuery;
+    }
+</script>
+
+[% END %]
+[% INCLUDE 'intranet-bottom.inc' %]
index d545a21..0af94eb 100644 (file)
@@ -27,7 +27,7 @@
             <a href="/cgi-bin/koha/mainpage.pl">Home</a>
         </li>
         <li>
-            <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>
+            <a href="/cgi-bin/koha/cataloguing/cataloging-home.pl">Cataloging</a>
         </li>
         <li>
             <a href="#" aria-current="page">
index 4776dd9..42f9090 100644 (file)
@@ -15,7 +15,7 @@
             <a href="/cgi-bin/koha/mainpage.pl">Home</a>
         </li>
         <li>
-            <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>
+            <a href="/cgi-bin/koha/cataloguing/cataloging-home.pl">Cataloging</a>
         </li>
         <li>
             <a href="#" aria-current="page">
index a838c4b..09745c7 100644 (file)
@@ -26,7 +26,7 @@ div#result { margin-top: 1em; }
             <a href="/cgi-bin/koha/mainpage.pl">Home</a>
         </li>
         <li>
-            <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>
+            <a href="/cgi-bin/koha/cataloguing/cataloging-home.pl">Cataloging</a>
         </li>
         <li>
             <a href="#" aria-current="page">
index 9bca352..1c65787 100644 (file)
 
                             [% IF ( CAN_user_editcatalogue_edit_catalogue || CAN_user_editcatalogue_edit_items ) %]
                             <li>
-                                <a class="icon_general icon_cataloging" href="/cgi-bin/koha/cataloguing/addbooks.pl"><i class="fa fa-fw fa-tag"></i>Cataloging</a>
+                                <a class="icon_general icon_cataloging" href="/cgi-bin/koha/cataloguing/cataloging-home.pl"><i class="fa fa-fw fa-tag"></i>Cataloging</a>
                             </li>
                             [% END %]
 
index 385a08b..73508b2 100644 (file)
 </nav>
 [% END %]
 
-<div class="container-fluid">
-    <h1>Tools</h1>
+<div class="main container-fluid">
     <div class="row">
-        <div class="col-sm-4">
-            [% IF ( CAN_user_tools_manage_patron_lists || CAN_user_clubs || CAN_user_tools_moderate_comments || CAN_user_tools_import_patrons  || CAN_user_tools_edit_notices || CAN_user_tools_edit_notice_status_triggers || CAN_user_tools_label_creator || CAN_user_tools_delete_anonymize_patrons  || CAN_user_tools_edit_patrons || CAN_user_tools_batch_extend_due_dates || CAN_user_tools_moderate_tags || ( CAN_user_tools_batch_upload_patron_images && Koha.Preference('patronimages') ) ) %]
-                <h3>Patrons and circulation</h3>
-            [% END %]
-            <dl>
-                [% IF (CAN_user_tools_manage_patron_lists) %]
-                    <dt><a href="/cgi-bin/koha/patron_lists/lists.pl">Patron lists</a></dt>
-                    <dd>Manage lists of patrons</dd>
-                [% END %]
-
-                [% IF (CAN_user_clubs) %]
-                    <dt><a href="/cgi-bin/koha/clubs/clubs.pl">Patron clubs</a></dt>
-                    <dd>Manage patron clubs</dd>
-                [% END %]
-
-                [% IF ( CAN_user_tools_moderate_comments ) %]
-                    <dt>
-                        <a href="/cgi-bin/koha/reviews/reviewswaiting.pl">Comments</a>
-                        [% IF ( pendingcomments ) %]
-                            <span class="number_box"><a href="/cgi-bin/koha/reviews/reviewswaiting.pl">[% pendingcomments | html %]</a></span>
+        <div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
+            <h1>Tools</h1>
+            <div class="row">
+                <div class="col-sm-6">
+                    [% IF ( CAN_user_tools_manage_patron_lists || CAN_user_clubs || CAN_user_tools_moderate_comments || CAN_user_tools_import_patrons  || CAN_user_tools_edit_notices || CAN_user_tools_edit_notice_status_triggers || CAN_user_tools_label_creator || CAN_user_tools_delete_anonymize_patrons  || CAN_user_tools_edit_patrons || CAN_user_tools_batch_extend_due_dates || CAN_user_tools_moderate_tags || CAN_user_tools_rotating_collections || ( CAN_user_tools_batch_upload_patron_images && Koha.Preference('patronimages') ) ) %]
+                        <h3>Patrons and circulation</h3>
+                    [% END %]
+                    <dl>
+                        [% IF (CAN_user_tools_manage_patron_lists) %]
+                            <dt><a href="/cgi-bin/koha/patron_lists/lists.pl">Patron lists</a></dt>
+                            <dd>Manage lists of patrons</dd>
                         [% END %]
-                    </dt>
-                    <dd>Moderate patron comments</dd>
-                [% END %]
-
-                [% IF ( CAN_user_tools_import_patrons ) %]
-                    <dt><a href="/cgi-bin/koha/tools/import_borrowers.pl">Import patrons</a></dt>
-                    <dd>Import patron data</dd>
-                [% END %]
-
-                [% IF ( CAN_user_tools_edit_notices ) %]
-                    <dt><a href="/cgi-bin/koha/tools/letter.pl">Notices and slips</a></dt>
-                    <dd>Define notices (print and email notification messages for overdues, etc.)</dd>
-                [% END %]
-
-                [% IF ( CAN_user_tools_edit_notice_status_triggers ) %]
-                    <dt><a href="/cgi-bin/koha/tools/overduerules.pl">Overdue notice/status triggers</a></dt>
-                    <dd>Set notice/status triggers for overdue items</dd>
-                [% END %]
 
-                [% IF ( CAN_user_tools_label_creator ) %]
-                    <dt><a href="/cgi-bin/koha/patroncards/home.pl">Patron card creator</a></dt>
-                    <dd>Create printable patron cards</dd>
-                [% END %]
-
-                [% IF ( CAN_user_tools_delete_anonymize_patrons ) %]
-                    <dt><a href="/cgi-bin/koha/tools/cleanborrowers.pl">Batch patron deletion and anonymization</a></dt>
-                    <dd>Batch delete patrons and delete patron circulation history</dd>
-                [% END %]
-
-                [% IF ( CAN_user_tools_edit_patrons ) %]
-                    <dt><a href="/cgi-bin/koha/tools/modborrowers.pl">Batch patron modification</a></dt>
-                    <dd>Modify patrons in batch</dd>
-                [% END %]
-
-                [% IF ( CAN_user_tools_batch_extend_due_dates ) %]
-                    <dt><a href="/cgi-bin/koha/tools/batch_extend_due_dates.pl">Batch extend due dates</a></dt>
-                    <dd>Modify the due date checkouts in batch</dd>
-                [% END %]
-
-                [% IF ( CAN_user_tools_moderate_tags ) %]
-                    <dt>
-                        <a href="/cgi-bin/koha/tags/review.pl">Tags</a>
-                        [% IF ( pendingtags ) %]
-                            <span class="number_box"><a href="/cgi-bin/koha/tags/review.pl">[% pendingtags | html %]</a></span>
+                        [% IF (CAN_user_clubs) %]
+                            <dt><a href="/cgi-bin/koha/clubs/clubs.pl">Patron clubs</a></dt>
+                            <dd>Manage patron clubs</dd>
                         [% END %]
-                    </dt>
-                    <dd>Moderate patron tags</dd>
-                [% END %]
-
-                [% IF ( CAN_user_tools_batch_upload_patron_images && Koha.Preference('patronimages') ) %]
-                    <dt><a href="/cgi-bin/koha/tools/picture-upload.pl">Upload patron images</a></dt>
-                    <dd>Upload patron images in a batch or one at a time</dd>
-                [% END %]
-            </dl>
-        </div> <!-- /.col-sm-4 -->
 
-        <div class="col-sm-4 col-sm-push-4">
-            [% IF ( CAN_user_tools_edit_calendar || CAN_user_tools_manage_csv_profiles || CAN_user_tools_view_system_logs || CAN_user_tools_edit_additional_contents  || CAN_user_tools_schedule_tasks || CAN_user_tools_edit_quotes || ( plugins_enabled && CAN_user_plugins_tool )  || CAN_user_tools_upload_general_files || CAN_user_tools_access_files ) %]
-                <h3>Additional tools</h3>
-            [% END %]
-            <dl>
-                [% IF ( CAN_user_tools_edit_calendar ) %]
-                    <dt><a href="/cgi-bin/koha/tools/holidays.pl">Calendar</a></dt>
-                    <dd>Define days when the library is closed</dd>
-                [% END %]
-
-                [% IF ( CAN_user_tools_manage_csv_profiles ) %]
-                    <dt><a href="/cgi-bin/koha/tools/csv-profiles.pl">CSV profiles</a></dt>
-                    <dd>Manage CSV export profiles</dd>
-                [% END %]
-
-                [% IF ( CAN_user_tools_view_system_logs ) %]
-                    <dt><a href="/cgi-bin/koha/tools/viewlog.pl">Log viewer</a></dt>
-                    <dd>Browse the system logs</dd>
-                [% END %]
-
-                [% IF ( CAN_user_tools_edit_additional_contents ) %]
-                    <dt><a href="/cgi-bin/koha/tools/additional-contents.pl?category=news">News</a></dt>
-                    <dd>Write news for the OPAC and staff interfaces</dd>
-
-                    <dt><a href="/cgi-bin/koha/tools/additional-contents.pl?category=html_customizations">HTML customizations</a></dt>
-                    <dd>Write HTML customizations</dd>
-
-                    <dt><a href="/cgi-bin/koha/tools/additional-contents.pl?category=pages">Pages</a></dt>
-                    <dd>Write custom pages</dd>
-                [% END %]
-
-                [% IF ( CAN_user_tools_schedule_tasks ) %]
-                    <dt><a href="/cgi-bin/koha/tools/scheduler.pl">Task scheduler</a></dt>
-                    <dd>Schedule tasks to run</dd>
-                [% END %]
-
-                [% IF ( CAN_user_tools_edit_quotes ) %]
-                    <dt><a href="/cgi-bin/koha/tools/quotes.pl">Quote editor</a></dt>
-                    <dd>Manage 'Quote of the day' quotes</dd>
-                [% END %]
-
-                [% IF ( plugins_enabled && CAN_user_plugins_tool && tool_plugins ) %]
-                    <dt><a href="/cgi-bin/koha/plugins/plugins-home.pl?method=tool">Tool plugins</a></dt>
-                    <dd>
-                        Use tool plugins
-                        <ul>
-                            [% FOREACH plugin IN tool_plugins %]
-                                <li class="plugin_link">
-                                    <a href="/cgi-bin/koha/plugins/run.pl?class=[% plugin.class | uri %]&method=tool">
-                                        <span class="plugin_name">[% plugin.metadata.name | html %]</span>
-                                    </a>
-                                </li>
-                            [% END %]
-                        </ul>
-                    </dd>
-                [% END # /IF ( plugins_enabled... %]
-
-                [% IF ( CAN_user_tools_upload_general_files ) %]
-                    <dt><a href="/cgi-bin/koha/tools/upload.pl">Uploads</a></dt>
-                    <dd>Upload any type of file, manage uploads</dd>
-                [% END %]
+                        [% IF ( CAN_user_tools_moderate_comments ) %]
+                            <dt>
+                                <a href="/cgi-bin/koha/reviews/reviewswaiting.pl">Comments</a>
+                                [% IF ( pendingcomments ) %]
+                                    <span class="number_box"><a href="/cgi-bin/koha/reviews/reviewswaiting.pl">[% pendingcomments | html %]</a></span>
+                                [% END %]
+                            </dt>
+                            <dd>Moderate patron comments</dd>
+                        [% END %]
 
-                [% IF CAN_user_tools_access_files %]
-                    <dt><a href="/cgi-bin/koha/tools/access_files.pl">Access files</a></dt>
-                    <dd>Access files stored on the server, like log files or reports</dd>
-                [% END %]
+                        [% IF ( CAN_user_tools_import_patrons ) %]
+                            <dt><a href="/cgi-bin/koha/tools/import_borrowers.pl">Import patrons</a></dt>
+                            <dd>Import patron data</dd>
+                        [% END %]
 
-                [% IF ( Koha.Preference('OPACReportProblem') && CAN_user_problem_reports ) %]
-                    <dt><a href="/cgi-bin/koha/tools/problem-reports.pl">OPAC problem reports</a></dt>
-                    <dd>Manage OPAC problem reports submitted by patrons</dd>
-                [% END %]
+                        [% IF ( CAN_user_tools_edit_notices ) %]
+                            <dt><a href="/cgi-bin/koha/tools/letter.pl">Notices and slips</a></dt>
+                            <dd>Define notices (print and email notification messages for overdues, etc.)</dd>
+                        [% END %]
 
-            </dl>
+                        [% IF ( CAN_user_tools_edit_notice_status_triggers ) %]
+                            <dt><a href="/cgi-bin/koha/tools/overduerules.pl">Overdue notice/status triggers</a></dt>
+                            <dd>Set notice/status triggers for overdue items</dd>
+                        [% END %]
 
-            [% IF ( Koha.Preference('UseCashRegisters') && ( CAN_user_cash_management_cashup || CAN_user_cash_management_anonymous_refund ) ) %]
-                <h3>Cash management</h3>
-                <dl>
-                    <dt><a href="/cgi-bin/koha/pos/registers.pl">Cash summary for [% Branches.GetLoggedInBranchname | html %]</a></dt>
-                    <dd>View cash takings for the current library</dd>
+                        [% IF ( CAN_user_tools_label_creator ) %]
+                            <dt><a href="/cgi-bin/koha/patroncards/home.pl">Patron card creator</a></dt>
+                            <dd>Create printable patron cards</dd>
+                        [% END %]
 
-                    <dt><a href="/cgi-bin/koha/pos/register.pl">Transaction history for [% Registers.session_register_name | html %]</a></dt>
-                    <dd>View transaction history for the current cash register</dd>
-                </dl>
-            [% END %]
-        </div> <!-- /.col-sm-4... -->
+                        [% IF ( CAN_user_tools_delete_anonymize_patrons ) %]
+                            <dt><a href="/cgi-bin/koha/tools/cleanborrowers.pl">Batch patron deletion and anonymization</a></dt>
+                            <dd>Batch delete patrons and delete patron circulation history</dd>
+                        [% END %]
 
-        <div class="col-sm-4 col-sm-pull-4">
-            [% IF ( CAN_user_tools_items_batchdel || CAN_user_tools_items_batchmod || CAN_user_tools_records_batchdel  || CAN_user_tools_records_batchmod || CAN_user_tools_export_catalog || CAN_user_tools_inventory  || CAN_user_tools_label_creator || CAN_user_tools_rotating_collections  || ( CAN_user_stockrotation_manage_rotas && Koha.Preference('StockRotation') )  || CAN_user_tools_marc_modification_templates || CAN_user_tools_stage_marc_import  || CAN_user_tools_manage_staged_marc || CAN_user_tools_upload_local_cover_images ) %]
-                <h3>Catalog</h3>
-            [% END %]
-            <dl>
-                [% IF ( CAN_user_tools_items_batchdel ) %]
-                    <dt><a href="/cgi-bin/koha/tools/batchMod.pl?del=1">Batch item deletion</a></dt>
-                    <dd>Delete a batch of items</dd>
-                [% END %]
+                        [% IF ( CAN_user_tools_edit_patrons ) %]
+                            <dt><a href="/cgi-bin/koha/tools/modborrowers.pl">Batch patron modification</a></dt>
+                            <dd>Modify patrons in batch</dd>
+                        [% END %]
 
-                [% IF ( CAN_user_tools_items_batchmod ) %]
-                    <dt><a href="/cgi-bin/koha/tools/batchMod.pl">Batch item modification</a></dt>
-                    <dd>Modify items in a batch</dd>
-                [% END %]
+                        [% IF ( CAN_user_tools_batch_extend_due_dates ) %]
+                            <dt><a href="/cgi-bin/koha/tools/batch_extend_due_dates.pl">Batch extend due dates</a></dt>
+                            <dd>Modify the due date checkouts in batch</dd>
+                        [% END %]
 
-                [% IF CAN_user_tools_records_batchdel %]
-                    <dt><a href="/cgi-bin/koha/tools/batch_delete_records.pl">Batch record deletion</a></dt>
-                    <dd>Delete a batch of bibliographic or authority records</dd>
-                [% END %]
+                        [% IF ( CAN_user_tools_moderate_tags ) %]
+                            <dt>
+                                <a href="/cgi-bin/koha/tags/review.pl">Tags</a>
+                                [% IF ( pendingtags ) %]
+                                    <span class="number_box"><a href="/cgi-bin/koha/tags/review.pl">[% pendingtags | html %]</a></span>
+                                [% END %]
+                            </dt>
+                            <dd>Moderate patron tags</dd>
+                        [% END %]
 
-                [% IF CAN_user_tools_records_batchmod %]
-                    <dt><a href="/cgi-bin/koha/tools/batch_record_modification.pl">Batch record modification</a></dt>
-                    <dd>Modify a batch of bibliographic or authority records</dd>
-                [% END %]
+                        [% IF ( CAN_user_tools_batch_upload_patron_images && Koha.Preference('patronimages') ) %]
+                            <dt><a href="/cgi-bin/koha/tools/picture-upload.pl">Upload patron images</a></dt>
+                            <dd>Upload patron images in a batch or one at a time</dd>
+                        [% END %]
 
-                [% IF ( CAN_user_tools_items_batchmod ) %]
-                    <dt><a href="/cgi-bin/koha/tools/automatic_item_modification_by_age.pl">Automatic item modifications by age</a></dt>
-                    <dd>Define rules to modify items by age</dd>
-                [% END %]
+                        [% IF ( CAN_user_tools_rotating_collections ) %]
+                            <dt><a href="/cgi-bin/koha/rotating_collections/rotatingCollections.pl">Rotating collections</a></dt>
+                            <dd>Manage rotating collections</dd>
+                        [% END %]
+                    </dl>
+                </div> <!-- /.col-sm-6 -->
+
+                <div class="col-sm-6">
+                    [% IF ( CAN_user_tools_edit_calendar || CAN_user_tools_manage_csv_profiles || CAN_user_tools_view_system_logs || CAN_user_tools_edit_additional_contents  || CAN_user_tools_schedule_tasks || CAN_user_tools_edit_quotes || ( plugins_enabled && CAN_user_plugins_tool )  || CAN_user_tools_upload_general_files || CAN_user_tools_access_files ) %]
+                        <h3>Additional tools</h3>
+                    [% END %]
+                    <dl>
+                        [% IF ( CAN_user_tools_edit_calendar ) %]
+                            <dt><a href="/cgi-bin/koha/tools/holidays.pl">Calendar</a></dt>
+                            <dd>Define days when the library is closed</dd>
+                        [% END %]
 
-                [% IF ( CAN_user_tools_export_catalog ) %]
-                    <dt><a href="/cgi-bin/koha/tools/export.pl">Export data</a></dt>
-                    <dd>Export bibliographic, holdings, and authority records</dd>
-                [% END %]
+                        [% IF ( CAN_user_tools_manage_csv_profiles ) %]
+                            <dt><a href="/cgi-bin/koha/tools/csv-profiles.pl">CSV profiles</a></dt>
+                            <dd>Manage CSV export profiles</dd>
+                        [% END %]
 
-                [% IF ( CAN_user_tools_inventory ) %]
-                    <dt><a href="/cgi-bin/koha/tools/inventory.pl">Inventory</a></dt>
-                    <dd>Perform inventory of your catalog</dd>
-                [% END %]
+                        [% IF ( CAN_user_tools_view_system_logs ) %]
+                            <dt><a href="/cgi-bin/koha/tools/viewlog.pl">Log viewer</a></dt>
+                            <dd>Browse the system logs</dd>
+                        [% END %]
 
-                [% IF ( CAN_user_tools_label_creator ) %]
-                    <dt><a href="/cgi-bin/koha/labels/label-home.pl">Label creator</a></dt>
-                    <dd>Create printable labels and barcodes from catalog data</dd>
-                [% END %]
+                        [% IF ( CAN_user_tools_edit_additional_contents ) %]
+                            <dt><a href="/cgi-bin/koha/tools/additional-contents.pl?category=news">News</a></dt>
+                            <dd>Write news for the OPAC and staff interfaces</dd>
 
-                [% IF ( CAN_user_tools_label_creator ) %]
-                    <dt><a href="/cgi-bin/koha/labels/barcode-print.pl">Barcode image generator</a></dt>
-                    <dd>Configure and create barcodes of various types to be output as an image</dd>
-                [% END %]
+                            <dt><a href="/cgi-bin/koha/tools/additional-contents.pl?category=html_customizations">HTML customizations</a></dt>
+                            <dd>Write HTML customizations</dd>
 
-                [% IF ( CAN_user_tools_label_creator ) %]
-                    <dt><a href="/cgi-bin/koha/labels/spinelabel-home.pl">Quick spine label creator</a></dt>
-                    <dd>Enter a barcode to generate a printable spine label. For use with dedicated label printers</dd>
-                [% END %]
+                            <dt><a href="/cgi-bin/koha/tools/additional-contents.pl?category=pages">Pages</a></dt>
+                            <dd>Write custom pages</dd>
+                        [% END %]
 
-                [% IF ( CAN_user_tools_rotating_collections ) %]
-                    <dt><a href="/cgi-bin/koha/rotating_collections/rotatingCollections.pl">Rotating collections</a></dt>
-                    <dd>Manage rotating collections</dd>
-                [% END %]
+                        [% IF ( CAN_user_tools_schedule_tasks ) %]
+                            <dt><a href="/cgi-bin/koha/tools/scheduler.pl">Task scheduler</a></dt>
+                            <dd>Schedule tasks to run</dd>
+                        [% END %]
 
-                [% IF ( CAN_user_stockrotation_manage_rotas && Koha.Preference('StockRotation') ) %]
-                    <dt><a href="/cgi-bin/koha/tools/stockrotation.pl">Stock rotation</a></dt>
-                    <dd>Manage Stock rotation rotas, rota stages and rota items</dd>
-                [% END %]
+                        [% IF ( CAN_user_tools_edit_quotes ) %]
+                            <dt><a href="/cgi-bin/koha/tools/quotes.pl">Quote editor</a></dt>
+                            <dd>Manage 'Quote of the day' quotes</dd>
+                        [% END %]
 
-                [% IF ( CAN_user_tools_marc_modification_templates ) %]
-                    <dt><a href="/cgi-bin/koha/tools/marc_modification_templates.pl">MARC modification templates</a></dt>
-                    <dd>Manage templates for modifying MARC records during import</dd>
-                [% END %]
+                        [% IF ( plugins_enabled && CAN_user_plugins_tool && tool_plugins ) %]
+                            <dt><a href="/cgi-bin/koha/plugins/plugins-home.pl?method=tool">Tool plugins</a></dt>
+                            <dd>
+                                Use tool plugins
+                                <ul>
+                                [% FOREACH plugin IN tool_plugins %]
+                                    <li class="plugin_link">
+                                        <a href="/cgi-bin/koha/plugins/run.pl?class=[% plugin.class | uri %]&method=tool">
+                                            <span class="plugin_name">[% plugin.metadata.name | html %]</span>
+                                        </a>
+                                    </li>
+                                [% END %]
+                                </ul>
+                            </dd>
+                        [% END %]
 
-                [% IF ( CAN_user_tools_stage_marc_import ) %]
-                    <dt><a href="/cgi-bin/koha/tools/stage-marc-import.pl">Stage MARC records for import</a></dt>
-                    <dd>Stage MARC records into the reservoir</dd>
-                [% END %]
+                        [% IF ( CAN_user_tools_upload_general_files ) %]
+                            <dt><a href="/cgi-bin/koha/tools/upload.pl">Uploads</a></dt>
+                            <dd>Upload any type of file, manage uploads</dd>
+                        [% END %]
 
-                [% IF ( CAN_user_tools_manage_staged_marc ) %]
-                    <dt><a href="/cgi-bin/koha/tools/manage-marc-import.pl">Staged MARC record management</a></dt>
-                    <dd>Managed staged MARC records, including completing and reversing imports</dd>
-                [% END %]
+                        [% IF CAN_user_tools_access_files %]
+                            <dt><a href="/cgi-bin/koha/tools/access_files.pl">Access files</a></dt>
+                            <dd>Access files stored on the server, like log files or reports</dd>
+                        [% END %]
 
-                [% IF ( CAN_user_tools_upload_local_cover_images ) %]
-                    <dt><a href="/cgi-bin/koha/tools/upload-cover-image.pl">Upload local cover image</a></dt>
-                    <dd>Utility to upload scanned cover images for display in OPAC</dd>
-                [% END %]
-            </dl>
-        </div> <!-- /.col-sm-4... -->
+                        [% IF ( Koha.Preference('OPACReportProblem') && CAN_user_problem_reports ) %]
+                            <dt><a href="/cgi-bin/koha/tools/problem-reports.pl">OPAC problem reports</a></dt>
+                            <dd>Manage OPAC problem reports submitted by patrons</dd>
+                        [% END %]
+                    </dl>
+
+                    [% IF ( Koha.Preference('UseCashRegisters') && ( CAN_user_cash_management_cashup || CAN_user_cash_management_anonymous_refund ) ) %]
+                    <h3>Cash management</h3>
+                    <dl>
+                        <dt><a href="/cgi-bin/koha/pos/registers.pl">Cash summary for [% Branches.GetLoggedInBranchname | html %]</a></dt>
+                        <dd>View cash takings for the current library</dd>
+
+                        <dt><a href="/cgi-bin/koha/pos/register.pl">Transaction history for [% Registers.session_register_name | html %]</a></dt>
+                        <dd>View transaction history for the current cash register</dd>
+                    </dl>
+                    [% END %]
+
+                </div> <!-- /.col-sm-6 -->
+            </div> <!-- /.row -->
+        </div> <!-- /.col-md-10 -->
     </div> <!-- /.row -->
 
 [% INCLUDE 'intranet-bottom.inc' %]