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

(-)a/koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss (+42 lines)
Lines 4361-4366 div .suggestion_note { Link Here
4361
    }
4361
    }
4362
}
4362
}
4363
4363
4364
.nav.nav-tabs > li > a {
4365
    align-items: center;
4366
    display: flex;
4367
    gap: 5px;
4368
4369
    span[class*="badge"] {
4370
        color: #000;
4371
        font-size: 85%;
4372
        font-weight: bold;
4373
4374
        &.text-bg-info {
4375
            background-color: #9BD6E8;
4376
        }
4377
4378
        &.text-bg-danger {
4379
            background-color: #FF7873;
4380
        }
4381
4382
        &:has( span:empty + span:empty ), /* If the element contains two empty spans */
4383
        &:has( span:only-child:empty ) { /* If the element contains only one span and it is empty */
4384
            background-color: transparent;
4385
            padding: 0;
4386
        }
4387
4388
        &:has( span + span:empty ) { /* If the element has a non-empty span followed by an empty one, reset style */
4389
            background-color: #9BD6E8;
4390
        }
4391
    }
4392
}
4393
4394
.count-active { /* Add separator between two counts in a tab */
4395
    & + .count-inactive {
4396
        &:empty::before {
4397
            content: "";
4398
        }
4399
4400
        &::before {
4401
            content: " / ";
4402
        }
4403
    }
4404
}
4405
4364
.ac-library {
4406
.ac-library {
4365
    background-color: #EEE !important;
4407
    background-color: #EEE !important;
4366
    font-weight: normal;
4408
    font-weight: normal;
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-detail-tabs.inc (-25 / +51 lines)
Lines 4-72 Link Here
4
[% WRAPPER tabs id= "finesholdsissues" %]
4
[% WRAPPER tabs id= "finesholdsissues" %]
5
    [% WRAPPER tabs_nav %]
5
    [% WRAPPER tabs_nav %]
6
        [% WRAPPER tab_item tabname= "checkouts" bt_active= 1 %]
6
        [% WRAPPER tab_item tabname= "checkouts" bt_active= 1 %]
7
            <span>Checkouts</span> (<span class="checkout_count">[% issuecount || 0 | html %]</span>)
7
            <span>Checkouts</span>
8
            [% IF ( issuecount ) %]
9
                <span class="checkout_count badge text-bg-info">[% issuecount || 0 | html %]</span>
10
            [% END %]
8
        [% END %]
11
        [% END %]
9
12
10
        [% IF relatives_issues_count %]
13
        [% IF relatives_issues_count %]
11
            [% WRAPPER tab_item tabname= "relatives-issues" %]
14
            [% WRAPPER tab_item tabname= "relatives-issues" %]
12
                <span>Relatives' checkouts</span> ([% relatives_issues_count | html %])
15
                <span>Relatives' checkouts</span>
16
                [% IF ( relatives_issues_count ) %]
17
                    <span class="badge text-bg-info">[% relatives_issues_count | html %]</span>
18
                [% END %]
13
            [% END %]
19
            [% END %]
14
        [% END %]
20
        [% END %]
15
21
16
        [% IF ( guarantees_fines ) %]
22
        [% IF ( guarantees_fines ) %]
17
            [% WRAPPER tab_item tabname= "guarantees_finesandcharges" %]
23
            [% WRAPPER tab_item tabname= "guarantees_finesandcharges" %]
18
                <span>Guarantees' charges</span> ([% guarantees_fines | $Price %])
24
                <span>Guarantees' charges</span>
25
                [% IF ( guarantees_fines ) %]
26
                    <span class="badge text-bg-info">[% guarantees_fines | $Price %]</span>
27
                [% END %]
19
            [% END %]
28
            [% END %]
20
        [% END %]
29
        [% END %]
21
30
22
        [% IF ( CAN_user_circulate_circulate_remaining_permissions ) %]
31
        [% IF ( CAN_user_circulate_circulate_remaining_permissions ) %]
23
            [% WRAPPER tab_item tabname= "holds" %]
32
            [% WRAPPER tab_item tabname= "holds" %]
24
                <span>Holds</span> ([% holds_count || 0 | html %])
33
                <span>Holds</span>
34
                [% IF ( holds_count ) %]
35
                    <span class="badge text-bg-info">[% holds_count | html %]</span>
36
                [% END %]
25
            [% END %]
37
            [% END %]
26
            [% WRAPPER tab_item tabname="bookings" %]
38
            [% WRAPPER tab_item tabname="bookings" %]
27
                [% SET bookings_count = patron.bookings.filter_by_active.count %]
39
                [% SET bookings_count = patron.bookings.filter_by_active.count %]
28
                [% SET expired_bookings_count = patron.bookings.count - bookings_count %]
40
                [% SET expired_bookings_count = patron.bookings.count - bookings_count %]
29
                <span class="bookings_count">Bookings ([% bookings_count || 0 | html %])</span>
41
                <span>Bookings</span>
42
                [% IF ( bookings_count ) %]
43
                    <span class="badge text-bg-info">[% bookings_count || 0 | html %]</span>
44
                [% END %]
30
            [% END %]
45
            [% END %]
31
        [% END %]
46
        [% END %]
32
47
33
        [% IF Koha.Preference('UseRecalls') %]
48
        [% IF Koha.Preference('UseRecalls') %]
34
            [% WRAPPER tab_item tabname= "recalls" %]
49
            [% WRAPPER tab_item tabname= "recalls" %]
35
                <span>Recalls</span> ([% recalls.count || 0 | html %])
50
                <span>Recalls</span>
51
                [% IF ( recalls.count ) %]
52
                    <span class="badge text-bg-info">[% recalls.count | html %]</span>
53
                [% END %]
36
            [% END %]
54
            [% END %]
37
        [% END %]
55
        [% END %]
38
56
39
        [% IF Koha.Preference('ArticleRequests') %]
57
        [% IF Koha.Preference('ArticleRequests') %]
40
            [% SET article_requests = Context.Scalar( Context.Scalar( patron, 'article_requests' ), 'filter_by_current') %]
58
            [% SET article_requests = Context.Scalar( Context.Scalar( patron, 'article_requests' ), 'filter_by_current') %]
41
            [% WRAPPER tab_item tabname= "article-requests" %]
59
            [% WRAPPER tab_item tabname= "article-requests" %]
42
                <span>Article requests</span> ([% article_requests.count || 0 | html %])
60
                <span>Article requests</span>
61
                [% IF ( article_requests.count ) %]
62
                    <span class="badge text-bg-info">[% article_requests.count | html %]</span>
63
                [% END %]
43
            [% END %]
64
            [% END %]
44
        [% END %]
65
        [% END %]
45
66
46
        [% IF Koha.Preference('ClaimReturnedLostValue') || Koha.Preference('BundleLostValue') %]
67
        [% IF Koha.Preference('ClaimReturnedLostValue') || Koha.Preference('BundleLostValue') %]
47
            [% WRAPPER tab_item tabname= "return-claims" %]
68
            [% WRAPPER tab_item tabname= "return-claims" %]
48
                <span>Claims</span>
69
                <span>Claims</span>
49
                [% IF ( patron.return_claims.count ) %]
70
                [% SET warning_threshold = Koha.Preference('ClaimReturnedWarningThreshold') %]
50
                    ([% IF patron.return_claims.resolved.count == 0 %]
71
                [% IF warning_threshold != '' && ( patron.return_claims.count > warning_threshold ) %]
51
                        <span title="Resolved claims" class="badge text-bg-info" id="return-claims-count-resolved">[% patron.return_claims.resolved.count | html %]</span>
72
                    <span id="return-claims-count" title="Unresolved claims / Resolved claims" class="badge text-bg-warning">
52
                    [% ELSE %]
73
                        <span id="return-claims-count-unresolved" class="count-active" data-warning="[% warning_threshold | html %]">[% patron.return_claims.unresolved.count | html %]</span>
53
                        <span title="Resolved claims" class="badge text-bg-info" id="return-claims-count-resolved">[% patron.return_claims.resolved.count | html %]</span>
74
                        <span id="return-claims-count-resolved" class="count-inactive">[% patron.return_claims.resolved.count | html %]</span>
54
                    [% END %]
75
                    </span>
55
                    [% IF patron.return_claims.unresolved.count == 0 %]
56
                        <span title="Unresolved claims" class="badge text-bg-info" id="return-claims-count-unresolved">[% patron.return_claims.unresolved.count | html %]</span>
57
                    [% ELSE %]
58
                        <span title="Unresolved claims" class="badge text-bg-warning" id="return-claims-count-unresolved">[% patron.return_claims.unresolved.count | html %]</span>
59
                    [% END %])
60
                [% ELSE %]
76
                [% ELSE %]
61
                    [% no_claims = 0 %]
77
                    <span id="return-claims-count" title="Unresolved claims" class="badge text-bg-info">
62
                    (<span title="Resolved claims" class="badge text-bg-info" id="return-claims-count-resolved">[% no_claims | html %]</span>
78
                        <span id="return-claims-count-unresolved" class="count-active" data-warning="[% warning_threshold | html %]">[% patron.return_claims.unresolved.count || "" | html %]</span>
63
                    <span title="Unresolved claims" class="badge text-bg-info" id="return-claims-count-unresolved">[% no_claims | html %]</span>)
79
                        <span id="return-claims-count-resolved" class="count-inactive">[% patron.return_claims.resolved.count || "" | html %]</span>
64
                [% END # /IF patron.return_claims.count %]
80
                    </span>
81
                [% END %]
65
            [% END # /WRAPPER tab_item return-claims %]
82
            [% END # /WRAPPER tab_item return-claims %]
66
        [% END %]
83
        [% END %]
67
84
68
        [% WRAPPER tab_item tabname= "reldebarments" %]
85
        [% WRAPPER tab_item tabname= "reldebarments" %]
69
            <span>Restrictions ([% patron.restrictions.count || 0 | html %])</span>
86
            <span>Restrictions</span>
87
            [% IF ( patron.restrictions.count ) %]
88
                <span class="badge text-bg-danger">[% patron.restrictions.count | html %]</span>
89
            [% END %]
70
        [% END %]
90
        [% END %]
71
91
72
        [% SET enrollments = patron.get_club_enrollments %]
92
        [% SET enrollments = patron.get_club_enrollments %]
Lines 74-86 Link Here
74
        <!-- 0 => not OPAC -->
94
        <!-- 0 => not OPAC -->
75
        [% IF CAN_user_clubs && ( enrollable.count || enrollments.count ) %]
95
        [% IF CAN_user_clubs && ( enrollable.count || enrollments.count ) %]
76
            [% WRAPPER tab_item tabname= "clubs" %]
96
            [% WRAPPER tab_item tabname= "clubs" %]
77
                <span>Clubs ([% enrollments.count | html %]/[% enrollable.count | html %])</span>
97
                <span>Clubs</span>
98
                <span id="clubs-count" title="Club enrollments" class="badge text-bg-info">
99
                    <span id="clubs-count-enrolled" class="count-active">[% enrollments.count || "" | html %]</span>
100
                </span>
78
            [% END %]
101
            [% END %]
79
        [% END %]
102
        [% END %]
80
103
81
        [% IF CAN_user_tools_manage_patron_lists || patron_lists_count %]
104
        [% IF CAN_user_tools_manage_patron_lists || patron_lists_count %]
82
            [% WRAPPER tab_item tabname="pat_lists" %]
105
            [% WRAPPER tab_item tabname="pat_lists" %]
83
                <span>Patron lists ([% patron_lists_count | html %])</span>
106
                <span>Patron lists</span>
107
                <span id="patron-lists" title="Lists containing this patron" class="badge text-bg-info">
108
                    <span id="patron-lists-count">[%~ patron_lists_count || "" | html ~%]</span>
109
                </span>
84
            [% END %]
110
            [% END %]
85
        [% END %]
111
        [% END %]
86
    [% END # /WRAPPER tabs_nav %]
112
    [% END # /WRAPPER tabs_nav %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/recalls.inc (-16 / +14 lines)
Lines 94-120 Link Here
94
                                        <button type="button" class="btn btn-sm btn-default dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Actions </button>
94
                                        <button type="button" class="btn btn-sm btn-default dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Actions </button>
95
                                        <ul class="dropdown-menu dropdown-menu-end">
95
                                        <ul class="dropdown-menu dropdown-menu-end">
96
                                            [% IF ( recall.requested or recall.overdue ) %]
96
                                            [% IF ( recall.requested or recall.overdue ) %]
97
                                                <li
97
                                                <li>
98
                                                    ><a class="cancel_recall dropdown-item" data-id="[% recall.id | html %]"><i class="fa fa-times"></i> Cancel</a></li
98
                                                    <a class="cancel_recall dropdown-item" data-id="[% recall.id | html %]"><i class="fa fa-times"></i> Cancel</a>
99
                                                >
99
                                                </li>
100
                                                [% IF ( recall.should_be_overdue ) %]
100
                                                [% IF ( recall.should_be_overdue ) %]
101
                                                    <li
101
                                                    <li
102
                                                        ><a class="overdue_recall" data-id="[% recall.id | html %]"><i class="fa fa-hourglass-end"></i> Mark as overdue</a></li
102
                                                        ><a class="overdue_recall dropdown-item" data-id="[% recall.id | html %]"><i class="fa fa-hourglass-end"></i> Mark as overdue</a>
103
                                                    >
103
                                                    </li>
104
                                                [% END %]
104
                                                [% END %]
105
                                            [% ELSIF ( recall.waiting ) %]
105
                                            [% ELSIF ( recall.waiting ) %]
106
                                                <li
106
                                                <li>
107
                                                    ><a class="revert_recall dropdown-item" data-id="[% recall.id | html %]"><i class="fa fa-undo"></i> Revert waiting</a></li
107
                                                    <a class="revert_recall dropdown-item" data-id="[% recall.id | html %]"><i class="fa fa-undo"></i> Revert waiting</a>
108
                                                >
108
                                                </li>
109
                                                <li
109
                                                <li>
110
                                                    ><a class="expire_recall dropdown-item" data-id="[% recall.id | html %]"><i class="fa fa-times"></i> Expire</a></li
110
                                                    <a class="expire_recall dropdown-item" data-id="[% recall.id | html %]"><i class="fa fa-times"></i> Expire</a>
111
                                                >
111
                                                </li>
112
                                            [% ELSIF ( recall.in_transit ) %]
112
                                            [% ELSIF ( recall.in_transit ) %]
113
                                                <li
113
                                                <li>
114
                                                    ><a class="transit_recall dropdown-item" data-id="[% recall.id | html %]"
114
                                                    <a class="transit_recall dropdown-item" data-id="[% recall.id | html %]"><i class="fa fa-times"></i> Cancel recall and return to: [% Branches.GetName(recall.item.homebranch) | html %]</a>
115
                                                        ><i class="fa fa-times"></i> Cancel recall and return to: [% Branches.GetName(recall.item.homebranch) | html %]</a
115
                                                </li>
116
                                                    ></li
117
                                                >
118
                                            [% END %]
116
                                            [% END %]
119
                                        </ul>
117
                                        </ul>
120
                                    </div>
118
                                    </div>
(-)a/koha-tmpl/intranet-tmpl/prog/js/checkouts.js (-17 lines)
Lines 1546-1567 $(document).ready(function () { Link Here
1546
                    url: "/cgi-bin/koha/svc/return_claims?borrowernumber=%s".format(
1546
                    url: "/cgi-bin/koha/svc/return_claims?borrowernumber=%s".format(
1547
                        borrowernumber
1547
                        borrowernumber
1548
                    ),
1548
                    ),
1549
                    complete: function (json) {
1550
                        let resolved = json.resolved;
1551
                        let unresolved = json.unresolved;
1552
1553
                        if (unresolved > 0) {
1554
                            $("#return-claims-count-unresolved")
1555
                                .text(unresolved)
1556
                                .removeClass("text-bg-info")
1557
                                .addClass("text-bg-warning");
1558
                        } else {
1559
                            $("#return-claims-count-unresolved")
1560
                                .text(unresolved)
1561
                                .removeClass("text-bg-warning")
1562
                                .addClass("text-bg-info");
1563
                        }
1564
                    },
1565
                },
1549
                },
1566
                bKohaAjaxSVC: true,
1550
                bKohaAjaxSVC: true,
1567
                search: { search: "is_unresolved" },
1551
                search: { search: "is_unresolved" },
1568
- 

Return to bug 26258