From d45c9a673b24b0240572a6ad3d25cf57c50a28c6 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 5 Jun 2013 14:37:38 +0200 Subject: [PATCH] Bug 10863: Add 2 circulation permissions: force_checkout and lift_restriction This patch adds 2 circulation permissions: force_checkout and lift_restriction. During upgrade, these two permission are added to existing staff users that already have the base circulate permission. 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. Signed-off-by: Kyle M Hall Passes koha-qa.pl, works as advertised Signed-off-by: Galen Charlton --- .../mysql/de-DE/mandatory/userpermissions.sql | 4 +- .../mysql/en/mandatory/userpermissions.sql | 2 + .../mysql/es-ES/mandatory/userpermissions.sql | 2 + .../fr-FR/1-Obligatoire/userpermissions.sql | 2 + .../mysql/it-IT/necessari/userpermissions.sql | 2 + .../nb-NO/1-Obligatorisk/userpermissions.sql | 2 + .../mysql/pl-PL/mandatory/userpermissions.sql | 2 + .../mandatory/permissions_and_user_flags.sql | 2 + .../mandatory/permissions_and_user_flags.sql | 2 + installer/data/mysql/updatedatabase.pl | 27 +++++++++++++ .../prog/en/includes/borrower_debarments.inc | 8 ++-- .../prog/en/modules/circ/circulation.tt | 39 +++++++++++++++---- .../prog/en/modules/members/memberentrygen.tt | 16 ++++++-- 13 files changed, 95 insertions(+), 15 deletions(-) diff --git a/installer/data/mysql/de-DE/mandatory/userpermissions.sql b/installer/data/mysql/de-DE/mandatory/userpermissions.sql index 9f5eadd85b..e85d053bdf 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 7874c9e8ca..2f42224227 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 7874c9e8ca..2f42224227 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 4f88b86e47..702db68a64 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 fcefd20e5a..0d27fc049e 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 d66c5f2bc3..c581bbddfb 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 2679e5fa13..dcd8aef72c 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 0ebb74576c..acf904d4b9 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 bb0af078d9..adee3ffd25 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 d0255a466a..23a2bd5f27 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -7882,6 +7882,33 @@ $DBversion = "3.15.00.011"; if(CheckVersion($DBversion)) { $dbh->do("UPDATE marc_subfield_structure SET maxlength=9999 WHERE maxlength IS NULL OR maxlength=0;"); print "Upgrade to $DBversion done (Bug 8018: set 9999 as default max length for subfields)\n"; + 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); } 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 a94af578dd..cea34161b4 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 %] @@ -51,7 +51,7 @@ [% 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 @@ -63,8 +63,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 3ecedd8642..7082284a80 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 = AuthorisedValues.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 4aa88cf2c8..05b5b4e500 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 %] -- 2.39.2