From 751f6d30444f1ed88ef979b2267cfd9283851154 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 5 Jun 2013 14:37:38 +0200 Subject: [PATCH][SIGNED OFF] Bug 10863: Add 2 circulation permissions: force_checkout and lift_restriction This patch adds 2 circulation permissions: force_checkout and lift_restriction. Both are added to existing patrons having circulation flags. force_checkout allows a librarian to force a checkout if a limitation occurred. lift_restriction allows a librarian to lift a restriction for a patron. Test plan: 1/ Find a debarred patron and go on the checkout page. The "Lift restriction" button should be present only if the logged librarian has the lift_restriction permission. 2/ If the force_checkout permission is set, a librarian should be allowed to check out in several cases: - age restriction - the item is issued to another patron - the item is not for loan - the patron has overdue items - the item is lost - the item is a high demand item - the item is reserved - another case ? Signed-off-by: Cedric Vita Bug 10863: The force checkout permission should not affect high holds - typo checkout => check out. - the force checkout permission does not affect high holds. Signed-off-by: Cedric Vita Bug 10863: Follow-up: Adding missing permissions to translated files This patch adds the 2 new permissions to all remaining sample files. If the permissions don't get installed, the problem is bigger than having an English description. Also adds back the question "Check out anyway?" for high demand items (HIGHHOLDS). Test xt/permissions.t passes now. Bug 10863: Rename lift_restriction with manage_restrictions The pref manage_restrictions now takes into account "Lost card" and "Gone no address" restrictions. Test plan: - log in with a user with manage_restrictions permission - verify you can set/unset restrictions when editing a patron - log in with a user without manage_restrictions permission - verify you cannot set/unset restrictions when editing a patron Signed-off-by: Mathieu Saby Note: The AgeRestrictionOverride pref has to be set to "Allow" if you want to override the age restriction, even if the new permission is set. --- .../data/mysql/de-DE/mandatory/userpermissions.sql | 4 +- .../data/mysql/en/mandatory/userpermissions.sql | 2 + .../data/mysql/es-ES/mandatory/userpermissions.sql | 2 + .../mysql/fr-FR/1-Obligatoire/userpermissions.sql | 2 + .../data/mysql/it-IT/necessari/userpermissions.sql | 2 + .../mysql/nb-NO/1-Obligatorisk/userpermissions.sql | 2 + .../data/mysql/pl-PL/mandatory/userpermissions.sql | 2 + .../ru-RU/mandatory/permissions_and_user_flags.sql | 2 + .../uk-UA/mandatory/permissions_and_user_flags.sql | 2 + installer/data/mysql/updatedatabase.pl | 28 ++++++++++++++ .../prog/en/includes/borrower_debarments.inc | 8 ++-- .../prog/en/modules/circ/circulation.tt | 39 ++++++++++++++++---- .../prog/en/modules/members/memberentrygen.tt | 16 ++++++-- 13 files changed, 96 insertions(+), 15 deletions(-) diff --git a/installer/data/mysql/de-DE/mandatory/userpermissions.sql b/installer/data/mysql/de-DE/mandatory/userpermissions.sql index 9f5eadd..e85d053 100644 --- a/installer/data/mysql/de-DE/mandatory/userpermissions.sql +++ b/installer/data/mysql/de-DE/mandatory/userpermissions.sql @@ -1,7 +1,9 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Übrige Ausleihberechtigungen'), - ( 1, 'override_renewals', 'Gesperrte Verlängerungen überschreiben'), + ( 1, 'override_renewals', 'Vormerksperren übergehen'), ( 1, 'overdues_report', 'Überfälligkeiten-Report ausführen'), + ( 1, 'force_checkout', 'Ausleihsperren übergehen'), + ( 1, 'manage_restrictions', 'Kontosperre "Gesperrt" aufheben'), ( 3, 'parameters_remaining_permissions', 'Übrige Administrationsberechtigungen'), ( 3, 'manage_circ_rules', 'Ausleihkonditionen verwalten'), ( 6, 'place_holds', 'Vormerkungen für Benutzer setzen'), diff --git a/installer/data/mysql/en/mandatory/userpermissions.sql b/installer/data/mysql/en/mandatory/userpermissions.sql index 7874c9e..2f42224 100644 --- a/installer/data/mysql/en/mandatory/userpermissions.sql +++ b/installer/data/mysql/en/mandatory/userpermissions.sql @@ -2,6 +2,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Remaining circulation permissions'), ( 1, 'override_renewals', 'Override blocked renewals'), ( 1, 'overdues_report', 'Execute overdue items report'), + ( 1, 'force_checkout', 'Force checkout if a limitation exists'), + ( 1, 'manage_restrictions', 'Manage restrictions for accounts'), ( 3, 'parameters_remaining_permissions', 'Remaining system parameters permissions'), ( 3, 'manage_circ_rules', 'manage circulation rules'), ( 6, 'place_holds', 'Place holds for patrons'), diff --git a/installer/data/mysql/es-ES/mandatory/userpermissions.sql b/installer/data/mysql/es-ES/mandatory/userpermissions.sql index 7874c9e..2f42224 100644 --- a/installer/data/mysql/es-ES/mandatory/userpermissions.sql +++ b/installer/data/mysql/es-ES/mandatory/userpermissions.sql @@ -2,6 +2,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Remaining circulation permissions'), ( 1, 'override_renewals', 'Override blocked renewals'), ( 1, 'overdues_report', 'Execute overdue items report'), + ( 1, 'force_checkout', 'Force checkout if a limitation exists'), + ( 1, 'manage_restrictions', 'Manage restrictions for accounts'), ( 3, 'parameters_remaining_permissions', 'Remaining system parameters permissions'), ( 3, 'manage_circ_rules', 'manage circulation rules'), ( 6, 'place_holds', 'Place holds for patrons'), diff --git a/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql b/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql index 4f88b86..702db68 100644 --- a/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql +++ b/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql @@ -2,6 +2,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Fonctions de circulation restantes'), ( 1, 'override_renewals', 'Outrepasser les limites de renouvellement'), ( 1, 'overdues_report', 'Executer le rapport de retards'), + ( 1, 'force_checkout', 'Forcer le prêt si une limitation existe'), + ( 1, 'manage_restrictions', 'Gérer les suspensions d\'un utilisateur'), ( 3, 'parameters_remaining_permissions', 'Paramètres du système restants'), ( 3, 'manage_circ_rules', 'Gestion des règles de circulation'), ( 6, 'place_holds', 'Réserver pour des adhérents'), diff --git a/installer/data/mysql/it-IT/necessari/userpermissions.sql b/installer/data/mysql/it-IT/necessari/userpermissions.sql index fcefd20..0d27fc0 100644 --- a/installer/data/mysql/it-IT/necessari/userpermissions.sql +++ b/installer/data/mysql/it-IT/necessari/userpermissions.sql @@ -4,6 +4,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Permessi rimanenti per la circolazione'), ( 1, 'override_renewals', 'Sblocca i rinnovi bloccati'), ( 1, 'overdues_report', 'Execute overdue items report'), + ( 1, 'force_checkout', 'Force checkout if a limitation exists'), + ( 1, 'manage_restrictions', 'Manage restrictions for accounts'), ( 3, 'parameters_remaining_permissions', 'Permessi rimanenti'), ( 3, 'manage_circ_rules', 'Gestisci regole circolazione'), ( 6, 'place_holds', 'Fai prenotazioni per gli utenti'), diff --git a/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql b/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql index d66c5f2..c581bbd 100644 --- a/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql +++ b/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql @@ -22,6 +22,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Øvrige rettigheter for sirkulasjon'), ( 1, 'override_renewals', 'Overstyre blokkerte fornyinger'), ( 1, 'overdues_report', 'Execute overdue items report'), + ( 1, 'force_checkout', 'Force checkout if a limitation exists'), + ( 1, 'manage_restrictions', 'Manage restrictions for accounts'), ( 3, 'parameters_remaining_permissions', 'Øvrige rettigheter knyttet til systempreferanser'), ( 3, 'manage_circ_rules', 'Endre sirkulasjonsregler'), ( 6, 'place_holds', 'Foreta reservering for lånere'), diff --git a/installer/data/mysql/pl-PL/mandatory/userpermissions.sql b/installer/data/mysql/pl-PL/mandatory/userpermissions.sql index 2679e5f..dcd8aef 100644 --- a/installer/data/mysql/pl-PL/mandatory/userpermissions.sql +++ b/installer/data/mysql/pl-PL/mandatory/userpermissions.sql @@ -2,6 +2,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Remaining circulation permissions'), ( 1, 'override_renewals', 'Override blocked renewals'), ( 1, 'overdues_report', 'Execute overdue items report'), + ( 1, 'force_checkout', 'Force checkout if a limitation exists'), + ( 1, 'manage_restrictions', 'Manage restrictions for accounts'), ( 3, 'parameters_remaining_permissions', 'Remaining system parameters permissions'), ( 3, 'manage_circ_rules', 'manage circulation rules'), ( 6, 'place_holds', 'Place holds for patrons'), diff --git a/installer/data/mysql/ru-RU/mandatory/permissions_and_user_flags.sql b/installer/data/mysql/ru-RU/mandatory/permissions_and_user_flags.sql index 0ebb745..acf904d 100644 --- a/installer/data/mysql/ru-RU/mandatory/permissions_and_user_flags.sql +++ b/installer/data/mysql/ru-RU/mandatory/permissions_and_user_flags.sql @@ -28,6 +28,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Remaining circulation permissions'), ( 1, 'override_renewals', 'Override blocked renewals'), ( 1, 'overdues_report', 'Execute overdue items report'), + ( 1, 'force_checkout', 'Force checkout if a limitation exists'), + ( 1, 'manage_restrictions', 'Manage restrictions for accounts'), ( 3, 'parameters_remaining_permissions', 'Remaining system parameters permissions'), ( 3, 'manage_circ_rules', 'manage circulation rules'), ( 6, 'place_holds', 'Place holds for patrons'), diff --git a/installer/data/mysql/uk-UA/mandatory/permissions_and_user_flags.sql b/installer/data/mysql/uk-UA/mandatory/permissions_and_user_flags.sql index bb0af07..adee3ff 100644 --- a/installer/data/mysql/uk-UA/mandatory/permissions_and_user_flags.sql +++ b/installer/data/mysql/uk-UA/mandatory/permissions_and_user_flags.sql @@ -28,6 +28,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Remaining circulation permissions'), ( 1, 'override_renewals', 'Override blocked renewals'), ( 1, 'overdues_report', 'Execute overdue items report'), + ( 1, 'force_checkout', 'Force checkout if a limitation exists'), + ( 1, 'manage_restrictions', 'Manage restrictions for accounts'), ( 3, 'parameters_remaining_permissions', 'Remaining system parameters permissions'), ( 3, 'manage_circ_rules', 'manage circulation rules'), ( 6, 'place_holds', 'Place holds for patrons'), diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 6162bc5..845f4db 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -7743,6 +7743,34 @@ if(CheckVersion($DBversion)) { SetVersion($DBversion); } + +$DBversion = "3.13.00.XXX"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q{ + INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'force_checkout', 'Force checkout if a limitation exists') + }); + $dbh->do(q{ + INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'manage_restrictions', 'Lift restriction for restricted accounts') + }); + $dbh->do(q{ + INSERT INTO user_permissions (borrowernumber, module_bit, code) + SELECT user_permissions.borrowernumber, 1, 'force_checkout' + FROM user_permissions + LEFT JOIN borrowers USING(borrowernumber) + WHERE borrowers.flags & (1 << 1) + }); + $dbh->do(q{ + INSERT INTO user_permissions (borrowernumber, module_bit, code) + SELECT user_permissions.borrowernumber, 1, 'manage_restrictions' + FROM user_permissions + LEFT JOIN borrowers USING(borrowernumber) + WHERE borrowers.flags & (1 << 1) + }); + + print "Upgrade to $DBversion done (Bug 10863 - Add permission force_checkout and manage_restrictions)\n"; + SetVersion($DBversion); +} + =head1 FUNCTIONS =head2 TableExists($table) diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/borrower_debarments.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/borrower_debarments.inc index 0998f19..561b4be 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/borrower_debarments.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/borrower_debarments.inc @@ -31,7 +31,7 @@ Type Comment Expiration - [% IF ( CAN_user_borrowers ) %] + [% IF CAN_user_borrowers && CAN_user_circulate_manage_restrictions %]   [% END %] @@ -42,7 +42,7 @@ [% d.type %] [% d.comment %] [% IF d.expiration %] [% d.expiration | $KohaDates %] [% ELSE %] Indefinite [% END %] - [% IF ( CAN_user_borrowers )%] + [% IF CAN_user_borrowers && CAN_user_circulate_manage_restrictions %] Remove @@ -54,8 +54,8 @@ [% END %] -

