From 4d6de257c67240201a5697f9f2e87b0d64524a26 Mon Sep 17 00:00:00 2001 From: Aleisha Amohia Date: Tue, 11 Feb 2020 03:16:11 +0000 Subject: [PATCH] Bug 4461: Submit a problem report To test: 1) Apply patch, update database, rebuild schema file 2) Restart koha-common and memcached 3) Confirm that your user has an email address. 4) Confirm that your library does NOT have an email address. 5) Confirm that syspref KohaAdminEmailAddress and syspref ReplytoDefault are not filled. Enable the OPACReportProblem syspref. 6) Log into OPAC 7) Click the 'Report a problem' link at the bottom of whatever page you're on 8) Notice that there is no form is and there is an error message alerting that reports cannot be submitted 9) Add an email address for your library (in either the email field or the replyto field). Refresh the OPAC problem report page. The form should now show, and the recipient field should say 'library'. 10) Complete the form and submit. Check the message_queue in the database and confirm the to_address is correct. Confirm there is a success message. 11) Add an email address for the syspref KohaAdminEmailAddress and refresh the OPAC problem report page again. The recipient field should now be a dropdown. Select the Koha Administrator option. 12) Complete the form and submit. Check the message_queue in the database and confirm the to_address is the value in KohaAdminEmailAddress. Confirm there is a success message. 13) Ensure all details in the message_queue are correct. 14) Log out of the OPAC 15) Click the Report a problem link again and confirm you are forced to log in Sponsored-by: Catalyst IT Signed-off-by: David Nind --- .../bootstrap/en/includes/opac-bottom.inc | 5 + .../bootstrap/en/modules/opac-reportproblem.tt | 92 ++++++++++++++++ opac/opac-reportproblem.pl | 118 +++++++++++++++++++++ 3 files changed, 215 insertions(+) create mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-reportproblem.tt create mode 100644 opac/opac-reportproblem.pl diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc index af060ff7b3..fac2ca93df 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc +++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc @@ -20,6 +20,11 @@
+ [% IF Koha.Preference('OPACReportProblem') %] + + [% END %]

Powered by [% IF template.name.match('opac-main.tt') %] diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-reportproblem.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-reportproblem.tt new file mode 100644 index 0000000000..51c037fc16 --- /dev/null +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-reportproblem.tt @@ -0,0 +1,92 @@ +[% USE Koha %] +[% INCLUDE 'doc-head-open.inc' %] +[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog › Report a Problem +[% INCLUDE 'doc-head-close.inc' %] +[% BLOCK cssinclude %][% END %] + +[% INCLUDE 'bodytag.inc' bodyid='opac-reportproblem' bodyclass='scrollto' %] +[% INCLUDE 'masthead.inc' %] + +

+ + +
+
+ [% IF ( OpacNav || OpacNavBottom ) %] +
+ +
+
+ [% ELSE %] +
+ [% END %] +

Report a problem

+ + [% IF Koha.Preference('OPACReportProblem') %] + + [% IF ( successfuladd ) %] +
Your problem report has been sent to the [% IF ( recipient == 'admin' ) %]Koha Administrator[% ELSE %][% recipient %][% END %].
+ [% END %] + [% IF ( ( nolibemail and noadminemail ) or norecipients ) %] +
Unable to send problem reports.
+ [% ELSE %] +
+
+ +
+
    +
  1. + + [% IF !nolibemail and noadminemail %] + + [% ELSIF !noadminemail and nolibemail %] + + [% ELSE %] + + [% END %] +
  2. +
  3. + + + [% probpage | html %] +
  4. +
  5. + + + [% username | html %] +
  6. + + +
  7. +
  8. + + +
  9. +
+
+
+ +
+
+
+ [% END %] + + [% ELSE %] +
Your library has not activated this feature.
+ [% END %] + +
+
+
+
+ +[% INCLUDE 'opac-bottom.inc' %] +[% BLOCK jsinclude %][% END %] diff --git a/opac/opac-reportproblem.pl b/opac/opac-reportproblem.pl new file mode 100644 index 0000000000..d09afe265d --- /dev/null +++ b/opac/opac-reportproblem.pl @@ -0,0 +1,118 @@ +#!/usr/bin/perl + +# This file is part of Koha. +# +# Copyright 2019 Aleisha Amohia +# +# 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, see . + +use Modern::Perl; +use CGI qw ( -utf8 ); +use C4::Auth; # get_template_and_user +use C4::Output; +use C4::Members; +use C4::Letters; +use Koha::ProblemReport; +use Koha::DateUtils; +use Koha::Libraries; +use Koha::Patrons; + +my $input = new CGI; + +my ( $template, $borrowernumber, $cookie ) = get_template_and_user( + { + template_name => "opac-reportproblem.tt", + type => "opac", + query => $input, + authnotrequired => 0, + } +); + +my $problempage = $ENV{HTTP_REFERER}; +my $member = Koha::Patrons->find($borrowernumber); +my $username = $member->userid; +my $branchcode = $member->branchcode; +my $library = Koha::Libraries->find($branchcode); +my $recipients = 2; + +if ( + ( !defined($library->branchreplyto) || $library->branchreplyto eq '' ) && + ( C4::Context->preference('ReplytoDefault') eq '' ) && + ( !defined($library->branchemail) || $library->branchemail eq '' ) + ) { + $template->param( nolibemail => 1 ); + $recipients--; +} + +my $koha_admin = C4::Context->preference('KohaAdminEmailAddress'); +if ( $koha_admin eq '' ) { + $template->param( noadminemail => 1 ); + $recipients--; +} + +$template->param( + username => $username, + probpage => $problempage, +); + +my $op = $input->param('op') || ''; +if ( $op eq 'addreport' ) { + + if ( $recipients == 0 ){ + print $input->redirect("/cgi-bin/koha/opac-reportproblem?norecipients=1.pl"); + exit; + } + + my $subject = $input->param('subject'); + my $message = $input->param('message'); + my $place = $input->param('place'); + my $recipient = $input->param('recipient') || 'library'; + my $problem = Koha::ProblemReport->new({ title => $subject, content => $message, borrowernumber => $borrowernumber, branchcode => $branchcode, username => $username, problempage => $place, recipient => $recipient, reportdate => dt_from_string() })->store; + $template->param( + recipient => $recipient, + successfuladd => 1, + probpage => $place, + ); + + my $problemreport = $problem->unblessed; + $problemreport->{code} = 'PROBLEM_REPORT'; + $problemreport->{content} .= "\nUsername: $username"; + $problemreport->{content} .= "\nProblem page: $place"; + my $transport = 'email'; + + my $from_address = $member->email || $member->emailpro || $member->B_email || $koha_admin; + + if ( $recipient eq 'admin' ) { + C4::Letters::EnqueueLetter({ + letter => $problemreport, + borrowernumber => $borrowernumber, + message_transport_type => $transport, + to_address => $koha_admin, + from_address => $from_address, + }); + } else { + my $to_address = $library->branchreplyto || + C4::Context->preference('ReplytoDefault') || + $library->branchemail; + C4::Letters::EnqueueLetter({ + letter => $problemreport, + borrowernumber => $borrowernumber, + message_transport_type => $transport, + to_address => $to_address, + from_address => $from_address, + }); + } +} + +output_html_with_http_headers $input, $cookie, $template->output; -- 2.11.0