diff --git a/application/config/studierendenantrag.php b/application/config/studierendenantrag.php index c5ebc0d80..3f28e5d50 100644 --- a/application/config/studierendenantrag.php +++ b/application/config/studierendenantrag.php @@ -159,3 +159,11 @@ $config['stgkz_blacklist_unterbrechung'] = []; * @var array An array of tbl_studiengang.studiengang_kz's */ $config['stgkz_blacklist_wiederholung'] = []; + +/** + * Blacklisted noten for negative committee exams + * noten with this ids won't be seen as negative + * + * @var array An array of noten ids + */ +$config['note_blacklist_wiederholung'] = []; diff --git a/application/controllers/components/Filter.php b/application/controllers/components/Filter.php index ab7e1493e..bde7d7ed7 100644 --- a/application/controllers/components/Filter.php +++ b/application/controllers/components/Filter.php @@ -26,6 +26,9 @@ class Filter extends FHC_Controller // Loads authentication library and starts authentication $this->load->library('AuthLib'); + // Loads the FiltersModel + $this->load->model('system/Filters_model', 'FiltersModel'); + // Loads the FilterCmptLib with HTTP GET/POST parameters $this->_startFilterCmptLib(); } diff --git a/application/controllers/jobs/AntragJob.php b/application/controllers/jobs/AntragJob.php index 3022cf549..2e72041ff 100644 --- a/application/controllers/jobs/AntragJob.php +++ b/application/controllers/jobs/AntragJob.php @@ -96,7 +96,7 @@ class AntragJob extends JOB_Controller } $stgLeitungen[$leitung->uid]['stgs'][] = $antrag->studiengang_kz; - $result = $this->StudiengangModel->load($antrag->studiengang_kz); + $result = $this->StudierendenantragModel->getStgAndSem($antrag->studierendenantrag_id); if (isError($result)) { $this->logError(getError($result)); @@ -214,8 +214,7 @@ class AntragJob extends JOB_Controller $count = 0; foreach ($antraege as $antrag) { - $this->StudiengangModel->addJoin('public.tbl_prestudent ps','studiengang_kz'); - $res = $this->StudiengangModel->loadWhere(['prestudent_id' => $antrag->prestudent_id]); + $res = $this->StudierendenantragModel->getStgAndSem($antrag->studierendenantrag_id); $stg = ''; $orgform = ''; if (hasData($res)) { @@ -350,6 +349,7 @@ class AntragJob extends JOB_Controller $this->StudierendenantragModel->addSelect('prestudent_id'); $this->StudierendenantragModel->addSelect('studiensemester_kurzbz'); $this->StudierendenantragModel->addSelect('s.insertamum'); + $this->StudierendenantragModel->addSelect('s.insertvon'); $this->StudierendenantragModel->db->where_in('public.get_rolle_prestudent(prestudent_id, studiensemester_kurzbz)', $this->config->item('antrag_prestudentstatus_whitelist')); @@ -373,9 +373,11 @@ class AntragJob extends JOB_Controller $result = $this->prestudentlib->setAbbrecher( $antrag->prestudent_id, $antrag->studiensemester_kurzbz, - $insertvon, + 'AntragJob', 'abbrecherStgl', - $antrag->insertamum + $antrag->insertamum, + null, + $antrag->insertvon ?: $insertvon ); if (isError($result)) $this->logError(getError($result)); @@ -414,7 +416,7 @@ class AntragJob extends JOB_Controller } } } - $this->logInfo($count . " Students set to Abbrecher"); + $this->logInfo($count . "/" . count($antraege) . " Students set to Abbrecher"); } $this->logInfo('Ende Job handleAbmeldungenStglDeadline'); } diff --git a/application/controllers/lehre/Studierendenantrag.php b/application/controllers/lehre/Studierendenantrag.php index fb0d17abb..d6d6b2c50 100644 --- a/application/controllers/lehre/Studierendenantrag.php +++ b/application/controllers/lehre/Studierendenantrag.php @@ -81,42 +81,9 @@ class Studierendenantrag extends FHC_Controller public function leitung() { - $studiengaenge = $this->permissionlib->getSTG_isEntitledFor('student/antragfreigabe'); - $stgsNeuanlage = $this->permissionlib->getSTG_isEntitledFor('student/studierendenantrag'); + $stgL = $this->permissionlib->getSTG_isEntitledFor('student/antragfreigabe') ?: []; - $stgL = []; - if ($studiengaenge) { - $result = $this->StudiengangModel->loadWithOrgform($studiengaenge); - if (isError($result)) - return show_error(getError($result)); - $antraege = getData($result) ?: []; - - foreach ($antraege as $antrag) { - if (!isset($stgL[$antrag->studiengang_kz])) { - $stgL[$antrag->studiengang_kz] = new stdClass(); - $stgL[$antrag->studiengang_kz]->bezeichnung = $antrag->bezeichnung; - $stgL[$antrag->studiengang_kz]->orgform = $antrag->orgform; - $stgL[$antrag->studiengang_kz]->studiengang_kz = $antrag->studiengang_kz; - } - } - } - - $stgA = []; - if ($stgsNeuanlage) { - $result = $this->StudiengangModel->loadWithOrgform($stgsNeuanlage); - if (isError($result)) - return show_error(getError($result)); - $antraege = getData($result) ?: []; - - foreach ($antraege as $antrag) { - if (!isset($stgA[$antrag->studiengang_kz])) { - $stgA[$antrag->studiengang_kz] = new stdClass(); - $stgA[$antrag->studiengang_kz]->bezeichnung = $antrag->bezeichnung; - $stgA[$antrag->studiengang_kz]->orgform = $antrag->orgform; - $stgA[$antrag->studiengang_kz]->studiengang_kz = $antrag->studiengang_kz; - } - } - } + $stgA = $this->permissionlib->getSTG_isEntitledFor('student/studierendenantrag') ?: []; $this->load->view('lehre/Antrag/Leitung/List', [ 'stgA' => $stgA, diff --git a/application/libraries/AntragLib.php b/application/libraries/AntragLib.php index 6cad6c2bf..ff4d5dc63 100644 --- a/application/libraries/AntragLib.php +++ b/application/libraries/AntragLib.php @@ -123,6 +123,8 @@ class AntragLib */ public function approveAbmeldung($studierendenantrag_ids, $insertvon) { + $this->_ci->load->model('crm/Student_model', 'StudentModel'); + $errors = []; foreach ($studierendenantrag_ids as $studierendenantrag_id) { $result = $this->_ci->StudierendenantragModel->load($studierendenantrag_id); @@ -156,7 +158,6 @@ class AntragLib if (hasData($result)) { $studiengang = current(getData($result)); $stg = $studiengang->bezeichnung; - $orgform = $studiengang->orgform_kurzbz; } if ($antrag->typ == Studierendenantrag_model::TYP_ABMELDUNG) { @@ -166,6 +167,7 @@ class AntragLib else { $prestudent_status = getData($resultPrestudentStatus)[0]; + $orgform = $prestudent_status->orgform_kurzbz; $vorlage ='Sancho_Mail_Antrag_A_Approve'; $subject = $this->_ci->p->t('studierendenantrag', 'mail_subject_A_Approve'); @@ -202,14 +204,14 @@ class AntragLib $data['UID'] = $student->student_uid; } - $data['Orgform'] = $orgform; + $data['Orgform'] = $prestudent_status->orgform; $data['stg'] = $stg; // NOTE(chris): Sancho mail sendSanchoMail($vorlage, $data, $prestudent_status->email, $subject); } } else { // ($antrag->typ == Studierendenantrag_model::TYP_ABMELDUNG_STGL) - $result = $this->_ci->PrestudentstatusModel->getLastStatus($antrag->prestudent_id, '', 'Student'); + $result = $this->_ci->PrestudentstatusModel->getLastStatusWithStgEmail($antrag->prestudent_id, '', 'Student'); if (isError($result)) { $errors[] = getError($result); @@ -221,6 +223,7 @@ class AntragLib continue; } $prestudentstatus = getData($result)[0]; + $orgform = $prestudentstatus->orgform_kurzbz; $result = $this->_ci->PrestudentstatusModel->withGrund('preabbrecher')->update([ 'prestudent_id' => $prestudentstatus->prestudent_id, @@ -250,10 +253,9 @@ class AntragLib $vorname = ''; $nachname = $name; } - $res = $this->_ci->KontaktModel->getZustellKontakt($prestudent->person_id, ['email']); + $res = $this->_ci->StudentModel->loadWhere(['prestudent_id' => $antrag->prestudent_id]); if (hasData($res)) { - $kontakt = current(getData($res)); - $email = $kontakt->kontakt; + $email = $this->_ci->StudentModel->getEmailFH(current(getData($res))->student_uid); $vorlage = $antrag->typ == Studierendenantrag_model::TYP_ABMELDUNG ? 'Student' : 'Stgl'; // NOTE(chris): Sancho mail @@ -334,6 +336,8 @@ class AntragLib $res = $this->_ci->PrestudentModel->load($antrag->prestudent_id); if (hasData($res)) { + $this->_ci->load->model('crm/Student_model', 'StudentModel'); + $prestudent = current(getData($res)); $res = $this->_ci->PersonModel->load($prestudent->person_id); if (hasData($res)) { @@ -344,13 +348,12 @@ class AntragLib } else { $name = $this->_ci->p->t('person', 'studentIn'); } - $res = $this->_ci->KontaktModel->getZustellKontakt($prestudent->person_id, ['email']); - if (hasData($res)) { - $kontakt = current(getData($res)); - $email = $kontakt->kontakt; - $this->_ci->StudiengangModel->addJoin('public.tbl_prestudent ps','studiengang_kz'); - $res = $this->_ci->StudiengangModel->loadWhere(['prestudent_id' => $antrag->prestudent_id]); + $res = $this->_ci->StudentModel->loadWhere(['prestudent_id' => $antrag->prestudent_id]); + if (hasData($res)) { + $email = $this->_ci->StudentModel->getEmailFH(current(getData($res))->student_uid); + + $res = $this->_ci->StudierendenantragModel->getStgAndSem($antrag->studierendenantrag_id); $stg = ''; $orgform = ''; if (hasData($res)) { @@ -432,6 +435,7 @@ class AntragLib public function approveUnterbrechung($studierendenantrag_ids, $insertvon) { $this->_ci->load->model('person/Kontakt_model', 'KontaktModel'); + $this->_ci->load->model('crm/Student_model', 'StudentModel'); $errors = []; @@ -555,7 +559,7 @@ class AntragLib [ 'name' => $mail['ass'], 'stg' => $data['studiengang']->bezeichnung, - 'Orgform' => $data['studiengang']->orgform_kurzbz, + 'Orgform' => $data['prestudent_status']->orgform_kurzbz, 'vorname' => $data['person']->vorname, 'nachname' => $data['person']->nachname, 'UID' => $data['UID'], @@ -579,7 +583,7 @@ class AntragLib [ 'name' => $mail['stu'], 'stg' => $data['studiengang']->bezeichnung, - 'Orgform' => $data['studiengang']->orgform_kurzbz, + 'Orgform' => $data['prestudent_status']->orgform_kurzbz, 'vorname' => $data['person']->vorname, 'nachname' => $data['person']->nachname ], @@ -609,6 +613,7 @@ class AntragLib public function rejectUnterbrechung($studierendenantrag_ids, $insertvon, $grund) { $this->_ci->load->model('person/Kontakt_model', 'KontaktModel'); + $this->_ci->load->model('crm/Student_model', 'StudentModel'); $errors = []; @@ -673,7 +678,7 @@ class AntragLib 'nachname' => $nachname, 'grund' => $grund, 'stg' => $data['studiengang']->bezeichnung, - 'Orgform' => $data['studiengang']->orgform_kurzbz, + 'Orgform' => $data['prestudent_status']->orgform_kurzbz, 'prestudent_id' => $data['prestudent_status']->prestudent_id, 'abmeldungLink' => site_url('lehre/Studierendenantrag/abmeldung/' . $data['prestudent_status']->prestudent_id), 'abmeldungLinkCIS' => CIS_ROOT . 'index.ci.php/lehre/Studierendenantrag/abmeldung/' . $data['prestudent_status']->prestudent_id @@ -719,7 +724,6 @@ class AntragLib else{ $result['studiengang'] = new stdClass(); $result['studiengang']->bezeichnung = ""; - $result['studiengang']->orgform_kurzbz = ""; } $res = $this->_ci->PrestudentstatusModel->getLastStatusWithStgEmail($antrag->prestudent_id); @@ -756,7 +760,7 @@ class AntragLib } } - $res = $this->_ci->KontaktModel->getZustellKontakt($person_id, ['email']); + $res = $this->_ci->StudentModel->loadWhere(['prestudent_id' => $antrag->prestudent_id]); if (isError($res)) { $errors['email'] = getError($res); } else { @@ -765,7 +769,7 @@ class AntragLib if (!$res) { $errors['email'] = $this->_ci->p->t('studierendenantrag', 'error_no_email', ['person_id' => $person_id]); } else { - $result['email'] = current($res)->kontakt; + $result['email'] = $this->_ci->StudentModel->getEmailFH(current($res)->student_uid); } } } @@ -855,14 +859,18 @@ class AntragLib $prestudent_status = current($res); $email = $prestudent_status->email; // NOTE(chris): Sancho mail + $lvzuweisungLink = site_url('lehre/Antrag/Wiederholung/assistenz/' . $antrag_id); + if( defined('VILESCI_ROOT') ) + { + $lvzuweisungLink = VILESCI_ROOT . 'index.ci.php/lehre/Antrag/Wiederholung/assistenz/' . $antrag_id; + } sendSanchoMail( 'Sancho_Mail_Antrag_W_New', [ 'antrag_id' => $antrag_id, 'stg' => $prestudent_status->stg_bezeichnung, 'Orgform' => $prestudent_status->orgform, - 'lvzuweisungLink' => site_url('lehre/Antrag/Wiederholung/assistenz/' . $antrag_id), - 'lvzuweisungLinkCIS' => CIS_ROOT . 'index.ci.php/lehre/Antrag/Wiederholung/assistenz/' . $antrag_id + 'lvzuweisungLink' => $lvzuweisungLink ], $email, $this->_ci->p->t('studierendenantrag', 'mail_subject_W_New') @@ -1514,6 +1522,8 @@ class AntragLib public function approveWiederholung($antrag_id, $insertvon) { + $this->_ci->load->model('crm/Student_model', 'StudentModel'); + $result = $this->_ci->StudierendenantragstatusModel->insert([ 'studierendenantrag_id' => $antrag_id, 'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED, @@ -1540,18 +1550,9 @@ class AntragLib if (!$result) return error($this->_ci->p->t('studierendenantrag', 'error_no_stg_antrag', ['id' => $antrag_id])); - $result = current($result); - $studiengang_kz = $result->studiengang_kz; - $semester = $result->ausbildungssemester; - - $result = $this->_ci->StudiengangModel->load($studiengang_kz); - if (isError($result)) - return $result; - $result = getData($result); - if (!$result) - return error($this->_ci->p->t('studierendenantrag', 'error_no_stg_antrag', ['id' => $antrag_id])); - $stg = current($result); + $studiengang_kz = $stg->studiengang_kz; + $semester = $stg->ausbildungssemester; $result = $this->_ci->StudierendenantragModel->load($antrag_id); if (isError($result)) @@ -1577,10 +1578,10 @@ class AntragLib $mitarbeiter = getData($result); } - $result = $this->_ci->StudentModel->loadWhere(['prestudent_id'=> $antrag->prestudent_id]); + $result = $this->_ci->StudentModel->loadWhere(['prestudent_id'=> $prestudent_id]); if (hasData($result)) { - $student = current(getData($result)); - $student_uid = $student->student_uid; + $studentObj = current(getData($result)); + $student_uid = $studentObj->student_uid; } else $student_uid = ''; @@ -1602,10 +1603,8 @@ class AntragLib )) return error($this->_ci->p->t('studierendenantrag', 'error_mail_to', ['email' => $email])); - $result = $this->_ci->KontaktModel->getZustellKontakt($person->person_id, ['email']); - if (hasData($result)) { - $kontakt = current(getData($result)); - $email = $kontakt->kontakt; + if ($student_uid) { + $email = $this->_ci->StudentModel->getEmailFH($student_uid); $sem_not_allowed = $sem_to_repeat = ''; $list_not_allowed = $list_to_repeat = $this->_ci->p->t('studierendenantrag', 'mail_part_error_no_lvs'); @@ -1615,7 +1614,7 @@ class AntragLib $lvs = getData($result); foreach ($lvs as $sem => $lv_list) { $lvs_filtered = array_filter($lv_list, function ($el) { - return $el->antrag_zugelassen; + return property_exists($el, 'antrag_zugelassen') && $el->antrag_zugelassen; }); if (substr($sem, 0, 1) == '1') { $sem_not_allowed = substr($sem, 1); diff --git a/application/libraries/PrestudentLib.php b/application/libraries/PrestudentLib.php index 279b6ed2a..989e14585 100644 --- a/application/libraries/PrestudentLib.php +++ b/application/libraries/PrestudentLib.php @@ -35,10 +35,12 @@ class PrestudentLib $this->_ci->load->model('organisation/Studiengang_model', 'StudiengangModel'); } - public function setAbbrecher($prestudent_id, $studiensemester_kurzbz, $insertvon = null, $statusgrund_kurzbz = null, $datum = null, $bestaetigtam = null) + public function setAbbrecher($prestudent_id, $studiensemester_kurzbz, $insertvon = null, $statusgrund_kurzbz = null, $datum = null, $bestaetigtam = null, $bestaetigtvon = null) { if (!$insertvon) $insertvon = getAuthUID(); + if (!$bestaetigtvon) + $bestaetigtvon = $insertvon; $result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id, $studiensemester_kurzbz); if (isError($result)) @@ -79,7 +81,7 @@ class PrestudentLib 'insertamum' => date('c'), 'orgform_kurzbz'=> $prestudent_status->orgform_kurzbz, 'studienplan_id'=> $prestudent_status->studienplan_id, - 'bestaetigtvon' => $insertvon, + 'bestaetigtvon' => $bestaetigtvon, 'bestaetigtam' => $bestaetigtam ]); diff --git a/application/models/crm/Prestudentstatus_model.php b/application/models/crm/Prestudentstatus_model.php index d12ebd68d..08c081153 100644 --- a/application/models/crm/Prestudentstatus_model.php +++ b/application/models/crm/Prestudentstatus_model.php @@ -238,7 +238,7 @@ class Prestudentstatus_model extends DB_Model { $this->addSelect('tbl_prestudentstatus.*, tbl_studienplan.bezeichnung AS studienplan_bezeichnung, - tbl_studienplan.orgform_kurzbz AS orgform, + tbl_orgform.orgform_kurzbz AS orgform, tbl_studienplan.sprache, tbl_orgform.bezeichnung_mehrsprachig AS bezeichnung_orgform, tbl_status.bezeichnung_mehrsprachig, @@ -250,7 +250,7 @@ class Prestudentstatus_model extends DB_Model $this->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT'); $this->addJoin('public.tbl_status', 'tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz'); $this->addJoin('public.tbl_status_grund', 'statusgrund_id', 'LEFT'); - $this->addJoin('bis.tbl_orgform', 'tbl_studienplan.orgform_kurzbz = tbl_orgform.orgform_kurzbz', 'LEFT'); + $this->addJoin('bis.tbl_orgform', 'COALESCE(tbl_studienplan.orgform_kurzbz, ' . $this->dbTable . '.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) = tbl_orgform.orgform_kurzbz', 'LEFT'); $this->db->where('tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz'); $where = array('prestudent_id' => $prestudent_id); @@ -295,7 +295,8 @@ class Prestudentstatus_model extends DB_Model $this->addJoin('public.tbl_studiensemester ss', 'studiensemester_kurzbz'); $this->addJoin('public.tbl_person pers', 'person_id'); $this->addJoin('public.tbl_studiengang g', 'p.studiengang_kz=g.studiengang_kz'); - $this->addJoin('bis.tbl_orgform o', 'g.orgform_kurzbz=o.orgform_kurzbz'); + $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT'); + $this->addJoin('bis.tbl_orgform o', 'COALESCE(plan.orgform_kurzbz, ' . $this->dbTable . '.orgform_kurzbz, g.orgform_kurzbz)=o.orgform_kurzbz'); $this->addOrder($this->dbTable . '.datum', 'DESC'); $this->addOrder($this->dbTable . '.insertamum', 'DESC'); diff --git a/application/models/crm/Student_model.php b/application/models/crm/Student_model.php index e27fa68dc..4b0a70b1a 100644 --- a/application/models/crm/Student_model.php +++ b/application/models/crm/Student_model.php @@ -84,7 +84,7 @@ class Student_model extends DB_Model } /** - * Get the FH-Email for a student (not the private kontakt emailt) + * Get the FH-Email for a student (not the private kontakt email) * @param $student_uid * @return string */ diff --git a/application/models/education/Pruefung_model.php b/application/models/education/Pruefung_model.php index 83bf9b7f8..e1d668293 100644 --- a/application/models/education/Pruefung_model.php +++ b/application/models/education/Pruefung_model.php @@ -39,6 +39,7 @@ class Pruefung_model extends DB_Model /** + * NOTE(chris): not used * @return string */ protected function loadWhereThreeExamsFailed() @@ -86,8 +87,10 @@ class Pruefung_model extends DB_Model $this->addJoin('public.tbl_person pers', 'person_id'); $this->addJoin('public.tbl_benutzer b', 's.student_uid=b.uid'); $this->addJoin('public.tbl_studiengang g', 'ps.studiengang_kz=g.studiengang_kz'); - $this->addJoin('bis.tbl_orgform o', 'g.orgform_kurzbz=o.orgform_kurzbz'); - $this->db->join('campus.tbl_studierendenantrag a', 'ps.prestudent_id=a.prestudent_id and a.typ = ?', 'LEFT', false); + $this->addJoin('public.tbl_prestudentstatus pss', 'pss.prestudent_id=ps.prestudent_id AND pss.studiensemester_kurzbz=le.studiensemester_kurzbz AND pss.status_kurzbz=get_rolle_prestudent(ps.prestudent_id, le.studiensemester_kurzbz)', 'LEFT'); + $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT'); + $this->addJoin('bis.tbl_orgform o', 'COALESCE(plan.orgform_kurzbz, pss.orgform_kurzbz, g.orgform_kurzbz)=o.orgform_kurzbz'); + $this->db->join('campus.tbl_studierendenantrag a', 'ps.prestudent_id=a.prestudent_id and a.typ = ?', 'LEFT', false); $this->db->where("n.positiv", false); /* $this->db->where_in("p.pruefungstyp_kurzbz1", ['kommPruef','zusKommPruef']);*/ @@ -122,6 +125,8 @@ class Pruefung_model extends DB_Model */ public function loadWhereCommitteeExamsFailed() { + $this->load->config('studierendenantrag'); + $this->dbTable = 'lehre.tbl_pruefung p'; $this->addSelect('p.datum'); @@ -129,6 +134,9 @@ class Pruefung_model extends DB_Model $this->addJoin('lehre.tbl_note n', 'note'); $this->db->where("n.positiv", false); + $note_blacklist = $this->config->item('note_blacklist_wiederholung'); + if ($note_blacklist) + $this->db->where_not_in("n.note", $note_blacklist); $this->db->where_in("p.pruefungstyp_kurzbz", ['kommPruef','zusKommPruef']); return $this->load(); @@ -164,7 +172,9 @@ class Pruefung_model extends DB_Model $this->addJoin('public.tbl_person pers', 'person_id'); $this->addJoin('public.tbl_benutzer b', 's.student_uid=b.uid'); $this->addJoin('public.tbl_studiengang g', 'ps.studiengang_kz=g.studiengang_kz'); - $this->addJoin('bis.tbl_orgform o', 'g.orgform_kurzbz=o.orgform_kurzbz'); + $this->addJoin('public.tbl_prestudentstatus pss', 'pss.prestudent_id=ps.prestudent_id AND pss.studiensemester_kurzbz=le.studiensemester_kurzbz AND pss.status_kurzbz=get_rolle_prestudent(ps.prestudent_id, le.studiensemester_kurzbz)', 'LEFT'); + $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT'); + $this->addJoin('bis.tbl_orgform o', 'COALESCE(plan.orgform_kurzbz, pss.orgform_kurzbz, g.orgform_kurzbz)=o.orgform_kurzbz'); $this->addJoin('campus.tbl_studierendenantrag a', 'ps.prestudent_id=a.prestudent_id and a.typ=' . $this->escape(Studierendenantrag_model::TYP_WIEDERHOLUNG), 'LEFT'); $this->db->where_in("get_rolle_prestudent(ps.prestudent_id, null)", $this->config->item('antrag_prestudentstatus_whitelist')); @@ -212,9 +222,9 @@ class Pruefung_model extends DB_Model $this->withDetailsForStudierendenAntrag(); if ($maxDate) - $this->db->where("p.datum < ", $maxDate->format('c')); + $this->db->where("p.datum <= ", $maxDate->format('Y-m-d')); if ($minDate) - $this->db->where("p.datum > ", $minDate->format('c')); + $this->db->where("p.datum > ", $minDate->format('Y-m-d')); $this->db->where("b.aktiv", true); diff --git a/application/models/education/Studierendenantrag_model.php b/application/models/education/Studierendenantrag_model.php index e1b386f2e..4931896cd 100644 --- a/application/models/education/Studierendenantrag_model.php +++ b/application/models/education/Studierendenantrag_model.php @@ -37,11 +37,11 @@ class Studierendenantrag_model extends DB_Model $this->addSelect('studienjahr_kurzbz'); $this->addSelect('vorname'); $this->addSelect('nachname'); - $this->addSelect('prestudent_id'); + $this->addSelect('p.prestudent_id'); $this->addSelect('p.studiengang_kz'); $this->addSelect('semester'); $this->addSelect($this->dbTable . '.grund'); - $this->addSelect('datum'); + $this->addSelect($this->dbTable . '.datum'); $this->addSelect('datum_wiedereinstieg'); $this->addSelect($this->dbTable . '.typ'); $this->addSelect('st.studierendenantrag_statustyp_kurzbz as status'); @@ -52,8 +52,10 @@ class Studierendenantrag_model extends DB_Model $this->addJoin('public.tbl_student', 'prestudent_id'); $this->addJoin('public.tbl_person', 'person_id'); $this->addJoin('public.tbl_studiengang stg', 'p.studiengang_kz=stg.studiengang_kz'); - $this->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz'); - $this->addJoin('bis.tbl_orgform', 'orgform_kurzbz'); + $this->addJoin('public.tbl_studiensemester ss', 'studiensemester_kurzbz'); + $this->addJoin('public.tbl_prestudentstatus ps', 'ps.prestudent_id=p.prestudent_id AND ps.studiensemester_kurzbz=ss.studiensemester_kurzbz AND ps.status_kurzbz=get_rolle_prestudent(p.prestudent_id, ss.studiensemester_kurzbz)'); + $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT'); + $this->addJoin('bis.tbl_orgform of', 'of.orgform_kurzbz=COALESCE(plan.orgform_kurzbz, ps.orgform_kurzbz, stg.orgform_kurzbz)'); $this->addJoin( 'campus.tbl_studierendenantrag_status as s', 'campus.get_status_id_studierendenantrag('. $this->dbTable .'.studierendenantrag_id) = studierendenantrag_status_id' @@ -120,14 +122,17 @@ class Studierendenantrag_model extends DB_Model public function getStgAndSem($antrag_id) { $this->addSelect('p.studiengang_kz'); + $this->addSelect('stg.bezeichnung'); $this->addSelect('s.ausbildungssemester'); - $this->addSelect('s.orgform_kurzbz'); + $this->addSelect('COALESCE(plan.orgform_kurzbz, s.orgform_kurzbz, stg.orgform_kurzbz) AS orgform_kurzbz'); $this->addJoin( 'public.tbl_prestudentstatus s', $this->dbTable . '.prestudent_id=s.prestudent_id AND ' . $this->dbTable . '.studiensemester_kurzbz=s.studiensemester_kurzbz' ); $this->addJoin('public.tbl_prestudent p', $this->dbTable . '.prestudent_id=p.prestudent_id'); + $this->addJoin('public.tbl_studiengang stg', 'studiengang_kz', 'LEFT'); + $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT'); $this->addOrder('s.datum', 'DESC'); $this->addOrder('s.insertamum', 'DESC'); @@ -192,7 +197,9 @@ class Studierendenantrag_model extends DB_Model $this->addJoin('public.tbl_prestudent p', 'prestudent_id', 'RIGHT'); $this->addJoin('public.tbl_studiengang stg', 'p.studiengang_kz=stg.studiengang_kz'); - $this->addJoin('bis.tbl_orgform', 'orgform_kurzbz'); + $this->addJoin('public.tbl_prestudentstatus ps', 'ps.prestudent_id=p.prestudent_id AND ps.studiensemester_kurzbz=' . $this->dbTable . '.studiensemester_kurzbz AND ps.status_kurzbz=get_rolle_prestudent(p.prestudent_id, ' . $this->dbTable . '.studiensemester_kurzbz)', 'LEFT'); + $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT'); + $this->addJoin('bis.tbl_orgform of', 'of.orgform_kurzbz=COALESCE(plan.orgform_kurzbz, ps.orgform_kurzbz, stg.orgform_kurzbz)'); $this->addJoin( 'campus.tbl_studierendenantrag_statustyp st', 'campus.get_status_studierendenantrag(studierendenantrag_id)=st.studierendenantrag_statustyp_kurzbz', diff --git a/application/models/organisation/Studiengang_model.php b/application/models/organisation/Studiengang_model.php index ea8e59ebd..d232e14d6 100644 --- a/application/models/organisation/Studiengang_model.php +++ b/application/models/organisation/Studiengang_model.php @@ -525,20 +525,6 @@ class Studiengang_model extends DB_Model return $this->execQuery($query, $params); } - public function loadWithOrgform($studiengang_kzs) - { - $sql = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1"; - - $this->addSelect($this->dbTable . '.*'); - $this->addSelect('o.bezeichnung_mehrsprachig[(' . $sql . ')] AS orgform'); - - $this->addJoin('bis.tbl_orgform o', 'orgform_kurzbz'); - - $this->db->where_in($this->dbTable . '.studiengang_kz', $studiengang_kzs); - - return $this->load(); - } - /** * @param array $studiengang_kzs * @param array $not_antrag_typ (optional) If the prestudent has an antrag with one of the specified types it will be excluded from the result @@ -571,7 +557,8 @@ class Studiengang_model extends DB_Model AND ps.ausbildungssemester=get_absem_prestudent(p.prestudent_id, NULL) AND ps.status_kurzbz=get_rolle_prestudent(p.prestudent_id, NULL)' ); - $this->addJoin('bis.tbl_orgform o', $this->dbTable . '.orgform_kurzbz=o.orgform_kurzbz'); + $this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id'); + $this->addJoin('bis.tbl_orgform o', 'COALESCE(plan.orgform_kurzbz, ps.orgform_kurzbz, ' . $this->dbTable . '.orgform_kurzbz)=o.orgform_kurzbz'); $this->addJoin('public.tbl_person pers', 'person_id'); $this->addJoin('public.tbl_student stud', 'p.prestudent_id=stud.prestudent_id', 'LEFT'); diff --git a/application/views/lehre/Antrag/Create.php b/application/views/lehre/Antrag/Create.php index 643991191..2c9d0d382 100644 --- a/application/views/lehre/Antrag/Create.php +++ b/application/views/lehre/Antrag/Create.php @@ -35,13 +35,13 @@ $this->load->view( antrag-type="" studierendenantrag-id="" v-model:info-array="infoArray" - v-model:status-msg="statusMsg" - v-model:status-severity="statusSeverity" + v-model:status-msg="status.msg" + v-model:status-severity="status.severity" >
- +
diff --git a/application/views/lehre/Antrag/Student/List.php b/application/views/lehre/Antrag/Student/List.php index add2e8c7d..4ca99f951 100644 --- a/application/views/lehre/Antrag/Student/List.php +++ b/application/views/lehre/Antrag/Student/List.php @@ -82,7 +82,7 @@ $this->load->view( @@ -110,8 +110,8 @@ $this->load->view( typ == Studierendenantrag_model::TYP_WIEDERHOLUNG && $antrag->status == Studierendenantragstatus_model::STATUS_APPROVED) { ?> - p->t('studierendenantrag', 'btn_show_lvs'); ?> - + p->t('studierendenantrag', 'btn_show_lvs'); ?> + p->t('studierendenantrag', 'my_lvs'); ?> diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php index b87a6e6d0..20216328a 100644 --- a/application/views/templates/FHC-Header.php +++ b/application/views/templates/FHC-Header.php @@ -77,7 +77,7 @@ } // Tabulator 5 CSS - if ($tabulator5 === true) generateCSSsInclude('vendor/olifolkerd/tabulator5/dist/css/tabulator_bootstrap5.min.css'); + if ($tabulator5 === true) generateCSSsInclude('public/css/Tabulator5.css'); // Tinymce 4 CSS if ($tinymce4 === true) generateCSSsInclude('public/css/TinyMCE4.css'); diff --git a/cis/private/lehre/abgabe_lektor_zusatz.php b/cis/private/lehre/abgabe_lektor_zusatz.php index 39488b6c3..b764fd556 100644 --- a/cis/private/lehre/abgabe_lektor_zusatz.php +++ b/cis/private/lehre/abgabe_lektor_zusatz.php @@ -121,15 +121,15 @@ echo ' - '.$p->t('abgabetool/kontrollierteSchlagwoerter').':* + '.$p->t('abgabetool/kontrollierteSchlagwoerter').': - '.$p->t('abgabetool/deutscheSchlagwoerter').': + '.$p->t('abgabetool/deutscheSchlagwoerter').':* - '.$p->t('abgabetool/englischeSchlagwoerter').': + '.$p->t('abgabetool/englischeSchlagwoerter').':* diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index 6575dcf70..9171a978c 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -64,7 +64,6 @@ if(!isset($_POST['uid'])) $fixtermin = false; $datum = '01.01.1980'; $kurzbz = ''; - $kontrollschlagwoerter = ''; $schlagwoerter = ''; $schlagwoerter_en = ''; $abstract = ''; @@ -88,7 +87,6 @@ else $kurzbz = (isset($_POST['kurzbz'])?$_POST['kurzbz']:''); $betreuer = (isset($_POST['betreuer'])?$_POST['betreuer']:'-1'); $sprache = (isset($_POST['sprache'])?$_POST['sprache']:'German'); - $kontrollschlagwoerter = (isset($_POST['kontrollschlagwoerter'])?$_POST['kontrollschlagwoerter']:'-1'); $schlagwoerter = (isset($_POST['schlagwoerter'])?$_POST['schlagwoerter']:'-1'); $schlagwoerter_en = (isset($_POST['schlagwoerter_en'])?$_POST['schlagwoerter_en']:'-1'); $abstract = (isset($_POST['abstract'])?$_POST['abstract']:'-1'); @@ -211,23 +209,7 @@ if($command=='add') { //zusätzliche Daten bearbeiten //Check der Eingabedaten - if(strlen($kontrollschlagwoerter)<1) - { - $error=true; - } - if(mb_strlen($kontrollschlagwoerter)>=150) - { - $kontrollschlagwoerter = mb_substr($kontrollschlagwoerter, 0, 146).'...'; - } - if(strlen($abstract)<1) - { - $error=true; - } - if(strlen($abstract_en)<1) - { - $error=true; - } - if($seitenanzahl<1) + if((strlen($schlagwoerter) < 1) || (strlen($schlagwoerter_en) < 1) || (strlen($abstract) < 1) || (strlen($abstract_en) < 1) || ($seitenanzahl < 1)) { $error=true; } @@ -237,7 +219,6 @@ if($command=='add') seitenanzahl = ".$db->db_add_param($seitenanzahl).", abgabedatum = now(), sprache = ".$db->db_add_param($sprache).", - kontrollschlagwoerter = ".$db->db_add_param($kontrollschlagwoerter).", schlagwoerter_en = ".$db->db_add_param($schlagwoerter_en).", schlagwoerter = ".$db->db_add_param($schlagwoerter).", abstract = ".$db->db_add_param($abstract).", @@ -413,12 +394,9 @@ if($command=="update" && $error!=true) $htmlstr .= " \n"; } $htmlstr .= "\n"; - $htmlstr .= ''.$p->t('abgabetool/kontrollierteSchlagwoerter').':* - - '."\n"; - $htmlstr .= ''.$p->t('abgabetool/deutscheSchlagwoerter').': + $htmlstr .= ''.$p->t('abgabetool/deutscheSchlagwoerter').':* '."\n"; - $htmlstr .= ''.$p->t('abgabetool/englischeSchlagwoerter').': + $htmlstr .= ''.$p->t('abgabetool/englischeSchlagwoerter').':* '."\n"; $htmlstr .= ''.$p->t('abgabetool/abstract').' '.$p->t('abgabetool/maxZeichen').':* '."\n"; @@ -657,7 +635,6 @@ if($command!="add") $htmlstr .= ''."\n"; $htmlstr .= ''."\n"; $htmlstr .= ''."\n"; - $htmlstr .= ''."\n"; $htmlstr .= ''."\n"; $htmlstr .= ''."\n"; $htmlstr .= ''."\n"; diff --git a/cis/private/lehre/swd.php b/cis/private/lehre/swd.php deleted file mode 100644 index 248779aac..000000000 --- a/cis/private/lehre/swd.php +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/composer.json b/composer.json index 089e2a751..7d1627420 100644 --- a/composer.json +++ b/composer.json @@ -230,9 +230,9 @@ "type": "package", "package": { "name": "olifolkerd/tabulator5", - "version": "5.2.1", + "version": "5.5.2", "dist": { - "url": "https://github.com/olifolkerd/tabulator/archive/refs/tags/5.2.1.zip", + "url": "https://github.com/olifolkerd/tabulator/archive/refs/tags/5.5.2.zip", "type": "zip" } } @@ -426,7 +426,7 @@ "npm-asset/primeicons": "5.0.0", "olifolkerd/tabulator4": "4.9.*", - "olifolkerd/tabulator5": "5.2.*", + "olifolkerd/tabulator5": "5.5.*", "phpseclib/phpseclib": "2.0.*", diff --git a/composer.lock b/composer.lock index aac387eb2..5660e87e9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f6e67e501fdd9ac047cc680abeb3daa9", + "content-hash": "b6e875dbd1ec2554abbf9f7513806469", "packages": [ { "name": "afarkas/html5shiv", @@ -1511,10 +1511,10 @@ }, { "name": "olifolkerd/tabulator5", - "version": "5.2.1", + "version": "5.5.2", "dist": { "type": "zip", - "url": "https://github.com/olifolkerd/tabulator/archive/refs/tags/5.2.1.zip" + "url": "https://github.com/olifolkerd/tabulator/archive/refs/tags/5.5.2.zip" }, "type": "library" }, diff --git a/public/css/Tabulator5.css b/public/css/Tabulator5.css new file mode 100644 index 000000000..48124335f --- /dev/null +++ b/public/css/Tabulator5.css @@ -0,0 +1,40 @@ +@import '../../vendor/olifolkerd/tabulator5/dist/css/tabulator_bootstrap5.min.css'; + +/* Apply borders and background to Cell instead of the Row + * otherwise frozen columns won't look good (columns behind + * will be partial visible) + */ +.tabulator-row { + border-bottom: none; +} +.tabulator-row .tabulator-frozen, +.tabulator-row .tabulator-cell { + border-bottom: 1px solid #dee2e6; +} +.tabulator-row.tabulator-row-even { + background-color: transparent; +} +.tabulator-headers .tabulator-frozen, +.tabulator-row.tabulator-row-odd .tabulator-frozen, +.tabulator-row.tabulator-row-odd .tabulator-cell { + background-color: #fff; +} +.tabulator-row.tabulator-row-even .tabulator-frozen, +.tabulator-row.tabulator-row-even .tabulator-cell { + background-color: #f2f2f2; +} +.tabulator-row.tabulator-selectable:hover .tabulator-frozen, +.tabulator-row.tabulator-selectable:hover .tabulator-cell { + background-color: #ececec; +} +.tabulator-row.tabulator-selected .tabulator-frozen, +.tabulator-row.tabulator-selected .tabulator-cell { + background-color: #9abcea; +} +.tabulator-row.tabulator-selected:hover .tabulator-frozen, +.tabulator-row.tabulator-selected:hover .tabulator-cell { + background-color: #769bcc; +} +.tabulator .tabulator-col-resize-handle:last-of-type { + z-index: 999999; +} diff --git a/public/js/apps/lehre/Antrag.js b/public/js/apps/lehre/Antrag.js index bcb7b37a7..00a5877b3 100644 --- a/public/js/apps/lehre/Antrag.js +++ b/public/js/apps/lehre/Antrag.js @@ -2,6 +2,7 @@ import StudierendenantragAntrag from "../../components/Studierendenantrag/Antrag import StudierendenantragStatus from "../../components/Studierendenantrag/Status.js"; import StudierendenantragInfoblock from "../../components/Studierendenantrag/Infoblock.js"; import VueDatePicker from "../../components/vueDatepicker.js.php"; +import Phrasen from '../../plugin/Phrasen.js'; const app = Vue.createApp({ components: { @@ -12,10 +13,14 @@ const app = Vue.createApp({ }, data() { return { - statusMsg: "", - statusSeverity: "", + status: { + msg: '', + severity: '' + }, infoArray: [] }; } }); -app.mount('#wrapper'); +app + .use(Phrasen) + .mount('#wrapper'); diff --git a/public/js/apps/lehre/Antrag/Leitung.js b/public/js/apps/lehre/Antrag/Leitung.js index 25e4afaa0..637ca3f61 100644 --- a/public/js/apps/lehre/Antrag/Leitung.js +++ b/public/js/apps/lehre/Antrag/Leitung.js @@ -1,8 +1,12 @@ import StudierendenantragLeitung from '../../../components/Studierendenantrag/Leitung.js'; +import Phrasen from '../../../plugin/Phrasen.js'; const app = Vue.createApp({ components: { StudierendenantragLeitung } }); -app.use(primevue.config.default,{zIndex: {overlay: 9999}}).mount('#wrapper'); +app + .use(Phrasen) + .use(primevue.config.default,{zIndex: {overlay: 9999}}) + .mount('#wrapper'); diff --git a/public/js/apps/lehre/Antrag/Lvzuweisung.js b/public/js/apps/lehre/Antrag/Lvzuweisung.js index 836d1168e..78abec5cf 100644 --- a/public/js/apps/lehre/Antrag/Lvzuweisung.js +++ b/public/js/apps/lehre/Antrag/Lvzuweisung.js @@ -1,4 +1,5 @@ import LvZuweisung from '../../../components/Studierendenantrag/Lvzuweisung.js'; +import Phrasen from '../../../plugin/Phrasen.js'; const app = Vue.createApp({ components: { @@ -10,4 +11,6 @@ const app = Vue.createApp({ } } }); -app.mount('#wrapper'); +app + .use(Phrasen) + .mount('#wrapper'); diff --git a/public/js/apps/lehre/Antrag/Student.js b/public/js/apps/lehre/Antrag/Student.js index f06143149..80cea89e9 100644 --- a/public/js/apps/lehre/Antrag/Student.js +++ b/public/js/apps/lehre/Antrag/Student.js @@ -1,8 +1,11 @@ import LvPopup from '../../../components/Studierendenantrag/Leitung/LvPopup.js'; +import Phrasen from '../../../plugin/Phrasen.js'; const app = Vue.createApp({ components: { LvPopup } }); -app.mount('#wrapper'); +app + .use(Phrasen) + .mount('#wrapper'); diff --git a/public/js/components/Bootstrap/Modal.js b/public/js/components/Bootstrap/Modal.js index 90cec2d50..453cc0b48 100644 --- a/public/js/components/Bootstrap/Modal.js +++ b/public/js/components/Bootstrap/Modal.js @@ -1,3 +1,5 @@ +import Phrasen from '../../plugin/Phrasen.js'; + export default { data: () => ({ modal: null @@ -86,6 +88,7 @@ export default { } }); const wrapper = document.createElement("div"); + instance.use(Phrasen); // TODO(chris): find a more dynamic way instance.mount(wrapper); document.body.appendChild(wrapper); }); diff --git a/public/js/components/Studierendenantrag/Antrag.js b/public/js/components/Studierendenantrag/Antrag.js index d5989b521..197fe2206 100644 --- a/public/js/components/Studierendenantrag/Antrag.js +++ b/public/js/components/Studierendenantrag/Antrag.js @@ -2,7 +2,6 @@ import StudierendenantragAbmeldung from './Form/Abmeldung.js'; import StudierendenantragAbmeldungStgl from './Form/AbmeldungStgl.js'; import StudierendenantragUnterbrechung from './Form/Unterbrechung.js'; import StudierendenantragWiederholung from './Form/Wiederholung.js'; -import Phrasen from '../../mixins/Phrasen.js'; export default { components: { @@ -11,9 +10,6 @@ export default { StudierendenantragUnterbrechung, StudierendenantragWiederholung }, - mixins: [ - Phrasen - ], emits: [ 'update:infoArray', 'update:statusMsg', @@ -37,13 +33,13 @@ export default { return 'Studierendenantrag' + this.antragType; }, infoText() { - return this.p.t('studierendenantrag/info_' + this.antragType + '_' + this.status); + return this.$p.t('studierendenantrag/info_' + this.antragType + '_' + this.status); } }, template: `
- {{p.t('studierendenantrag', 'title_' + antragType)}} + {{$p.t('studierendenantrag', 'title_' + antragType)}}
diff --git a/public/js/components/Studierendenantrag/Form/Abmeldung.js b/public/js/components/Studierendenantrag/Form/Abmeldung.js index ba6a054ad..513b8b542 100644 --- a/public/js/components/Studierendenantrag/Form/Abmeldung.js +++ b/public/js/components/Studierendenantrag/Form/Abmeldung.js @@ -1,5 +1,4 @@ import {CoreFetchCmpt} from '../../Fetch.js'; -import Phrasen from '../../../mixins/Phrasen.js'; var _uuid = 0; @@ -7,9 +6,6 @@ export default { components: { CoreFetchCmpt }, - mixins: [ - Phrasen - ], emits: [ 'setInfos', 'setStatus' @@ -56,7 +52,7 @@ export default { this.data = result.data.retval; if (this.data.status) { this.$emit("setStatus", { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.data.statustyp}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})), severity: this.statusSeverity }); } @@ -67,7 +63,7 @@ export default { createAntrag() { bootstrap.Modal.getOrCreateInstance(this.$refs.modal).hide(); this.$emit('setStatus', { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.p.t('studierendenantrag', 'status_saving')}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_saving')})), severity: 'warning' }); this.saving = true; @@ -93,7 +89,7 @@ export default { this.errors.default.push(result.data.retval[k]); } this.$emit('setStatus', { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.p.t('studierendenantrag', 'status_error')}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})), severity: 'danger' }); } @@ -104,13 +100,13 @@ export default { this.data = result.data.retval; if (this.data.status) { this.$emit("setStatus", { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.data.statustyp}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})), severity: this.statusSeverity }); } else this.$emit('setStatus', { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.p.t('studierendenantrag', 'status_open')}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_open')})), severity:'success' }); } @@ -120,7 +116,7 @@ export default { }, cancelAntrag() { this.$emit('setStatus', { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.p.t('studierendenantrag', 'status_cancelling')}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_cancelling')})), severity: 'warning' }); this.saving = true; @@ -144,7 +140,7 @@ export default { this.errors.default.push(result.data.retval[k]); } this.$emit('setStatus', { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.p.t('studierendenantrag', 'status_error')}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})), severity:'danger' }); } @@ -156,13 +152,13 @@ export default { this.data = result.data.retval; if (this.data.status) { this.$emit("setStatus", { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.data.statustyp}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})), severity: this.statusSeverity }); } else this.$emit('setStatus', { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.p.t('studierendenantrag', 'status_cancelled')}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_cancelled')})), severity: 'danger' }); } @@ -183,37 +179,37 @@ export default {
- + - + - + - + - + - + - +
{{p.t('lehre', 'studiengang')}}{{$p.t('lehre', 'studiengang')}} {{data.bezeichnung}}
{{p.t('lehre', 'organisationsform')}}{{$p.t('lehre', 'organisationsform')}} {{data.orgform_bezeichnung}}
{{p.t('projektarbeitsbeurteilung', 'nameStudierende')}}{{$p.t('projektarbeitsbeurteilung', 'nameStudierende')}} {{data.name}}
{{p.t('person', 'personenkennzeichen')}}{{$p.t('person', 'personenkennzeichen')}} {{data.matrikelnr}}
{{p.t('lehre', 'studienjahr')}}{{$p.t('lehre', 'studienjahr')}} {{data.studienjahr_kurzbz}}
{{p.t('lehre', 'studiensemester')}}{{$p.t('lehre', 'studiensemester')}} {{data.studiensemester_kurzbz}}
{{p.t('lehre', 'semester')}}{{$p.t('lehre', 'semester')}} {{data.semester}}
-
{{p.t('studierendenantrag', 'antrag_grund')}}:
+
{{$p.t('studierendenantrag', 'antrag_grund')}}:
{{data.grund}}
@@ -239,7 +235,7 @@ export default { @click="cancelAntrag" :disabled="saving" > - {{p.t('studierendenantrag', 'btn_cancel')}} + {{$p.t('studierendenantrag', 'btn_cancel')}} - diff --git a/public/js/components/Studierendenantrag/Form/AbmeldungStgl.js b/public/js/components/Studierendenantrag/Form/AbmeldungStgl.js index 3524bcd1f..1650d3638 100644 --- a/public/js/components/Studierendenantrag/Form/AbmeldungStgl.js +++ b/public/js/components/Studierendenantrag/Form/AbmeldungStgl.js @@ -1,5 +1,4 @@ import {CoreFetchCmpt} from '../../Fetch.js'; -import Phrasen from '../../../mixins/Phrasen.js'; var _uuid = 0; @@ -7,9 +6,6 @@ export default { components: { CoreFetchCmpt }, - mixins: [ - Phrasen - ], emits: [ 'setInfos', 'setStatus' @@ -30,7 +26,7 @@ export default { }, computed: { statusSeverity() { - switch (this.data.status) + switch (this.data?.status) { case 'Erstellt': return 'info'; case 'Genehmigt': return 'success'; @@ -56,7 +52,7 @@ export default { this.data = result.data.retval; if (this.data.status) { this.$emit("setStatus", { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.data.statustyp}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})), severity: this.statusSeverity }); } @@ -67,7 +63,7 @@ export default { createAntrag() { bootstrap.Modal.getOrCreateInstance(this.$refs.modal).hide(); this.$emit('setStatus', { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.p.t('studierendenantrag', 'status_saving')}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_saving')})), severity: 'warning' }); this.saving = true; @@ -93,7 +89,7 @@ export default { this.errors.default.push(result.data.retval[k]); } this.$emit('setStatus', { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.p.t('studierendenantrag', 'status_error')}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})), severity: 'danger' }); } @@ -104,13 +100,13 @@ export default { this.data = result.data.retval; if (this.data.status) { this.$emit("setStatus", { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.data.statustyp}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})), severity: this.statusSeverity }); } else this.$emit('setStatus', { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.p.t('studierendenantrag', 'status_open')}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_open')})), severity:'success' }); } @@ -123,7 +119,7 @@ export default { if(event.target.value) { - let templateT= this.p.t('studierendenantrag', event.target.value); + let templateT= this.$p.t('studierendenantrag', event.target.value); templateText.value = templateT; } else @@ -140,40 +136,40 @@ export default {
- + - + - + - + - + - + - +
{{p.t('lehre', 'studiengang')}}{{$p.t('lehre', 'studiengang')}} {{data.bezeichnung}}
{{p.t('lehre', 'organisationsform')}}{{$p.t('lehre', 'organisationsform')}} {{data.orgform_bezeichnung}}
{{p.t('projektarbeitsbeurteilung', 'nameStudierende')}}{{$p.t('projektarbeitsbeurteilung', 'nameStudierende')}} {{data.name}}
{{p.t('person', 'personenkennzeichen')}}{{$p.t('person', 'personenkennzeichen')}} {{data.matrikelnr}}
{{p.t('lehre', 'studienjahr')}}{{$p.t('lehre', 'studienjahr')}} {{data.studienjahr_kurzbz}}
{{p.t('lehre', 'studiensemester')}}{{$p.t('lehre', 'studiensemester')}} {{data.studiensemester_kurzbz}}
{{p.t('lehre', 'semester')}}{{$p.t('lehre', 'semester')}} {{data.semester}}
-
{{p.t('studierendenantrag', 'antrag_grund')}}:
+
{{$p.t('studierendenantrag', 'antrag_grund')}}:
-
{{data.grund}}
+
{{data?.grund}}
@@ -181,18 +177,20 @@ export default {
@@ -316,14 +312,14 @@ export default {
- {{p.t('studierendenantrag', 'antrag_dateianhaenge')}} - {{p.t('studierendenantrag', 'no_attachments')}} + {{$p.t('studierendenantrag', 'antrag_dateianhaenge')}} + {{$p.t('studierendenantrag', 'no_attachments')}}
- {{p.t('studierendenantrag', 'btn_create_Unterbrechung')}} + {{$p.t('studierendenantrag', 'btn_create_Unterbrechung')}}
diff --git a/public/js/components/Studierendenantrag/Form/Wiederholung.js b/public/js/components/Studierendenantrag/Form/Wiederholung.js index 336441dda..c2aea93f2 100644 --- a/public/js/components/Studierendenantrag/Form/Wiederholung.js +++ b/public/js/components/Studierendenantrag/Form/Wiederholung.js @@ -1,6 +1,5 @@ import {CoreFetchCmpt} from '../../Fetch.js'; import VueDatepicker from '../../vueDatepicker.js.php'; -import Phrasen from '../../../mixins/Phrasen.js'; var _uuid = 0; @@ -9,9 +8,6 @@ export default { CoreFetchCmpt, VueDatepicker }, - mixins: [ - Phrasen - ], emits: [ 'setInfos', 'setStatus', @@ -67,11 +63,11 @@ export default { this.data = result.data.retval; if (!this.data.status || this.data.status == 'ErsteAufforderungVersandt' || this.data.status == 'ZweiteAufforderungVersandt') { this.data.status = 'Offen'; - this.data.statustyp = this.p.t('studierendenantrag', 'status_open'); + this.data.statustyp = this.$p.t('studierendenantrag', 'status_open'); } this.$emit('update:status', this.data.status); this.$emit("setStatus", { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.data.statustyp}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})), severity: this.statusSeverity }); return result; @@ -89,7 +85,7 @@ export default { let nextState = repeat ? 'Erstellt' : 'Verzichtet'; this.$emit('setStatus', { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.p.t('studierendenantrag', 'status_saving')}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_saving')})), severity: 'warning' }); this.saving = true; @@ -116,7 +112,7 @@ export default { this.errors.default.push(result.data.retval[k]); } this.$emit('setStatus', { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.p.t('studierendenantrag', 'status_error')}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})), severity: 'danger' }); } @@ -129,7 +125,7 @@ export default { this.data.status = nextState; this.$emit('update:status', this.data.status); this.$emit("setStatus", { - msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.data.statustyp}), + msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})), severity: this.statusSeverity }); } @@ -143,7 +139,7 @@ export default { }, mounted() { this.infos = [...Array(5).keys()].map(n => ({ - body: this.p.t_ref('studierendenantrag', 'infotext_Wiederholung_' + n) + body: Vue.computed(() => this.$p.t('studierendenantrag', 'infotext_Wiederholung_' + n)) })); this.$emit('setInfos', this.infos); }, @@ -156,27 +152,27 @@ export default {
- + - + - + - + - + - +
{{p.t('lehre', 'studiengang')}}{{$p.t('lehre', 'studiengang')}} {{data.bezeichnung}}
{{p.t('lehre', 'organisationsform')}}{{$p.t('lehre', 'organisationsform')}} {{data.orgform_bezeichnung}}
{{p.t('projektarbeitsbeurteilung', 'nameStudierende')}}{{$p.t('projektarbeitsbeurteilung', 'nameStudierende')}} {{data.name}}
{{p.t('person', 'personenkennzeichen')}}{{$p.t('person', 'personenkennzeichen')}} {{data.matrikelnr}}
{{p.t('studierendenantrag', 'antrag_Wiederholung_pruefung')}}{{$p.t('studierendenantrag', 'antrag_Wiederholung_pruefung')}} {{data.lvbezeichnung}}
{{p.t('studierendenantrag', 'antrag_Wiederholung_pruefung_date')}}{{$p.t('studierendenantrag', 'antrag_Wiederholung_pruefung_date')}} {{datumPruefungFormatted}}
@@ -190,7 +186,7 @@ export default { @click="createAntrag" :disabled="saving" > - {{p.t('studierendenantrag/antrag_Wiederholung_button_yes')}} + {{$p.t('studierendenantrag/antrag_Wiederholung_button_yes')}} diff --git a/public/js/components/Studierendenantrag/Leitung.js b/public/js/components/Studierendenantrag/Leitung.js index da883acbc..95828e6cb 100644 --- a/public/js/components/Studierendenantrag/Leitung.js +++ b/public/js/components/Studierendenantrag/Leitung.js @@ -5,7 +5,6 @@ import GrundPopup from './Leitung/GrundPopup.js'; import LvPopup from './Leitung/LvPopup.js'; import BsAlert from '../Bootstrap/Alert.js'; import FhcLoader from '../Loader.js'; -import Phrasen from '../../mixins/Phrasen.js'; export default { components: { @@ -14,7 +13,6 @@ export default { LeitungActions, FhcLoader }, - mixins: [Phrasen], props: { stgL: Array, stgA: Array @@ -31,12 +29,12 @@ export default { stgkzL() { if (!this.stgL) return []; - return this.stgL.map(stg => stg.studiengang_kz); + return this.stgL.map(stg => parseInt(stg)); }, stgkzA() { if (!this.stgA) return []; - return this.stgA.map(stg => stg.studiengang_kz); + return this.stgA.map(stg => parseInt(stg)); } }, methods: { @@ -79,7 +77,7 @@ export default { { let countAntrage = 0; LvPopup - .popup(this.p.t('studierendenantrag','title_show_lvs', currentAntrag), { + .popup(this.$p.t('studierendenantrag','title_show_lvs', currentAntrag), { antragId: currentAntrag.studierendenantrag_id, footer: true, dialogClass: 'modal-lg', @@ -128,7 +126,7 @@ export default { var currentAntrag = antraege.pop(); if (currentAntrag) { GrundPopup - .popup(this.p.t('studierendenantrag', 'title_grund', {id: currentAntrag.studierendenantrag_id}), { + .popup(this.$p.t('studierendenantrag', 'title_grund', {id: currentAntrag.studierendenantrag_id}), { countRemaining: antraege.length }) .then(result => { @@ -211,7 +209,7 @@ export default { var currentAntrag = antraege.pop(); if (currentAntrag) { GrundPopup - .popup(this.p.t('studierendenantrag', 'title_grund', {id: currentAntrag.studierendenantrag_id}), { + .popup(this.$p.t('studierendenantrag', 'title_grund', {id: currentAntrag.studierendenantrag_id}), { countRemaining : antraege.length, optional: true }) diff --git a/public/js/components/Studierendenantrag/Leitung/Actions.js b/public/js/components/Studierendenantrag/Leitung/Actions.js index 71ada5c20..2720a7df5 100644 --- a/public/js/components/Studierendenantrag/Leitung/Actions.js +++ b/public/js/components/Studierendenantrag/Leitung/Actions.js @@ -1,13 +1,11 @@ import ActionsNew from './Actions/New.js'; import ActionsColumns from './Actions/Columns.js'; -import Phrasen from '../../../mixins/Phrasen.js'; export default { components: { ActionsNew, ActionsColumns }, - mixins: [Phrasen], props: { selectedData: Array, columns: Array, @@ -67,17 +65,17 @@ export default {
- - {{p.t('table', 'with_selected', {count: selectedData.length})}} - - - + {{$p.t('table', 'with_selected', {count: selectedData.length})}} + + +
- - + +
diff --git a/public/js/components/Studierendenantrag/Leitung/Actions/Columns.js b/public/js/components/Studierendenantrag/Leitung/Actions/Columns.js index 7128761d7..55a7bd1cc 100644 --- a/public/js/components/Studierendenantrag/Leitung/Actions/Columns.js +++ b/public/js/components/Studierendenantrag/Leitung/Actions/Columns.js @@ -6,9 +6,6 @@ export default { toggleColumn(col) { col.visible = !col.visible; col.original.toggle() - }, - show() { - } }, template: ` diff --git a/public/js/components/Studierendenantrag/Leitung/Actions/New.js b/public/js/components/Studierendenantrag/Leitung/Actions/New.js index ad3009bdb..8952c4e78 100644 --- a/public/js/components/Studierendenantrag/Leitung/Actions/New.js +++ b/public/js/components/Studierendenantrag/Leitung/Actions/New.js @@ -1,15 +1,11 @@ import BsAlert from '../../../Bootstrap/Alert.js'; import BsModal from '../../../Bootstrap/Modal.js'; -import Phrasen from '../../../../mixins/Phrasen.js'; export default { components: { BsModal, AutoComplete: primevue.autocomplete }, - mixins: [ - Phrasen - ], emits: [ 'reload' ], @@ -33,7 +29,7 @@ export default { class: 'position-absolute top-0 start-0 w-100 h-100' }), { dialogClass: 'modal-fullscreen' - }, this.p.t('studierendenantrag', 'antrag_header')).then(() => { + }, this.$p.t('studierendenantrag', 'antrag_header')).then(() => { this.$emit('reload'); this.student = ''; }); @@ -67,17 +63,17 @@ export default {