mirror of
https://github.com/e107inc/e107.git
synced 2025-08-05 14:17:49 +02:00
Closes #5367 Custom sorting of admin-ui Filter and Batch drop-down menus.
This commit is contained in:
@@ -2786,6 +2786,19 @@ class e_admin_controller_ui extends e_admin_controller
|
|||||||
*/
|
*/
|
||||||
protected $filterQry;
|
protected $filterQry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom sorting of the filter list.
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $filterSort = array();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom sorting of the batch list.
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $batchSort = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var boolean
|
* @var boolean
|
||||||
*/
|
*/
|
||||||
@@ -2939,6 +2952,21 @@ class e_admin_controller_ui extends e_admin_controller
|
|||||||
return $this->eventName;
|
return $this->eventName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getFilterSort()
|
||||||
|
{
|
||||||
|
return $this->filterSort;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getBatchSort()
|
||||||
|
{
|
||||||
|
return $this->batchSort;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
@@ -6152,6 +6180,16 @@ class e_admin_ui extends e_admin_controller_ui
|
|||||||
$this->getTreeModel()->setMessages();
|
$this->getTreeModel()->setMessages();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function handleGridSearchfieldFilter($selected)
|
||||||
|
{
|
||||||
|
return $this->handleListSearchfieldFilter($selected);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function handleGridDeleteBatch($selected)
|
||||||
|
{
|
||||||
|
return $this->handleListDeleteBatch($selected);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method to generate "Search in Field" query.
|
* Method to generate "Search in Field" query.
|
||||||
@@ -8182,6 +8220,25 @@ class e_admin_form_ui extends e_form
|
|||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function sortFieldsByPriority(array $fields, array $priorityKeys)
|
||||||
|
{
|
||||||
|
// Separate fields into priority and non-priority arrays
|
||||||
|
$priorityFields = [];
|
||||||
|
$remainingFields = $fields;
|
||||||
|
|
||||||
|
foreach ($priorityKeys as $key)
|
||||||
|
{
|
||||||
|
// If the key exists in the fields array, move it to the priorityFields array
|
||||||
|
if (isset($fields[$key]))
|
||||||
|
{
|
||||||
|
$priorityFields[$key] = $fields[$key];
|
||||||
|
unset($remainingFields[$key]); // Remove from remaining fields
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Merge priorityFields at the top with remainingFields retaining their original order
|
||||||
|
return $priorityFields + $remainingFields;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Render Batch and Filter Dropdown options.
|
* Render Batch and Filter Dropdown options.
|
||||||
@@ -8192,16 +8249,22 @@ class e_admin_form_ui extends e_form
|
|||||||
public function renderBatchFilter($type='batch', $selected = '') // Common function used for both batches and filters.
|
public function renderBatchFilter($type='batch', $selected = '') // Common function used for both batches and filters.
|
||||||
{
|
{
|
||||||
$optdiz = array('batch' => LAN_BATCH_LABEL_PREFIX.' ', 'filter'=> LAN_FILTER_LABEL_PREFIX.' ');
|
$optdiz = array('batch' => LAN_BATCH_LABEL_PREFIX.' ', 'filter'=> LAN_FILTER_LABEL_PREFIX.' ');
|
||||||
$table = $this->getController()->getTableName();
|
$obj = $this->getController();
|
||||||
|
$table = $obj->getTableName();
|
||||||
$text = '';
|
$text = '';
|
||||||
$textsingle = '';
|
$textsingle = '';
|
||||||
|
|
||||||
|
|
||||||
$searchFieldOpts = array();
|
$searchFieldOpts = array();
|
||||||
|
|
||||||
$fieldList = $this->getController()->getFields();
|
$fieldList = $obj->getFields();
|
||||||
|
$fieldSort = ($type ==='batch') ? $obj->getBatchSort() : $obj->getFilterSort();
|
||||||
|
|
||||||
|
if(!empty($fieldSort))
|
||||||
|
{
|
||||||
|
e107::getMessage()->addDebug("Filtering by custom sort field: ".print_r($fieldSort,true));
|
||||||
|
$fieldList = $this->sortFieldsByPriority($fieldList, $fieldSort);
|
||||||
|
}
|
||||||
|
|
||||||
foreach($fieldList as $key=>$val)
|
foreach($fieldList as $key=>$val)
|
||||||
{
|
{
|
||||||
@@ -8603,6 +8666,7 @@ class e_admin_form_ui extends e_form
|
|||||||
if(!empty($option))
|
if(!empty($option))
|
||||||
{
|
{
|
||||||
$text .= "\t".$this->optgroup_open($optdiz[$type].defset($val['title'], $val['title']), varset($disabled))."\n";
|
$text .= "\t".$this->optgroup_open($optdiz[$type].defset($val['title'], $val['title']), varset($disabled))."\n";
|
||||||
|
|
||||||
foreach($option as $okey=>$oval)
|
foreach($option as $okey=>$oval)
|
||||||
{
|
{
|
||||||
$text .= $this->option($oval, $okey, $selected == $okey)."\n";
|
$text .= $this->option($oval, $okey, $selected == $okey)."\n";
|
||||||
@@ -8611,22 +8675,23 @@ class e_admin_form_ui extends e_form
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$text2 = '';
|
||||||
|
|
||||||
if(!empty($searchFieldOpts) && $type !== 'batch')
|
if(!empty($searchFieldOpts) && $type !== 'batch')
|
||||||
{
|
{
|
||||||
$text .= "\t".$this->optgroup_open(defset('LAN_UI_FILTER_SEARCH_IN_FIELD', 'Search in Field'))."\n";
|
$text2 .= "\t".$this->optgroup_open(defset('LAN_UI_FILTER_SEARCH_IN_FIELD', 'Search in Field'))."\n";
|
||||||
|
|
||||||
foreach($searchFieldOpts as $key=>$val)
|
foreach($searchFieldOpts as $key=>$val)
|
||||||
{
|
{
|
||||||
$text .= $this->option($val, $key, $selected == $key)."\n";
|
$text2 .= $this->option($val, $key, $selected == $key)."\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
$text .= "\t".$this->optgroup_close()."\n";
|
$text2 .= "\t".$this->optgroup_close()."\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return $textsingle.$text;
|
return $textsingle.$text2.$text;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2011,6 +2011,10 @@ class " . $table . " extends e_admin_ui
|
|||||||
|
|
||||||
protected \$fieldpref = array(" . implode(", ", $FIELDPREF) . ");
|
protected \$fieldpref = array(" . implode(", ", $FIELDPREF) . ");
|
||||||
|
|
||||||
|
// protected \$filterSort = ['field_key_5', 'field_key_7']; // Display these fields first in the filter drop-down.
|
||||||
|
|
||||||
|
// protected \$batchSort = ['field_key_5', 'field_key_7'];; // Display these fields first in the batch drop-down.
|
||||||
|
|
||||||
";
|
";
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user