Bugzilla – Attachment 183250 Details for
Bug 39698
Add option to expand responsive datatable rows by default
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 39698: Add option to expand responsive datatable
Bug-39698-Add-option-to-expand-responsive-datatabl.patch (text/plain), 23.91 KB, created by
Jake Deery
on 2025-06-13 19:44:09 UTC
(
hide
)
Description:
Bug 39698: Add option to expand responsive datatable
Filename:
MIME Type:
Creator:
Jake Deery
Created:
2025-06-13 19:44:09 UTC
Size:
23.91 KB
patch
obsolete
>From 656db3095442f438d9a0770b2772b4125bca6179 Mon Sep 17 00:00:00 2001 >From: Jake Deery <jake.deery@openfifth.co.uk> >Date: Tue, 22 Apr 2025 09:45:35 +0100 >Subject: [PATCH] Bug 39698: Add option to expand responsive datatable > >This patch adds the 'OPACTableColExpandedByDefault' system preference, >disabled by default, which controls whether responsive datatable rows >are expanded or not. This work has been performed after recommendations >from a recent accessibility audit. > >TO TEST: >a) set 'OpacLocationBranchToDisplay' to both >b) search the OPAC for history, select first result >c) zoom your browser in to maxiumum, scroll down to holdings table > - notice how the rows are collapsed by default, with '+' visible >**apply patch** >e) refresh details page, notice how the behaviour is currently unchanged >f) change new 'OPACTableColExpandedByDefault' syspref to 'Expand' >g) return to OPAC details page, refresh, zoom in > - notice how the rows are now expanded by default, with '-' visible >**sign off** > >Signed-off-by: David Nind <david@davidnind.com> >--- > ..._add_syspref_for_responsive_opac_tables.pl | 19 +++++++++++++++ > installer/data/mysql/mandatory/sysprefs.sql | 1 + > .../en/modules/admin/preferences/opac.pref | 6 +++++ > .../bootstrap/en/modules/clubs/clubs-tab.tt | 12 +++++++++- > .../opac-authoritiessearchresultlist.tt | 12 +++++++++- > .../en/modules/opac-course-details.tt | 13 +++++++++- > .../en/modules/opac-course-reserves.tt | 13 +++++++++- > .../en/modules/opac-curbside-pickups.tt | 12 +++++++++- > .../bootstrap/en/modules/opac-detail.tt | 24 ++++++++++++++++--- > .../bootstrap/en/modules/opac-messaging.tt | 13 +++++++++- > .../en/modules/opac-readingrecord.tt | 12 +++++++++- > .../bootstrap/en/modules/opac-recalls.tt | 13 +++++++++- > .../en/modules/opac-search-history.tt | 13 +++++++++- > .../bootstrap/en/modules/opac-tags.tt | 7 ++++++ > .../bootstrap/en/modules/opac-topissues.tt | 7 ++++++ > .../bootstrap/en/modules/opac-user.tt | 12 +++++++++- > .../bootstrap/en/modules/sco/sco-main.tt | 7 ++++++ > 17 files changed, 183 insertions(+), 13 deletions(-) > create mode 100755 installer/data/mysql/atomicupdate/bug_39698_add_syspref_for_responsive_opac_tables.pl > >diff --git a/installer/data/mysql/atomicupdate/bug_39698_add_syspref_for_responsive_opac_tables.pl b/installer/data/mysql/atomicupdate/bug_39698_add_syspref_for_responsive_opac_tables.pl >new file mode 100755 >index 00000000000..0aab79db594 >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug_39698_add_syspref_for_responsive_opac_tables.pl >@@ -0,0 +1,19 @@ >+use Modern::Perl; >+ >+return { >+ bug_number => "xxxxx", >+ description => "Add system preferences for responsive OPAC tables", >+ up => sub { >+ my ($args) = @_; >+ my ( $dbh, $out ) = @$args{qw(dbh out)}; >+ >+ $dbh->do( >+ q{ >+ INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) >+ VALUES ('OPACTableColExpandedByDefault', '0', NULL, 'Determines whether or not table rows are expanded by default on mobile', 'YesNo'); >+ } >+ ); >+ say $out "Added OPACTableColExpandedByDefault syspref"; >+ >+ } >+}; >diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql >index 09b8afd6fd8..2a5073a097c 100644 >--- a/installer/data/mysql/mandatory/sysprefs.sql >+++ b/installer/data/mysql/mandatory/sysprefs.sql >@@ -581,6 +581,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` > ('OpacSuppression','0','','Turn ON the OPAC Suppression feature, requires further setup, ask your system administrator for details','YesNo'), > ('OpacSuppressionByIPRange','','','Restrict the suppression to IP adresses outside of the IP range','free'), > ('OpacSuppressionRedirect','1','Redirect the opac detail page for suppressed records to an explanatory page (otherwise redirect to 404 error page)','','YesNo'), >+('OPACTableColExpandedByDefault','0',NULL,'Determines whether or not table rows are expanded by default on mobile','YesNo'), > ('opacthemes','bootstrap','','Define the current theme for the OPAC interface.','Themes'), > ('OpacTopissue','0',NULL,'If ON, enables the \'most popular items\' link on OPAC. Warning, this is an EXPERIMENTAL feature, turning ON may overload your server','YesNo'), > ('OpacTrustedCheckout', '0', NULL, 'Allow logged in OPAC users to check out to themselves', 'YesNo'), >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref >index 5441fd7e118..ec4526e5c7a 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref >@@ -18,6 +18,12 @@ OPAC: > - pref: opacthemes > choices: opac-templates > - theme on the OPAC. >+ - >+ - pref: OPACTableColExpandedByDefault >+ choices: >+ 1: Expand >+ 0: Don't expand >+ - tables on the OPAC by default, when zoomed in or viewed on a mobile screen. > - > - Use the > - pref: OPACFallback >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/clubs/clubs-tab.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/clubs/clubs-tab.tt >index 818e363ea4c..5d4b9bbabaf 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/clubs/clubs-tab.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/clubs/clubs-tab.tt >@@ -96,6 +96,12 @@ > return false; > } > >+ [% IF ( Koha.Preference('OPACTableColExpandedByDefault') ) %] >+ var responsive_display = DataTable.Responsive.display.childRowImmediate; >+ [% ELSE %] >+ var responsive_display = DataTable.Responsive.display.childRow; >+ [% END %] >+ > var Tables = $("#clubs-table-enrolled,#clubs-table-unenrolled"); > Tables.each(function(){ > $(this).kohaTable({ >@@ -103,7 +109,11 @@ > paging: false, > info: false, > responsive: { >- details: { type: "column", target: -1 }, >+ details: { >+ display: responsive_display, >+ type: "column", >+ target: -1 >+ }, > }, > columnDefs: [ > { className: "dtr-control", orderable: false, targets: -1 }, >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-authoritiessearchresultlist.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-authoritiessearchresultlist.tt >index 65ea6ae7cee..8e8d6512b14 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-authoritiessearchresultlist.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-authoritiessearchresultlist.tt >@@ -121,12 +121,22 @@ > [% INCLUDE 'datatables.inc' %] > <script type="text/JavaScript"> > $(document).ready(function () { >+ [% IF ( Koha.Preference('OPACTableColExpandedByDefault') ) %] >+ var responsive_display = DataTable.Responsive.display.childRowImmediate; >+ [% ELSE %] >+ var responsive_display = DataTable.Responsive.display.childRow; >+ [% END %] >+ > $(".table").kohaTable({ > searching: false, > paging: false, > info: false, > responsive: { >- details: { type: "column", target: -1 }, >+ details: { >+ display: responsive_display, >+ type: "column", >+ target: -1 >+ }, > }, > columnDefs: [{ className: "dtr-control", orderable: false, targets: -1 }], > }); >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-course-details.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-course-details.tt >index 1c9056645c2..bc3a00a8599 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-course-details.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-course-details.tt >@@ -139,6 +139,13 @@ > <script> > $(document).ready(function() { > table_settings = [% TablesSettings.GetTableSettings( 'opac', 'course_items', 'course-items-table', 'json' ) | $raw %]; >+ >+ [% IF ( Koha.Preference('OPACTableColExpandedByDefault') ) %] >+ var responsive_display = DataTable.Responsive.display.childRowImmediate; >+ [% ELSE %] >+ var responsive_display = DataTable.Responsive.display.childRow; >+ [% END %] >+ > $("#course-items-table").kohaTable( > { > dom: '<"top"<"table_controls"f>>t', >@@ -148,7 +155,11 @@ > searchPlaceholder: _("Search course reserves"), > }, > responsive: { >- details: { type: "column", target: -1 }, >+ details: { >+ display: responsive_display, >+ type: "column", >+ target: -1 >+ }, > }, > columnDefs: [ > { className: "dtr-control", orderable: false, targets: -1 }, >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-course-reserves.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-course-reserves.tt >index 829205bde54..4cb6b5de3d1 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-course-reserves.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-course-reserves.tt >@@ -86,6 +86,13 @@ > <script> > $(document).ready(function() { > table_settings = [% TablesSettings.GetTableSettings( 'opac', 'course_list', 'course_reserves_table', 'json' ) | $raw %] >+ >+ [% IF ( Koha.Preference('OPACTableColExpandedByDefault') ) %] >+ var responsive_display = DataTable.Responsive.display.childRowImmediate; >+ [% ELSE %] >+ var responsive_display = DataTable.Responsive.display.childRow; >+ [% END %] >+ > $("#course_reserves_table").kohaTable( > { > dom: '<"top"<"table_controls"f>>rt<"clear">', >@@ -96,7 +103,11 @@ > searchPlaceholder: _("Search courses"), > }, > responsive: { >- details: { type: "column", target: -1 }, >+ details: { >+ display: responsive_display, >+ type: "column", >+ target: -1 >+ }, > }, > cColumnDefs: [ > { className: "dtr-control", orderable: false, targets: -1 }, >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-curbside-pickups.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-curbside-pickups.tt >index 56dd5df7ded..d6687685e87 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-curbside-pickups.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-curbside-pickups.tt >@@ -324,13 +324,23 @@ > existingPickupMoments[pickup.branchcode].push(pickupMoment); > }); > >+ [% IF ( Koha.Preference('OPACTableColExpandedByDefault') ) %] >+ var responsive_display = DataTable.Responsive.display.childRowImmediate; >+ [% ELSE %] >+ var responsive_display = DataTable.Responsive.display.childRow; >+ [% END %] >+ > $(document).ready(function() { > $("#pickups-table").kohaTable({ > searching: false, > paging: false, > info: false, > responsive: { >- details: { type: "column", target: -1 }, >+ details: { >+ display: responsive_display, >+ type: "column", >+ target: -1 >+ }, > }, > columnDefs: [{ className: "dtr-control", orderable: false, targets: -1 }], > }); >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt >index 2cfad9d451f..380bb5c2c6a 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt >@@ -1868,6 +1868,12 @@ > > var table_settings = [% TablesSettings.GetTableSettings( 'opac', 'biblio-detail', 'holdingst', 'json' ) | $raw %]; > >+ [% IF ( Koha.Preference('OPACTableColExpandedByDefault') ) %] >+ var responsive_display = DataTable.Responsive.display.childRowImmediate; >+ [% ELSE %] >+ var responsive_display = DataTable.Responsive.display.childRow; >+ [% END %] >+ > $("#holdingst").kohaTable( > { > dom: '<"clearfix">t', >@@ -1876,7 +1882,11 @@ > ], > bKohaColumnsUseNames: true, > responsive: { >- details: { type: "column", target: -1 }, >+ details: { >+ display: responsive_display, >+ type: "column", >+ target: -1 >+ }, > }, > }, > table_settings >@@ -1889,7 +1899,11 @@ > ], > bKohaColumnsUseNames: true, > responsive: { >- details: { type: "column", target: -1 }, >+ details: { >+ display: responsive_display, >+ type: "column", >+ target: -1 >+ }, > }, > }, > table_settings >@@ -1903,7 +1917,11 @@ > sorting: [[1, "desc"]], > bKohaColumnsUseNames: true, > responsive: { >- details: { type: "column", target: -1 }, >+ details: { >+ display: responsive_display, >+ type: "column", >+ target: -1 >+ }, > }, > columnDefs: [ > { className: "dtr-control", orderable: false, targets: -1 }, >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-messaging.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-messaging.tt >index 4c092e4e40b..8cc70c8e500 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-messaging.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-messaging.tt >@@ -408,12 +408,23 @@ > }, 100); > }); > } >+ >+ [% IF ( Koha.Preference('OPACTableColExpandedByDefault') ) %] >+ var responsive_display = DataTable.Responsive.display.childRowImmediate; >+ [% ELSE %] >+ var responsive_display = DataTable.Responsive.display.childRow; >+ [% END %] >+ > $(".table").kohaTable({ > searching: false, > paging: false, > info: false, > responsive: { >- details: { type: "column", target: -1 }, >+ details: { >+ display: responsive_display, >+ type: "column", >+ target: -1 >+ }, > }, > columnDefs: [{ className: "dtr-control", orderable: false, targets: -1 }], > }); >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-readingrecord.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-readingrecord.tt >index f3775159acb..f32ec60744f 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-readingrecord.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-readingrecord.tt >@@ -228,6 +228,12 @@ > $('#sortform').submit(); > }); > >+ [% IF ( Koha.Preference('OPACTableColExpandedByDefault') ) %] >+ var responsive_display = DataTable.Responsive.display.childRowImmediate; >+ [% ELSE %] >+ var responsive_display = DataTable.Responsive.display.childRow; >+ [% END %] >+ > var table = $("#readingrec").kohaTable( > { > dom: '<"top"<"table_entries"i><"table_controls"fB>>t', >@@ -236,7 +242,11 @@ > searchPlaceholder: _("Search"), > }, > responsive: { >- details: { type: "column", target: -1 }, >+ details: { >+ display: responsive_display, >+ type: "column", >+ target: -1 >+ }, > }, > columnDefs: [ > { className: "dtr-control", orderable: false, targets: [-1] }, >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recalls.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recalls.tt >index 8b2f4a6173b..36542cba2e0 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recalls.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recalls.tt >@@ -135,9 +135,20 @@ > $(".cancel_recall").click(function () { > return confirmDelete(_("Are you sure you want to remove this recall?")); > }); >+ >+ [% IF ( Koha.Preference('OPACTableColExpandedByDefault') ) %] >+ var responsive_display = DataTable.Responsive.display.childRowImmediate; >+ [% ELSE %] >+ var responsive_display = DataTable.Responsive.display.childRow; >+ [% END %] >+ > $("#recalls-table").kohaTable({ > responsive: { >- details: { type: "column", target: -1 }, >+ details: { >+ display: responsive_display, >+ type: "column", >+ target: -1 >+ }, > }, > columnDefs: [{ className: "dtr-control", orderable: false, targets: -1 }], > }); >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-search-history.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-search-history.tt >index ffd3c69649a..23013376f77 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-search-history.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-search-history.tt >@@ -296,6 +296,13 @@ > $(document).ready(function () { > // We show table ordered by descending dates by default > // (so that the more recent query is shown first) >+ >+ [% IF ( Koha.Preference('OPACTableColExpandedByDefault') ) %] >+ var responsive_display = DataTable.Responsive.display.childRowImmediate; >+ [% ELSE %] >+ var responsive_display = DataTable.Responsive.display.childRow; >+ [% END %] >+ > let history_tables = $(".historyt").kohaTable({ > order: [[1, "desc"]], > dom: '<"top"<"table_entries"><"table_controls"fB>>t', >@@ -305,7 +312,11 @@ > searchPlaceholder: _("Search"), > }, > responsive: { >- details: { type: "column", target: -1 }, >+ details: { >+ display: responsive_display, >+ type: "column", >+ target: -1 >+ }, > }, > }); > >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-tags.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-tags.tt >index cb7a27db39e..2fdec4bb74e 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-tags.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-tags.tt >@@ -295,6 +295,12 @@ > } > }); > >+ [% IF ( Koha.Preference('OPACTableColExpandedByDefault') ) %] >+ var responsive_display = DataTable.Responsive.display.childRowImmediate; >+ [% ELSE %] >+ var responsive_display = DataTable.Responsive.display.childRow; >+ [% END %] >+ > $("#mytagst").kohaTable({ > sorting: [[2, "asc"]], > columnDefs: [ >@@ -303,6 +309,7 @@ > ], > responsive: { > details: { >+ display: responsive_display, > type: "column", > target: -1, > }, >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-topissues.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-topissues.tt >index 407fc2f4d46..af5d856dc27 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-topissues.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-topissues.tt >@@ -147,11 +147,18 @@ > [% INCLUDE 'datatables.inc' %] > <script> > $(function () { >+ [% IF ( Koha.Preference('OPACTableColExpandedByDefault') ) %] >+ var responsive_display = DataTable.Responsive.display.childRowImmediate; >+ [% ELSE %] >+ var responsive_display = DataTable.Responsive.display.childRow; >+ [% END %] >+ > $("#topissuest").kohaTable({ > sorting: [[3, "desc"]], > columnDefs: [{ className: "dtr-control", orderable: false, targets: -1 }], > responsive: { > details: { >+ display: responsive_display, > type: "column", > target: -1, > }, >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >index dc23fea4162..a8261a31b21 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >@@ -1246,6 +1246,12 @@ > }); > }); > >+ [% IF ( Koha.Preference('OPACTableColExpandedByDefault') ) %] >+ var responsive_display = DataTable.Responsive.display.childRowImmediate; >+ [% ELSE %] >+ var responsive_display = DataTable.Responsive.display.childRow; >+ [% END %] >+ > var dataTables = $("#recalls-table,#article-requests-table"); > dataTables.each(function(){ > $(this).kohaTable({ >@@ -1253,7 +1259,11 @@ > paging: false, > info: false, > responsive: { >- details: { type: "column", target: -1 }, >+ details: { >+ display: responsive_display, >+ type: "column", >+ target: -1 >+ }, > }, > columnDefs: [{ className: "dtr-control", orderable: false, targets: -1 }], > }); >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/sco/sco-main.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/sco/sco-main.tt >index 486b442fcd7..d0a4e031313 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/sco/sco-main.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/sco/sco-main.tt >@@ -482,6 +482,12 @@ > $(document).ready(function() { > dofocus(); > >+ [% IF ( Koha.Preference('OPACTableColExpandedByDefault') ) %] >+ var responsive_display = DataTable.Responsive.display.childRowImmediate; >+ [% ELSE %] >+ var responsive_display = DataTable.Responsive.display.childRow; >+ [% END %] >+ > var dTables = $("#loanTable, #holdst, #finestable"); > dTables.each(function(){ > var thIndex = $(this).find("th.psort").index(); >@@ -499,6 +505,7 @@ > }, > responsive: { > details: { >+ display: responsive_display, > type: "column", > target: -1, > }, >-- >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 39698
:
181288
|
181560
|
181561
| 183250