Bugzilla – Attachment 173448 Details for
Bug 33484
Ability to remember user's selected table configuration and search filters for tables
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 33484: Add save state option to table settings
Bug-33484-Add-save-state-option-to-table-settings.patch (text/plain), 10.36 KB, created by
Jonathan Druart
on 2024-10-28 09:44:37 UTC
(
hide
)
Description:
Bug 33484: Add save state option to table settings
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2024-10-28 09:44:37 UTC
Size:
10.36 KB
patch
obsolete
>From 5a4e7ffa98766eba09108133f9a0659abcd17c3b Mon Sep 17 00:00:00 2001 >From: Martin Renvoize <martin.renvoize@ptfs-europe.com> >Date: Wed, 19 Apr 2023 18:03:05 +0100 >Subject: [PATCH] Bug 33484: Add save state option to table settings > >Amended-by: Jonathan Druart >Drop changes to admin/columns_settings.yml to avoid conflict. Just >assume that 1 is the default (see next patch) >Add +x to atomicupdate > >Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com> >Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> >--- > C4/Utils/DataTables/TablesSettings.pm | 11 ++++++++--- > admin/columns_settings.pl | 5 ++++- > installer/data/mysql/atomicupdate/bug_33484.pl | 17 +++++++++++++++++ > installer/data/mysql/kohastructure.sql | 1 + > .../prog/en/includes/columns_settings.inc | 4 ++++ > .../prog/en/modules/admin/columns_settings.tt | 10 ++++++++++ > koha-tmpl/intranet-tmpl/prog/js/datatables.js | 3 +++ > t/db_dependent/TablesSettings.t | 4 ++++ > 8 files changed, 51 insertions(+), 4 deletions(-) > create mode 100755 installer/data/mysql/atomicupdate/bug_33484.pl > >diff --git a/C4/Utils/DataTables/TablesSettings.pm b/C4/Utils/DataTables/TablesSettings.pm >index 71ec3f3f7b4..28e1b257c54 100644 >--- a/C4/Utils/DataTables/TablesSettings.pm >+++ b/C4/Utils/DataTables/TablesSettings.pm >@@ -103,7 +103,9 @@ sub get_table_settings { > default_display_length => $rs ? $rs->default_display_length > : $list->{modules}{$module}{$page}{$tablename}{default_display_length}, > default_sort_order => $rs ? $rs->default_sort_order >- : $list->{modules}{$module}{$page}{$tablename}{default_sort_order} >+ : $list->{modules}{$module}{$page}{$tablename}{default_sort_order}, >+ default_save_state => $rs ? $rs->default_save_state >+ : $list->{modules}{$module}{$page}{$tablename}{default_save_state}, > }; > } > >@@ -153,10 +155,11 @@ sub update_columns { > C4::Utils::DataTables::TablesSettings::update_table_settings( > { > module => $module, >- pag => $page, >+ page => $page, > tablename => $tablename, > default_display_length => $default_display_length, >- default_sort_order => $default_sort_order >+ default_sort_order => $default_sort_order, >+ default_save_state => $default_save_state, > } > ); > >@@ -171,6 +174,7 @@ sub update_table_settings { > my $tablename = $params->{tablename}; > my $default_display_length = $params->{default_display_length}; > my $default_sort_order = $params->{default_sort_order}; >+ my $default_save_state = $params->{default_save_state}; > > my $schema = Koha::Database->new->schema; > >@@ -181,6 +185,7 @@ sub update_table_settings { > tablename => $tablename, > default_display_length => $default_display_length, > default_sort_order => $default_sort_order, >+ default_save_state => $default_save_state, > } > ); > } >diff --git a/admin/columns_settings.pl b/admin/columns_settings.pl >index 96d591d7bb1..02e563882f2 100755 >--- a/admin/columns_settings.pl >+++ b/admin/columns_settings.pl >@@ -50,11 +50,13 @@ if ( $op eq 'cud-save' ) { > next unless $table_id =~ m{^([^\|]*)\|(.*)$}; > my $default_display_length = $input->param( $table_id . '_default_display_length' ); > my $default_sort_order = $input->param( $table_id . '_default_sort_order' ); >+ my $default_save_state = $input->param( $table_id . '_default_save_state' ); > > undef $default_display_length if defined $default_display_length && $default_display_length eq ""; > undef $default_sort_order if defined $default_sort_order && $default_sort_order eq ""; >+ $default_save_state = 0 if !defined($default_save_state); > >- if ( defined $default_display_length || defined $default_sort_order ) >+ if ( defined $default_display_length || defined $default_sort_order || defined $default_save_state ) > { > C4::Utils::DataTables::TablesSettings::update_table_settings( > { >@@ -63,6 +65,7 @@ if ( $op eq 'cud-save' ) { > tablename => $2, > default_display_length => $default_display_length, > default_sort_order => $default_sort_order, >+ default_save_state => $default_save_state, > } > ); > } >diff --git a/installer/data/mysql/atomicupdate/bug_33484.pl b/installer/data/mysql/atomicupdate/bug_33484.pl >new file mode 100755 >index 00000000000..6107368cb95 >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug_33484.pl >@@ -0,0 +1,17 @@ >+use Modern::Perl; >+ >+return { >+ bug_number => "33484", >+ description => "Add state save as an option to datatables", >+ up => sub { >+ my ($args) = @_; >+ my ($dbh, $out) = @$args{qw(dbh out)}; >+ if ( !column_exists( 'tables_settings', 'default_save_state' ) ) { >+ $dbh->do(q{ >+ ALTER TABLE tables_settings >+ ADD COLUMN default_save_state tinyint(1) DEFAULT NULL AFTER default_sort_order >+ }); >+ say $out "Added column 'tables_settings.default_save_state'"; >+ } >+ }, >+}; >diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql >index 49c1aeb59d3..6597b126506 100644 >--- a/installer/data/mysql/kohastructure.sql >+++ b/installer/data/mysql/kohastructure.sql >@@ -6238,6 +6238,7 @@ CREATE TABLE `tables_settings` ( > `tablename` varchar(255) NOT NULL, > `default_display_length` smallint(6) DEFAULT NULL, > `default_sort_order` varchar(255) DEFAULT NULL, >+ `default_save_state` tinyint(1) DEFAULT NULL, > PRIMARY KEY (`module`(191),`page`(191),`tablename`(191)) > ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; > /*!40101 SET character_set_client = @saved_cs_client */; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/columns_settings.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/columns_settings.inc >index 1e45ef30f5d..e3f98e6d176 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/columns_settings.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/columns_settings.inc >@@ -45,6 +45,10 @@ function KohaTable(id_selector, dt_parameters, table_settings, add_filters) { > } > counter++; > }); >+ >+ if ( table_settings.hasOwnProperty('default_save_state') && table_settings['default_save_state'] === 0 ) { >+ localStorage.removeItem(table_key); >+ } > } > > var exportColumns = ":visible:not(.noExport)"; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/columns_settings.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/columns_settings.tt >index 28a3b2a0ead..5f1827740ce 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/columns_settings.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/columns_settings.tt >@@ -148,6 +148,16 @@ > </select> > </p> > [% END %] >+ [% IF table_settings.default_save_state.defined %] >+ <p> >+ Save state on page change: >+ [%- IF table_settings.default_save_state -%] >+ <input type="checkbox" name="[% pagename | html %]#[% tablename | html %]_default_save_state" value="1" checked="checked" /> >+ [%- ELSE -%] >+ <input type="checkbox" name="[% pagename | html %]#[% tablename | html %]_default_save_state" value="1" /> >+ [%- END -%] >+ </p> >+ [% END %] > > </div> > [% END %] >diff --git a/koha-tmpl/intranet-tmpl/prog/js/datatables.js b/koha-tmpl/intranet-tmpl/prog/js/datatables.js >index 38a7fe7f79a..a66ed803ab3 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/datatables.js >+++ b/koha-tmpl/intranet-tmpl/prog/js/datatables.js >@@ -1035,6 +1035,9 @@ function _dt_get_saved_state( localstorage_config, columns_settings ){ > if ( table_settings.hasOwnProperty('default_sort_order') && table_settings['default_sort_order'] != null ) { > settings["order"] = [[ table_settings['default_sort_order'], 'asc' ]]; > } >+ if ( table_settings.hasOwnProperty('default_save_state') && table_settings['default_save_state'] === 0 ) { >+ localStorage.removeItem(table_key); >+ } > } > > var table = $(this).dataTable(settings); >diff --git a/t/db_dependent/TablesSettings.t b/t/db_dependent/TablesSettings.t >index 97121093b4f..ab7593ba1f5 100755 >--- a/t/db_dependent/TablesSettings.t >+++ b/t/db_dependent/TablesSettings.t >@@ -25,6 +25,7 @@ $module->mock( > 'currencies-table' => { > default_display_length => 20, > default_sort_order => 1, >+ default_save_state => 1, > columns => [ > { > columnname => 'currency', >@@ -125,6 +126,7 @@ my $modules_expected = { > 'currencies-table' => { > default_display_length => 20, > default_sort_order => 1, >+ default_save_state => 1, > columns => [ > { > columnname => 'currency', >@@ -192,10 +194,12 @@ for my $m ( keys %$modules ) { > { > default_display_length => $table_settings->{default_display_length}, > default_sort_order => $table_settings->{default_sort_order} >+ default_save_state => $table_settings->{default_save_state} > }, > { > default_display_length => $modules->{$m}{$p}{$t}{default_display_length}, > default_sort_order => $modules->{$m}{$p}{$t}{default_sort_order}, >+ default_save_state => $modules->{$m}{$p}{$t}{default_save_state}, > } > ); > } >-- >2.34.1
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 33484
:
149444
|
149445
|
149447
|
149448
|
149449
|
149925
|
149926
|
149927
|
149928
|
149929
|
149930
|
149974
|
149975
|
149976
|
149977
|
149978
|
149979
|
173443
|
173444
|
173445
|
173446
|
173447
| 173448 |
173449
|
173450
|
173451
|
173452
|
173453
|
173454
|
173455
|
173456
|
173457
|
173458
|
173459
|
173460
|
173461
|
173462
|
173463
|
173464
|
173465
|
173466
|
173467
|
173468
|
173469
|
173470
|
173471
|
173472
|
173473
|
173474
|
173475
|
173476
|
173477
|
173478
|
173479
|
173480
|
173481
|
173482
|
173483
|
173484
|
173485
|
173486
|
173546
|
173606
|
173607
|
173985
|
174219