From 5f30f1778c580ce09a8f46050cc064daf9569450 Mon Sep 17 00:00:00 2001 From: Wainui Witika-Park Date: Tue, 23 Jan 2024 16:33:06 +1300 Subject: [PATCH] Bug 35871: Add new subpermission merge_delete_authorities Add a new sub permission for merging and deleting authority records. Test plan: 1. Apply the patch (including bug 35870). 2. Update the database. 3. Login to the staff interface as a superlibrarian. 4. Add or edit an existing staff patron. 5. Set the patron's permissions to catalogue so they can access the staff interface. 6. Also add the edit_authorities permission, but not merge_delete_authorities. 7. Logout and log back in to the staff interface as the patron. 8. Go to Authorities. 9. Search for an authority record, for example search for 'a'. 10. Notice that there is an 'Actions' dropdown next to each authority search result. 11. Notice that the dropdown does not give you the option to choose Merge or Delete 12. Logout and log back in to the staff interface as a superlibrarian. 13. Edit the staff patron - add the sub permission merge_delete_authorities. 14. Logout and log back in to the staff interface as the staff patron. 15. Repeat steps 8 to 9. 16. Click the Action dropdown and notice you can merge. 17. Check that you can merge authority records. 18. Also check you can delete a search result that has 0 records. Sponsored-by: Education Services Australia SCIS --- authorities/merge.pl | 2 +- .../data/mysql/atomicupdate/bug_35871.pl | 17 +++++++++ .../data/mysql/mandatory/userpermissions.sql | 1 + .../prog/en/includes/authorities-toolbar.inc | 6 ++- .../prog/en/includes/permissions.inc | 5 +++ .../prog/en/modules/authorities/merge.tt | 8 ++++ .../modules/authorities/searchresultlist.tt | 38 ++++++++++--------- 7 files changed, 56 insertions(+), 21 deletions(-) create mode 100755 installer/data/mysql/atomicupdate/bug_35871.pl diff --git a/authorities/merge.pl b/authorities/merge.pl index d3208a8fa2..0b8d41b9c4 100755 --- a/authorities/merge.pl +++ b/authorities/merge.pl @@ -39,7 +39,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( template_name => "authorities/merge.tt", query => $input, type => "intranet", - flagsrequired => { editauthorities => 1 }, + flagsrequired => { editauthorities => 'merge_delete_authorities' }, } ); diff --git a/installer/data/mysql/atomicupdate/bug_35871.pl b/installer/data/mysql/atomicupdate/bug_35871.pl new file mode 100755 index 0000000000..d1740a3a93 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_35871.pl @@ -0,0 +1,17 @@ +use Modern::Perl; +use Koha::Installer::Output qw(say_warning say_success say_info); + +return { + bug_number => "35871", + description => "Add a merge_delete_authorities subpermission for editauthorities", + up => sub { + my ($args) = @_; + my ( $dbh, $out ) = @$args{qw(dbh out)}; + + $dbh->do( + q{INSERT IGNORE INTO permissions (module_bit, code, description) VALUES ('14','merge_delete_authorities','Merge and delete authority records')} + ); + + say_success( $out, "Added new permission 'merge_delete_authorities'" ); + }, +}; diff --git a/installer/data/mysql/mandatory/userpermissions.sql b/installer/data/mysql/mandatory/userpermissions.sql index bcb2fa6033..ce2d07d42e 100644 --- a/installer/data/mysql/mandatory/userpermissions.sql +++ b/installer/data/mysql/mandatory/userpermissions.sql @@ -128,6 +128,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES (13, 'upload_general_files', 'Upload any file'), (13, 'upload_manage', 'Manage uploaded files'), (14, 'edit_authorities', 'Edit authority records'), + (14, 'merge_delete_authorities', 'Merge and delete authority records'), (15, 'check_expiration', 'Check the expiration of a serial'), (15, 'claim_serials', 'Claim missing serials'), (15, 'create_subscription', 'Create a new subscription'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/authorities-toolbar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/authorities-toolbar.inc index fa69af6634..af8612e021 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/authorities-toolbar.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/authorities-toolbar.inc @@ -33,8 +33,10 @@ [% IF servers.count > 0 %]
  • Replace record via Z39.50/SRU
  • [% END %] - [% UNLESS ( count ) %] -
  • Delete record
  • + [% IF ( CAN_user_editauthorities_merge_delete_authorities ) %] + [% UNLESS ( count ) %] +
  • Delete record
  • + [% END %] [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc index c54ab4216e..b2a33aba48 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc @@ -672,6 +672,11 @@ Browse the system logs ([% name | html %]) + [%- CASE 'merge_delete_authorities' -%] + + Merge and delete authority records + + ([% name | html %]) [%- CASE 'check_expiration' -%] Check the expiration of a serial diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/merge.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/merge.tt index 7948d9a212..6bdc89dad9 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/merge.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/merge.tt @@ -42,6 +42,8 @@ div#result { margin-top: 1em; }

    Merging records

    +[% IF CAN_user_editauthorities_merge_delete_authorities %] + [% IF ( errors ) %] [% FOREACH error IN errors %] @@ -129,6 +131,12 @@ div#result { margin-top: 1em; } +[% END %] + +[% ELSE %] + +
    You do not have the required privileges to merge authorities.
    + [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/searchresultlist.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/searchresultlist.tt index d0b9cc772c..9ccbc2d5c1 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/searchresultlist.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/searchresultlist.tt @@ -108,24 +108,26 @@ Actions