diff --git a/application/controllers/api/frontend/v1/stv/Favorites.php b/application/controllers/api/frontend/v1/stv/Favorites.php index ca8b62da6..951eb01a4 100644 --- a/application/controllers/api/frontend/v1/stv/Favorites.php +++ b/application/controllers/api/frontend/v1/stv/Favorites.php @@ -60,17 +60,6 @@ class Favorites extends FHCAPI_Controller $favorites = $this->input->post('favorites'); - $removed = []; - while (strlen($favorites) > 64) { - $favObj = json_decode($favorites); - if (!$favObj->list) - break; - $removed[] = array_shift($favObj->list); - $favorites = json_encode($favObj); - } - if ($removed) - $this->addMeta('removed', $removed); - $result = $this->VariableModel->setVariable(getAuthUID(), 'stv_favorites', $favorites); $this->getDataOrTerminateWithError($result); diff --git a/application/controllers/api/frontend/v1/stv/Prestudent.php b/application/controllers/api/frontend/v1/stv/Prestudent.php index 4d0aa5fe1..7dc607d1a 100644 --- a/application/controllers/api/frontend/v1/stv/Prestudent.php +++ b/application/controllers/api/frontend/v1/stv/Prestudent.php @@ -138,13 +138,24 @@ class Prestudent extends FHCAPI_Controller { $val = $this->input->post($prop, true); - if ($val !== null || $prop === 'foerderrelevant') { + if ($val !== null) { + if(in_array($prop, ['dual', 'bismelden', 'foerderrelevant'])) + { + $val = boolval($val); + } + elseif ( + $val === '' + && in_array($prop, ['zgvnation', 'zgvmanation', 'zgvdoktornation', 'berufstaetigkeit_code', 'ausbildungcode']) + ) + { + $val = null; + } $update_prestudent[$prop] = $val; } // allowed to be null, but has to be in postparameter if ( - in_array($prop, ['zgvdatum', 'zgvmadatum', 'zgvdoktordatum', 'zgv_code', 'zgvmas_code', 'zgvdoktor_code']) + in_array($prop, ['foerderrelevant', 'zgvdatum', 'zgvmadatum', 'zgvdoktordatum', 'zgv_code', 'zgvmas_code', 'zgvdoktor_code']) && !isset($update_prestudent[$prop]) && array_key_exists($prop, $_POST) ) diff --git a/application/controllers/api/frontend/v1/stv/Status.php b/application/controllers/api/frontend/v1/stv/Status.php index 665fb620f..dc48a47ff 100644 --- a/application/controllers/api/frontend/v1/stv/Status.php +++ b/application/controllers/api/frontend/v1/stv/Status.php @@ -286,11 +286,11 @@ class Status extends FHCAPI_Controller ]); $this->form_validation->set_rules('_default', '', [ - ['meldestichtag_not_exceeded', function () use ($datum, $isBerechtigtNoStudstatusCheck) { + ['meldestichtag_not_exceeded', function () use ($datum_string, $isBerechtigtNoStudstatusCheck) { if ($isBerechtigtNoStudstatusCheck) return true; // Skip if access right says so - $result = $this->prestudentstatuschecklib->checkIfMeldestichtagErreicht($datum); + $result = $this->prestudentstatuschecklib->checkIfMeldestichtagErreicht($datum_string); return !$this->getDataOrTerminateWithError($result); }], @@ -733,8 +733,9 @@ class Status extends FHCAPI_Controller ); $result = $this->prestudentstatuschecklib->checkIfMeldestichtagErreicht($oldstatus->datum); + $isMeldestichtagErreicht = $this->getDataOrTerminateWithError($result); - if (!$this->getDataOrTerminateWithError($result)) + if ($isMeldestichtagErreicht) $this->terminateWithError( $this->p->t('lehre', 'error_dataVorMeldestichtag'), self::ERROR_TYPE_GENERAL, diff --git a/application/libraries/StundenplanLib.php b/application/libraries/StundenplanLib.php index 6d53a2e2e..7ed64da2c 100644 --- a/application/libraries/StundenplanLib.php +++ b/application/libraries/StundenplanLib.php @@ -229,9 +229,10 @@ class StundenplanLib $this->_ci->load->model('ressource/Stundenplan_model', 'StundenplanModel'); $is_mitarbeiter = getData($this->_ci->MitarbeiterModel->isMitarbeiter(getAuthUID())); - - if ($is_mitarbeiter) { - $reservierungen = $this->_ci->ReservierungModel->getReservierungenMitarbeiter($start_date, $end_date, $ort_kurzbz); + + if ($is_mitarbeiter && empty($ort_kurzbz)) { + // request for personal lvplan show only reservations of logged in user + $reservierungen = $this->_ci->ReservierungModel->getReservierungenMitarbeiter($start_date, $end_date); } else { // querying the reservierungen $reservierungen = $this->_ci->ReservierungModel->getReservierungen($start_date, $end_date, $ort_kurzbz); diff --git a/application/models/ressource/Reservierung_model.php b/application/models/ressource/Reservierung_model.php index 789ff3d9c..0c391ea20 100644 --- a/application/models/ressource/Reservierung_model.php +++ b/application/models/ressource/Reservierung_model.php @@ -76,7 +76,7 @@ class Reservierung_model extends DB_Model * * @return stdClass */ - public function getReservierungenMitarbeiter($start_date, $end_date, $ort_kurzbz = null) + public function getReservierungenMitarbeiter($start_date, $end_date) { $raum_reservierungen_query = "SELECT res.*, beginn, ende, @@ -89,7 +89,6 @@ class Reservierung_model extends DB_Model JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = res.stunde WHERE res.uid = ? AND datum >= ? AND datum <= ?"; -// $subquery = is_null($ort_kurzbz)? $lvplan_reservierungen_query:$raum_reservierungen_query; $subquery = $raum_reservierungen_query; diff --git a/public/js/apps/Cis.js b/public/js/apps/Cis.js index 73703b42b..5b76c5721 100644 --- a/public/js/apps/Cis.js +++ b/public/js/apps/Cis.js @@ -50,7 +50,7 @@ const app = Vue.createApp({ defaultaction: { type: "link", renderif: function(data) { - if(data.content_id === "N/A"){ + if(data.content_id === null){ return false; } return true; @@ -79,7 +79,7 @@ const app = Vue.createApp({ icon: "fas fa-info-circle", type: "link", renderif: function(data) { - if(data.content_id === "N/A"){ + if(data.content_id === null){ return false; } return true; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js index 3fa43e624..dc645dadc 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js @@ -318,6 +318,7 @@ export default { name="zgvnation" > + @@ -380,6 +381,7 @@ export default { name="zgvmanation" > + @@ -443,6 +445,7 @@ export default { name="zgvdoktornation" > + @@ -504,6 +507,7 @@ export default { v-model="data.berufstaetigkeit_code" name="berufstaetigkeit_code" > + + diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Status/Modal.js b/public/js/components/Stv/Studentenverwaltung/Details/Status/Modal.js index edbd3b6ea..8b0252be8 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Status/Modal.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Status/Modal.js @@ -205,7 +205,7 @@ export default{ ];*/ }, template: ` - + diff --git a/public/js/components/Stv/Studentenverwaltung/Verband.js b/public/js/components/Stv/Studentenverwaltung/Verband.js index ccd555714..072e0e952 100644 --- a/public/js/components/Stv/Studentenverwaltung/Verband.js +++ b/public/js/components/Stv/Studentenverwaltung/Verband.js @@ -112,26 +112,14 @@ export default { return cp; }, - async filterFav() { + filterFav() { this.favorites.on = !this.favorites.on; this.$api .call(this.endpoint.favorites.set( JSON.stringify(this.favorites) - )) - .then(result => { - if (result.meta?.removed) { - this.favorites.list = this.favorites.list - .filter(fav => !result.meta.removed.includes(fav)); - const items = result.meta.removed.map( - rem => this.nodes.find( - node => node.data.link == rem - ).label - ).join(',\n'); - this.$fhcAlert.alertWarning(this.$p.t('stv/warn_removed_favs', { items })); - } - }); + )); }, - async markFav(key) { + markFav(key) { let index = this.favorites.list.indexOf(key.data.link + ''); if (index != -1) { @@ -143,19 +131,7 @@ export default { this.$api .call(this.endpoint.favorites.set( JSON.stringify(this.favorites) - )) - .then(result => { - if (result.meta?.removed) { - this.favorites.list = this.favorites.list - .filter(fav => !result.meta.removed.includes(fav)); - const items = "\n" + result.meta.removed.map( - rem => this.nodes.find( - node => node.data.link == rem - ).label - ).join(",\n"); - this.$fhcAlert.alertWarning(this.$p.t('stv/warn_removed_favs', { items })); - } - }); + )); }, unsetFavFocus(e) { if (e.target.dataset?.linkFavAdd !== undefined) { diff --git a/public/js/components/searchbar/result/template/action.js b/public/js/components/searchbar/result/template/action.js index eb4b1db3a..fdcbfaee8 100644 --- a/public/js/components/searchbar/result/template/action.js +++ b/public/js/components/searchbar/result/template/action.js @@ -19,10 +19,24 @@ export default { if (this.action.type === 'function') this.action.action(this.res); this.$emit('actionexecuted'); + }, + renderif: function() { + if(this.action?.renderif === undefined) { + return true; + } + + return this.action.renderif(this.res); } }, template: ` + + ` }; \ No newline at end of file diff --git a/public/js/components/searchbar/result/template/actions.js b/public/js/components/searchbar/result/template/actions.js index 726fef4dd..8bfd08420 100644 --- a/public/js/components/searchbar/result/template/actions.js +++ b/public/js/components/searchbar/result/template/actions.js @@ -10,11 +10,20 @@ export default { res: Object, actions: Array }, + methods: { + renderif: function(action) { + if(action?.renderif === undefined) { + return true; + } + + return action.renderif(this.res); + } + }, template: `
+
` }; \ No newline at end of file diff --git a/system/FHComplete-3.3.sql b/system/FHComplete-3.3.sql index 170066a1e..18c9c2c3d 100644 --- a/system/FHComplete-3.3.sql +++ b/system/FHComplete-3.3.sql @@ -9755,7 +9755,7 @@ COMMENT ON TABLE public.tbl_tag IS 'Orders and Company Tags'; CREATE TABLE public.tbl_variable ( name character varying(64) NOT NULL, uid character varying(32) NOT NULL, - wert character varying(64) + wert text ); diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php index 9a6c6dbfb..71031dbf3 100644 --- a/system/dbupdate_3.4.php +++ b/system/dbupdate_3.4.php @@ -77,6 +77,7 @@ require_once('dbupdate_3.4/55614_perm_verwaltetoe.php'); require_once('dbupdate_3.4/25999_C4_dashboard.php'); require_once('dbupdate_3.4/61730_Dashboard_Anpassungen.php'); require_once('dbupdate_3.4/40128_search.php'); +require_once('dbupdate_3.4/63394_Variablenbeschraenkung.php'); require_once('dbupdate_3.4/63436_cis4_iframe_component.php'); require_once('dbupdate_3.4/60882_lehrfaecherverteilung_favorites.php'); require_once('dbupdate_3.4/66982_berufsschule.php'); diff --git a/system/dbupdate_3.4/63394_Variablenbeschraenkung.php b/system/dbupdate_3.4/63394_Variablenbeschraenkung.php new file mode 100644 index 000000000..f6a75b5ef --- /dev/null +++ b/system/dbupdate_3.4/63394_Variablenbeschraenkung.php @@ -0,0 +1,28 @@ +db_query(" + SELECT data_type + FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'tbl_variable' + AND column_name = 'wert'; +")) { + if ($db->db_num_rows($result) == 1) + { + $data_type = $db->db_fetch_row($result)[0]; + + if (strtolower($data_type) != 'text') + { + $qry = "ALTER TABLE public.tbl_variable + ALTER COLUMN wert + TYPE TEXT;"; + + if (!$db->db_query($qry)) + echo 'public.tbl_variable '.$db->db_last_error().'
'; + else + echo 'public.tbl_variable: Change type of "wert" to TEXT
'; + } + } +} diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 83075ba01..14dcedb9b 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -38460,26 +38460,6 @@ array( ) ) ), - array( - 'app' => 'core', - 'category' => 'stv', - 'phrase' => 'warn_removed_favs', - 'insertvon' => 'system', - 'phrases' => array( - array( - 'sprache' => 'German', - 'text' => 'Zu viele Favoriten! Die folgenden Einträge wurden entfernt: {items}', - 'description' => '', - 'insertvon' => 'system' - ), - array( - 'sprache' => 'English', - 'text' => 'Too many favorites! The following entries were removed: {items}', - 'description' => '', - 'insertvon' => 'system' - ) - ) - ), array( 'app' => 'core', 'category' => 'stv',