Bug 27654: Sort module.keys hash when render columns_settings.tt

On the "Administration -> Table settings" page, the order of
"tables related to pages" sections is different with each page refresh.
Cause of that is that Perl gives random order for hash keys where
those elements are stored on template render. To avoid that we
add a "sort" method where getting keys similarly how it was done
previously to display tables always in the same order.

To reproduce:
    1) Head over to /cgi-bin/koha/admin/columns_settings.pl
    2) Open any collapsed module settings, for example
"Acquisition tables". Check the order of pages.
    3) Reload the page. Check the order of the same elements again.
They always come in random order, it's easily distinguishable.
    4) Apply the patch.
    5) Repeat steps 1-3 again and ensure that the order of pages
stays the same no matter how many times you reload the page.

Signed-off-by: Barbara Johnson <barbara.johnson@bedfordtx.gov>
Signed-off-by: Joonas Kylmälä <joonas.kylmala@helsinki.fi>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Petro Vashchuk 2021-02-08 16:04:48 +02:00 committed by Jonathan Druart
parent 4bb20fdb30
commit f58c271b42

View file

@ -6,7 +6,7 @@
[% BLOCK pagelist %] [% BLOCK pagelist %]
[% IF module.keys and module.keys.size > 0 %] [% IF module.keys and module.keys.size > 0 %]
Jump to: Jump to:
[% FOR pagename IN module.keys %] [% FOR pagename IN module.keys.sort %]
<a href="#[% pagename | url %]">[% pagename | html %]</a> <a href="#[% pagename | url %]">[% pagename | html %]</a>
[% UNLESS loop.last %]<span class="separator"> | </span>[% END %] [% UNLESS loop.last %]<span class="separator"> | </span>[% END %]
[% END %] [% END %]
@ -18,7 +18,7 @@
<input type="hidden" name="panel" value="[% panel_id | html %]" /> <input type="hidden" name="panel" value="[% panel_id | html %]" />
[% SET panel_id = panel_id + 1 %] [% SET panel_id = panel_id + 1 %]
[% IF module.keys and module.keys.size > 0 %] [% IF module.keys and module.keys.size > 0 %]
[% FOR pagename IN module.keys %] [% FOR pagename IN module.keys.sort %]
<h4 class="page_name" id="[% pagename | html %]">Page: [% pagename | html %]</h4> <h4 class="page_name" id="[% pagename | html %]">Page: [% pagename | html %]</h4>
[% SET tables = module %] [% SET tables = module %]
[% IF tables.$pagename.keys and tables.$pagename.keys.size > 0 %] [% IF tables.$pagename.keys and tables.$pagename.keys.size > 0 %]