Extensions - List, Edit, Copy, Delete, Toggle: Maintain list sorting and page state.

This commit is contained in:
fusionate
2025-09-02 12:46:22 -06:00
parent 1c189ed780
commit 108693ef01
3 changed files with 39 additions and 19 deletions

View File

@@ -45,6 +45,11 @@
$language = new text;
$text = $language->get();
//get order and order by, page
$order_by = preg_replace('#[^a-zA-Z0-9_\-]#', '', ($_REQUEST["order_by"] ?? 'extension'));
$order = $_REQUEST["order"] ?? 'asc';
$page = isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) ? $_REQUEST['page'] : 0;
//set the http get/post variable(s) to a php variable
if (is_uuid($_REQUEST["id"]) && $_REQUEST["ext"] != '') {
$extension_uuid = $_REQUEST["id"];
@@ -59,7 +64,7 @@
$extension = new extension;
if ($extension->exists($_SESSION['domain_uuid'], $extension_new)) {
message::add($text['message-duplicate'], 'negative');
header("Location: extensions.php".(is_numeric($page) ? '?page='.$page : null));
header("Location: extensions.php?".(!empty($order_by) ? '&order_by='.$order_by.'&order='.$order : null).(is_numeric($page) ? '&page='.$page : null));
exit;
}
@@ -193,7 +198,7 @@
//redirect the user
message::add($text['message-copy']);
header("Location: extensions.php".(is_numeric($page) ? '?page='.$page : null));
header("Location: extensions.php?".(!empty($order_by) ? '&order_by='.$order_by.'&order='.$order : null).(is_numeric($page) ? '&page='.$page : null));
exit;
?>

View File

@@ -47,6 +47,11 @@
$language = new text;
$text = $language->get();
//get order and order by, page
$order_by = preg_replace('#[^a-zA-Z0-9_\-]#', '', ($_REQUEST["order_by"] ?? 'extension'));
$order = $_REQUEST["order"] ?? 'asc';
$page = isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) ? $_REQUEST['page'] : 0;
//return the first item if data type = array, returns value if data type = text
function get_first_item($value) {
return is_array($value) ? $value[0] : $value;
@@ -96,7 +101,6 @@
if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
$action = "update";
$extension_uuid = $_REQUEST["id"];
$page = $_REQUEST['page'] ?? null;
}
else {
$action = "add";
@@ -114,7 +118,7 @@
if ($total_extensions >= $limit_extensions) {
message::add($text['message-maximum_extensions'].' '.$limit_extensions, 'negative');
header('Location: extensions.php'.(isset($page) && is_numeric($page) ? '?page='.$page : null));
header('Location: extensions.php?'.(!empty($order_by) ? '&order_by='.$order_by.'&order='.$order : null).(isset($page) && is_numeric($page) ? '&page='.$page : null));
exit;
}
}
@@ -320,7 +324,7 @@
$p->delete('extension_user_delete', 'temp');
//redirect
header("Location: extension_edit.php?id=".$extension_uuid);
header("Location: extension_edit.php?id=".$extension_uuid.(!empty($order_by) ? '&order_by='.$order_by.'&order='.$order : null).(isset($page) && is_numeric($page) ? '&page='.$page : null));
exit;
}
@@ -347,7 +351,7 @@
$p->delete('device_line_delete', 'temp');
//redirect
header("Location: extension_edit.php?id=".$extension_uuid);
header("Location: extension_edit.php?id=".$extension_uuid.(!empty($order_by) ? '&order_by='.$order_by.'&order='.$order : null).(isset($page) && is_numeric($page) ? '&page='.$page : null));
exit;
}
}
@@ -890,10 +894,10 @@
message::add($text['message-update']);
}
if ($range > 1) {
header("Location: extensions.php");
header("Location: extensions.php?".(!empty($order_by) ? '&order_by='.$order_by.'&order='.$order : null).(isset($page) && is_numeric($page) ? '&page='.$page : null));
}
else {
header("Location: extension_edit.php?id=".$extension_uuid.(isset($page) && is_numeric($page) ? '&page='.$page : null));
header("Location: extension_edit.php?id=".$extension_uuid.(!empty($order_by) ? '&order_by='.$order_by.'&order='.$order : null).(isset($page) && is_numeric($page) ? '&page='.$page : null));
}
exit;
}
@@ -1144,13 +1148,13 @@
echo " var new_ext = prompt('".$text['message-extension']."');\n";
echo " if (new_ext != null) {\n";
echo " if (!isNaN(new_ext)) {\n";
echo " document.location.href='extension_copy.php?id=".escape($extension_uuid ?? '')."&ext=' + new_ext".(!empty($page) && is_numeric($page) ? " + '&page=".$page."'" : null).";\n";
echo " document.location.href='extension_copy.php?id=".escape($extension_uuid ?? '')."&ext=' + new_ext + '".(!empty($order_by) ? '&order_by='.$order_by.'&order='.$order : null).(!empty($page) && is_numeric($page) ? '&page='.$page : null)."';\n";
echo " }\n";
echo " else {\n";
echo " var new_number_alias = prompt('".$text['message-number_alias']."');\n";
echo " if (new_number_alias != null) {\n";
echo " if (!isNaN(new_number_alias)) {\n";
echo " document.location.href='extension_copy.php?id=".escape($extension_uuid ?? '')."&ext=' + new_ext + '&alias=' + new_number_alias".(!empty($page) && is_numeric($page) ? " + '&page=".$page."'" : null).";\n";
echo " document.location.href='extension_copy.php?id=".escape($extension_uuid ?? '')."&ext=' + new_ext + '&alias=' + new_number_alias + '".(!empty($order_by) ? '&order_by='.$order_by.'&order='.$order : null).(!empty($page) && is_numeric($page) ? '&page='.$page : null)."';\n";
echo " }\n";
echo " }\n";
echo " }\n";
@@ -1170,7 +1174,7 @@
}
echo "</div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$settings->get('theme', 'button_icon_back'),'id'=>'btn_back','link'=>'extensions.php'.(isset($page) && is_numeric($page) ? '?page='.$page : null)]);
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$settings->get('theme', 'button_icon_back'),'id'=>'btn_back','link'=>'extensions.php?'.(!empty($order_by) ? '&order_by='.$order_by.'&order='.$order : null).(isset($page) && is_numeric($page) ? '&page='.$page : null)]);
if ($action == 'update') {
$button_margin = 'margin-left: 15px;';
if (permission_exists('xml_cdr_view')) {
@@ -2351,6 +2355,10 @@
echo "</div>\n";
echo "<br><br>";
if (!empty($order_by)) {
echo "<input type='hidden' name='order_by' value='".$order_by."'>\n";
echo "<input type='hidden' name='order' value='".$order."'>\n";
}
if (isset($page) && is_numeric($page)) {
echo "<input type='hidden' name='page' value='".$page."'>\n";
}

View File

@@ -46,6 +46,12 @@
$language = new text;
$text = $language->get();
//get order and order by, page, sort
$order_by = preg_replace('#[^a-zA-Z0-9_\-]#', '', ($_REQUEST["order_by"] ?? 'extension'));
$order = $_REQUEST["order"] ?? 'asc';
$page = isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) ? $_REQUEST['page'] : 0;
$sort = $order_by == 'extension' ? 'natural' : null;
//get posted data
if (!empty($_POST['extensions']) && is_array($_POST['extensions'])) {
$action = $_POST['action'];
@@ -74,15 +80,10 @@
break;
}
header('Location: extensions.php'.($search != '' ? '?search='.urlencode($search) : null));
header('Location: extensions.php?'.(!empty($order_by) ? '&order_by='.$order_by.'&order='.$order : null).(is_numeric($page) ? '&page='.urlencode($page) : null).($search != '' ? '&search='.urlencode($search) : null));
exit;
}
//get order and order by
$order_by = $_GET["order_by"] ?? 'extension';
$order = $_GET["order"] ?? 'asc';
$sort = $order_by == 'extension' ? 'natural' : null;
//get total extension count for domain
if (isset($_SESSION['limit']['extensions']['numeric'])) {
$sql = "select count(*) from v_extensions ";
@@ -141,7 +142,6 @@
$param .= "&order=".$order;
$param .= "&order_by=".$order_by;
}
$page = isset($_GET['page']) && is_numeric($_GET['page']) ? $_GET['page'] : 0;
list($paging_controls, $rows_per_page) = paging($num_rows, $param.$query_string, $rows_per_page); //bottom
list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param.$query_string, $rows_per_page, true); //top
$offset = $rows_per_page * $page;
@@ -308,6 +308,13 @@
echo "<form id='form_list' method='post'>\n";
echo "<input type='hidden' id='action' name='action' value=''>\n";
if (!empty($order_by)) {
echo "<input type='hidden' name='order_by' value='".$order_by."'>\n";
echo "<input type='hidden' name='order' value='".$order."'>\n";
}
if (isset($page) && is_numeric($page)) {
echo "<input type='hidden' name='page' value='".$page."'>\n";
}
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
echo "<div class='card'>\n";
@@ -357,7 +364,7 @@
foreach($extensions as $row) {
$list_row_url = '';
if (permission_exists('extension_edit')) {
$list_row_url = "extension_edit.php?id=".urlencode($row['extension_uuid']).(is_numeric($page) ? '&page='.urlencode($page) : null);
$list_row_url = "extension_edit.php?id=".urlencode($row['extension_uuid']).(!empty($order_by) ? '&order_by='.$order_by.'&order='.$order : null).(is_numeric($page) ? '&page='.urlencode($page) : null);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}