@@ -, +, @@
---
Koha/Schema/Result/Borrower.pm | 12 +++-
Koha/Schema/Result/Deletedborrower.pm | 12 +++-
api/v1/swagger/definitions/patron.json | 4 ++
.../prog/en/modules/admin/preferences/opac.pref | 7 +++
.../prog/en/modules/admin/preferences/patrons.pref | 6 ++
.../prog/en/modules/members/memberentrygen.tt | 15 +++++
.../prog/en/modules/members/moremember.tt | 11 +++-
.../bootstrap/en/modules/opac-memberentry.tt | 70 +++++++++++++++++-----
.../opac-tmpl/bootstrap/en/modules/opac-privacy.tt | 36 +++++++----
opac/opac-memberentry.pl | 4 +-
opac/opac-privacy.pl | 2 +
opac/svc/patron/show_fines_to_relatives | 59 ++++++++++++++++++
12 files changed, 205 insertions(+), 33 deletions(-)
create mode 100755 opac/svc/patron/show_fines_to_relatives
--- a/Koha/Schema/Result/Borrower.pm
+++ a/Koha/Schema/Result/Borrower.pm
@@ -402,6 +402,12 @@ __PACKAGE__->table("borrowers");
default_value: 1
is_nullable: 0
+=head2 privacy_guarantor_fines
+
+ data_type: 'tinyint'
+ default_value: 0
+ is_nullable: 0
+
=head2 privacy_guarantor_checkouts
data_type: 'tinyint'
@@ -619,6 +625,8 @@ __PACKAGE__->add_columns(
{ data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
"privacy",
{ data_type => "integer", default_value => 1, is_nullable => 0 },
+ "privacy_guarantor_fines",
+ { data_type => "tinyint", default_value => 0, is_nullable => 0 },
"privacy_guarantor_checkouts",
{ data_type => "tinyint", default_value => 0, is_nullable => 0 },
"checkprevcheckout",
@@ -1552,8 +1560,8 @@ Composing rels: L -> ordernumber
__PACKAGE__->many_to_many("ordernumbers", "aqorder_users", "ordernumber");
-# Created by DBIx::Class::Schema::Loader v0.07046 @ 2019-05-17 12:11:31
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:rb0wEXHaSvYum10aZjbAOA
+# Created by DBIx::Class::Schema::Loader v0.07046 @ 2019-05-22 04:33:29
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:lbMdmIHlRt+zayG5+Rq4/w
__PACKAGE__->add_columns(
'+anonymized' => { is_boolean => 1 },
--- a/Koha/Schema/Result/Deletedborrower.pm
+++ a/Koha/Schema/Result/Deletedborrower.pm
@@ -399,6 +399,12 @@ __PACKAGE__->table("deletedborrowers");
default_value: 1
is_nullable: 0
+=head2 privacy_guarantor_fines
+
+ data_type: 'tinyint'
+ default_value: 0
+ is_nullable: 0
+
=head2 privacy_guarantor_checkouts
data_type: 'tinyint'
@@ -604,6 +610,8 @@ __PACKAGE__->add_columns(
{ data_type => "integer", is_nullable => 1 },
"privacy",
{ data_type => "integer", default_value => 1, is_nullable => 0 },
+ "privacy_guarantor_fines",
+ { data_type => "tinyint", default_value => 0, is_nullable => 0 },
"privacy_guarantor_checkouts",
{ data_type => "tinyint", default_value => 0, is_nullable => 0 },
"checkprevcheckout",
@@ -642,8 +650,8 @@ __PACKAGE__->add_columns(
);
-# Created by DBIx::Class::Schema::Loader v0.07046 @ 2019-05-17 12:11:31
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:STNFbPgDGWmyrZUFj/n+MA
+# Created by DBIx::Class::Schema::Loader v0.07046 @ 2019-05-22 04:33:29
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:zK1jC6Wawwj8B2ch9KFByw
# You can replace this text with custom code or comments, and it will be preserved on regeneration
--- a/api/v1/swagger/definitions/patron.json
+++ a/api/v1/swagger/definitions/patron.json
@@ -243,6 +243,10 @@
"type": "integer",
"description": "controls if relatives can see this patron's checkouts"
},
+ "privacy_guarantor_fines": {
+ "type": "integer",
+ "description": "controls if relatives can see this patron's fines"
+ },
"check_previous_checkout": {
"type": "string",
"description": "produce a warning for this patron if this item has previously been checked out to this patron if 'yes', not if 'no', defer to category setting if 'inherit'"
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref
@@ -707,6 +707,13 @@ OPAC:
no: "Don't allow"
- patrons to choose their own privacy settings for showing the patron's checkouts to the patron's guarantor".
-
+ - pref: AllowPatronToSetFinesVisibilityForGuarantor
+ default: 0
+ choices:
+ yes: Allow
+ no: "Don't allow"
+ - patrons to choose their own privacy settings for showing the patron's fines to the patron's guarantor".
+ -
- Use borrowernumber
- pref: AnonymousPatron
class: integer
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref
@@ -185,6 +185,12 @@ Patrons:
no: "Don't allow"
- staff to set the ability for a patron's checkouts to be viewed by linked patrons in the OPAC.
-
+ - pref: AllowStaffToSetFinesVisibilityForGuarantor
+ choices:
+ yes: Allow
+ no: "Don't allow"
+ - staff to set the ability for a patron's fines to be viewed by linked patrons in the OPAC.
+ -
- Card numbers for patrons must be
- pref: CardnumberLength
- "characters long. The length can be a single number to specify an exact length, a range separated by a comma (i.e., 'Min,Max'), or a maximum with no minimum (i.e., ',Max')."
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt
@@ -429,6 +429,21 @@
Allow guarantors of this patron to view this patron's checkouts from the OPAC
[% END %]
+ [% IF relationships && Koha.Preference('AllowStaffToSetFinesVisibilityForGuarantor') %]
+
+
+
+
Allow guarantors of this patron to view this patron's fines from the OPAC
+
+ [% END %]
[% END %]
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt
@@ -485,7 +485,16 @@
Show checkouts to guarantor
- [% IF privacy_guarantor_checkouts %]
+ [% IF patron.privacy_guarantor_checkouts %]
+ Yes
+ [% ELSE %]
+ No
+ [% END %]
+
+
+
+ Show fines to guarantor
+ [% IF patron.privacy_guarantor_fines %]
Yes
[% ELSE %]
No
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt
+++ a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt
@@ -99,8 +99,8 @@
[% IF failed_captcha %]
You typed in the wrong characters in the box before submitting. Please try again.
[% END %]
-
- [% IF patron.guarantor_relationships && !Koha.Preference('OPACPrivacy') && Koha.Preference('AllowPatronToSetCheckoutsVisibilityForGuarantor') %]
+
+ [% IF has_guarantor_flag && !Koha.Preference('OPACPrivacy') && ( Koha.Preference('AllowPatronToSetCheckoutsVisibilityForGuarantor') || Koha.Preference('AllowPatronToSetFinesVisibilityForGuarantor') ) %]
Guaranteed by
[% FOREACH gr IN patron.guarantor_relationships %]
@@ -1019,20 +1038,39 @@
}
});
- [% IF patron.guarantor_relationships && !Koha.Preference('OPACPrivacy') && Koha.Preference('AllowPatronToSetCheckoutsVisibilityForGuarantor') %]
- $('#update_privacy_guarantor_checkouts').click( function() {
- $.post( "/cgi-bin/koha/svc/patron/show_checkouts_to_relatives", { privacy_guarantor_checkouts: $('#privacy_guarantor_checkouts').val() }, null, 'json')
- .done(function( data ) {
- var message;
- if ( data.success ) {
- message = _("Your setting has been updated!");
- } else {
- message = _("Unable to update your setting!");
- }
-
- $('#update_privacy_guarantor_checkouts_message').fadeIn("slow").text( message ).delay( 5000 ).fadeOut("slow");
- });
- });
+ [% IF patron.guarantor_relationships && !Koha.Preference('OPACPrivacy') %]
+
+ [% IF Koha.Preference('AllowPatronToSetCheckoutsVisibilityForGuarantor') %]
+ $('#update_privacy_guarantor_checkouts').click( function() {
+ $.post( "/cgi-bin/koha/svc/patron/show_checkouts_to_relatives", { privacy_guarantor_checkouts: $('#privacy_guarantor_checkouts').val() }, null, 'json')
+ .done(function( data ) {
+ var message;
+ if ( data.success ) {
+ message = _("Your setting has been updated!");
+ } else {
+ message = _("Unable to update your setting!");
+ }
+
+ $('#update_privacy_guarantor_checkouts_message').fadeIn("slow").text( message ).delay( 5000 ).fadeOut("slow");
+ });
+ });
+ [% END %]
+
+ [% IF Koha.Preference('AllowPatronToSetFinesVisibilityForGuarantor') %]
+ $('#update_privacy_guarantor_fines').click( function() {
+ $.post( "/cgi-bin/koha/svc/patron/show_fines_to_relatives", { privacy_guarantor_fines: $('#privacy_guarantor_fines').val() }, null, 'json')
+ .done(function( data ) {
+ var message;
+ if ( data.success ) {
+ message = _("Your setting has been updated!");
+ } else {
+ message = _("Unable to update your setting!");
+ }
+
+ $('#update_privacy_guarantor_fines_message').fadeIn("slow").text( message ).delay( 5000 ).fadeOut("slow");
+ });
+ });
+ [% END %]
[% END %]
$(".patron-attributes").on( 'click', '.clear-attribute', function() {
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-privacy.tt
+++ a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-privacy.tt
@@ -71,18 +71,32 @@
- [% IF borrower.guarantor_relationships && Koha.Preference('AllowPatronToSetCheckoutsVisibilityForGuarantor') %]
+ [% IF borrower.guarantor_relationships && Koha.Preference('AllowPatronToSetCheckoutsVisibilityForGuarantor') || Koha.Preference('AllowPatronToSetFinesVisibilityForGuarantor') %]
-
-
+ [% IF Koha.Preference('AllowPatronToSetCheckoutsVisibilityForGuarantor') %]
+
+
+ [% END %]
+ [% IF Koha.Preference('AllowPatronToSetFinesVisibilityForGuarantor') %]
+
+
+ [% END %]
Guaranteed by
[% FOREACH gr IN borrower.guarantor_relationships %]
--- a/opac/opac-memberentry.pl
+++ a/opac/opac-memberentry.pl
@@ -329,11 +329,13 @@ elsif ( $action eq 'edit' ) { #Display logged in borrower's data
}
my $captcha = random_string("CCCCC");
+my $patron_param = scalar Koha::Patrons->find( $borrowernumber );
$template->param(
captcha => $captcha,
captcha_digest => md5_base64($captcha),
- patron => Koha::Patrons->find( $borrowernumber ),
+ patron => $patron_param,
+ has_guarantor_flag => $patron_param->guarantor_relationships->guarantors->_resultset->count
);
output_html_with_http_headers $cgi, $cookie, $template->output, undef, { force_no_caching => 1 };
--- a/opac/opac-privacy.pl
+++ a/opac/opac-privacy.pl
@@ -47,6 +47,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
my $op = $query->param("op");
my $privacy = $query->param("privacy");
my $privacy_guarantor_checkouts = $query->param("privacy_guarantor_checkouts");
+my $privacy_guarantor_fines = $query->param("privacy_guarantor_fines");
if ( $op eq "update_privacy" ) {
my $patron = Koha::Patrons->find( $borrowernumber );
@@ -54,6 +55,7 @@ if ( $op eq "update_privacy" ) {
$patron->set({
privacy => $privacy,
privacy_guarantor_checkouts => $privacy_guarantor_checkouts,
+ privacy_guarantor_fines => $privacy_guarantor_fines,
})->store;
$template->param( 'privacy_updated' => 1 );
}
--- a/opac/svc/patron/show_fines_to_relatives
+++ a/opac/svc/patron/show_fines_to_relatives
@@ -0,0 +1,59 @@
+#!/usr/bin/perl
+
+# Copyright 2014 ByWater Solutions
+#
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use CGI;
+use JSON qw( to_json );
+
+use C4::Auth;
+use C4::Context;
+
+use Koha::Patrons;
+
+my $cgi = CGI->new();
+
+my $privacy_guarantor_fines = $cgi->param('privacy_guarantor_fines');
+
+my ( $userid, $cookie, $sessionID, $flags ) = checkauth( $cgi, 1, {}, 'opac' );
+
+my $borrowernumber = C4::Context->userenv ? C4::Context->userenv->{number} : undef;
+
+my $success = 0;
+if ( $borrowernumber && defined($privacy_guarantor_fines) ) {
+ my $patron = Koha::Patrons->find($borrowernumber);
+
+ if ( $patron ) {
+ $patron->privacy_guarantor_fines($privacy_guarantor_fines);
+ $success = $patron->store();
+ }
+}
+
+binmode STDOUT, ":encoding(UTF-8)";
+print $cgi->header(
+ -type => 'application/json',
+ -charset => 'UTF-8'
+);
+
+print to_json(
+ {
+ success => $success ? 1 : 0,
+ privacy_guarantor_fines => $privacy_guarantor_fines,
+ }
+);
--