From bc484453041935f163a2b029a556aa7bffd98693 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Mon, 10 Feb 2025 13:05:44 +0100 Subject: [PATCH 1/9] - infocenter filter fuer electronic onboarding hinzugefuegt --- .../system/infocenter/InfoCenter.php | 44 +++++++ .../views/system/infocenter/onboarding.php | 47 +++++++ .../system/infocenter/onboardingData.php | 116 ++++++++++++++++++ system/filtersupdate.php | 23 ++++ 4 files changed, 230 insertions(+) create mode 100644 application/views/system/infocenter/onboarding.php create mode 100644 application/views/system/infocenter/onboardingData.php diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index f6e41d2e6..9024088f8 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -22,6 +22,7 @@ class InfoCenter extends Auth_Controller const REIHUNGSTESTABSOLVIERT_PAGE = 'reihungstestAbsolviert'; const ABGEWIESEN_PAGE = 'abgewiesen'; const AUFGENOMMEN_PAGE = 'aufgenommen'; + const ONBOARDING_PAGE = 'onboarding'; const SHOW_DETAILS_PAGE = 'showDetails'; const SHOW_ZGV_DETAILS_PAGE = 'showZGVDetails'; const ZGV_UBERPRUEFUNG_PAGE = 'ZGVUeberpruefung'; @@ -116,6 +117,7 @@ class InfoCenter extends Auth_Controller 'index' => 'infocenter:r', 'freigegeben' => 'infocenter:r', 'abgewiesen' => 'infocenter:r', + 'onboarding' => 'infocenter:r', 'aufgenommen' => 'infocenter:r', 'reihungstestAbsolviert' => 'infocenter:r', 'showDetails' => 'infocenter:r', @@ -230,6 +232,13 @@ class InfoCenter extends Auth_Controller $this->load->view('system/infocenter/infocenterAbgewiesen.php'); } + + public function onboarding() + { + $this->_setNavigationMenu(self::ONBOARDING_PAGE); // define the navigation menu for this page + + $this->load->view('system/infocenter/onboarding.php'); + } /** * Aufgenommene page of the InfoCenter tool @@ -1552,6 +1561,7 @@ class InfoCenter extends Auth_Controller $reihungstestAbsolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE); $abgewiesenLink = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE); $aufgenommenLink = site_url(self::INFOCENTER_URI.'/'.self::AUFGENOMMEN_PAGE); + $onboardingLink = site_url(self::INFOCENTER_URI.'/'.self::ONBOARDING_PAGE); $currentFilterId = $this->input->get(self::FILTER_ID); if (isset($currentFilterId)) @@ -1560,6 +1570,7 @@ class InfoCenter extends Auth_Controller $reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId; $abgewiesenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId; $aufgenommenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId; + $onboardingLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId; } $this->navigationlib->setSessionMenu( @@ -1623,6 +1634,18 @@ class InfoCenter extends Auth_Controller '', // target 40 // sort ), + 'ohnePrestudent' => $this->navigationlib->oneLevel( + 'Electronic Onboarding', // description + $onboardingLink, // link + null, // children + 'users', // icon + null, // subscriptDescription + false, // expand + null, // subscriptLinkClass + null, // subscriptLinkValue + '', // target + 50 // sort + ), ) ); } @@ -1649,6 +1672,8 @@ class InfoCenter extends Auth_Controller $link = site_url(self::ZGV_UEBERPRUEFUNG_URI); if ($origin_page === self::ABGEWIESEN_PAGE) $link = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE); + if ($origin_page === self::ONBOARDING_PAGE) + $link = site_url(self::INFOCENTER_URI.'/'.self::ONBOARDING_PAGE); if ($origin_page === self::AUFGENOMMEN_PAGE) $link = site_url(self::INFOCENTER_URI.'/'.self::AUFGENOMMEN_PAGE); @@ -1690,6 +1715,7 @@ class InfoCenter extends Auth_Controller $freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE); $absolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE); $abgewiesenLink = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE); + $onboardingLink = site_url(self::INFOCENTER_URI.'/'.self::ONBOARDING_PAGE); $prevFilterId = $this->input->get(self::PREV_FILTER_ID); if (isset($prevFilterId)) { @@ -1766,6 +1792,24 @@ class InfoCenter extends Auth_Controller ) ); } + if($page == self::ONBOARDING_PAGE) + { + $this->navigationlib->setSessionElementMenu( + 'onboarding', + $this->navigationlib->oneLevel( + 'Electronic Onboarding', // description + $onboardingLink, // link + null, // children + 'users', // icon + null, // subscriptDescription + false, // expand + null, // subscriptLinkClass + null, // subscriptLinkValue + '', // target + 50 // sort + ) + ); + } } /** diff --git a/application/views/system/infocenter/onboarding.php b/application/views/system/infocenter/onboarding.php new file mode 100644 index 000000000..a600364d9 --- /dev/null +++ b/application/views/system/infocenter/onboarding.php @@ -0,0 +1,47 @@ +load->view( + 'templates/FHC-Header', + array( + 'title' => 'Info Center', + 'jquery3' => true, + 'jqueryui1' => true, + 'jquerycheckboxes1' => true, + 'bootstrap3' => true, + 'fontawesome4' => true, + 'sbadmintemplate3' => true, + 'tablesorter2' => true, + 'ajaxlib' => true, + 'filterwidget' => true, + 'navigationwidget' => true, + 'dialoglib' => true, + 'phrases' => array( + 'person' => array('vorname', 'nachname'), + 'ui' => array('bitteEintragWaehlen') + ), + 'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterPersonDataset.css'), + 'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js') + ) + ); +?> + +
+ + widgetlib->widget('NavigationWidget'); ?> + +
+
+
+
+ +
+
+
+ load->view('system/infocenter/onboardingData.php'); ?> +
+
+
+
+ +load->view('templates/FHC-Footer'); ?> diff --git a/application/views/system/infocenter/onboardingData.php b/application/views/system/infocenter/onboardingData.php new file mode 100644 index 000000000..5ee66fdde --- /dev/null +++ b/application/views/system/infocenter/onboardingData.php @@ -0,0 +1,116 @@ +>0 as bezeichnung + FROM public.tbl_rueckstellung + JOIN public.tbl_rueckstellung_status USING(status_kurzbz) + JOIN public.tbl_person sp ON tbl_rueckstellung.person_id = sp.person_id + WHERE tbl_rueckstellung.rueckstellung_id = + ( + SELECT srueck.rueckstellung_id + FROM public.tbl_rueckstellung srueck + WHERE srueck.person_id = tbl_rueckstellung.person_id + AND datum_bis >= NOW() + ORDER BY srueck.datum_bis DESC LIMIT 1 + ) + ) rueck ON rueck.person_id = p.person_id + WHERE p.person_id NOT IN (SELECT person_id FROM public.tbl_prestudent)'; + + $filterWidgetArray = array( + 'query' => $query, + 'app' => InfoCenter::APP, + 'datasetName' => 'onboarding', + 'filter_id' => $this->input->get('filter_id'), + 'requiredPermissions' => 'infocenter', + 'datasetRepresentation' => 'tablesorter', + 'checkboxes' => 'PersonId', + 'additionalColumns' => array('Details'), + 'columnsAliases' => array( + 'PersonId', + ucfirst($this->p->t('person', 'vorname')) , + ucfirst($this->p->t('person', 'nachname')), + ucfirst($this->p->t('global', 'sperrdatum')), + ucfirst($this->p->t('global', 'gesperrtVon')), + ucfirst($this->p->t('infocenter', 'rueckstelldatum')), + ucfirst($this->p->t('infocenter', 'rueckstellgrund')), + ), + + 'formatRow' => function($datasetRaw) { + /* NOTE: Dont use $this here for PHP Version compatibility */ + $datasetRaw->{'Details'} = sprintf( + 'Details', + site_url('system/infocenter/InfoCenter/showDetails'), + $datasetRaw->{'PersonId'}, + 'onboarding', + (isset($_GET['fhc_controller_id']) ? $_GET['fhc_controller_id'] : ''), + (isset($_GET['filter_id']) ? $_GET['filter_id'] : '') + ); + + if ($datasetRaw->{'LockDate'} == null) + { + $datasetRaw->{'LockDate'} = '-'; + } + + if ($datasetRaw->{'LockUser'} == null) + { + $datasetRaw->{'LockUser'} = '-'; + } + + if ($datasetRaw->{'HoldDate'} == null) + { + $datasetRaw->{'HoldDate'} = '-'; + } + else + { + $datasetRaw->{'HoldDate'} = date_format(date_create($datasetRaw->{'HoldDate'}), 'Y-m-d H:i'); + } + + if ($datasetRaw->{'Rueckstellgrund'} === null) + { + $datasetRaw->{'Rueckstellgrund'} = '-'; + } + + return $datasetRaw; + }, + + 'markRow' => function($datasetRaw) { + + if ($datasetRaw->LockDate != null) + { + return FilterWidget::DEFAULT_MARK_ROW_CLASS; + } + } + + + + ); + + echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray); +?> diff --git a/system/filtersupdate.php b/system/filtersupdate.php index 51dd86314..cfcceb0f6 100644 --- a/system/filtersupdate.php +++ b/system/filtersupdate.php @@ -529,6 +529,29 @@ $filters = array( ', 'oe_kurzbz' => null, ), + array( + 'app' => 'infocenter', + 'dataset_name' => 'onboarding', + 'filter_kurzbz' => 'InfoCenterOnboarding', + 'description' => '{Alle}', + 'sort' => 1, + 'default_filter' => true, + 'filter' => ' + { + "name": "Electronic Onboarding - Alle", + "columns": [ + {"name": "PersonId"}, + {"name": "Vorname"}, + {"name": "Nachname"}, + {"name": "LockUser"}, + {"name": "HoldDate"}, + {"name": "Rueckstellgrund"} + ], + "filters": [] + } + ', + 'oe_kurzbz' => null, + ), array( 'app' => 'infocenter', 'dataset_name' => 'aufgenommen', From 02df06288e7590e04c4fed0799651687d19cb05d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 16 Jun 2025 11:37:04 +0200 Subject: [PATCH 2/9] =?UTF-8?q?Bugfix=20R=C3=BCckstellgrund?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/views/system/infocenter/onboarding.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/views/system/infocenter/onboarding.php b/application/views/system/infocenter/onboarding.php index a600364d9..1f5bae847 100644 --- a/application/views/system/infocenter/onboarding.php +++ b/application/views/system/infocenter/onboarding.php @@ -19,7 +19,7 @@ 'ui' => array('bitteEintragWaehlen') ), 'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterPersonDataset.css'), - 'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js') + 'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/rueckstellung.js', 'public/js/infocenter/infocenterPersonDataset.js') ) ); ?> From e837101651b5abbd6b304dc9c0fed741864b99d7 Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 19 Nov 2025 10:53:59 +0100 Subject: [PATCH 3/9] PHP8 compatibility: replaced the curly brackets {} with square brackets [] where used in combination with strings --- application/controllers/api/v1/person/Person.php | 6 +++--- include/File/CSV.php | 12 ++++++------ include/File/Util.php | 10 +++++----- include/filter.class.php | 2 +- include/securimage/WavFile.php | 2 +- include/securimage/securimage.php | 2 +- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/application/controllers/api/v1/person/Person.php b/application/controllers/api/v1/person/Person.php index 6a373137f..935fbae62 100644 --- a/application/controllers/api/v1/person/Person.php +++ b/application/controllers/api/v1/person/Person.php @@ -233,10 +233,10 @@ class Person extends API_Controller //Quersumme bilden for ($i = 0; $i < 10; $i++) { - $erg += $gewichtung[$i] * $tmpSvnr{$i}; + $erg += $gewichtung[$i] * $tmpSvnr[$i]; } - if ($tmpSvnr{3} != ($erg % 11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11 + if ($tmpSvnr[3] != ($erg % 11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11 { return error('SVNR ist ungueltig'); } @@ -244,7 +244,7 @@ class Person extends API_Controller if (mb_strlen($person['svnr']) == 12) { $last = substr($person['svnr'], 10, 12); - if ($last{0} != 'v' || !is_numeric($last{1})) + if ($last[0] != 'v' || !is_numeric($last[1])) { return error('SVNR ist ungueltig'); } diff --git a/include/File/CSV.php b/include/File/CSV.php index c4c4d44ad..ea67181f1 100644 --- a/include/File/CSV.php +++ b/include/File/CSV.php @@ -178,7 +178,7 @@ class File_CSV return $field; } - if ($quote && $field{0} == $quote && $field{strlen($field)-1} == $quote) { + if ($quote && $field[0] == $quote && $field[strlen($field) - 1] == $quote) { return substr($field, 1, -1); } return $field; @@ -230,7 +230,7 @@ class File_CSV } elseif ($c == "\n" || $c == "\r") { $sub = ($prev == "\r") ? 2 : 1; if ((strlen($buff) >= $sub) && - ($buff{strlen($buff) - $sub} == $quote)) + ($buff[strlen($buff) - $sub] == $quote)) { $in_quote = false; } @@ -312,9 +312,9 @@ class File_CSV $last =& $fields[count($fields) - 1]; // Fallback to read the line with readQuoted when guess // that the simple explode won't work right - if (($last{strlen($last) - 1} == "\n" - && $last{0} == $conf['quote'] - && $last{strlen(rtrim($last)) - 1} != $conf['quote']) + if (($last[strlen($last) - 1] == "\n" + && $last[0] == $conf['quote'] + && $last[strlen(rtrim($last)) - 1] != $conf['quote']) || (count($fields) != $conf['fields']) // XXX perhaps there is a separator inside a quoted field @@ -511,4 +511,4 @@ class File_CSV return true; } } -?> \ No newline at end of file +?> diff --git a/include/File/Util.php b/include/File/Util.php index 941c61441..5474bc2a7 100644 --- a/include/File/Util.php +++ b/include/File/Util.php @@ -96,7 +96,7 @@ class File_Util { if (File_Util::isAbsolute($path)) { if (FILE_WIN32) { - return substr($path, $path{3} == '\\' ? 4 : 3); + return substr($path, $path[3] == '\\' ? 4 : 3); } return ltrim($path, '/'); } @@ -182,7 +182,7 @@ class File_Util if (FILE_WIN32) { return preg_match('/^[a-zA-Z]:(\\\|\/)/', $path); } - return ($path{0} == '/') || ($path{0} == '~'); + return ($path[0] == '/') || ($path[0] == '~'); } /** @@ -244,11 +244,11 @@ class File_Util } else { $cwd = getcwd(); $drive = substr($cwd, 0, 2); - if ($path{0} !== $separator{0}) { + if ($path[0] !== $separator[0]) { $path = substr($cwd, 3) . $separator . $path; } } - } elseif ($path{0} !== $separator) { + } elseif ($path[0] !== $separator) { $path = getcwd() . $separator . $path; } @@ -323,7 +323,7 @@ class File_Util $entries = array(); for ($dir = dir($path); false !== $entry = $dir->read(); ) { - if ($list & FILE_LIST_DOTS || $entry{0} !== '.') { + if ($list & FILE_LIST_DOTS || $entry[0] !== '.') { $isRef = ($entry === '.' || $entry === '..'); $isDir = $isRef || is_dir($path .'/'. $entry); if ( ((!$isDir && $list & FILE_LIST_FILES) || diff --git a/include/filter.class.php b/include/filter.class.php index c3d1d6ac1..7100e6562 100644 --- a/include/filter.class.php +++ b/include/filter.class.php @@ -240,7 +240,7 @@ class filter extends basis_db { //$value->value = preg_replace('/(.*?)selected=.selected./', '$1', $value->value); //$value->value = preg_replace('/(.*?)\s*[selected=?selected?]/', '$1', $value->value); - //$value->value = preg_replace('/(.*?)\s*selected="selected"\s*/', '${1}', $value->value); + //$value->value = preg_replace('/(.*?)\s*selected="selected"\s*/', '$[1]', $value->value); //$value->value = preg_replace('/^\s*selected=.*?selected.*?\s*/', ' ', $value->value); //$value->value = str_replace('selected=', '', $value->value); diff --git a/include/securimage/WavFile.php b/include/securimage/WavFile.php index 6d84fc725..d56dbd942 100644 --- a/include/securimage/WavFile.php +++ b/include/securimage/WavFile.php @@ -1532,7 +1532,7 @@ class WavFile } else { // replace for ($i = 0; $i < $sampleBytes; ++$i) { - $this->_samples{$offset + $i} = $sampleBinary{$i}; + $this->_samples[$offset + $i] = $sampleBinary[$i]; } } diff --git a/include/securimage/securimage.php b/include/securimage/securimage.php index 51d876672..820e8b92f 100644 --- a/include/securimage/securimage.php +++ b/include/securimage/securimage.php @@ -1435,7 +1435,7 @@ class Securimage $length = strlen($code['display']); for($i = 0; $i < $length; ++$i) { - $letter = $code['display']{$i}; + $letter = $code['display'][$i]; $letters[] = $letter; } } From c849b5defaf530d47be413229c3398b9d66dfbe5 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Tue, 2 Dec 2025 18:08:03 +0100 Subject: [PATCH 4/9] fix broken filters --- .../Stv/Studentenverwaltung/List.js | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/public/js/components/Stv/Studentenverwaltung/List.js b/public/js/components/Stv/Studentenverwaltung/List.js index 11b80efd0..69111d11c 100644 --- a/public/js/components/Stv/Studentenverwaltung/List.js +++ b/public/js/components/Stv/Studentenverwaltung/List.js @@ -140,7 +140,12 @@ export default { * we need to get the params from elsewhere. * @see https://github.com/olifolkerd/tabulator/issues/4318 */ - return this.$api.call({...config, url, params: this.tabulatorOptions.ajaxParams}); + const apiconfig = { + ...this.tabulatorOptions.ajaxConfig, + url: this.tabulatorOptions.ajaxURL, + params: this.tabulatorOptions.ajaxParams + }; + return this.$api.call(apiconfig); }, ajaxResponse: (url, params, response) => { return response?.data; @@ -182,7 +187,7 @@ export default { count: 0, filteredcount: 0, selectedcount: 0, - currentEndpointRawUrl: '' + currentEndpoint: null } }, computed: { @@ -357,16 +362,20 @@ export default { updateUrl(endpoint, first) { this.lastSelected = first ? undefined : this.selected; - if( endpoint === undefined ) + console.log('function param endpoint: ' + JSON.stringify(endpoint)); + console.log('current endpoint: ' + JSON.stringify(this.currentEndpoint)); + + if( endpoint === undefined && this.currentEndpoint === null) { - endpoint = {url: this.currentEndpointRawUrl}; - } - else if( endpoint.url === undefined ) + endpoint = { url: '' }; + } + else if( endpoint === undefined ) { - endpoint.url = this.currentEndpointRawUrl; - } else + endpoint = JSON.parse(JSON.stringify(this.currentEndpoint)); + } + else { - this.currentEndpointRawUrl = endpoint.url; + this.currentEndpoint = JSON.parse(JSON.stringify(endpoint)); } endpoint.url = endpoint.url.replace( @@ -375,13 +384,16 @@ export default { ); const params = (endpoint?.params !== undefined) ? endpoint.params : {}; - const method = (endpoint?.method !== undefined) ? endpoint.method : 'get'; + let method = (endpoint?.method !== undefined) ? endpoint.method : 'get'; if (this.filter.length) + { params.filter = this.filter; + method = 'post'; + } this.tabulatorOptions.ajaxURL = endpoint.url; this.tabulatorOptions.ajaxParams = { ...params }; - this.tabulatorOptions.ajaxConfig = method; + this.tabulatorOptions.ajaxConfig = {method}; if (!this.$refs.table.tableBuilt) { if (this.$refs.table.tabulator) { this.$refs.table.tabulator.on("tableBuilt", () => { From abcc1269eb3a017a208609ce11463c0397150807 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Wed, 3 Dec 2025 09:44:34 +0100 Subject: [PATCH 5/9] add permission to show profile images in new studvw --- application/controllers/Cis/Pub.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/controllers/Cis/Pub.php b/application/controllers/Cis/Pub.php index bebc844ab..de456145b 100644 --- a/application/controllers/Cis/Pub.php +++ b/application/controllers/Cis/Pub.php @@ -14,7 +14,7 @@ class Pub extends Auth_Controller { parent::__construct( array( - 'bild' => ['basis/cis:r'] + 'bild' => ['basis/cis:r', 'assistenz:r'] ) ); } From 5a970c3f2e0e9fdc65aacbc7e7ef62cc2d9360fd Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Wed, 3 Dec 2025 09:58:33 +0100 Subject: [PATCH 6/9] fix typo --- system/phrasesupdate.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 4e538f172..5fd4404ef 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -38928,7 +38928,7 @@ array( 'phrases' => array( array( 'sprache' => 'German', - 'text' => 'Anzahl angezeigter vergangender Studiensemester', + 'text' => 'Anzahl angezeigter vergangener Studiensemester', 'description' => '', 'insertvon' => 'system' ), From 841b4736a97f5b23260afffd78a9fdb3cc61a7a8 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Thu, 4 Dec 2025 08:39:37 +0100 Subject: [PATCH 7/9] do not send filters to backend when search endpoint is used --- public/js/components/Stv/Studentenverwaltung/List.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/components/Stv/Studentenverwaltung/List.js b/public/js/components/Stv/Studentenverwaltung/List.js index 69111d11c..953462a74 100644 --- a/public/js/components/Stv/Studentenverwaltung/List.js +++ b/public/js/components/Stv/Studentenverwaltung/List.js @@ -385,7 +385,7 @@ export default { const params = (endpoint?.params !== undefined) ? endpoint.params : {}; let method = (endpoint?.method !== undefined) ? endpoint.method : 'get'; - if (this.filter.length) + if (this.filter.length && !endpoint.url.match(/\/search\//)) { params.filter = this.filter; method = 'post'; From 391a4753d5120ecbcd52f444d92cd142238c8334 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Thu, 4 Dec 2025 14:38:30 +0100 Subject: [PATCH 8/9] fix flex-grow with tabulator exceeding width (found by ma0646) --- public/css/Cis4/Cis.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/css/Cis4/Cis.css b/public/css/Cis4/Cis.css index ff1b181dd..2bb467048 100644 --- a/public/css/Cis4/Cis.css +++ b/public/css/Cis4/Cis.css @@ -407,6 +407,7 @@ html { background-color: var(--fhc-background); border-color: var(--fhc-border); padding: var(--fhc-cis-main-py) var(--fhc-cis-main-px); + min-width: 0; /* fix flex-grow with tabulator exceeding width */ } #cis-main .fa-arrow-up-right-from-square { @@ -854,4 +855,4 @@ html { #cis-main .modal-footer { background-color: var(--fhc-secondary); -} \ No newline at end of file +} From 7e0acdbf4555a97153ca631e58133249dd0f4bba Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Thu, 4 Dec 2025 14:57:03 +0100 Subject: [PATCH 9/9] fix typo --- public/js/components/Stv/Studentenverwaltung.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/js/components/Stv/Studentenverwaltung.js b/public/js/components/Stv/Studentenverwaltung.js index 03f84f75e..e3a750e0c 100644 --- a/public/js/components/Stv/Studentenverwaltung.js +++ b/public/js/components/Stv/Studentenverwaltung.js @@ -155,7 +155,7 @@ export default { extraItems.push({ link: FHC_JS_DATA_STORAGE_OBJECT.app_root - + 'content/statistik/notenspiegel.php?type=xls' + + 'content/statistik/notenspiegel.php?typ=xls' + '&studiengang_kz=' + studiengang_kz + '&semester=' + semester + '&studiensemester=' + this.studiensemesterKurzbz @@ -173,7 +173,7 @@ export default { }); extraItems.push({ link: FHC_JS_DATA_STORAGE_OBJECT.app_root - + 'content/statistik/notenspiegel.php?type=html' + + 'content/statistik/notenspiegel.php?typ=html' + '&studiengang_kz=' + studiengang_kz + '&semester=' + semester + '&studiensemester=' + this.studiensemesterKurzbz