From 2be3e079708e5beb0453e3534a9098af710cb3e5 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 16 Dec 2021 11:50:58 +0100 Subject: [PATCH] Bug 29648: Move NumSavedReports to the table settings The syspref NumSavedReports can be moved to the table settings config Test plan: 1. Set the syspref to a given value 2. updatedatabase # execute the atomic update 3. Go to the table settings page and confirm that the syspref's value has been retrieved 4. Select a specific colonne for the default sort 5. Go to the report list view and confirm that the "Show X entries" has the correct selected value and that the table is sorted as you expect. Signed-off-by: Owen Leonard Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer Signed-off-by: Fridolin Somers --- admin/columns_settings.yml | 2 + .../data/mysql/atomicupdate/bug_29648.pl | 23 ++++++++ installer/data/mysql/mandatory/sysprefs.sql | 1 - .../prog/en/includes/columns_settings.inc | 4 +- .../modules/reports/guided_reports_start.tt | 53 +------------------ 5 files changed, 29 insertions(+), 54 deletions(-) create mode 100755 installer/data/mysql/atomicupdate/bug_29648.pl diff --git a/admin/columns_settings.yml b/admin/columns_settings.yml index 1a91d8c6f5..f6680f92c8 100644 --- a/admin/columns_settings.yml +++ b/admin/columns_settings.yml @@ -1055,6 +1055,8 @@ modules: saved-sql: table_reports: + default_display_length: 20 + default_sort_order: 0 columns: - columnname: selection diff --git a/installer/data/mysql/atomicupdate/bug_29648.pl b/installer/data/mysql/atomicupdate/bug_29648.pl new file mode 100755 index 0000000000..35358ce795 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_29648.pl @@ -0,0 +1,23 @@ +use Modern::Perl; + +return { + bug_number => "29648", + description => "Move NumSavedReports to table settings", + up => sub { + my ($args) = @_; + my ($dbh, $out) = @$args{qw(dbh out)}; + + my $NumSavedReports = C4::Context->preference('NumSavedReports'); + $dbh->do(q{ + DELETE FROM systempreferences + WHERE variable="NumSavedReports" + }); + + if ( $NumSavedReports ) { + $dbh->do(q{ + INSERT IGNORE INTO tables_settings (module, page, tablename, default_display_length, default_sort_order) + VALUES('reports', 'saved-sql', 'table_reports', ?, 1) + }, undef, $NumSavedReports); + } + }, +} diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql index 1b029aa5ee..c6d0fd49e9 100644 --- a/installer/data/mysql/mandatory/sysprefs.sql +++ b/installer/data/mysql/mandatory/sysprefs.sql @@ -378,7 +378,6 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('NovelistSelectView','tab','tab|above|below|right','Where to display Novelist Select content','Choice'), ('NumberOfSuggestionDays','',NULL,'Number of days that will be used to determine the MaxTotalSuggestions limit','Free'), ('numReturnedItemsToShow','20',NULL,'Number of returned items to show on the check-in page','Integer'), -('NumSavedReports', '20', NULL, 'By default, show this number of saved reports.', 'Integer'), ('numSearchResults','20',NULL,'Specify the maximum number of results to display on a page of results','Integer'), ('numSearchResultsDropdown', 0, NULL, 'Enable option list of number of results per page to show in staff interface search results','YesNo'), ('numSearchRSSResults','50',NULL,'Specify the maximum number of results to display on a RSS page of results','Integer'), 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 4d61b10534..8eca9c2f23 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/columns_settings.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/columns_settings.inc @@ -184,10 +184,10 @@ function KohaTable(id_selector, dt_parameters, table_settings, add_filters) { }); } - if ( table_settings.hasOwnProperty('default_display_length') ) { + if ( table_settings.hasOwnProperty('default_display_length') && table_settings['default_display_length'] != null ) { new_parameters["pageLength"] = table_settings['default_display_length']; } - if ( table_settings.hasOwnProperty('default_sort_order') ) { + if ( table_settings.hasOwnProperty('default_sort_order') && table_settings['default_sort_order'] != null ) { new_parameters["order"] = [[ table_settings['default_sort_order'], 'asc' ]]; } diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt index 675a911cfa..5cfbcae66a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt @@ -1680,53 +1680,6 @@ } } - /** - * Process the value of the NumSavedReports system preference for use as - a DataTable pageLenth option - * @param {string} pageLength - The value of the NumSavedReports system - preference, passed via the template during table initiation - * @return {number} - The number of results to show by default in the - DataTable (-1 for "all") - */ - function getPageLength( pageLength ){ - if( pageLength !== "" ){ - if( Number( pageLength ) > 0 ){ - return Number( pageLength ); - } else { - return 20; /* Negative or non-numeric value passed. Use default 20 */ - } - } else { - return -1; - } - } - - /** - * Rebuild the DataTable's lengthMenu array, adding the value of the NumSavedReports - system preference - * @param {string} pageLength - The value of the NumSavedReports system - preference, passed via the template during table initiation - * @return {Array} - An array of two arrays: 1. The numeric values for - options in the pageLenth ; - */ - function buildLengthMenu( num ){ - var lengthMenu = dataTablesDefaults.lengthMenu; - var pageLength = getPageLength( num ); - if( !lengthMenu[0].includes( pageLength ) ){ - /* extend lengthMenu with custom value */ - lengthMenu.forEach( function( item ){ - item.pop(); /* Remove the last entry, "all" */ - item.push( Number( pageLength ) ); /* Add the value from NumSavedReports */ - item.sort(function( a, b ){ /* Re-sort the values */ - return a - b; - }); - }); - lengthMenu[0].push(-1); /* Add the numeric "all" option */ - lengthMenu[1].push( _("All") ); /* Add the textual "all" option */ - } - return lengthMenu; - } - $(document).ready(function(){ var activeTab = localStorage.getItem("sql_reports_activetab"); @@ -1851,7 +1804,6 @@ [% END %] $('[data-toggle="tooltip"]').tooltip(); - var columns_settings = [% TablesSettings.GetColumns( 'reports', 'saved-sql', 'table_reports', 'json' ) | $raw %]; $('#limit').change(function() { $('#limitselect').submit(); @@ -1901,16 +1853,15 @@ }); [% IF (saved1) %] + var table_settings = [% TablesSettings.GetTableSettings( 'reports', 'saved-sql', 'table_reports', 'json' ) | $raw %]; var rtable = KohaTable("table_reports", { - "pageLength": getPageLength( "[% Koha.Preference('NumSavedReports') | html %]" ), - "lengthMenu": buildLengthMenu( "[% Koha.Preference('NumSavedReports') | html %]" ), 'bAutoWidth': false, 'sPaginationType': 'full', 'aaSorting': [[ 1, "asc" ]], 'oLanguage': { 'sZeroRecords': _("No matching reports found") } - }, columns_settings); + }, table_settings); var rtabs = $("#tabs").tabs({ create: function( e, ui ){ -- 2.39.5