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

(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/manageable-mixin.inc (+62 lines)
Line 0 Link Here
1
[% BLOCK select_manager_show %]
2
    [% borrowerlink = "/cgi-bin/koha/members/moremember.pl" _ "?borrowernumber=" _ manager.borrowernumber %]
3
    [% IF display == 'fieldset' %]
4
        <li class="managedby">
5
            <span class="label managedby">Managed by:</span>
6
            <a href="[% borrowerlink | url %]" title="View manager details"> [% manager.firstname _ " " _ manager.surname _ " [" _ manager.cardnumber _ "]" | html %] </a>
7
        </li>
8
    [% ELSIF display == 'table' %]
9
        <tr>
10
            <th>Managed by:</th>
11
            <td>[% manageddate | $KohaDates %]</td>
12
            <td>
13
                [% IF ( manager.borrowernumber ) %]
14
                    <a href="[% borrowerlink | url %]">[% manager.surname | html %], [% manager.firstname | html %] ([% manager.cardnumber | html %])</a>
15
                    [% Branches.GetName( manager.branchcode ) | html %] ([% manager.category.description | html %])
16
                [% END %]
17
            </td>
18
        </tr>
19
    [% ELSE %]
20
        <!-- Fallback for unknown display -->
21
        <p>Error: Unknown display "[% display | html %]".</p>
22
    [% END %]
23
[% END %]
24
25
[% BLOCK select_manager_form %]
26
    <li>
27
        <label for="managedby_name">by:</label>
28
        <div>
29
            <span id="managedby_name" name="managedby_name">
30
                [% IF required_permission %]
31
                    <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% logged_in_user.borrowernumber | uri %]">You</a>
32
                [% ELSE %]
33
                    Nobody
34
                [% END %]
35
            </span>
36
            [% IF manager.borrowernumber && logged_in_user.borrowernumber != manager.borrowernumber %]
37
                | Previously was [% INCLUDE 'patron-title.inc' patron=manager hide_patron_infos_if_needed=1 %] [% Branches.GetName( manager.branchcode ) | html %] ([% manager.category.description | html %])
38
            [% END %]
39
            <br />
40
            <a href="#patron_search_modal_manager" id="edit_manager" data-bs-toggle="modal"><i class="fa fa-search"></i> Select manager</a>
41
            [% IF manager.borrowernumber && logged_in_user.borrowernumber != manager.borrowernumber %]
42
                <a id="restore_previous_manager" href="#"><i class="fa fa-trash-can"></i> Keep existing manager</a>
43
            [% END %]
44
            [% IF required_permission %]
45
                <input type="hidden" name="managedby" id="managedby" value="[% logged_in_user.borrowernumber | html %]" />
46
            [% END %]
47
48
            <br />
49
            [% IF notify_option %]
50
                <label for="notify">Notify manager:</label>
51
                <input
52
                    type="checkbox"
53
                    id="notify"
54
                    name="notify"
55
                    value="notify"
56
                    disabled="disabled"
57
                    title="A NOTIFY_MANAGER notice will be generated and send to the manager if a valid email address is defined. This can be checked if a new manager has been selected."
58
                />
59
            [% END %]
60
        </div>
61
    </li>
