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

(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt (-58 / +135 lines)
Lines 14-20 Link Here
14
[% INCLUDE 'doc-head-open.inc' %]
14
[% INCLUDE 'doc-head-open.inc' %]
15
<title>Your library home &rsaquo; [% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha online[% END %] catalog</title>
15
<title>Your library home &rsaquo; [% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha online[% END %] catalog</title>
16
[% INCLUDE 'doc-head-close.inc' %]
16
[% INCLUDE 'doc-head-close.inc' %]
17
[% BLOCK cssinclude %][% END %]
17
[% BLOCK cssinclude %]
18
    [% FILTER collapse %]
19
        <style>
20
            #addNote {
21
                width: 100%;
22
            }
23
            .checkout_note {
24
                border-radius: 5px;
25
                border: 1px dashed #999;
26
                padding: .5em;
27
            }
28
        </style>
29
    [% END %]
30
[% END %]
18
</head>
31
</head>
19
[% INCLUDE 'bodytag.inc' bodyid='opac-user' bodyclass='scrollto' %]
32
[% INCLUDE 'bodytag.inc' bodyid='opac-user' bodyclass='scrollto' %]
20
[% INCLUDE 'masthead.inc' %]
33
[% INCLUDE 'masthead.inc' %]
Lines 440-449 Link Here
440
                                                [% END %]
453
                                                [% END %]
441
                                                [% IF ( Koha.Preference('AllowCheckoutNotes') ) %]
454
                                                [% IF ( Koha.Preference('AllowCheckoutNotes') ) %]
442
                                                    <td class="note">
455
                                                    <td class="note">
443
                                                        <input type="text" name="note" data-issue_id="[% ISSUE.issue_id | html %]" data-origvalue="[% ISSUE.note | html %]" value="[% ISSUE.note | html %]" maxlength="255" readonly>
456
                                                        [% IF ( ISSUE.note ) -%]
444
                                                        <div class="hint">255 characters maximum</div>
457
                                                           [% SET note_action = "Edit note" %]
445
                                                        <button type="button" class="btn btn-primary btn-sm js_submitnote" id="save_[% ISSUE.issue_id | html %]" style="display:none;">Submit note</button>
458
                                                        [% ELSE -%]
446
                                                        <button type="button" class="btn btn-primary btn-sm nonjs_submitnote" href="/cgi-bin/koha/opac-issue-note.pl?issue_id=[% ISSUE.issue_id | url %]">Edit / Create note</button>
459
                                                           [% SET note_action = "Add note" %]
460
                                                        [% END %]
461
                                                        <a id="save_[% ISSUE.issue_id | html %]" href="/cgi-bin/koha/opac-issue-note.pl?issue_id=[% ISSUE.issue_id | html %]" class="btn btn-primary btn-sm btn-add-note" data-title="[% ISSUE.title | html %] [% FOREACH subtitle IN ISSUE.subtitle.split(' \| ') %][% IF Koha.Preference('marcflavour')=='UNIMARC' %],[% END %][% subtitle | html %][% END %]" data-issueid="[% ISSUE.issue_id | html %]" id="save_[% ISSUE.issue_id | html %]" data-note="[% ISSUE.note | html %]" data-origvalue="[% ISSUE.note | html %]">
462
                                                            [% note_action | html %]
463
                                                        </button>
464
                                                        <input type="hidden" name="note" value="[% ISSUE.note | html %]" data-origvalue="[% ISSUE.note | html %]" />
447
                                                    </td>
465
                                                    </td>
448
                                                [% END %]
466
                                                [% END %]
449
                                            </tr>
467
                                            </tr>
Lines 475-480 Link Here
475
                                    <tr><td>You have nothing checked out</td></tr>
493
                                    <tr><td>You have nothing checked out</td></tr>
476
                                </table>
494
                                </table>
477
                            [% END # IF issues_count %]
495
                            [% END # IF issues_count %]
496
497
                            <!-- Add note modal -->
498
                            <div class="modal" id="addNoteModal" tabindex="-1" aria-labelledby="addNoteLabel" aria-hidden="true">
499
                                <div class="modal-dialog">
500
                                    <form action="#" id="addNoteForm">
501
                                        <div class="modal-content">
502
                                            <div class="modal-header">
503
                                                <h5 class="modal-title" id="addNoteLabel">Report a problem</h5>
504
                                                <button type="button" class="closebtn" data-dismiss="modal" aria-label="Close">
505
                                                    <span aria-hidden="true">&times;</span>
506
                                                </button>
507
                                            </div>
508
                                            <div class="modal-body" id="addNoteBody">
509
                                                <h6 id="addNoteTitle"></h6>
510
                                                <input type="hidden" id="addNoteIssueId" name="issue_id" value="" />
511
                                                <textarea name="note" id="addNote" rows="4"></textarea>
512
                                                <div class="hint">Your note will be shown to the librarian when the item is checked in.</div>
513
                                            </div>
514
                                            <div class="modal-footer">
515
                                                <button type="submit" class="btn btn-primary">Submit note</button>
516
                                                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
517
                                            </div>
518
                                        </div>
519
                                    </form>
520
                                </div>
521
                            </div>
522
478
                        </div> <!-- / .opac-user-checkouts -->
523
                        </div> <!-- / .opac-user-checkouts -->
479
524
480
                        [% IF borrower_club_enrollments.count || borrower_enrollable_clubs.count %]
525
                        [% IF borrower_club_enrollments.count || borrower_enrollable_clubs.count %]
Lines 981-1038 Link Here
981
                    }
1026
                    }
982
                });
