View | Details | Raw Unified | Return to bug 14224
Collapse All | Expand All

(-)a/C4/Circulation.pm (-2 / +39 lines)
Lines 96-101 BEGIN { Link Here
96
        &GetBranchItemRule
96
        &GetBranchItemRule
97
		&GetBiblioIssues
97
		&GetBiblioIssues
98
		&GetOpenIssue
98
		&GetOpenIssue
99
        &SetIssueNote
99
		&AnonymiseIssueHistory
100
		&AnonymiseIssueHistory
100
        &CheckIfIssuedToPatron
101
        &CheckIfIssuedToPatron
101
        &IsItemIssued
102
        &IsItemIssued
Lines 2540-2546 sub GetOpenIssue { Link Here
2540
=head2 GetIssues
2541
=head2 GetIssues
2541
2542
2542
    $issues = GetIssues({});    # return all issues!
2543
    $issues = GetIssues({});    # return all issues!
2543
    $issues = GetIssues({ borrowernumber => $borrowernumber, biblionumber => $biblionumber });
2544
    $issues = GetIssues({ borrowernumber => $borrowernumber, biblionumber => $biblionumber, issue_id => $issue_id });
2544
2545
2545
Returns all pending issues that match given criteria.
2546
Returns all pending issues that match given criteria.
2546
Returns a arrayref or undef if an error occurs.
2547
Returns a arrayref or undef if an error occurs.
Lines 2555-2560 Allowed criteria are: Link Here
2555
2556
2556
=item * itemnumber
2557
=item * itemnumber
2557
2558
2559
=item * issue_id
2560
2558
=back
2561
=back
2559
2562
2560
=cut
2563
=cut
Lines 2564-2570 sub GetIssues { Link Here
2564
2567
2565
    # Build filters
2568
    # Build filters
2566
    my @filters;
2569
    my @filters;
2567
    my @allowed = qw(borrowernumber biblionumber itemnumber);
2570
    my @allowed = qw(borrowernumber biblionumber itemnumber issue_id);
2568
    foreach (@allowed) {
2571
    foreach (@allowed) {
2569
        if (defined $criteria->{$_}) {
2572
        if (defined $criteria->{$_}) {
2570
            push @filters, {
2573
            push @filters, {
Lines 4133-4138 sub _CalculateAndUpdateFine { Link Here
4133
    }
4136
    }
4134
}
4137
}
4135
4138
4139
=head2 SetIssueNote
4140
4141
  &SetIssueNote($issue_id, $note);
4142
4143
Sets a note to the issuenotes table for the given issue.
4144
4145
=over 4
4146
4147
=item C<$issue_id> is the id of the issue for which to set the note
4148
4149
=item C<$note> is the note to set
4150
4151
=back
4152
4153
Returns:
4154
  True on success
4155
  False on failure
4156
4157
=cut
4158
4159
sub SetIssueNote {
4160
    my ( $issue_id, $note) = @_;
4161
4162
    my $dbh  = C4::Context->dbh;
4163
4164
    unless ( $issue_id =~ /\d+/ ) {
4165
      return;
4166
    }
4167
4168
    my $query = "UPDATE issues SET notedate=NOW(),note=? WHERE issue_id=?";
4169
    my $sth = $dbh->prepare($query);
4170
    return $sth->execute( $note, $issue_id );
4171
}
4172
4136
1;
4173
1;
4137
4174
4138
__END__
4175
__END__
(-)a/circ/returns.pl (+3 lines)
Lines 285-290 if ($barcode) { Link Here
285
        $materials = $av->count ? $av->next->lib : '';
285
        $materials = $av->count ? $av->next->lib : '';
286
    }
286
    }
287
287
288
    my $issue = GetItemIssue($itemnumber);
289
288
    $template->param(
290
    $template->param(
289
        title            => $biblio->{'title'},
291
        title            => $biblio->{'title'},
290
        homebranch       => $biblio->{'homebranch'},
292
        homebranch       => $biblio->{'homebranch'},
Lines 298-303 if ($barcode) { Link Here
298
        biblionumber     => $biblio->{'biblionumber'},
300
        biblionumber     => $biblio->{'biblionumber'},
299
        borrower         => $borrower,
301
        borrower         => $borrower,
300
        additional_materials => $materials,
302
        additional_materials => $materials,
303
        issue            => $issue,
301
    );
304
    );
302
305
303
    my %input = (
306
    my %input = (
(-)a/installer/data/mysql/atomicupdate/bug_14224-add_new_issue_columns.sql (+2 lines)
Line 0 Link Here
1
ALTER IGNORE TABLE issues ADD `note` mediumtext default NULL;
2
ALTER IGNORE TABLE issues ADD `notedate` datetime default NULL;
(-)a/installer/data/mysql/atomicupdate/bug_14224-issue_notes_syspref.sql (+1 lines)
Line 0 Link Here
1
INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`,`type`) VALUES ('AllowIssueNotes', '0', NULL, 'Allow patrons to submit notes about checked out items.','YesNo');
(-)a/installer/data/mysql/kohastructure.sql (+30 lines)
Lines 843-848 CREATE TABLE `import_items` ( Link Here
843
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
843
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
844
844
845
--
845
--
846
-- Table structure for table `issues`
847
--
848
849
DROP TABLE IF EXISTS `issues`;
850
CREATE TABLE `issues` ( -- information related to check outs or issues
851
  `issue_id` int(11) NOT NULL AUTO_INCREMENT, -- primary key for issues table
852
  `borrowernumber` int(11), -- foreign key, linking this to the borrowers table for the patron this item was checked out to
853
  `itemnumber` int(11), -- foreign key, linking this to the items table for the item that was checked out
854
  `date_due` datetime default NULL, -- datetime the item is due (yyyy-mm-dd hh:mm::ss)
855
  `branchcode` varchar(10) default NULL, -- foreign key, linking to the branches table for the location the item was checked out
856
  `returndate` datetime default NULL, -- date the item was returned, will be NULL until moved to old_issues
857
  `lastreneweddate` datetime default NULL, -- date the item was last renewed
858
  `return` varchar(4) default NULL,
859
  `renewals` tinyint(4) default NULL, -- lists the number of times the item was renewed
860
  `auto_renew` BOOLEAN default FALSE, -- automatic renewal
861
  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- the date and time this record was last touched
862
  `issuedate` datetime default NULL, -- date the item was checked out or issued
863
  `onsite_checkout` int(1) NOT NULL default 0, -- in house use flag
864
  `note` mediumtext default NULL, -- issue note text
865
  `notedate` datetime default NULL, -- datetime of issue note (yyyy-mm-dd hh:mm::ss)
866
  PRIMARY KEY (`issue_id`),
867
  KEY `issuesborridx` (`borrowernumber`),
868
  KEY `itemnumber_idx` (`itemnumber`),
869
  KEY `branchcode_idx` (`branchcode`),
870
  KEY `bordate` (`borrowernumber`,`timestamp`),
871
  CONSTRAINT `issues_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE RESTRICT ON UPDATE CASCADE,
872
  CONSTRAINT `issues_ibfk_2` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE RESTRICT ON UPDATE CASCADE
873
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
874
875
--
846
-- Table structure for table `issuingrules`
876
-- Table structure for table `issuingrules`
847
--
877
--
848
878
(-)a/installer/data/mysql/sysprefs.sql (+1 lines)
Lines 27-32 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` Link Here
27
('AllowNotForLoanOverride','0','','If ON, Koha will allow the librarian to loan a not for loan item.','YesNo'),
27
('AllowNotForLoanOverride','0','','If ON, Koha will allow the librarian to loan a not for loan item.','YesNo'),
28
('AllowOfflineCirculation','0','','If on, enables HTML5 offline circulation functionality.','YesNo'),
28
('AllowOfflineCirculation','0','','If on, enables HTML5 offline circulation functionality.','YesNo'),
29
('AllowPatronToSetCheckoutsVisibilityForGuarantor',  '0', NULL, 'If enabled, the patron can set checkouts to be visible to his or her guarantor',  'YesNo'),
29
('AllowPatronToSetCheckoutsVisibilityForGuarantor',  '0', NULL, 'If enabled, the patron can set checkouts to be visible to his or her guarantor',  'YesNo'),
30
('AllowIssueNotes', '0', NULL, 'Allow patrons to submit notes about checked out items.','YesNo'),
30
('AllowPKIAuth','None','None|Common Name|emailAddress','Use the field from a client-side SSL certificate to look a user in the Koha database','Choice'),
31
('AllowPKIAuth','None','None|Common Name|emailAddress','Use the field from a client-side SSL certificate to look a user in the Koha database','Choice'),
31
('AllowPurchaseSuggestionBranchChoice','0','1','Allow user to choose branch when making a purchase suggestion','YesNo'),
32
('AllowPurchaseSuggestionBranchChoice','0','1','Allow user to choose branch when making a purchase suggestion','YesNo'),
32
('AllowRenewalIfOtherItemsAvailable','0',NULL,'If enabled, allow a patron to renew an item with unfilled holds if other available items can fill that hold.','YesNo'),
33
('AllowRenewalIfOtherItemsAvailable','0',NULL,'If enabled, allow a patron to renew an item with unfilled holds if other available items can fill that hold.','YesNo'),
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref (+6 lines)
Lines 136-141 Circulation: Link Here
136
                  yes: Show
136
                  yes: Show
137
                  no: "Do not show"
137
                  no: "Do not show"
138
            - all items in the "Checked-in items" list, even items that were not checked out.
138
            - all items in the "Checked-in items" list, even items that were not checked out.
139
        -
140
            - pref: AllowIssueNotes
141
              choices:
142
                  yes: Allow
143
                  no: "Don't allow"
144
            - patrons to submit notes about checked out items.
139
145
140
    Checkout Policy:
146
    Checkout Policy:
141
        -
147
        -
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt (+10 lines)
Lines 183-188 $(document).ready(function () { Link Here
183
</div>
183
</div>
184
[% END %]
184
[% END %]
185
185
186
<!-- Patron has added an issue note -->
187
[% IF ( issue.note) %]
188
    <div class="dialog message">
189
        <h1>Patron note</h1>
190
        <p>[% issue.notedate %]</p>
191
        <p><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% itembiblionumber %]"> [% title |html %]</a> [% author %]</p>
192
        <p>[% issue.note %]</p>
193
    </div>
194
[% END %]
195
186
<!-- Patron has fines -->
196
<!-- Patron has fines -->
187
[% IF ( fines ) %]
197
[% IF ( fines ) %]
188
    <div class="dialog alert">
198
    <div class="dialog alert">
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-sendissuenote.tt (+21 lines)
Line 0 Link Here
1
<SUBJECT>
2
Issue note for [% title %] [% author %]
3
<END_SUBJECT>
4
5
[% USE HtmlToText %]
6
7
<HEADER>
8
[% FILTER html2text %]
9
    <p>Hi,</p>
10
    <p>[% MEMBER.firstname %] [% MEMBER.surname %] sent you the following note related to the check out of
11
    <p>[% title %] [% author %].</p>
12
[% END %]
13
14
<END_HEADER>
15
16
<MESSAGE>
17
[% FILTER html2text %]
18
    [% note %]
19
[% END %]
20
21
<END_MESSAGE>
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt (+96 lines)
Lines 120-125 Using this account is not recommended because some parts of Koha will not functi Link Here
120
                        </div>
120
                        </div>
121
                    [% END # / IF patron_flagged %]
121
                    [% END # / IF patron_flagged %]
122
122
123
                    <div class="alert alert-info" id="notesaved" style="display:none"></div>
124
123
                    [% SET OPACMySummaryNote = Koha.Preference('OPACMySummaryNote') %]
125
                    [% SET OPACMySummaryNote = Koha.Preference('OPACMySummaryNote') %]
124
                    [% IF OPACMySummaryNote %][% OPACMySummaryNote %][% END %]
126
                    [% IF OPACMySummaryNote %][% OPACMySummaryNote %][% END %]
125
127
Lines 164-169 Using this account is not recommended because some parts of Koha will not functi Link Here
164
                                                [% IF ( OPACMySummaryHTML ) %]
166
                                                [% IF ( OPACMySummaryHTML ) %]
165
                                                    <th class="nosort">Links</th>
167
                                                    <th class="nosort">Links</th>
166
                                                [% END %]
168
                                                [% END %]
169
                                                [% IF ( AllowIssueNotes ) %]
170
                                                    <th class="nosort">Note</th>
171
                                                [% END %]
167
                                            </tr>
172
                                            </tr>
168
                                        </thead>
173
                                        </thead>
169
                                        <tbody>
174
                                        <tbody>
Lines 280-285 Using this account is not recommended because some parts of Koha will not functi Link Here
280
                                                [% IF ( OPACMySummaryHTML ) %]
285
                                                [% IF ( OPACMySummaryHTML ) %]
281
                                                    <td class="links">[% ISSUE.MySummaryHTML %]</td>
286
                                                    <td class="links">[% ISSUE.MySummaryHTML %]</td>
282
                                                [% END %]
287
                                                [% END %]
288
                                                [% IF ( AllowIssueNotes ) %]
289
                                                    <td class="note">
290
                                                        <input type="text"
291
                                                            name="note"
292
                                                            data-issue_id="[% ISSUE.issue_id%]"
293
                                                            data-origvalue="[% ISSUE.note %]"
294
                                                            value="[% ISSUE.note %]">
295
                                                        </input>
296
                                                        <a class="btn"
297
                                                            name="submitnote"
298
                                                            id="save_[% ISSUE.issue_id %]"
299
                                                            style="display:none;">Submit note</a>
300
                                                    </td>
301
                                                [% END %]
283
                                            </tr>
302
                                            </tr>
284
                                        [% END # /FOREACH ISSUES %]
303
                                        [% END # /FOREACH ISSUES %]
285
                                    </tbody>
304
                                    </tbody>
Lines 782-787 Using this account is not recommended because some parts of Koha will not functi Link Here
782
                [% END %]
801
                [% END %]
783
            [% END %]
802
            [% END %]
784
803
804
            [% IF ( AllowIssueNotes ) %]
805
                $("input[name='note']").keyup(function(e){
806
                    /* prevent submitting of renewselected form */
807
                    if(e.which == 13)
808
                        e.preventDefault();
809
810
                    var $btn_save = $('#save_'+$(this).data('issue_id'));
811
                    var origvalue = $(this).data('origvalue');
812
                    var value = $(this).val();
813
814
                    if(origvalue != value) {
815
                        if(origvalue != "")
816
                            $btn_save.text('Submit changes');
817
                        else
818
                            $btn_save.text('Submit note');
819
                        $btn_save.show();
820
                    } else {
821
                        $btn_save.hide();
822
                    }
823
                });
824
825
                $("a[name='submitnote']").click(function(e){
826
                    var $self = $(this);
827
                    var title = $(this).parent().siblings('.title').html();
828
                    var $noteinput = $(this).siblings('input[name="note"]').first();
829
830
                    var ajaxData = {
831
                        'action': 'issuenote',
832
                        'issue_id': $noteinput.data('issue_id'),
833
                        'note': $noteinput.val(),
834
                    };
835
836
                    $.ajax({
837
                        url: '/cgi-bin/koha/opac-user.pl',
838
                        type: 'POST',
839
                        dataType: 'json',
840
                        data: ajaxData,
841
                    })
842
                    .done(function(data) {
843
                        var message = "";
844
                        if(data.status == 'saved') {
845
                            $("#notesaved").removeClass("alert-error");
846
                            $("#notesaved").addClass("alert-info");
847
                            $noteinput.data('origvalue', data.note);
848
                            $noteinput.val(data.note);
849
                            message = "<p>Your note about " + title + " was saved and have been sent to the library.</p>";
850
                            $self.hide();
851
                        } else if(data.status == 'removed') {
852
                            $("#notesaved").removeClass("alert-error");
853
                            $("#notesaved").addClass("alert-info");
854
                            $noteinput.data('origvalue', "");
855
                            $noteinput.val("");
856
                            message = "<p>Your note about " + title + " was removed.</p>";
857
                            $self.hide();
858
                        } else {
859
                            $("#notesaved").removeClass("alert-info");
860
                            $("#notesaved").addClass("alert-error");
861
                            message = "<p>Your note about " + title + " could not be saved.</p>" +
862
                                      "<p style=\"font-weight:bold;\">" + data.error + "</p>";
863
                        }
864
865
                        message += "<p style=\"font-style:italic;\">" + data.note + "</p>";
866
                        $("#notesaved").html(message);
867
                    })
868
                    .fail(function(data) {
869
                        $("#notesaved").removeClass("alert-info");
870
                        $("#notesaved").addClass("alert-error");
871
                        var message = "<p>Your note about " + title + " could not be saved.</p>" +
872
                                      "<p style=\"font-weight:bold;\">Ajax request has failed.</p>";
873
                        $("#notesaved").html(message);
874
                    })
875
                    .always(function() {
876
                        $("#notesaved").show();
877
                    });
878
                });
879
            [% END %]
880
785
            $( ".suspend-until" ).datepicker({ minDate: 1 }); // Require that "until date" be in the future
881
            $( ".suspend-until" ).datepicker({ minDate: 1 }); // Require that "until date" be in the future
786
        });
882
        });
787
        //]]>
883
        //]]>
(-)a/opac/opac-user.pl (-3 / +131 lines)
Lines 22-38 use strict; Link Here
22
22
23
use CGI qw ( -utf8 );
23
use CGI qw ( -utf8 );
24
24
25
use C4::Auth;
25
use Mail::Sendmail;
26
use MIME::QuotedPrint;
27
use Carp;
28
use C4::Auth qw(:DEFAULT check_cookie_auth);
26
use C4::Koha;
29
use C4::Koha;
27
use C4::Circulation;
30
use C4::Circulation;
28
use C4::Reserves;
31
use C4::Reserves;
29
use C4::Members;
32
use C4::Members;
30
use C4::Members::AttributeTypes;
33
use C4::Members::AttributeTypes;
31
use C4::Members::Attributes qw/GetBorrowerAttributeValue/;
34
use C4::Members::Attributes qw/GetBorrowerAttributeValue/;
32
use C4::Output;
35
use CGI::Cookie; # need to check cookies before having CGI parse the POST request
36
use C4::Output qw(:DEFAULT :ajax);
37
use C4::Scrubber;
33
use C4::Biblio;
38
use C4::Biblio;
34
use C4::Items;
39
use C4::Items;
35
use C4::Letters;
40
use C4::Letters;
41
use C4::Branch; # GetBranches
42
use Koha::Email;
36
use Koha::DateUtils;
43
use Koha::DateUtils;
37
use Koha::Holds;
44
use Koha::Holds;
38
use Koha::Database;
45
use Koha::Database;
Lines 57-62 BEGIN { Link Here
57
    }
64
    }
58
}
65
}
59
66
67
sub ajax_auth_cgi {     # returns CGI object
68
	my $needed_flags = shift;
69
	my %cookies = fetch CGI::Cookie;
70
	my $input = CGI->new;
71
    my $sessid = $cookies{'CGISESSID'}->value;
72
	my ($auth_status, $auth_sessid) = check_cookie_auth($sessid, $needed_flags);
73
	if ($auth_status ne "ok") {
74
		output_with_http_headers $input, undef,
75
		"window.alert('Your CGI session cookie ($sessid) is not current.  " .
76
		"Please refresh the page and try again.');\n", 'js';
77
		exit 0;
78
	}
79
	return $input;
80
}
81
82
# AJAX requests
83
my $is_ajax = is_ajax();
84
my $query = ($is_ajax) ? &ajax_auth_cgi({}) : CGI->new();
85
if ($is_ajax) {
86
    my $action = $query->param('action');
87
88
    # Issue Note
89
    if ( $action == 'issuenote' && C4::Context->preference('AllowIssueNotes') ) {
90
        my $scrubber = C4::Scrubber->new();
91
        my $note = $query->param('note');
92
        my $issue_id = $query->param('issue_id');
93
        my $clean_note = $scrubber->scrub($note);
94
        my $status = "saved";
95
        my $error = "";
96
        my ($error, $member, $issue);
97
98
        my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
99
            {
100
                template_name   => "opac-sendissuenote.tt",
101
                query           => $query,
102
                type            => "opac",
103
                authnotrequired => 1,
104
            }
105
        );
106
107
        # verify issue_id
108
        if ( $issue_id =~ /\d+/ ) {
109
            $member = GetMember(borrowernumber => $borrowernumber);
110
            ($issue) = @{C4::Circulation::GetIssues({issue_id => $issue_id})};
111
112
            if ( $issue->{'borrowernumber'} != $borrowernumber ) {
113
                $status = "fail";
114
                $error = "Invalid issue id!";
115
            }
116
        } else {
117
            $status = "fail";
118
            $error = "Invalid issue id!";
119
        }
120
121
        if ( (not $error) && SetIssueNote($issue_id, $clean_note) ) {
122
            if($clean_note) { # only send email if note not empty
123
                my $branch = GetBranchDetail($issue->{'branchcode'});
124
125
                if ( $branch->{'branchemail'} ) {
126
                    my $biblio = GetBiblioFromItemNumber($issue->{'itemnumber'});
127
                    my $message = Koha::Email->new();
128
                    my %mail = $message->create_message_headers();
129
130
                    $template->param(
131
                        author => $biblio->{'author'},
132
                        title => $biblio->{'title'},
133
                        MEMBER => $member,
134
                        note => $clean_note,
135
                    );
136
137
                    # Getting template result
138
                    my $template_res = $template->output();
139
                    my $body;
140
141
                    # Analysing information and getting mail properties
142
                    if ( $template_res =~ /<SUBJECT>(.*)<END_SUBJECT>/s ) {
143
                        $mail{subject} = $1;
144
                        $mail{subject} =~ s|\n?(.*)\n?|$1|;
145
                    }
146
                    else { $mail{'subject'} = "no subject"; }
147
                    $mail{subject} = Encode::encode("UTF-8", $mail{subject});
148
149
                    my $email_header = "";
150
                    if ( $template_res =~ /<HEADER>(.*)<END_HEADER>/s ) {
151
                        $email_header = $1;
152
                        $email_header =~ s|\n?(.*)\n?|$1|;
153
                        $email_header = encode_qp(Encode::encode("UTF-8", $email_header));
154
                    }
155
156
                    if ( $template_res =~ /<MESSAGE>(.*)<END_MESSAGE>/s ) {
157
                        $body = $1;
158
                        $body =~ s|\n?(.*)\n?|$1|;
159
                        $body = encode_qp(Encode::encode("UTF-8", $body));
160
                    }
161
162
                    $mail{to} = $branch->{'branchemail'};
163
                    $mail{from} = $member->{'email'} || ($branch->{'branchemail'}=~s/^.+@/noreply@/ && $branch->{'branchemail'});
164
                    $mail{body} = $email_header . $body;
165
166
                    unless ( sendmail(%mail) ) {
167
                        $status = "fail";
168
                        $error = "Could not send message to library. Message will still show at check in.";
169
                        carp "Error sending mail: $Mail::Sendmail::error \n";
170
                    }
171
                }
172
            } else { # note empty, i.e removed
173
                $status = "removed";
174
            }
175
        } else {
176
            $status = "fail";
177
            $error = "Perhaps the item has already been check in?";
178
        }
179
180
        my $response = "{\"status\": \"$status\", \"note\": \"$clean_note\", \"issue_id\": \"$issue_id\", \"error\": \"$error\"}";
181
        output_with_http_headers($query, undef, $response, 'js');
182
        exit;
183
    } # END Issue Note
184
}
185
186
60
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
187
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
61
    {
188
    {
62
        template_name   => "opac-user.tt",
189
        template_name   => "opac-user.tt",
Lines 258-263 if ($issues){ Link Here
258
}
385
}
259
my $overduesblockrenewing = C4::Context->preference('OverduesBlockRenewing');
386
my $overduesblockrenewing = C4::Context->preference('OverduesBlockRenewing');
260
$canrenew = 0 if ($overduesblockrenewing ne 'allow' and $overdues_count == $count);
387
$canrenew = 0 if ($overduesblockrenewing ne 'allow' and $overdues_count == $count);
388
389
$template->param( AllowIssueNotes => C4::Context->preference('AllowIssueNotes') );
261
$template->param( ISSUES       => \@issuedat );
390
$template->param( ISSUES       => \@issuedat );
262
$template->param( issues_count => $count );
391
$template->param( issues_count => $count );
263
$template->param( canrenew     => $canrenew );
392
$template->param( canrenew     => $canrenew );
264
- 

Return to bug 14224