62
[% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/select_manager.inc (+67 lines)
Line 0 Link Here
1
[% PROCESS 'patron-search.inc' %]
2
[% IF add_modal %]
3
    [% SET columns = ['cardnumber','name','category','branch','action'] %]
4
    [% SET filter = filter %]
5
    [% PROCESS patron_search_modal
6
        columns => columns,
7
        modal_title => t("Select manager"),
8
        patron_search_modal_id => 'patron_search_modal_manager',
9
        table_id => 'patron_search_modal_manager_table'
10
    %]
11
    [% PROCESS patron_search_js
12
        columns => columns,
13
        actions => ["select"],
14
        preview_on_name_click => 1,
15
        table_id => 'patron_search_modal_manager_table',
16
        callback => 'select_manager'
17
    %]
18
[% END %]
19
<script>
20
    function select_manager(borrowernumber, borrower) {
21
        let tab = $('#suggestiontabs .active table').data('tab-name');
22
        if ( tab ) {
23
            var managedby_name = $("#managedby_name-"+tab);
24
            var managedby = $("#managedby-"+tab);
25
        } else {
26
            var managedby_name = $("#managedby_name");
27
            var managedby = $("#managedby");
28
        }
29
        managedby_name.empty();
30
        managedby.val('');
31
        var borrowername = borrower.firstname + ' ' + borrower.surname;
32
        if (borrowernumber) {
33
            var managerlink = '<a href="/cgi-bin/koha/members/moremember.pl'
34
                + '?borrowernumber=' + borrowernumber + '">'
35
                + borrowername + '</a>';
36
            managedby_name.html(managerlink);
37
            managedby.val(borrowernumber);
38
        }
39
40
        var notify = $('#notify');
41
        if ( notify.length ) {
42
            [% IF manager %]
43
                if ( borrowernumber == [% logged_in_user.borrowernumber | html %] || borrowernumber == [% manager.borrowernumber | html %] ) {
44
            [% ELSE %]
45
                if ( borrowernumber == [% logged_in_user.borrowernumber | html %] ) {
46
            [% END %]
47
                $(notify).prop('checked', false).prop('disabled', true);
48
            } else {
49
                $(notify).prop('disabled', false);
50
            }
51
        }
52
    }
53
54
    $("#restore_previous_manager").on("click",function(e){
55
        e.preventDefault();
56
57
        $("#managedby_name").empty();
58
        $("#managedby").val('');
59
        var borrowername = "[% manager.firstname | html %] [% manager.surname | html %]";
60
        var managerlink = '<a href="/cgi-bin/koha/members/moremember.pl'
61
            + '?borrowernumber=[% manager.borrowernumber | html %]">'
62
            + borrowername + '</a>';
63
        $('#managedby_name').html(managerlink);
64
        $('#managedby').val([% manager.borrowernumber | html %]);
65
        $('#notify').prop('checked', false).prop('disabled', true);
66
    });
67
</script>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt (-113 / +23 lines)
Lines 8-13 Link Here
8
[% USE TablesSettings %]
8
[% USE TablesSettings %]
9
[% PROCESS 'i18n.inc' %]
9
[% PROCESS 'i18n.inc' %]
10
[% PROCESS 'patron-search.inc' %]
10
[% PROCESS 'patron-search.inc' %]
11
[% PROCESS 'manageable-mixin.inc' %]
11
[% SET footerjs = 1 %]
12
[% SET footerjs = 1 %]
12
[% INCLUDE 'doc-head-open.inc' %]
13
[% INCLUDE 'doc-head-open.inc' %]
13
<title
14
<title
Lines 257-274 Link Here
257
                                    [% END %]
258
                                    [% END %]
258
                                </td>
259
                                </td>
259
                            </tr>
260
                            </tr>
260
                            <tr>
261
                            [% PROCESS select_manager_show
261
                                <th>Managed by:</th>
262
                                manager => managedby_patron
262
                                <td>[% manageddate | $KohaDates %]</td>
263
                                display => "table"
263
                                <td>
264
                            %]
264
                                    [% IF ( managedby_patron.borrowernumber ) %]
265
                                        <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% managedby_patron.borrowernumber | uri %]"
266
                                            >[% managedby_patron.surname | html %], [% managedby_patron.firstname | html %] ([% managedby_patron.cardnumber | html %])</a
267
                                        >
268
                                        [% Branches.GetName( managedby_patron.branchcode ) | html %] ([% managedby_patron.category.description | html %])
269
                                    [% END %]
270
                                </td>
271
                            </tr>
272
                            <tr>
265
                            <tr>
273
                                <th>Accepted on:</th>
266
                                <th>Accepted on:</th>
274
                                <td>[% accepteddate | $KohaDates %]</td>
267
                                <td>[% accepteddate | $KohaDates %]</td>
Lines 586-627 Link Here
586
                                    <label for="managedon">Managed on:</label>
579
                                    <label for="managedon">Managed on:</label>
587
                                    <input type="text" id="managedon" name="manageddate" class="flatpickr" size="10" maxlength="10" value="[% manageddate | html %]" />[% INCLUDE 'date-format.inc' %]
580
                                    <input type="text" id="managedon" name="manageddate" class="flatpickr" size="10" maxlength="10" value="[% manageddate | html %]" />[% INCLUDE 'date-format.inc' %]
588
                                </li>
581
                                </li>
589
                                <li>
582
                                [% PROCESS select_manager_form
590
                                    <label for="managedby_name">by:</label>
583
                                    manager => managedby_patron
591
                                    <div>
584
                                    notify_option => 1
592
                                        <span id="managedby_name" name="managedby_name">
585
                                    required_permission => CAN_user_suggestions_suggestions_manage
593
                                            [% IF CAN_user_suggestions_suggestions_manage %]
586
                                %]
594
                                                <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% logged_in_user.borrowernumber | uri %]">You</a>