1027
                });
983
1028
984
                $(".js_submitnote").click(function(e){
985
                    var $self = $(this);
986
                    var title = $(this).parent().parent().find('a.title')[0].outerHTML;
987
                    var $noteinput = $(this).siblings('input[name="note"]').first();
988
989
                    var ajaxData = {
990
                        'action': 'issuenote',
991
                        'issue_id': $noteinput.data('issue_id'),
992
                        'note': $noteinput.val(),
993
                    };
994
995
                    $.ajax({
996
                        url: '/cgi-bin/koha/svc/checkout_notes/',
997
                        type: 'POST',
998
                        dataType: 'json',
999
                        data: ajaxData,
1000
                    })
1001
                    .done(function(data) {
1002
                        var message = "";
1003
                        if(data.status == 'saved') {
1004
                            $("#notesaved").removeClass("alert-error");
1005
                            $("#notesaved").addClass("alert-info");
1006
                            $noteinput.data('origvalue', data.note);
1007
                            $noteinput.val(data.note);
1008
                            message = "<p>" + _("Your note about %s has been saved and sent to the library.").format(title) + "</p>";
1009
                            message += "<p style=\"font-style:italic;\">" + data.note + "</p>";
1010
                            $self.hide();
1011
                        } else if(data.status == 'removed') {
1012
                            $("#notesaved").removeClass("alert-error");
1013
                            $("#notesaved").addClass("alert-info");
1014
                            $noteinput.data('origvalue', "");
1015
                            $noteinput.val("");
1016
                            message = "<p>" + _("Your note about %s was removed.").format(title) + "</p>";
1017
                            $self.hide();
1018
                        } else {
1019
                            $("#notesaved").removeClass("alert-info");
1020
                            $("#notesaved").addClass("alert-error");
1021
                            message =  "<p>" + _("Your note about %s could not be saved.").format(title) + "</p>";
1022
                            message += "<p style=\"font-weight:bold;\">" + _("Something went wrong. The note has not been saved") + "</p>";
1023
                        }
1024
                        $("#notesaved").html(message);
1025
                    })
1026
                    .fail(function(data) {
1027
                        $("#notesaved").removeClass("alert-info");
1028
                        $("#notesaved").addClass("alert-error");
1029
                        var message = "<p style=\"font-weight:bold;\">" + _("Something went wrong. The note has not been saved") + "</p>";
1030
                        $("#notesaved").html(message);
1031
                    })
1032
                    .always(function() {
1033
                        $("#notesaved").show();
1034
                    });
1035
                });
1036
            [% END %]
1029
            [% END %]
1037
1030
1038
            $(".suspend-until").datepicker({
1031
            $(".suspend-until").datepicker({
Lines 1057-1064 Link Here
1057
                    $('#opac-user-clubs').load('/cgi-bin/koha/clubs/clubs-tab.pl?borrowernumber=[% borrowernumber | html %]');
1050
                    $('#opac-user-clubs').load('/cgi-bin/koha/clubs/clubs-tab.pl?borrowernumber=[% borrowernumber | html %]');
1058
                });
1051
                });
1059
            }
1052
            }
