MDL-52036 tablelib: Fix the behaviour of resetting table preferences
authorDavid Mudrák <david@moodle.com>
Wed, 4 Nov 2015 14:07:17 +0000 (15:07 +0100)
committerDavid Mudrák <david@moodle.com>
Wed, 4 Nov 2015 14:07:17 +0000 (15:07 +0100)
commit19168d0934997ee731a0a2007be439f5ae906319
tree8ce60f00b07085c197f0ae5af494ff0aa46aaac6
parent4cef723c228d3f0e4848551df9b27464853f27c5
MDL-52036 tablelib: Fix the behaviour of resetting table preferences

The problem with the previous implementation was that the table's
$this->prefs can contain valid non-empty value in its default state -
the default column to sort by. On resetting, we must not throw away
these default prefs.

This patch simplifies the TABLE_VAR_RESET interpretation. If such an
HTTP parameter is passed via the request, the table simply behaves as if
there were no previously stored preferences (does not matter if coming
from the current session, or from the persistent cross-session storage).

The logic that decides on whether or not the reset widget should be
displayed is put into a new method can_be_reset() with unit tests
attached.

Finally, the previously private method render_reset_button() is now
protected and the reset widget is given a new semantic CSS class.
lib/tablelib.php
lib/tests/fixtures/testable_flexible_table.php [new file with mode: 0644]
lib/tests/tablelib_test.php