Bugzilla – Attachment 191110 Details for
Bug 41567
Tidy kohaTable block - cataloguing
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 41567: cataloguing - auto tidy
e06f1d9.patch (text/plain), 23.45 KB, created by
Jonathan Druart
on 2026-01-09 14:46:38 UTC
(
hide
)
Description:
Bug 41567: cataloguing - auto tidy
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2026-01-09 14:46:38 UTC
Size:
23.45 KB
patch
obsolete
>From e06f1d9685994b972e92b0d27cedc49126be9b46 Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Fri, 9 Jan 2026 13:11:32 +0100 >Subject: [PATCH] Bug 41567: cataloguing - auto tidy > >--- > .../prog/en/modules/cataloguing/addbooks.tt | 36 ++- > .../prog/en/modules/cataloguing/concerns.tt | 280 ++++++++++-------- > .../en/modules/cataloguing/z3950_search.tt | 7 +- > 3 files changed, 170 insertions(+), 153 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbooks.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbooks.tt >index e8263ba12c5..052b5cc1bc2 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbooks.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbooks.tt >@@ -330,48 +330,47 @@ > const biblionumber = "[% biblionumber | html %]"; > var logged_in_user_borrowernumber = "[% logged_in_user.borrowernumber | html %]"; > </script> >- > <script> >- $(document).ready(function() { >+ $(document).ready(function () { > //Set focus to cataloging search > $("input[name=q]:eq(0)").focus(); > >- $("#newRecord").click(function(){ >+ $("#newRecord").click(function () { > var url = $("a#newRecordDefault").prop("href"); > window.location.href = url; > return false; > }); > >- $("#z3950search").click(function(){ >+ $("#z3950search").click(function () { > PopupZ3950("Default"); > return false; > }); > >- $(".z3950searchFw").click(function(){ >- PopupZ3950($(this).prop('id')); >+ $(".z3950searchFw").click(function () { >+ PopupZ3950($(this).prop("id")); > return false; > }); >- $(".merge-items").on("click",function(e){ >+ $(".merge-items").on("click", function (e) { > e.preventDefault(); > MergeItems(); > }); > >- $("#useadvanced").click(function(){ >- Cookies.set( `catalogue_editor_${logged_in_user_borrowernumber}`, "advanced", { expires: 365, path: '/', sameSite: 'Lax' } ); >+ $("#useadvanced").click(function () { >+ Cookies.set(`catalogue_editor_${logged_in_user_borrowernumber}`, "advanced", { expires: 365, path: "/", sameSite: "Lax" }); > return true; > }); > >- $(".previewData").on("click", function(e){ >+ $(".previewData").on("click", function (e) { > e.preventDefault(); > var ltitle = $(this).text(); > var page = $(this).attr("href"); > $("#dataPreviewLabel").text(ltitle); > $("#dataPreview .modal-body").load(page + " div"); >- $('#dataPreview').modal("show"); >+ $("#dataPreview").modal("show"); > }); >- $("#dataPreview").on("hidden.bs.modal", function(){ >+ $("#dataPreview").on("hidden.bs.modal", function () { > $("#dataPreviewLabel").html(""); >- $("#dataPreview .modal-body").html("<div id=\"loading\"><img src=\"" + interface + "/" + theme + "/img/spinner-small.gif\" alt=\"\" /> "+_("Loading")+"</div>"); >+ $("#dataPreview .modal-body").html('<div id="loading"><img src="' + interface + "/" + theme + '/img/spinner-small.gif" alt="" /> ' + _("Loading") + "</div>"); > }); > > var reservoirt = $("#reservoir-table").kohaTable( >@@ -385,8 +384,8 @@ > /* this function open a popup to search on z3950 server. */ > function PopupZ3950(fw) { > var strQuery = GetZ3950Terms(fw); >- if(strQuery){ >- 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'); >+ if (strQuery) { >+ 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"); > } > } > >@@ -399,16 +398,15 @@ > alert(_("At least two records must be selected for merging.")); > } else { > var params = []; >- $(checkboxes).each(function() { >- params.push('biblionumber=' + $(this).val()); >+ $(checkboxes).each(function () { >+ params.push("biblionumber=" + $(this).val()); > }); >- var url = '/cgi-bin/koha/cataloguing/merge.pl?' + params.join('&'); >+ var url = "/cgi-bin/koha/cataloguing/merge.pl?" + params.join("&"); > location.href = url; > } > return false; > } > </script> >- > <script> > /* provide Z3950 search points */ > function GetZ3950Terms(fw){ >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/concerns.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/concerns.tt >index 48191822e3f..b571eaf02d0 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/concerns.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/concerns.tt >@@ -68,172 +68,193 @@ > > var table_settings = [% TablesSettings.GetTableSettings('cataloguing', 'concerns', 'table_concerns', 'json') | $raw %]; > </script> >- > <script> >- $(document).ready(function() { >+ $(document).ready(function () { > let additional_filters = { >- resolved_date: function(){ >- if ( $("#hide_resolved_concerns").is(":checked") ) { >+ resolved_date: function () { >+ if ($("#hide_resolved_concerns").is(":checked")) { > return { "=": null }; > } else { > return; > } > }, >- source: 'catalog' >+ source: "catalog", > }; > let external_filter_nodes = { > hide_resolved_concerns: "#hide_resolved_concerns", > }; > >- var tickets_url = '/api/v1/tickets'; >- var tickets = $("#table_concerns").kohaTable({ >- ajax: { >- "url": tickets_url >- }, >- embed: [ >- "assignee", >- "reporter", >- "resolver", >- "biblio", >- "updates+count", >- "+strings" >- ], >- emptyTable: '<div class="alert alert-info">' + _("Congratulations, there are no catalog concerns.") + '</div>', >- columnDefs: [{ >- targets: [0, 1, 2, 3], >- render: function(data, type, row, meta) { >- if (type == 'display') { >- if (data != null) { >- return data.escapeHtml(); >- } else { >- return ""; >- } >- } >- return data; >- } >- }], >- columns: [{ >- data: "reported_date:reporter.firstname", >- render: function(data, type, row, meta) { >- let reported = '<div class="d-flex justify-content-between align-items-start">'; >- reported += '<span class="reporter">' + $patron_to_html(row.reporter, { >- display_cardnumber: false, >- url: true >- }) + '</span>'; >- reported += '<span class="date text-muted">' + $datetime(row.reported_date) + '</span>'; >- reported += '</div>'; >- return reported; >- }, >- searchable: true, >- orderable: true >+ var tickets_url = "/api/v1/tickets"; >+ var tickets = $("#table_concerns").kohaTable( >+ { >+ ajax: { >+ url: tickets_url, > }, >- { >- data: "title:body", >- render: function(data, type, row, meta) { >- let result = '<div class="d-flex justify-content-between align-items-start">'; >+ embed: ["assignee", "reporter", "resolver", "biblio", "updates+count", "+strings"], >+ emptyTable: '<div class="alert alert-info">' + _("Congratulations, there are no catalog concerns.") + "</div>", >+ columnDefs: [ >+ { >+ targets: [0, 1, 2, 3], >+ render: function (data, type, row, meta) { >+ if (type == "display") { >+ if (data != null) { >+ return data.escapeHtml(); >+ } else { >+ return ""; >+ } >+ } >+ return data; >+ }, >+ }, >+ ], >+ columns: [ >+ { >+ data: "reported_date:reporter.firstname", >+ render: function (data, type, row, meta) { >+ let reported = '<div class="d-flex justify-content-between align-items-start">'; >+ reported += >+ '<span class="reporter">' + >+ $patron_to_html(row.reporter, { >+ display_cardnumber: false, >+ url: true, >+ }) + >+ "</span>"; >+ reported += '<span class="date text-muted">' + $datetime(row.reported_date) + "</span>"; >+ reported += "</div>"; >+ return reported; >+ }, >+ searchable: true, >+ orderable: true, >+ }, >+ { >+ data: "title:body", >+ render: function (data, type, row, meta) { >+ let result = '<div class="d-flex justify-content-between align-items-start">'; > >- // Title link on the left >- result += '<a id="title_' + row.ticket_id + '" role="button" href="#" class="detail-trigger">' + row.title + '</a>'; >+ // Title link on the left >+ result += '<a id="title_' + row.ticket_id + '" role="button" href="#" class="detail-trigger">' + row.title + "</a>"; > >- // Updates count on the right, if it exists >- if (row.updates_count) { >- result += '<span><a role="button" href="#" class="detail-trigger"><i class="fa fa-comment" aria-hidden="true"></i> ' + row.updates_count + '</a></span>'; >- } >+ // Updates count on the right, if it exists >+ if (row.updates_count) { >+ result += '<span><a role="button" href="#" class="detail-trigger"><i class="fa fa-comment" aria-hidden="true"></i> ' + row.updates_count + "</a></span>"; >+ } > >- // Hidden detail content >- result += '</div>'; >- result += '<div id="detail_' + row.ticket_id + '" style="display:none">' + row.body + '</div>'; >+ // Hidden detail content >+ result += "</div>"; >+ result += '<div id="detail_' + row.ticket_id + '" style="display:none">' + row.body + "</div>"; > >- return result; >+ return result; >+ }, >+ searchable: true, >+ orderable: true, > }, >- searchable: true, >- orderable: true >- }, >- { >- data: "biblio.title", >- render: function(data, type, row, meta) { >- return $biblio_to_html(row.biblio, { >- link: 1 >- }); >+ { >+ data: "biblio.title", >+ render: function (data, type, row, meta) { >+ return $biblio_to_html(row.biblio, { >+ link: 1, >+ }); >+ }, >+ searchable: true, >+ orderable: true, > }, >- searchable: true, >- orderable: true >- }, >- { >- data: "assignee.firstname:assignee.surname:resolver.firstname:resolver.surname:resolved_date:status", >- render: function(data, type, row, meta) { >- let result = ''; >- if (row.resolved_date) { >- result += "<div>"; >- result += _("Resolved by") + ' <span>' + $patron_to_html(row.resolver, { >- display_cardnumber: false, >- url: true >- }) + '</span>'; >- result += "</div>"; >- if (row.status) { >- result += '<div>'; >- result += ' ' + _("as") + ' '; >- result += row._strings.status ? escape_str(row._strings.status.str) : ""; >- result += '</div>'; >- } >- result += '<div>' + $datetime(row.resolved_date) + '</div>'; >- } else { >- result += '<div>'; >- if (row.status) { >- result += row._strings.status ? escape_str(row._strings.status.str) : ""; >+ { >+ data: "assignee.firstname:assignee.surname:resolver.firstname:resolver.surname:resolved_date:status", >+ render: function (data, type, row, meta) { >+ let result = ""; >+ if (row.resolved_date) { >+ result += "<div>"; >+ result += >+ _("Resolved by") + >+ " <span>" + >+ $patron_to_html(row.resolver, { >+ display_cardnumber: false, >+ url: true, >+ }) + >+ "</span>"; >+ result += "</div>"; >+ if (row.status) { >+ result += "<div>"; >+ result += " " + _("as") + " "; >+ result += row._strings.status ? escape_str(row._strings.status.str) : ""; >+ result += "</div>"; >+ } >+ result += "<div>" + $datetime(row.resolved_date) + "</div>"; > } else { >- result += _("Open"); >- } >- result += '</div>'; >- if (row.assignee) { >- result += '<div>'; >- result += _("Assigned to: ") + ' <span>' + $patron_to_html(row.assignee, { >- display_cardnumber: false, >- url: true >- }) + '</span>'; >- result += '</div>'; >+ result += "<div>"; >+ if (row.status) { >+ result += row._strings.status ? escape_str(row._strings.status.str) : ""; >+ } else { >+ result += _("Open"); >+ } >+ result += "</div>"; >+ if (row.assignee) { >+ result += "<div>"; >+ result += >+ _("Assigned to: ") + >+ " <span>" + >+ $patron_to_html(row.assignee, { >+ display_cardnumber: false, >+ url: true, >+ }) + >+ "</span>"; >+ result += "</div>"; >+ } > } >- } >- return result; >+ return result; >+ }, >+ searchable: true, >+ orderable: true, > }, >- searchable: true, >- orderable: true >- }, >- { >- data: function(row, type, val, meta) { >- let resolved = ( row.resolved_date ) ? true : false; >- 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>'; >- return result; >+ { >+ data: function (row, type, val, meta) { >+ let resolved = row.resolved_date ? true : false; >+ 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>"; >+ return result; >+ }, >+ searchable: false, >+ orderable: false, > }, >- searchable: false, >- orderable: false >+ ], >+ createdRow: function (row, data, dataIndex) { >+ if (data.status) { >+ $(row).addClass(data.status.toLowerCase()); >+ } > }, >- ], >- createdRow: function (row, data, dataIndex) { >- if ( data.status ) { >- $(row).addClass(data.status.toLowerCase()); >- } > }, >- }, table_settings, 1, additional_filters, undefined, external_filter_nodes); >+ table_settings, >+ 1, >+ additional_filters, >+ undefined, >+ external_filter_nodes >+ ); > > var txtActivefilter = _("Include resolved"); > var txtInactivefilter = _("Filter resolved"); >- function adjust_filter_label(){ >- if ($("#hide_resolved_concerns").is(":checked")){ >- $("#resolved_filter").html('<i class="fa fa-filter"></i> '+txtActivefilter); >+ function adjust_filter_label() { >+ if ($("#hide_resolved_concerns").is(":checked")) { >+ $("#resolved_filter").html('<i class="fa fa-filter"></i> ' + txtActivefilter); > } else { >- $("#resolved_filter").html('<i class="fa fa-bars"></i> '+txtInactivefilter); >+ $("#resolved_filter").html('<i class="fa fa-bars"></i> ' + txtInactivefilter); > } > } >- $('#resolved_filter').on("click", function() { >+ $("#resolved_filter").on("click", function () { > $("#hide_resolved_concerns").prop("checked", !$("#hide_resolved_concerns").is(":checked")); >- adjust_filter_label() >+ adjust_filter_label(); > tickets.DataTable().draw(); > }); > adjust_filter_label(); > }); > </script> >- > <script> > $(document).ready(function() { > [% FOR st IN status %] >@@ -262,7 +283,6 @@ > [% END %] > }); > </script> >- > [% INCLUDE 'select2.inc' %] > [% Asset.js("js/modals/display_ticket.js") | $raw %] > [% END %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_search.tt >index 459eb60241a..b0000c1a4a1 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_search.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_search.tt >@@ -278,9 +278,8 @@ > <script> > var table_settings = [% TablesSettings.GetTableSettings( 'cataloguing', 'z3950_search', 'resultst', 'json' ) | $raw %]; > </script> >- > <script> >- $(document).ready(function(){ >+ $(document).ready(function () { > var thetable = $("#resultst").kohaTable( > { > columnDefs: [{ targets: [1], type: "nsb-nse" }], >@@ -293,8 +292,8 @@ > InitLastAction(); > }); > >- function columnsInit(){ >- $(".dataTables_info").text( $("#result_pagenumbers").text() ); >+ function columnsInit() { >+ $(".dataTables_info").text($("#result_pagenumbers").text()); > $("#result_pagenumbers").hide(); > } > </script> >-- >2.43.0 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 41567
:
191107
|
191108
|
191109
|
191110
|
191362
|
191363
|
191364
|
191365