595
                                            [% ELSE %]
596
                                                Nobody
597
                                            [% END %]
598
                                        </span>
599
                                        [% IF managedby_patron.borrowernumber && logged_in_user.borrowernumber != managedby_patron.borrowernumber %]
600
                                            | Previously was [% INCLUDE 'patron-title.inc' patron=managedby_patron hide_patron_infos_if_needed=1 %] [% Branches.GetName( managedby_patron.branchcode ) | html %]
601
                                            ([% managedby_patron.category.description | html %])
602
                                        [% END %]
603
                                        <br />
604
                                        <a href="#patron_search_modal_manager" id="edit_manager" data-bs-toggle="modal"><i class="fa fa-search"></i> Select manager</a>
605
                                        [% IF managedby_patron.borrowernumber && logged_in_user.borrowernumber != managedby_patron.borrowernumber %]
606
                                            <a id="restore_previous_manager" href="#"><i class="fa fa-trash-can"></i> Keep existing manager</a>
607
                                        [% END %]
608
                                        [% IF CAN_user_suggestions_suggestions_manage %]
609
                                            <input type="hidden" name="managedby" id="managedby" value="[% logged_in_user.borrowernumber | html %]" />
610
                                        [% END %]
611
612
                                        <br />
613
                                        <label for="notify">Notify manager:</label>
614
                                        <input
615
                                            type="checkbox"
616
                                            id="notify"
617
                                            name="notify"
618
                                            value="notify"
619
                                            disabled="disabled"
620
                                            title="A NOTIFY_MANAGER notice will be generated and send to the manager if a valid email address is defined. This can be checked if a new manager has been selected."
621
                                        />
622
                                    </div>
623
                                    <!-- /div -->
624
                                </li>
625
                            </ol>
587
                            </ol>
626
                        </fieldset>
588
                        </fieldset>
627
589
Lines 1235-1292 Link Here
1235
1197
1236
[% MACRO jsinclude BLOCK %]
1198
[% MACRO jsinclude BLOCK %]
1237
    [% INCLUDE 'calendar.inc' %]
1199
    [% INCLUDE 'calendar.inc' %]
1200
    [% INCLUDE 'select_manager.inc'
1201
        manager => managedby_patron
1202
    %]
1238
    <script>
1203
    <script>
