From 30a68267022aafb86acc4d203e6fdcca969e36b9 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Wed, 6 Mar 2019 12:21:38 -0500 Subject: [PATCH] Bug 20128: Add permission for advanced cataloging editor To test: 1 - Have a borrower with edit_catalogue permission and one with editcatalogue top level 2 - Confirm they can both access the advanced editor from the 'Cataloguing' home page or from the basic editor 3 - Apply patch 4 - Update database 5 - Confirm borrower with 'edit_catalogue' has 'advanced_editor' permission 6 - Confirm borrowers can access advanced editor as above 7 - Remove 'advanced_editor' permission from borrower 8 - Ensure they cannot access the advanced editor 9 - Ensure links to 'Edit record' from search results go to basic editor --- cataloguing/addbiblio.pl | 2 +- cataloguing/editor.pl | 7 ++++++- .../bug20128_add_permission_for_advanced_editor.perl | 16 ++++++++++++++++ koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc | 1 + .../prog/en/modules/cataloguing/addbiblio.tt | 2 +- .../prog/en/modules/cataloguing/addbooks.tt | 2 +- 6 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug20128_add_permission_for_advanced_editor.perl diff --git a/cataloguing/addbiblio.pl b/cataloguing/addbiblio.pl index c4ed49da87..0719e93c44 100755 --- a/cataloguing/addbiblio.pl +++ b/cataloguing/addbiblio.pl @@ -734,7 +734,7 @@ if ($frameworkcode eq 'FA'){ 'stickyduedate' => $fa_stickyduedate, 'duedatespec' => $fa_duedatespec, ); -} elsif ( $op ne "delete" && C4::Context->preference('EnableAdvancedCatalogingEditor') && $input->cookie( 'catalogue_editor_' . $loggedinuser ) eq 'advanced' && !$breedingid ) { +} elsif ( $op ne "delete" && C4::Context->preference('EnableAdvancedCatalogingEditor') && C4::Auth::haspermission($loggedinuser,{'editcatalogue'=>'advanced_editor'}) && $input->cookie( 'catalogue_editor_' . $loggedinuser ) eq 'advanced' && !$breedingid ) { # Only use the advanced editor for non-fast-cataloging. # breedingid is not handled because those would only come off a Z39.50 # search initiated by the basic editor. diff --git a/cataloguing/editor.pl b/cataloguing/editor.pl index 42f35b3f47..a0e6c83c5c 100755 --- a/cataloguing/editor.pl +++ b/cataloguing/editor.pl @@ -40,7 +40,12 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( query => $input, type => 'intranet', authnotrequired => 0, - flagsrequired => { editcatalogue => 'edit_catalogue' }, + flagsrequired => { + editcatalogue => { + 'edit_catalogue' => 1, + 'advanced_editor' => 1 + }, + } } ); diff --git a/installer/data/mysql/atomicupdate/bug20128_add_permission_for_advanced_editor.perl b/installer/data/mysql/atomicupdate/bug20128_add_permission_for_advanced_editor.perl new file mode 100644 index 0000000000..c383eecb52 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug20128_add_permission_for_advanced_editor.perl @@ -0,0 +1,16 @@ +$DBversion = 'XXX'; +if( CheckVersion( $DBversion ) ) { + $dbh->do(q{ + INSERT IGNORE permissions (module_bit, code, description) + VALUES + (9,'advanced_editor','Use the advanced cataloging editor') + }); + if( C4::Context->preference('EnableAdvancedCatalogingEditor') ){ + $dbh->do(q{ + INSERT INTO user_permissions (borrowernumber, module_bit, code) + SELECT borrowernumber, 9, 'advanced_editor' FROM borrowers WHERE borrowernumber IN (SELECT DISTINCT borrowernumber FROM user_permissions WHERE code = 'edit_catalogue'); + }); + } + SetVersion( $DBversion ); + print "Upgrade to $DBversion done (Bug 20128: Add permission for Advanced Cataloging Editor)\n"; +} diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc index 9d538a34ad..aa8d2dfe22 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc @@ -66,6 +66,7 @@ [%- CASE 'place_holds' -%]Place holds for patrons [%- CASE 'delete_all_items' -%]Delete all items at once [%- CASE 'edit_catalogue' -%]Edit catalog (Modify bibliographic/holdings data) + [%- CASE 'advanced_editor' -%]Use the advanced cataloging editor (requires edit_catalogue) [%- CASE 'edit_items' -%]Edit items [%- CASE 'edit_items_restricted' -%]Limit item modification to subfields defined in the SubfieldsToAllowForRestrictedEditing preference (please note that edit_item is still required) [%- CASE 'fast_cataloging' -%]Fast cataloging diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt index de2429b8ff..04f0e8daf8 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt @@ -490,7 +490,7 @@ function Changefwk() {