1053
1054
            $("body").on("click", ".btn-add-note", function(e){
1055
                e.preventDefault();
1056
                var title = $(this).data("title");
1057
                var issue_id = $(this).data("issueid");
1058
                var note = $(this).data("note");
1059
                var origvalue = $(this).data("origvalue");
1060
                $("#addNote").val( note );
1061
                $("#addNoteIssueId").val( issue_id );
1062
                $("#addNoteTitle").text( title );
1063
                $("#addNoteModal").modal("show");
1064
            });
1065
1066
            $("#addNoteForm").on("submit", function(e){
1067
                e.preventDefault();
1068
                var title = $("#addNoteTitle").text();
1069
                var issue_id = $("#addNoteIssueId").val();
1070
                var note = $("#addNote").val();
1071
                submitNote( title, issue_id, note );
1072
            });
1073
1074
            $("#addNoteModal").on("hidden.bs.modal", function(){
1075
                $("#addNoteTitle").text("");
1076
                $("#addNote").val("");
1077
            });
1060
        });
1078
        });
1061
1079
1080
        function submitNote( title, issue_id, note ){
1081
            var self = $("#addNoteModal");
1082
            var noteinput = $("#save_" + issue_id );
1083
1084
            var ajaxData = {
1085
                'action': 'issuenote',
1086
                'issue_id': issue_id,
1087
                'note': note
1088
            };
1089
1090
            $.ajax({
1091
                url: '/cgi-bin/koha/svc/checkout_notes/',
1092
                type: 'POST',
1093
                dataType: 'json',
1094
                data: ajaxData,
1095
            })
1096
            .done(function(data) {
1097
                var message = "";
1098
                if(data.status == 'saved') {
1099
                    $("#notesaved").removeClass("alert-error");
1100
                    $("#notesaved").addClass("alert-info");
1101
                    noteinput.data('origvalue', data.note)
1102
                        .data('note', data.note)
1103
                        .text( _("Edit note" ) );
1104
                    message = "<p>" + _("Your note about %s has been saved and sent to the library.").format( em(title) ) + "</p>";
1105
                    message += "<p class=\"checkout_note\">" + data.note;
1106
                    message += "<a href=\"/cgi-bin/koha/opac-issue-note.pl?issue_id=" + issue_id + "\" class=\"btn btn-link btn-sm btn-add-note\" data-title=\"" + title + "\" data-issueid=\"" + issue_id + "\" data-note=\"" + data.note + "\" data-origvalue=\"" + data.note + "\"><i class=\"fa fa-pencil\" aria-hidden=\"true\"></i> " + _("Edit note") + "</a>";
1107
                    message += "</p>";
1108
                } else if(data.status == 'removed') {
1109
                    $("#notesaved").removeClass("alert-error");
1110
                    $("#notesaved").addClass("alert-info");
1111
                    noteinput.data('origvalue', "")
1112
                        .data("note", "")
1113
                        .text( _("Add note") );
1114
                    message = "<p>" + _("Your note about %s was removed.").format( em(title) ) + "</p>";
1115
                } else {
1116
                    $("#notesaved").removeClass("alert-info");
1117
                    $("#notesaved").addClass("alert-error");
1118
                    message =  "<p>" + _("Your note about %s could not be saved.").format( em(title) ) + "</p>";
1119
                    noteinput.text( _("Add note") );
1120
                    message += "<p style=\"font-weight:bold;\">" + _("Something went wrong. The note has not been saved") + "</p>";
1121
                }
1122
                self.modal("hide");
1123
                $("#notesaved").html(message);
1124
            })
1125
            .fail(function(data) {
1126
                $("#notesaved").removeClass("alert-info");
1127
                $("#notesaved").addClass("alert-error");
1128
                var message = "<p style=\"font-weight:bold;\">" + _("Something went wrong. The note has not been saved") + "</p>";
1129
                $("#notesaved").html(message);
1130
            })
1131
            .always(function() {
1132
                $("#notesaved").show();
1133
            });
1134
        }
1135
1136
        function em( title ){
1137
            return "<em>" + title + "</em>";
1138
        }
1139
1062
        var borrowernumber = "[% borrowernumber | html %]";
1140
        var borrowernumber = "[% borrowernumber | html %]";
1063
        var MSG_YOUR_RATING = _("Your rating: %s, ");
1141
        var MSG_YOUR_RATING = _("Your rating: %s, ");
1064
        var MSG_AVERAGE_RATING = _("Average rating: %s (%s votes)");
1142
        var MSG_AVERAGE_RATING = _("Average rating: %s (%s votes)");
1065
- 

Return to bug 28720