1239
        function select_manager(borrowernumber, borrower) {
1240
            let tab = $('#suggestiontabs .active table').data('tab-name');
1241
            if ( tab ) {
1242
                var managedby_name = $("#managedby_name-"+tab);
1243
                var managedby = $("#managedby-"+tab);
1244
            } else {
1245
                var managedby_name = $("#managedby_name");
1246
                var managedby = $("#managedby");
1247
            }
1248
            managedby_name.empty();
1249
            managedby.val('');
1250
            var borrowername = borrower.firstname + ' ' + borrower.surname;
1251
            if (borrowernumber) {
1252
                var managerlink = '<a href="/cgi-bin/koha/members/moremember.pl'
1253
                    + '?borrowernumber=' + borrowernumber + '">'
1254
                    + borrowername + '</a>';
1255
                managedby_name.html(managerlink);
1256
                managedby.val(borrowernumber);
1257
            }
1258
1259
            [% IF op == "save" %]
1260
                var notify = $('#notify');
1261
                if ( notify.length ) {
1262
                    [% IF managedby_patron %]
1263
                        if ( borrowernumber == [% logged_in_user.borrowernumber | html %] || borrowernumber == [% managedby_patron.borrowernumber | html %] ) {
1264
                    [% ELSE %]
1265
                        if ( borrowernumber == [% logged_in_user.borrowernumber | html %] ) {
1266
                    [% END %]
1267
                        $(notify).prop('checked', false).prop('disabled', true);
1268
                    } else {
1269
                        $(notify).prop('disabled', false);
1270
                    }
1271
                }
1272
            [% END %]
1273
        }
1274
1275
        function select_suggester(borrowernumber, borrower) {
1204
        function select_suggester(borrowernumber, borrower) {
1276
            $.ajax({
1205
            $.ajax({
1277
                type: 'GET',
1206
                type: "GET",
1278
                url: '/api/v1/patrons/' + borrowernumber,
1207
                url: "/api/v1/patrons/" + borrowernumber,
1279
                headers: {
1208
                headers: {
1280
                    "x-koha-embed": "+strings"
1209
                    "x-koha-embed": "+strings",
1281
                },
1210
                },
1282
                success: function (data) {
1211
                success: function (data) {
1283
                    var suggested = '<input type="hidden" id="suggestedby" name="suggestedby" value="' + data.patron_id + '" />';
1212
                    var suggested = '<input type="hidden" id="suggestedby" name="suggestedby" value="' + data.patron_id + '" />';
1284
                    suggested += '<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=' + data.patron_id + '">';
1213
                    suggested += '<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=' + data.patron_id + '">';
1285
                    suggested += data.surname.escapeHtml() + ', ' + data.firstname.escapeHtml() + ' (' + data.cardnumber.escapeHtml() + ')';
1214
                    suggested += data.surname.escapeHtml() + ", " + data.firstname.escapeHtml() + " (" + data.cardnumber.escapeHtml() + ")";
1286
                    suggested += '</a> ';
1215
                    suggested += "</a> ";
1287
                    suggested += data._strings.library_id.str.escapeHtml() + ' (' + data._strings.category_id.str.escapeHtml() + ')';
1216
                    suggested += data._strings.library_id.str.escapeHtml() + " (" + data._strings.category_id.str.escapeHtml() + ")";
1288
                    $("#tdsuggestedby").html(suggested);
1217
                    $("#tdsuggestedby").html(suggested);
1289
1290
                },
1218
                },
1291
                error: function (data) {
1219
                error: function (data) {
1292
                    alert(_("Cannot retrieve info for this patron."));
1220
                    alert(_("Cannot retrieve info for this patron."));
Lines 1298-1311 Link Here
1298
        //keep a copy of all budgets before removing the inactives
1226
        //keep a copy of all budgets before removing the inactives
1299
        var budgetId = $("#budgetid");
1227
        var budgetId = $("#budgetid");
1300
        var disabledBudgetsCopy = budgetId.html();
1228
        var disabledBudgetsCopy = budgetId.html();
1301
        $('.b_inactive').remove();
1229
        $(".b_inactive").remove();
1302
1230
1303
        $('.showallfunds').click(function() {
1231
        $(".showallfunds").click(function () {
1304
            if ($(this).is(":checked")) {
1232
            if ($(this).is(":checked")) {
1305
                budgetId.html(disabledBudgetsCopy); //Puts back all the funds
1233
                budgetId.html(disabledBudgetsCopy); //Puts back all the funds
1306
            }
1234
            } else {
1307
            else {
1235
                $(".b_inactive").remove();
1308
                $('.b_inactive').remove();
1309
            }
1236
            }
1310
        });
1237
        });
1311
    </script>
1238
    </script>
Lines 1660-1681 Link Here
1660
                    $(".select-reason").show().find("option[value='']").attr("selected","selected");
1587
                    $(".select-reason").show().find("option[value='']").attr("selected","selected");
1661
                    $("#other_reason").hide();
1588
                    $("#other_reason").hide();
1662
                });
1589
                });
1663
1664
                $("#restore_previous_manager").on("click",function(e){
1665
                    e.preventDefault();
1666
1667
                    $("#managedby_name").empty();
1668
                    $("#managedby").val('');
1669
                    var borrowername = "[% managedby_patron.firstname | html %] [% managedby_patron.surname | html %]";
1670
                    var managerlink = '<a href="/cgi-bin/koha/members/moremember.pl'
1671
                        + '?borrowernumber=[% managedby_patron.borrowernumber | html %]">'
1672
                        + borrowername + '</a>';
1673
                    $('#managedby_name').html(managerlink);
1674
                    $('#managedby').val([% managedby_patron.borrowernumber | html %]);
1675
                    $('#notify').prop('checked', false).prop('disabled', true);
1676
                });
1677
1678
1679
            });
1590
            });
1680
        </script>
1591
        </script>
1681
    [% END %]
1592
    [% END %]
1682
- 

Return to bug 40504