@@ -, +, @@ own library a) A superlibrarian b) A user with all `parameters` permissions (the toplevel `parameters` box is checked). c) A user with the `manage_circ_rules` permission (and, of course, `catalogue`). d) A user with the `manage_circ_rules`, `manage_circ_rules_restricted` and `catalogue` permissions. administration page (admin/smart-rules.pl). possible to view and edit the circ rules for all libraries. circ rules for their own library. --- admin/smart-rules.pl | 7 +++++ .../bug_15520-add_manage_circ_rules_restricted.sql | 1 + installer/data/mysql/userpermissions.sql | 1 + .../intranet-tmpl/prog/en/includes/permissions.inc | 1 + .../prog/en/modules/admin/smart-rules.tt | 30 ++++++++++++---------- 5 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_15520-add_manage_circ_rules_restricted.sql --- a/admin/smart-rules.pl +++ a/admin/smart-rules.pl @@ -34,6 +34,7 @@ use Koha::RefundLostItemFeeRules; use Koha::Libraries; use Koha::Patron::Categories; use Koha::Caches; +use Koha::Patrons; my $input = CGI->new; my $dbh = C4::Context->dbh; @@ -60,6 +61,12 @@ unless ( $branch ) { $branch = C4::Context::only_my_library() ? ( C4::Context::mybranch() || '*' ) : '*'; } } + +my $uid = Koha::Patrons->find( $loggedinuser )->userid; +my $restricted_to_own_library = $uid && haspermission( $uid, { parameters => 'manage_circ_rules_restricted' }, { no_inherit => 1 } ); +$template->param( restricted_to_own_library => $restricted_to_own_library ); +$branch = C4::Context::mybranch() if $restricted_to_own_library; + $branch = '*' if $branch eq 'NO_LIBRARY_SET'; my $op = $input->param('op') || q{}; --- a/installer/data/mysql/atomicupdate/bug_15520-add_manage_circ_rules_restricted.sql +++ a/installer/data/mysql/atomicupdate/bug_15520-add_manage_circ_rules_restricted.sql @@ -0,0 +1, @@ +INSERT IGNORE INTO `permissions` (module_bit, code, description) VALUES(3, 'manage_circ_rules_restricted', 'Only manage circ rules for own library'); --- a/installer/data/mysql/userpermissions.sql +++ a/installer/data/mysql/userpermissions.sql @@ -7,6 +7,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'manage_checkout_notes', 'Mark checkout notes as seen/not seen'), ( 3, 'parameters_remaining_permissions', 'Remaining system parameters permissions'), ( 3, 'manage_circ_rules', 'Manage circulation rules'), + ( 3, 'manage_circ_rules_restricted', 'Only manage circ rules for own library'), ( 4, 'edit_borrowers', 'Add, modify and view patron information'), ( 4, 'view_borrower_infos_from_any_libraries', 'View patron infos from any libraries'), ( 6, 'place_holds', 'Place holds for patrons'), --- a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc @@ -33,6 +33,7 @@ [%- CASE 'override_renewals' -%]Override blocked renewals [%- CASE 'manage_checkout_notes' %]Mark checkout notes as seen/not seen [%- CASE 'manage_circ_rules' -%]manage circulation rules + [%- CASE 'manage_circ_rules_restricted' -%]Limit circulation rules editing to the user's own library (please note that manage_circ_rules is still required) [%- CASE 'parameters_remaining_permissions' -%]Remaining system parameters permissions [%- CASE 'edit_borrowers' -%]Add, modify and view patron information [%- CASE 'view_borrower_infos_from_any_libraries' -%]View patron infos from any libraries. If not set the logged in user could only access patron infos from its own library or group of libraries. --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt @@ -40,22 +40,24 @@

To modify a rule, create a new one with the same patron category and item type.

-
- Select a library : - -
- [% IF ( definedbranch ) %] -
- - - + + [% PROCESS options_for_libraries libraries => Branches.all( selected => current_branch, unfiltered => 1 ) %] -
+ [% IF ( definedbranch ) %] +
+ + + + +
+ [% END %] [% END %]
--