diff --git a/application/config/stv.php b/application/config/stv.php index 675899108..42afc318c 100644 --- a/application/config/stv.php +++ b/application/config/stv.php @@ -83,3 +83,33 @@ if (!defined('ZGV_DOKTOR_ANZEIGEN') || !ZGV_DOKTOR_ANZEIGEN) { $fieldsZgvDoktor ); } + +$config['student_tab_order'] = [ + 'details', + 'notes', + 'messages', + 'contact', + 'prestudent', + 'status', + 'documents', + 'archive', + 'banking', + 'grades', + 'exam', + 'exemptions', + 'finalexam', + 'mobility', + 'jointstudies', + 'admissionDates', + 'groups', + 'functions', + 'coursedates', + 'resources', +]; +$config['students_tab_order'] = [ + 'banking', + 'status', + 'groups', + 'finalexam', + 'archive', +]; diff --git a/application/controllers/api/frontend/v1/stv/Config.php b/application/controllers/api/frontend/v1/stv/Config.php index 2fb436384..d52016943 100644 --- a/application/controllers/api/frontend/v1/stv/Config.php +++ b/application/controllers/api/frontend/v1/stv/Config.php @@ -184,7 +184,9 @@ class Config extends FHCAPI_Controller return $result; }); - $this->terminateWithSuccess($result); + $sortConfig = $this->config->item('student_tab_order'); + + $this->terminateWithSuccess($this->sortTabList($result, $sortConfig)); } public function students() @@ -231,7 +233,9 @@ class Config extends FHCAPI_Controller return $result; }); - $this->terminateWithSuccess($result); + $sortConfig = $this->config->item('students_tab_order'); + + $this->terminateWithSuccess($this->sortTabList($result, $sortConfig)); } protected function kontoColumns() @@ -507,4 +511,34 @@ class Config extends FHCAPI_Controller return $list; } + + /** + * Sort tab list + * + * @param array $input + * @param array $config + * + * @return array + */ + protected function sortTabList($input, $config) + { + // prepare config + if (!$config || !is_array($config)) + $config = []; + else + $config = array_flip($config); + + // fill missing items in config + foreach (array_keys($input) as $key) { + if (!isset($config[$key])) + $config[$key] = count($config); + } + + // do the sorting + uksort($input, function ($a, $b) use ($config) { + return $config[$a] - $config[$b]; + }); + + return $input; + } }