SortableTable: clean URL params when changing student/teacher view

BT#16150
pull/3023/head
Julio Montoya 6 years ago
parent c29bb89751
commit ccbea3d20a
  1. 39
      main/inc/lib/sortable_table.class.php
  2. 8
      main/inc/local.inc.php

@ -105,6 +105,8 @@ class SortableTable extends HTML_Table
*/
private $columnsToHide = [];
private $dataFunctionParams;
private $defaultColumn;
private $defaultItemsPerPage;
/**
* Create a new SortableTable.
@ -145,17 +147,24 @@ class SortableTable extends HTML_Table
$this->table_name = $table_name;
$this->additional_parameters = [];
$this->param_prefix = $table_name.'_';
$this->defaultColumn = (int) $default_column;
$this->defaultItemsPerPage = $default_items_per_page;
$defaultRow = api_get_configuration_value('table_default_row');
if (!empty($defaultRow)) {
$this->defaultItemsPerPage = $default_items_per_page = $defaultRow;
}
$cleanSessionData = Session::read('clean_sortable_table');
if ($cleanSessionData === true) {
$this->cleanUrlSessionParams();
}
$this->page_nr = Session::read($this->param_prefix.'page_nr', 1);
$this->page_nr = isset($_GET[$this->param_prefix.'page_nr']) ? (int) $_GET[$this->param_prefix.'page_nr'] : $this->page_nr;
$this->column = Session::read($this->param_prefix.'column', $default_column);
$this->column = isset($_GET[$this->param_prefix.'column']) ? (int) $_GET[$this->param_prefix.'column'] : $this->column;
$defaultRow = api_get_configuration_value('table_default_row');
if (!empty($defaultRow)) {
$default_items_per_page = $defaultRow;
}
// Default direction.
if (in_array(strtoupper($default_order_direction), ['ASC', 'DESC'])) {
$this->direction = $default_order_direction;
@ -212,6 +221,26 @@ class SortableTable extends HTML_Table
$this->dataFunctionParams = [];
}
/**
* Clean URL params when changing student view
*/
public function cleanUrlSessionParams()
{
Session::erase('clean_sortable_table');
$prefix = $this->param_prefix;
Session::erase($prefix.'page_nr');
Session::erase($prefix.'column');
Session::erase($prefix.'direction');
Session::erase($prefix.'per_page');
$_GET[$this->param_prefix.'per_page'] = $this->default_items_per_page;
$_GET[$this->param_prefix.'page_nr'] = 1;
$_GET[$this->param_prefix.'column'] = $this->defaultColumn;
$_GET[$this->param_prefix.'direction'] = $this->direction;
}
/**
* @return array
*/

@ -1541,12 +1541,14 @@ if ((isset($uidReset) && $uidReset) || $cidReset) {
//set variable according to student_view_enabled choices
if (api_get_setting('student_view_enabled') == "true") {
$changed = false;
if (isset($_GET['isStudentView'])) {
if ($_GET['isStudentView'] == 'true') {
if (isset($_SESSION['studentview'])) {
if (!empty($_SESSION['studentview'])) {
// switching to studentview
$_SESSION['studentview'] = 'studentview';
$changed = true;
}
}
} elseif ($_GET['isStudentView'] == 'false') {
@ -1554,6 +1556,7 @@ if (api_get_setting('student_view_enabled') == "true") {
if (!empty($_SESSION['studentview'])) {
// switching to teacherview
$_SESSION['studentview'] = 'teacherview';
$changed = true;
}
}
}
@ -1562,6 +1565,11 @@ if (api_get_setting('student_view_enabled') == "true") {
} elseif (empty($_SESSION['studentview'])) {
// We are in teacherview here
$_SESSION['studentview'] = 'teacherview';
$changed = true;
}
if ($changed) {
Session::write('clean_sortable_table', true);
}
}

Loading…
Cancel
Save