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

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbooks.tt (-19 / +17 lines)
Lines 330-377 Link Here
330
        const biblionumber = "[% biblionumber | html %]";
330
        const biblionumber = "[% biblionumber | html %]";
331
        var logged_in_user_borrowernumber = "[% logged_in_user.borrowernumber | html %]";
331
        var logged_in_user_borrowernumber = "[% logged_in_user.borrowernumber | html %]";
332
    </script>
332
    </script>
333
334
    <script>
333
    <script>
335
        $(document).ready(function() {
334
        $(document).ready(function () {
336
            //Set focus to cataloging search
335
            //Set focus to cataloging search
337
            $("input[name=q]:eq(0)").focus();
336
            $("input[name=q]:eq(0)").focus();
338
337
339
            $("#newRecord").click(function(){
338
            $("#newRecord").click(function () {
340
                var url = $("a#newRecordDefault").prop("href");
339
                var url = $("a#newRecordDefault").prop("href");
341
                window.location.href = url;
340
                window.location.href = url;
342
                return false;
341
                return false;
343
            });
342
            });
344
343
345
            $("#z3950search").click(function(){
344
            $("#z3950search").click(function () {
346
                PopupZ3950("Default");
345
                PopupZ3950("Default");
347
                return false;
346
                return false;
348
            });
347
            });
349
348
350
            $(".z3950searchFw").click(function(){
349
            $(".z3950searchFw").click(function () {
351
                PopupZ3950($(this).prop('id'));
350
                PopupZ3950($(this).prop("id"));
352
                return false;
351
                return false;
353
            });
352
            });
354
            $(".merge-items").on("click",function(e){
353
            $(".merge-items").on("click", function (e) {
355
                e.preventDefault();
354
                e.preventDefault();
356
                MergeItems();
355
                MergeItems();
357
            });
356
            });
358
357
359
            $("#useadvanced").click(function(){
358
            $("#useadvanced").click(function () {
360
                Cookies.set( `catalogue_editor_${logged_in_user_borrowernumber}`, "advanced", { expires: 365, path: '/', sameSite: 'Lax' } );
359
                Cookies.set(`catalogue_editor_${logged_in_user_borrowernumber}`, "advanced", { expires: 365, path: "/", sameSite: "Lax" });
361
                return true;
360
                return true;
362
            });
361
            });
363
362
364
            $(".previewData").on("click", function(e){
363
            $(".previewData").on("click", function (e) {
365
                e.preventDefault();
364
                e.preventDefault();
366
                var ltitle = $(this).text();
365
                var ltitle = $(this).text();
367
                var page = $(this).attr("href");
366
                var page = $(this).attr("href");
368
                $("#dataPreviewLabel").text(ltitle);
367
                $("#dataPreviewLabel").text(ltitle);
369
                $("#dataPreview .modal-body").load(page + " div");
368
                $("#dataPreview .modal-body").load(page + " div");
370
                $('#dataPreview').modal("show");
369
                $("#dataPreview").modal("show");
371
            });
370
            });
372
            $("#dataPreview").on("hidden.bs.modal", function(){
371
            $("#dataPreview").on("hidden.bs.modal", function () {
373
                $("#dataPreviewLabel").html("");
372
                $("#dataPreviewLabel").html("");
374
                $("#dataPreview .modal-body").html("<div id=\"loading\"><img src=\"" + interface + "/" + theme + "/img/spinner-small.gif\" alt=\"\" /> "+_("Loading")+"</div>");
373
                $("#dataPreview .modal-body").html('<div id="loading"><img src="' + interface + "/" + theme + '/img/spinner-small.gif" alt="" /> ' + _("Loading") + "</div>");
375
            });
374
            });
376
375
377
            var reservoirt = $("#reservoir-table").kohaTable(
376
            var reservoirt = $("#reservoir-table").kohaTable(
Lines 385-392 Link Here
385
        /* this function open a popup to search on z3950 server.  */
384
        /* this function open a popup to search on z3950 server.  */
386
        function PopupZ3950(fw) {
385
        function PopupZ3950(fw) {
387
            var strQuery = GetZ3950Terms(fw);
386
            var strQuery = GetZ3950Terms(fw);
388
            if(strQuery){
387
            if (strQuery) {
389
                window.open("/cgi-bin/koha/cataloguing/z3950_search.pl?biblionumber=" + biblionumber + strQuery,"z3950search",'width=800,height=500,location=yes,toolbar=no,scrollbars=yes,resize=yes');
388
                window.open("/cgi-bin/koha/cataloguing/z3950_search.pl?biblionumber=" + biblionumber + strQuery, "z3950search", "width=800,height=500,location=yes,toolbar=no,scrollbars=yes,resize=yes");
390
            }
389
            }
391
        }
390
        }
392
391
Lines 399-414 Link Here
399
                alert(_("At least two records must be selected for merging."));
398
                alert(_("At least two records must be selected for merging."));
400
            } else {
399
            } else {
401
                var params = [];
400
                var params = [];
402
                $(checkboxes).each(function() {
401
                $(checkboxes).each(function () {
403
                    params.push('biblionumber=' + $(this).val());
402
                    params.push("biblionumber=" + $(this).val());
404
                });
403
                });
405
                var url = '/cgi-bin/koha/cataloguing/merge.pl?' + params.join('&');
404
                var url = "/cgi-bin/koha/cataloguing/merge.pl?" + params.join("&");
406
                location.href = url;
405
                location.href = url;
407
            }
406
            }
408
            return false;
407
            return false;
409
        }
408
        }
410
    </script>
409
    </script>
411
412
    <script>
410
    <script>
413
        /* provide Z3950 search points */
411
        /* provide Z3950 search points */
414
        function GetZ3950Terms(fw){
412
        function GetZ3950Terms(fw){
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/concerns.tt (-130 / +150 lines)
Lines 68-239 Link Here
68
68
69
        var table_settings = [% TablesSettings.GetTableSettings('cataloguing', 'concerns', 'table_concerns', 'json') | $raw %];
69
        var table_settings = [% TablesSettings.GetTableSettings('cataloguing', 'concerns', 'table_concerns', 'json') | $raw %];
70
    </script>
70
    </script>
71
72
    <script>
71
    <script>
73
        $(document).ready(function() {
72
        $(document).ready(function () {
74
            let additional_filters = {
73
            let additional_filters = {
75
                resolved_date: function(){
74
                resolved_date: function () {
76
                    if ( $("#hide_resolved_concerns").is(":checked") ) {
75
                    if ($("#hide_resolved_concerns").is(":checked")) {
77
                        return { "=": null };
76
                        return { "=": null };
78
                    } else {
77
                    } else {
79
                        return;
78
                        return;
80
                    }
79
                    }
81
                },
80
                },
82
                source: 'catalog'
81
                source: "catalog",
83
            };
82
            };
84
            let external_filter_nodes = {
83
            let external_filter_nodes = {
85
                hide_resolved_concerns: "#hide_resolved_concerns",
84
                hide_resolved_concerns: "#hide_resolved_concerns",
86
            };
85
            };
87
86
88
            var tickets_url = '/api/v1/tickets';
87
            var tickets_url = "/api/v1/tickets";
89
            var tickets = $("#table_concerns").kohaTable({
88
            var tickets = $("#table_concerns").kohaTable(
90
                ajax: {
89
                {
91
                    "url": tickets_url
90
                    ajax: {
92
                },
91
                        url: tickets_url,
93
                embed: [
94
                    "assignee",
95
                    "reporter",
96
                    "resolver",
97
                    "biblio",
98
                    "updates+count",
99
                    "+strings"
100
                ],
101
                emptyTable: '<div class="alert alert-info">' + _("Congratulations, there are no catalog concerns.") + '</div>',
102
                columnDefs: [{
103
                    targets: [0, 1, 2, 3],
104
                    render: function(data, type, row, meta) {
105
                        if (type == 'display') {
106
                            if (data != null) {
107
                                return data.escapeHtml();
108
                            } else {
109
                                return "";
110
                            }
111
                        }
112
                        return data;
113
                    }
114
                }],
115
                columns: [{
116
                        data: "reported_date:reporter.firstname",
117
                        render: function(data, type, row, meta) {
118
                            let reported = '<div class="d-flex justify-content-between align-items-start">';
119
                            reported += '<span class="reporter">' + $patron_to_html(row.reporter, {
120
                                display_cardnumber: false,
121
                                url: true
122
                            }) + '</span>';
123
                            reported += '<span class="date text-muted">' + $datetime(row.reported_date) + '</span>';
124
                            reported += '</div>';
125
                            return reported;
126
                       },
127
                        searchable: true,
128
                        orderable: true
129
                    },
92
                    },
130
                    {
93
                    embed: ["assignee", "reporter", "resolver", "biblio", "updates+count", "+strings"],
131
                        data: "title:body",
94
                    emptyTable: '<div class="alert alert-info">' + _("Congratulations, there are no catalog concerns.") + "</div>",
132
                        render: function(data, type, row, meta) {
95
                    columnDefs: [
133
                            let result = '<div class="d-flex justify-content-between align-items-start">';
96
                        {
97
                            targets: [0, 1, 2, 3],
98
                            render: function (data, type, row, meta) {
99
                                if (type == "display") {
100
                                    if (data != null) {
101
                                        return data.escapeHtml();
102
                                    } else {
103
                                        return "";
104
                                    }
105
                                }
106
                                return data;
107
                            },
108
                        },
109
                    ],
110
                    columns: [
111
                        {
112
                            data: "reported_date:reporter.firstname",
113
                            render: function (data, type, row, meta) {
114
                                let reported = '<div class="d-flex justify-content-between align-items-start">';
115
                                reported +=
116
                                    '<span class="reporter">' +
117
                                    $patron_to_html(row.reporter, {
118
                                        display_cardnumber: false,
119
                                        url: true,
120
                                    }) +
121
                                    "</span>";
122
                                reported += '<span class="date text-muted">' + $datetime(row.reported_date) + "</span>";
123
                                reported += "</div>";
124
                                return reported;
125
                            },
126
                            searchable: true,
127
                            orderable: true,
128
                        },
129
                        {
130
                            data: "title:body",
131
                            render: function (data, type, row, meta) {
132
                                let result = '<div class="d-flex justify-content-between align-items-start">';
134
133
135
                            // Title link on the left
134
                                // Title link on the left
136
                            result += '<a id="title_' + row.ticket_id + '" role="button" href="#" class="detail-trigger">' + row.title + '</a>';
135
                                result += '<a id="title_' + row.ticket_id + '" role="button" href="#" class="detail-trigger">' + row.title + "</a>";
137
136
138
                            // Updates count on the right, if it exists
137
                                // Updates count on the right, if it exists
139
                            if (row.updates_count) {
138
                                if (row.updates_count) {
140
                                result += '<span><a role="button" href="#" class="detail-trigger"><i class="fa fa-comment" aria-hidden="true"></i> ' + row.updates_count + '</a></span>';
139
                                    result += '<span><a role="button" href="#" class="detail-trigger"><i class="fa fa-comment" aria-hidden="true"></i> ' + row.updates_count + "</a></span>";
141
                            }
140
                                }
142
141
143
                            // Hidden detail content
142
                                // Hidden detail content
144
                            result += '</div>';
143
                                result += "</div>";
145
                            result += '<div id="detail_' + row.ticket_id + '" style="display:none">' + row.body + '</div>';
144
                                result += '<div id="detail_' + row.ticket_id + '" style="display:none">' + row.body + "</div>";
146
145
147
                            return result;
146
                                return result;
147
                            },
148
                            searchable: true,
149
                            orderable: true,
148
                        },
150
                        },
149
                        searchable: true,
151
                        {
150
                        orderable: true
152
                            data: "biblio.title",
151
                    },
153
                            render: function (data, type, row, meta) {
152
                    {
154
                                return $biblio_to_html(row.biblio, {
153
                        data: "biblio.title",
155
                                    link: 1,
154
                        render: function(data, type, row, meta) {
156
                                });
155
                            return $biblio_to_html(row.biblio, {
157
                            },
156
                                link: 1
158
                            searchable: true,
157
                            });
159
                            orderable: true,
158
                        },
160
                        },
159
                        searchable: true,
161
                        {
160
                        orderable: true
162
                            data: "assignee.firstname:assignee.surname:resolver.firstname:resolver.surname:resolved_date:status",
161
                    },
163
                            render: function (data, type, row, meta) {
162
                    {
164
                                let result = "";
163
                        data: "assignee.firstname:assignee.surname:resolver.firstname:resolver.surname:resolved_date:status",
165
                                if (row.resolved_date) {
164
                        render: function(data, type, row, meta) {
166
                                    result += "<div>";
165
                            let result = '';
167
                                    result +=
166
                            if (row.resolved_date) {
168
                                        _("Resolved by") +
167
                                result += "<div>";
169
                                        " <span>" +
168
                                result += _("Resolved by") + ' <span>' + $patron_to_html(row.resolver, {
170
                                        $patron_to_html(row.resolver, {
169
                                    display_cardnumber: false,
171
                                            display_cardnumber: false,
170
                                    url: true
172
                                            url: true,
171
                                }) + '</span>';
173
                                        }) +
172
                                result += "</div>";
174
                                        "</span>";
173
                                if (row.status) {
175
                                    result += "</div>";
174
                                    result += '<div>';
176
                                    if (row.status) {
175
                                    result += ' ' + _("as") + ' ';
177
                                        result += "<div>";
176
                                    result += row._strings.status ? escape_str(row._strings.status.str) : "";
178
                                        result += " " + _("as") + " ";
177
                                    result += '</div>';
179
                                        result += row._strings.status ? escape_str(row._strings.status.str) : "";
178
                                }
180
                                        result += "</div>";
179
                                result += '<div>' + $datetime(row.resolved_date) + '</div>';
181
                                    }
180
                            } else {
182
                                    result += "<div>" + $datetime(row.resolved_date) + "</div>";
181
                                result += '<div>';
182
                                if (row.status) {
183
                                    result += row._strings.status ? escape_str(row._strings.status.str) : "";
184
                                } else {
183
                                } else {
185
                                    result += _("Open");
184
                                    result += "<div>";
186
                                }
185
                                    if (row.status) {
187
                                result += '</div>';
186
                                        result += row._strings.status ? escape_str(row._strings.status.str) : "";
188
                                if (row.assignee) {
187
                                    } else {
189
                                    result += '<div>';
188
                                        result += _("Open");
190
                                    result += _("Assigned to: ") + ' <span>' + $patron_to_html(row.assignee, {
189
                                    }
191
                                        display_cardnumber: false,
190
                                    result += "</div>";
192
                                        url: true
191
                                    if (row.assignee) {
193
                                    }) + '</span>';
192
                                        result += "<div>";
194
                                    result += '</div>';
193
                                        result +=
194
                                            _("Assigned to: ") +
195
                                            " <span>" +
196
                                            $patron_to_html(row.assignee, {
197
                                                display_cardnumber: false,
198
                                                url: true,
199
                                            }) +
200
                                            "</span>";
201
                                        result += "</div>";
202
                                    }
195
                                }
203
                                }
196
                            }
204
                                return result;
197
                            return result;
205
                            },
206
                            searchable: true,
207
                            orderable: true,
198
                        },
208
                        },
199
                        searchable: true,
209
                        {
200
                        orderable: true
210
                            data: function (row, type, val, meta) {
201
                    },
211
                                let resolved = row.resolved_date ? true : false;
202
                    {
212
                                let result =
203
                        data: function(row, type, val, meta) {
213
                                    '<a class="btn btn-default btn-xs main-trigger" role="button" href="#" data-bs-toggle="modal" data-bs-target="#ticketDetailsModal" data-concern="' +
204
                            let resolved = ( row.resolved_date ) ? true : false;
214
                                    encodeURIComponent(row.ticket_id) +
205
                            let result = '<a class="btn btn-default btn-xs main-trigger" role="button" href="#" data-bs-toggle="modal" data-bs-target="#ticketDetailsModal" data-concern="' + encodeURIComponent(row.ticket_id) + '" data-resolved="'+resolved+'" data-assignee="'+$patron_to_html(row.assignee, { display_cardnumber: false, url: false })+'"><i class="fa-solid fa-eye" aria-hidden="true"></i> ' + _("Details") + '</a>';
215
                                    '" data-resolved="' +
206
                            return result;
216
                                    resolved +
217
                                    '" data-assignee="' +
218
                                    $patron_to_html(row.assignee, { display_cardnumber: false, url: false }) +
219
                                    '"><i class="fa-solid fa-eye" aria-hidden="true"></i> ' +
220
                                    _("Details") +
221
                                    "</a>";
222
                                return result;
223
                            },
224
                            searchable: false,
225
                            orderable: false,
207
                        },
226
                        },
208
                        searchable: false,
227
                    ],
209
                        orderable: false
228
                    createdRow: function (row, data, dataIndex) {
229
                        if (data.status) {
230
                            $(row).addClass(data.status.toLowerCase());
231
                        }
210
                    },
232
                    },
211
                ],
212
                createdRow: function (row, data, dataIndex) {
213
                    if ( data.status ) {
214
                        $(row).addClass(data.status.toLowerCase());
215
                    }
216
                },
233
                },
217
            }, table_settings, 1, additional_filters, undefined, external_filter_nodes);
234
                table_settings,
235
                1,
236
                additional_filters,
237
                undefined,
238
                external_filter_nodes
239
            );
218
240
219
            var txtActivefilter = _("Include resolved");
241
            var txtActivefilter = _("Include resolved");
220
            var txtInactivefilter = _("Filter resolved");
242
            var txtInactivefilter = _("Filter resolved");
221
            function adjust_filter_label(){
243
            function adjust_filter_label() {
222
                if ($("#hide_resolved_concerns").is(":checked")){
244
                if ($("#hide_resolved_concerns").is(":checked")) {
223
                    $("#resolved_filter").html('<i class="fa fa-filter"></i> '+txtActivefilter);
245
                    $("#resolved_filter").html('<i class="fa fa-filter"></i> ' + txtActivefilter);
224
                } else {
246
                } else {
225
                    $("#resolved_filter").html('<i class="fa fa-bars"></i> '+txtInactivefilter);
247
                    $("#resolved_filter").html('<i class="fa fa-bars"></i> ' + txtInactivefilter);
226
                }
248
                }
227
            }
249
            }
228
            $('#resolved_filter').on("click", function() {
250
            $("#resolved_filter").on("click", function () {
229
                $("#hide_resolved_concerns").prop("checked", !$("#hide_resolved_concerns").is(":checked"));
251
                $("#hide_resolved_concerns").prop("checked", !$("#hide_resolved_concerns").is(":checked"));
230
                adjust_filter_label()
252
                adjust_filter_label();
231
                tickets.DataTable().draw();
253
                tickets.DataTable().draw();
232
            });
254
            });
233
            adjust_filter_label();
255
            adjust_filter_label();
234
        });
256
        });
235
    </script>
257
    </script>
236
237
    <script>
258
    <script>
238
        $(document).ready(function() {
259
        $(document).ready(function() {
239
            [% FOR st IN status %]
260
            [% FOR st IN status %]
Lines 262-268 Link Here
262
            [% END %]
283
            [% END %]
263
        });
284
        });
264
    </script>
285
    </script>
265
266
    [% INCLUDE 'select2.inc' %]
286
    [% INCLUDE 'select2.inc' %]
267
    [% Asset.js("js/modals/display_ticket.js") | $raw %]
287
    [% Asset.js("js/modals/display_ticket.js") | $raw %]
268
[% END %]
288
[% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_search.tt (-5 / +3 lines)
Lines 278-286 Link Here
278
    <script>
278
    <script>
279
        var table_settings = [% TablesSettings.GetTableSettings( 'cataloguing', 'z3950_search', 'resultst', 'json' ) | $raw %];
279
        var table_settings = [% TablesSettings.GetTableSettings( 'cataloguing', 'z3950_search', 'resultst', 'json' ) | $raw %];
280
    </script>
280
    </script>
281
282
    <script>
281
    <script>
283
        $(document).ready(function(){
282
        $(document).ready(function () {
284
            var thetable = $("#resultst").kohaTable(
283
            var thetable = $("#resultst").kohaTable(
285
                {
284
                {
286
                    columnDefs: [{ targets: [1], type: "nsb-nse" }],
285
                    columnDefs: [{ targets: [1], type: "nsb-nse" }],
Lines 293-300 Link Here
293
            InitLastAction();
292
            InitLastAction();
294
        });
293
        });
295
294
296
        function columnsInit(){
295
        function columnsInit() {
297
            $(".dataTables_info").text( $("#result_pagenumbers").text() );
296
            $(".dataTables_info").text($("#result_pagenumbers").text());
298
            $("#result_pagenumbers").hide();
297
            $("#result_pagenumbers").hide();
299
        }
298
        }
300
    </script>
299
    </script>
301
- 

Return to bug 41567