Add manual restriction

- [% IF ( CAN_user_borrowers )%] + [% IF CAN_user_borrowers && CAN_user_circulate_manage_restrictions %] +

Add manual restriction

diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt index 46b82a8..3383c49 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -185,11 +185,19 @@ var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export");
-

Please confirm checkout

+[% IF CAN_user_circulate_force_checkout %] +

Please confirm checkout

+[% ELSE %] +

Cannot check out

+[% END %]
    [%IF ( AGE_RESTRICTION ) %] -
  • Age restriction [% AGE_RESTRICTION %]. Check out anyway?
  • +
  • Age restriction [% AGE_RESTRICTION %]. + [% IF CAN_user_circulate_force_checkout %] + Check out anyway? + [% END %] +
  • [% END %] [% IF ( DEBT ) %] @@ -209,7 +217,11 @@ var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export"); [% END %] [% IF ( ISSUED_TO_ANOTHER ) %] -
  • Item [% getTitleMessageIteminfo %] ([% getBarcodeMessageIteminfo %]) is checked out to [% issued_firstname %] [% issued_surname %] ([% issued_cardnumber %]). Check in and check out?
  • +
  • Item [% getTitleMessageIteminfo %] ([% getBarcodeMessageIteminfo %]) is checked out to [% issued_firstname %] [% issued_surname %] ([% issued_cardnumber %]). + [% IF CAN_user_circulate_force_checkout %] + Check in and check out? + [% END %] +
  • [% END %] [% IF ( TOO_MANY ) %] @@ -232,20 +244,30 @@ var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export"); [% item_notforloan_lib = KohaAuthorisedValues.GetByCode( authvalcode_notforloan, item_notforloan, 0 ) %] Item is normally not for loan [% IF (item_notforloan_lib) %]([% item_notforloan_lib %])[% END %]. [% END %] + [% IF CAN_user_circulate_force_checkout %] Check out anyway? + [% END %] [% END %] [% IF ( USERBLOCKEDOVERDUE ) %] -
  • Patron has [% USERBLOCKEDOVERDUE %] overdue item(s). Check out anyway?
  • +
  • Patron has [% USERBLOCKEDOVERDUE %] overdue item(s). + [% IF CAN_user_circulate_force_checkout %] + Check out anyway? + [% END %] +
  • [% END %] [% IF ( ITEM_LOST ) %] -
  • This item has been lost with a status of "[% ITEM_LOST %]". Check out anyway?
  • +
  • This item has been lost with a status of "[% ITEM_LOST %]". + [% IF CAN_user_circulate_force_checkout %] + Check out anyway? + [% END %] +
  • [% END %] [% IF HIGHHOLDS %] -
  • High demand item. Loan period shortened to [% HIGHHOLDS.duration %] days (due [% HIGHHOLDS.returndate %]). Check out anyway?
  • +
  • High demand item. Loan period shortened to [% HIGHHOLDS.duration %] days (due [% HIGHHOLDS.returndate %]). Check out anyway?
  • [% END %]
