Improve filter with hierarchy

pull/4720/head
Borja Sánchez 2 years ago
parent 7095f1ec8d
commit 2b3e0363c5
  1. 9
      main/admin/career_dashboard.php
  2. 9
      main/inc/lib/career.lib.php
  3. 7
      main/template/default/macro/macro.tpl

@ -33,6 +33,8 @@ $html = null;
$showHierarchy = $_GET['showHierarchy'] ?? null;
if ($useCareerHierarchy && is_null($showHierarchy)) {
$showHierarchy = 1;
} elseif (!$useCareerHierarchy) {
$showHierarchy = 0;
}
$form = new FormValidator('filter_form', 'GET', api_get_self());
@ -42,7 +44,7 @@ $condition = ['status = ?' => 1];
if ($form->validate()) {
$data = $form->getSubmitValues();
$filter = (int) $data['filter'];
if (!empty($filter)) {
if (!empty($filter) && $showHierarchy == 0) {
$condition = ['status = ? AND id = ? ' => [1, $filter]];
}
}
@ -63,6 +65,8 @@ $form->addSelect(
$form->addButtonSearch(get_lang('Filter'));
if ($useCareerHierarchy && $showHierarchy == 1) {
$form->addHidden('showHierarchy', '1');
} else {
$form->addHidden('showHierarchy', '0');
}
// action links
@ -176,7 +180,8 @@ if (!empty($careers)) {
}
}
if ($useCareerHierarchy && 1 == $showHierarchy) {
$careers = $career->orderCareersByHierarchy($careers);
$filter = $filter ?? 0;
$careers = $career->orderCareersByHierarchy($careers, $filter);
}
$tpl->assign('actions', $actions);
$tpl->assign('form_filter', $html);

@ -104,11 +104,16 @@ class Career extends Model
* Order the careers by its hierarchy.
*
* @param $careers
*/
public function orderCareersByHierarchy($careers): array
public function orderCareersByHierarchy($careers, int $filterId = 0): array
{
$orderedCareers = [];
$filterAux = [];
foreach ($careers as &$career) {
if (!empty($filterId) && $career['id'] == $filterId) {
$filterAux[] = $career;
}
if (is_null($career['parent_id'])) {
$orderedCareers[] = &$career;
} else {
@ -125,7 +130,7 @@ class Career extends Model
}
}
return $orderedCareers;
return !empty($filterId) ? $filterAux : $orderedCareers;
}
/**

@ -117,11 +117,10 @@
</div>
{% endmacro %}
{% macro careers_panel(content, admin) %}
{% macro careers_panel(content, admin, macro_iteration = 0) %}
{% import _self as display %}
{% for item in content %}
<div id="career-{{ item.id }}" class="career panel panel-default" {% if item.parent_id is not empty %} style="margin-left: 45px"{% endif %}>
<div id="career-{{ item.id }}" class="career panel panel-default" {% if item.parent_id is not empty and macro_iteration != 0 %} style="margin-left: 45px"{% endif %}>
<div class="panel-heading">
<h4>
{% if admin %}
@ -157,7 +156,7 @@
{% endif %}
</div>
{% if item.children is defined %}
{{ display.careers_panel(item.children, admin) }}
{{ display.careers_panel(item.children, admin, macro_iteration + 1) }}
{% endif %}
</div>
{% endfor %}

Loading…
Cancel
Save