@@ -256,6 +278,8 @@ var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export"); }); [% END %] + +[% IF CAN_user_circulate_force_checkout or HIGHHOLDS %] [% IF ( RESERVED ) %] @@ -305,6 +329,7 @@ var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export"); [% END %] +[% END %]
[% END %] @@ -481,7 +506,7 @@ No patron matched [% message %]
Enter item barcode:
- [% IF ( NEEDSCONFIRMATION ) %] + [% IF NEEDSCONFIRMATION %] [% ELSE %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt index b158556..8dd8ae0 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt @@ -1170,6 +1170,7 @@ [% IF ( flagloo.key == 'gonenoaddress' ) %]Gone no address:[% END %] [% IF ( flagloo.key == 'lost' ) %]Lost card:[% END %] + [% IF CAN_user_circulate_manage_restrictions %] [% IF ( flagloo.yes ) %] @@ -1182,6 +1183,9 @@ [% ELSE %] [% END %] + [% ELSE %] + [% IF flagloo.yes %]Yes[% ELSE %]No[% END %] + [% END %] [% END %] @@ -1201,7 +1205,9 @@ Type Comment Expiration - Remove? + [% IF CAN_user_borrowers && CAN_user_circulate_manage_restrictions %] + Remove? + [% END %] @@ -1211,14 +1217,17 @@ [% d.type %] [% d.comment %] [% IF d.expiration %] [% d.expiration | $KohaDates %] [% ELSE %] Indefinite [% END %] - + [% IF CAN_user_borrowers && CAN_user_circulate_manage_restrictions %] + - + + [% END %] [% END %] [% END %] + [% IF CAN_user_borrowers && CAN_user_circulate_manage_restrictions %]

Add manual restriction

@@ -1233,6 +1242,7 @@ Cancel

+ [% END %] [% END %] -- 1.7.10.4