diff --git a/application/config/javascript.php b/application/config/javascript.php
index 5e9aa270a..f3237fde3 100644
--- a/application/config/javascript.php
+++ b/application/config/javascript.php
@@ -4,4 +4,6 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
// use vuejs dev version
$config['use_vuejs_dev_version'] = false;
// use bundled javascript
-$config['use_bundled_javascript'] = false;
\ No newline at end of file
+$config['use_bundled_javascript'] = false;
+// systemerror_mailto use in FHC-Alert Plugin - if empty Link will not be rendered
+$config['systemerror_mailto'] = '';
\ No newline at end of file
diff --git a/application/controllers/api/frontend/v1/stv/Kontakt.php b/application/controllers/api/frontend/v1/stv/Kontakt.php
index fd16fff06..bcd38853c 100644
--- a/application/controllers/api/frontend/v1/stv/Kontakt.php
+++ b/application/controllers/api/frontend/v1/stv/Kontakt.php
@@ -85,7 +85,10 @@ class Kontakt extends FHCAPI_Controller
|| $this->router->method == 'addNewBankverbindung'
) {
$person_id = current(array_slice($this->uri->rsegments, 2));
-
+
+ if (is_null($person_id) || !ctype_digit((string)$person_id))
+ $this->terminateWithError( $this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
+
$this->checkPermissionsForPerson($person_id, $permsMa, $permsStud);
} elseif ($this->router->method == 'loadAddress'
|| $this->router->method == 'loadContact'
@@ -119,6 +122,9 @@ class Kontakt extends FHCAPI_Controller
$model = 'person/Bankverbindung_model';
}
+ if (!isset($id) || !ctype_digit((string)$id))
+ $this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
+
$this->load->model($model, 'TempModel');
$result = $this->TempModel->load($id);
$data = $this->getDataOrTerminateWithError($result);
@@ -387,8 +393,11 @@ class Kontakt extends FHCAPI_Controller
$this->terminateWithSuccess(getData($result) ?: []);
}
- public function getFirmen($searchString)
+ public function getFirmen($searchString = null)
{
+ if (is_null($searchString))
+ $this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
+
$this->load->model('ressource/firma_model', 'FirmaModel');
$result = $this->FirmaModel->searchFirmen($searchString);
@@ -398,8 +407,11 @@ class Kontakt extends FHCAPI_Controller
$this->terminateWithSuccess($result ?: []);
}
- public function getStandorte($searchString)
+ public function getStandorte($searchString = null)
{
+ if (is_null($searchString))
+ $this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
+
$this->load->model('organisation/standort_model', 'StandortModel');
$result = $this->StandortModel->searchStandorte($searchString);
@@ -409,8 +421,11 @@ class Kontakt extends FHCAPI_Controller
$this->terminateWithSuccess($data);
}
- public function getStandorteByFirma($firma_id)
+ public function getStandorteByFirma($firma_id = null)
{
+ if (is_null($firma_id) || !ctype_digit((string)$firma_id))
+ $this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
+
$this->load->model('organisation/standort_model', 'StandortModel');
$result = $this->StandortModel->getStandorteByFirma($firma_id);
@@ -652,6 +667,9 @@ class Kontakt extends FHCAPI_Controller
$bic = $this->input->post('bic');
$blz = $this->input->post('blz');
$kontonr = $this->input->post('kontonr');
+ $iban = $this->input->post('iban');
+ $typ = $this->input->post('typ');
+ $verrechnung = $this->input->post('verrechnung');
$result = $this->BankverbindungModel->insert(
[
@@ -659,13 +677,13 @@ class Kontakt extends FHCAPI_Controller
'name' => $name,
'anschrift' => $anschrift,
'bic' => $bic,
- 'iban' => $_POST['iban'],
+ 'iban' => $iban,
'blz' => $blz,
'kontonr' => $kontonr,
'insertvon' => 'uid',
'insertamum' => date('c'),
- 'typ' => $_POST['typ'],
- 'verrechnung' => $_POST['verrechnung'],
+ 'typ' => $typ,
+ 'verrechnung' => $verrechnung,
'ext_id' => $ext_id,
'oe_kurzbz' => $oe_kurzbz,
'orgform_kurzbz' => $orgform_kurzbz
diff --git a/application/controllers/api/frontend/v1/stv/Student.php b/application/controllers/api/frontend/v1/stv/Student.php
index f805be88a..f24ef62bb 100644
--- a/application/controllers/api/frontend/v1/stv/Student.php
+++ b/application/controllers/api/frontend/v1/stv/Student.php
@@ -156,6 +156,8 @@ class Student extends FHCAPI_Controller
$uid = $student ? current($student)->student_uid : null;
+ $studiengang_kz = $student ? current($student)->studiengang_kz : null;
+
$result = $this->PrestudentModel->loadWhere(['prestudent_id' => $prestudent_id]);
$person = $this->getDataOrTerminateWithError($result);
@@ -231,10 +233,27 @@ class Student extends FHCAPI_Controller
// Do Updates
if (count($update_lehrverband)) {
- $result = $this->StudentlehrverbandModel->update([
+ $curstudlvb = $this->StudentlehrverbandModel->load([
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'student_uid' => $uid
- ], $update_lehrverband);
+ ]);
+
+ if(hasData($curstudlvb) && count(getData($curstudlvb)) > 0 )
+ {
+ $result = $this->StudentlehrverbandModel->update([
+ 'studiensemester_kurzbz' => $studiensemester_kurzbz,
+ 'student_uid' => $uid
+ ], $update_lehrverband);
+ }
+ else
+ {
+ $result = $this->StudentlehrverbandModel->insert(array_merge([
+ 'studiensemester_kurzbz' => $studiensemester_kurzbz,
+ 'student_uid' => $uid,
+ 'studiengang_kz' => $studiengang_kz
+ ], $update_lehrverband));
+ }
+
$this->getDataOrTerminateWithError($result);
}
diff --git a/application/controllers/jobs/IssueResolver.php b/application/controllers/jobs/IssueResolver.php
index ca07439c3..fe7ee21f5 100755
--- a/application/controllers/jobs/IssueResolver.php
+++ b/application/controllers/jobs/IssueResolver.php
@@ -48,7 +48,9 @@ class IssueResolver extends IssueResolver_Controller
'CORE_PERSON_0001' => 'CORE_PERSON_0001',
'CORE_PERSON_0002' => 'CORE_PERSON_0002',
'CORE_PERSON_0003' => 'CORE_PERSON_0003',
- 'CORE_PERSON_0004' => 'CORE_PERSON_0004'
+ 'CORE_PERSON_0004' => 'CORE_PERSON_0004',
+ 'CORE_PERSON_0005' => 'CORE_PERSON_0005',
+ 'CORE_PERSON_0006' => 'CORE_PERSON_0006'
);
// fehler which are resolved by the job the same way as they are produced
diff --git a/application/helpers/hlp_header_helper.php b/application/helpers/hlp_header_helper.php
index 14f7ed338..de7e866f4 100644
--- a/application/helpers/hlp_header_helper.php
+++ b/application/helpers/hlp_header_helper.php
@@ -95,6 +95,9 @@ function generateJSDataStorageObject($indexPage, $calledPath, $calledMethod)
}, $server_language);
$user_language = getUserLanguage();
+ $ci->load->config('javascript');
+ $systemerror_mailto = $ci->config->item('systemerror_mailto');
+
$FHC_JS_DATA_STORAGE_OBJECT = array(
'app_root' => APP_ROOT,
'ci_router' => $indexPage,
@@ -103,6 +106,7 @@ function generateJSDataStorageObject($indexPage, $calledPath, $calledMethod)
'server_languages' => $server_language,
'user_language' => $user_language,
'timezone' => date_default_timezone_get(),
+ 'systemerror_mailto' => $systemerror_mailto,
);
$toPrint = "\n";
diff --git a/application/libraries/AntragLib.php b/application/libraries/AntragLib.php
index 885acac90..d90a98241 100644
--- a/application/libraries/AntragLib.php
+++ b/application/libraries/AntragLib.php
@@ -77,7 +77,9 @@ class AntragLib
'studiensemester_kurzbz'=>$prestudentstatus->studiensemester_kurzbz,
'ausbildungssemester'=>$prestudentstatus->ausbildungssemester
], [
- 'statusgrund_id' => null
+ 'statusgrund_id' => null,
+ 'updateamum' => date('c'),
+ 'updatevon' => $insertvon
]);
}
}
@@ -335,7 +337,10 @@ class AntragLib
'status_kurzbz'=>$prestudentstatus->status_kurzbz,
'studiensemester_kurzbz'=>$prestudentstatus->studiensemester_kurzbz,
'ausbildungssemester'=>$prestudentstatus->ausbildungssemester
- ], []);
+ ], [
+ 'updateamum' => $insertam,
+ 'updatevon' => $insertvon
+ ]);
if (isError($result))
{
$errors[] = getError($result);
diff --git a/application/libraries/issues/PlausicheckResolverLib.php b/application/libraries/issues/PlausicheckResolverLib.php
index 26da985f6..2b20a7d93 100644
--- a/application/libraries/issues/PlausicheckResolverLib.php
+++ b/application/libraries/issues/PlausicheckResolverLib.php
@@ -13,7 +13,7 @@ class PlausicheckResolverLib
private $_ci; // ci instance
private $_extensionName; // name of extension
private $_codeLibMappings = []; // mappings for issues which explicitly defined resolver
- private $_codeProducerLibMappings = []; // mappings for issues which are resolved as produced
+ private $_codeProducerLibMappings = []; // mappings for issues which are resolved with the same check as they are produced
public function __construct($params = null)
{
@@ -99,10 +99,11 @@ class PlausicheckResolverLib
$issueResolved = getData($issueResolvedRes) === true;
}
}
- elseif (isset($this->_codeProducerLibMappings[$issue->fehlercode]))
+ elseif (isset($this->_codeProducerLibMappings[$issue->fehlercode])) // check if it is an issue without explicit resolver, "self-resolving"
{
$libName = $this->_codeProducerLibMappings[$issue->fehlercode];
+ // execute same check as used for issue production
$issueResolvedRes = $this->_ci->plausicheckproducerlib->producePlausicheckIssue(
$libName,
$issue->fehler_kurzbz,
diff --git a/application/libraries/issues/resolvers/CORE_PERSON_0005.php b/application/libraries/issues/resolvers/CORE_PERSON_0005.php
new file mode 100644
index 000000000..1d768e70c
--- /dev/null
+++ b/application/libraries/issues/resolvers/CORE_PERSON_0005.php
@@ -0,0 +1,36 @@
+_ci =& get_instance(); // get code igniter instance
+
+ $this->_ci->load->model('person/Person_model', 'PersonModel');
+
+ // load geburtsnation for the given person
+ $this->_ci->PersonModel->addSelect('geburtsnation');
+ $personRes = $this->_ci->PersonModel->load($params['issue_person_id']);
+
+ if (isError($personRes)) return $personRes;
+
+ if (hasData($personRes))
+ {
+ // get person data
+ $personData = getData($personRes)[0];
+
+ // if geburtsnation present, issue is resolved
+ return success(!isEmptyString($personData->geburtsnation));
+ }
+ else
+ return success(false); // if no person found, not resolved
+ }
+}
\ No newline at end of file
diff --git a/application/libraries/issues/resolvers/CORE_PERSON_0006.php b/application/libraries/issues/resolvers/CORE_PERSON_0006.php
new file mode 100644
index 000000000..8b7ff9c56
--- /dev/null
+++ b/application/libraries/issues/resolvers/CORE_PERSON_0006.php
@@ -0,0 +1,37 @@
+_ci =& get_instance(); // get code igniter instance
+
+ $this->_ci->load->model('codex/Uhstat1daten_model', 'UhstatModel');
+
+ $personRes = $this->_ci->UhstatModel->getUHSTAT1PersonData([$params['issue_person_id']]);
+
+ if (isError($personRes)) return $personRes;
+
+ if (hasData($personRes))
+ {
+ // get person data
+ $personData = getData($personRes)[0];
+
+ // if person identification data present, issue is resolved
+ return success(
+ !isEmptyString($personData->ersatzkennzeichen)
+ || (!isEmptyString($personData->vbpkAs) && !isEmptyString($personData->vbpkBf))
+ );
+ }
+ else
+ return success(false); // if no person found, not resolved
+ }
+}
\ No newline at end of file
diff --git a/application/models/codex/Uhstat1daten_model.php b/application/models/codex/Uhstat1daten_model.php
index 9bca44b58..899f037ef 100644
--- a/application/models/codex/Uhstat1daten_model.php
+++ b/application/models/codex/Uhstat1daten_model.php
@@ -11,4 +11,44 @@ class Uhstat1daten_model extends DB_Model
$this->dbTable = 'bis.tbl_uhstat1daten';
$this->pk = 'uhstat1daten_id';
}
+
+ /**
+ * Gets person data needed for sending as UHSTAT1 data.
+ * @param array $person_id_arr
+ * @param string $studiensemester
+ * @param array $status_kurzbz
+ * @return object success with prestudents or error
+ */
+ public function getUHSTAT1PersonData($person_id_arr)
+ {
+ if (!isset($person_id_arr) || isEmptyArray($person_id_arr)) return success([]);
+
+ $params = array($person_id_arr);
+
+ $prstQry = "SELECT
+ DISTINCT ON (pers.person_id)
+ pers.person_id, uhstat_daten.uhstat1daten_id, pers.svnr, pers.ersatzkennzeichen, pers.geburtsnation,
+ uhstat_daten.mutter_geburtsstaat, uhstat_daten.mutter_bildungsstaat, uhstat_daten.mutter_geburtsjahr,
+ uhstat_daten.mutter_bildungmax, uhstat_daten.vater_geburtsstaat, uhstat_daten.vater_bildungsstaat,
+ uhstat_daten.vater_geburtsjahr, uhstat_daten.vater_bildungmax,
+ kzVbpkAs.inhalt AS \"vbpkAs\", kzVbpkBf.inhalt AS \"vbpkBf\"
+ FROM
+ public.tbl_person pers
+ JOIN public.tbl_prestudent ps USING (person_id)
+ JOIN public.tbl_studiengang stg USING (studiengang_kz)
+ JOIN bis.tbl_uhstat1daten uhstat_daten USING (person_id)
+ LEFT JOIN public.tbl_kennzeichen kzVbpkAs ON kzVbpkAs.kennzeichentyp_kurzbz = 'vbpkAs'AND kzVbpkAs.person_id = pers.person_id AND kzVbpkAs.aktiv
+ LEFT JOIN public.tbl_kennzeichen kzVbpkBf ON kzVbpkBf.kennzeichentyp_kurzbz = 'vbpkBf'AND kzVbpkBf.person_id = pers.person_id AND kzVbpkBf.aktiv
+ WHERE
+ ps.bismelden
+ AND stg.melderelevant
+ AND pers.person_id IN ?
+ ORDER BY
+ pers.person_id";
+
+ return $this->execReadOnlyQuery(
+ $prstQry,
+ $params
+ );
+ }
}
diff --git a/application/models/vertragsbestandteil/Dienstverhaeltnis_model.php b/application/models/vertragsbestandteil/Dienstverhaeltnis_model.php
index 6827beaa4..f81a2d518 100644
--- a/application/models/vertragsbestandteil/Dienstverhaeltnis_model.php
+++ b/application/models/vertragsbestandteil/Dienstverhaeltnis_model.php
@@ -59,7 +59,14 @@ class Dienstverhaeltnis_model extends DB_Model
}
$qry .="
- ORDER BY dv.von desc
+ ORDER BY
+ CASE
+ WHEN (COALESCE(dv.bis, '2999-12-31'::date) - NOW()::date) < 0 THEN NULL
+ ELSE
+ (COALESCE(dv.bis, '2999-12-31'::date) - NOW()::date)
+ END ASC NULLS LAST,
+ COALESCE(dv.bis, '2999-12-31'::date) DESC,
+ dv.von DESC
";
return $this->execQuery($qry, $data);
diff --git a/application/views/system/infocenter/infocenterFreigegebenData.php b/application/views/system/infocenter/infocenterFreigegebenData.php
index 27738719c..38285b6ae 100644
--- a/application/views/system/infocenter/infocenterFreigegebenData.php
+++ b/application/views/system/infocenter/infocenterFreigegebenData.php
@@ -112,7 +112,7 @@ $query = '
LIMIT 1
) AS "AnzahlAbgeschickt",
(
- SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz), \', \')
+ SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz || \' [\' || pss.ausbildungssemester || \']\'), \', \')
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
JOIN public.tbl_studiengang sg USING(studiengang_kz)
diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php
index ac8cdaff4..553e3f03c 100644
--- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php
+++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php
@@ -1090,7 +1090,10 @@ foreach ($stsem_obj->studiensemester as $studiensemester)
}
$stsem_content .= "\n";
-if (! $rechte->isBerechtigt('admin', 0) && ! $rechte->isBerechtigt('admin', $lv_obj->studiengang_kz) && ! $rechte->isBerechtigt('lehre', $lv_obj->studiengang_kz))
+if (! $rechte->isBerechtigt('admin', 0)
+ && ! $rechte->isBerechtigt('admin', $lv_obj->studiengang_kz)
+ && ! $rechte->isBerechtigt('lehre', $lv_obj->studiengang_kz)
+ && ! $rechte->isBerechtigt('lehre', $lv_obj->oe_kurzbz))
{
$qry = "SELECT
lehreinheit_id
diff --git a/cis/testtool/frage.php b/cis/testtool/frage.php
index 0aa37b299..c38229cdf 100644
--- a/cis/testtool/frage.php
+++ b/cis/testtool/frage.php
@@ -148,7 +148,7 @@ echo '
alert(t("testtool/alleFragenBeantwortet")."'"?>);
return true;
}
-
+
$(document).ready(function () {
$(document).bind('cut copy paste', function(e)
{
@@ -717,7 +717,7 @@ if($frage->frage_id!='')
if(!$demo)
{
- echo '';
+ echo '';
}
else
{
diff --git a/content/lvplanung/lehrveranstaltungDBDML.php b/content/lvplanung/lehrveranstaltungDBDML.php
index ad15c6879..958468c9d 100644
--- a/content/lvplanung/lehrveranstaltungDBDML.php
+++ b/content/lvplanung/lehrveranstaltungDBDML.php
@@ -634,6 +634,7 @@ if(!$error)
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE
mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid)." AND
+ lower(mitarbeiter_uid) NOT LIKE '_dummy%' AND
studiensemester_kurzbz=".$db->db_add_param($le->studiensemester_kurzbz)." AND
bismelden";
diff --git a/include/lehrelisthelper.class.php b/include/lehrelisthelper.class.php
index d6ceaf918..b1821391f 100644
--- a/include/lehrelisthelper.class.php
+++ b/include/lehrelisthelper.class.php
@@ -200,7 +200,7 @@ class LehreListHelper
//Studierende der LV laden und in ein Array schreiben
$qry = 'SELECT
- distinct on(nachname, vorname, person_id) vorname, nachname, wahlname, matrikelnr, public.tbl_student.student_uid,
+ distinct on(nachname, vorname, public.tbl_benutzer.person_id) vorname, nachname, wahlname, matrikelnr, public.tbl_student.student_uid,
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
(SELECT status_kurzbz FROM public.tbl_prestudentstatus
WHERE prestudent_id=tbl_student.prestudent_id
@@ -209,7 +209,8 @@ class LehreListHelper
tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_person.geschlecht, tbl_studiengang.kurzbzlang,
tbl_mobilitaet.mobilitaetstyp_kurzbz, tbl_zeugnisnote.note,
(CASE WHEN bis.tbl_mobilitaet.studiensemester_kurzbz = vw_student_lehrveranstaltung.studiensemester_kurzbz THEN 1 ELSE 0 END) as doubledegree,
- (tbl_bisio.bis::timestamp - tbl_bisio.von::timestamp) as daysout
+ (tbl_bisio.bis::timestamp - tbl_bisio.von::timestamp) as daysout,
+ public.tbl_prestudent.gsstudientyp_kurzbz as ddtype
FROM
campus.vw_student_lehrveranstaltung
JOIN public.tbl_benutzer USING(uid)
@@ -223,6 +224,7 @@ class LehreListHelper
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz)
LEFT JOIN bis.tbl_mobilitaet USING(prestudent_id)
+ LEFT JOIN public.tbl_prestudent USING(prestudent_id)
WHERE
vw_student_lehrveranstaltung.lehrveranstaltung_id='.$this->db->db_add_param($this->lvid, FHC_INTEGER).' AND
vw_student_lehrveranstaltung.studiensemester_kurzbz='.$this->db->db_add_param($this->studiensemester);
@@ -231,7 +233,7 @@ class LehreListHelper
if($this->lehreinheit!='')
$qry.=' AND vw_student_lehrveranstaltung.lehreinheit_id='.$this->db->db_add_param($this->lehreinheit, FHC_INTEGER);
- $qry.=' ORDER BY nachname, vorname, person_id, daysout DESC, doubledegree DESC';
+ $qry.=' ORDER BY nachname, vorname, public.tbl_benutzer.person_id, daysout DESC, doubledegree DESC';
$stsem_obj = new studiensemester();
$stsem_obj->load($this->studiensemester);
@@ -263,8 +265,13 @@ class LehreListHelper
//Outgoing
if($row->bisio_id != '' && $row->status != 'Incoming' && ($row->bis > $stsemdatumvon || $row->bis == '')
- && $row->von < $stsemdatumbis && (anzahlTage($row->von, $row->bis) >= 30))
+ && $row->von < $stsemdatumbis && (anzahlTage($row->von, $row->bis) >= 30)) {
$zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')';
+ } else if ($row->bisio_id != '' && $row->status != 'Incoming' && ($row->von > $stsemdatumvon || $row->von == '')) {
+ // if bis datum is not yet known but von is available already
+ $zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')';
+ }
+
if($row->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen
$zusatz.= '('. $row->anmerkung. ')';
@@ -275,8 +282,13 @@ class LehreListHelper
if($row->stg_kz_student==$a_o_kz) //Außerordentliche Studierende
$zusatz.='(a.o.)';
- if(($row->mobilitaetstyp_kurzbz != '') && ($row->doubledegree == 1)) //Double Degree Student
- $zusatz .= '(d.d.)';
+ if(($row->mobilitaetstyp_kurzbz != '') && ($row->doubledegree == 1)) {
+ //Double Degree Student
+ $zusatz .= '(d.d.';
+ if($row->ddtype == 'Intern') $zusatz .= 'i.)';
+ else if ($row->ddtype == 'Extern') $zusatz .='o.)';
+ else $zusatz .= ')';
+ }
if(($row->wahlname != ''))
{
diff --git a/public/js/api/factory/addons.js b/public/js/api/factory/addons.js
new file mode 100644
index 000000000..23fd19e39
--- /dev/null
+++ b/public/js/api/factory/addons.js
@@ -0,0 +1,25 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getLvMenu(lvid, studiensemester_kurzbz) {
+ return {
+ method: 'get',
+ url: `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/authinfo.js b/public/js/api/factory/authinfo.js
new file mode 100644
index 000000000..5cf88604f
--- /dev/null
+++ b/public/js/api/factory/authinfo.js
@@ -0,0 +1,25 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getAuthUID() {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/AuthInfo/getAuthUID'
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/betriebsmittel.js b/public/js/api/factory/betriebsmittel.js
new file mode 100644
index 000000000..bc007a20e
--- /dev/null
+++ b/public/js/api/factory/betriebsmittel.js
@@ -0,0 +1,22 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+import person from "./betriebsmittel/person.js";
+
+export default {
+ person
+};
diff --git a/public/js/api/factory/betriebsmittel/person.js b/public/js/api/factory/betriebsmittel/person.js
new file mode 100644
index 000000000..912a5df31
--- /dev/null
+++ b/public/js/api/factory/betriebsmittel/person.js
@@ -0,0 +1,63 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getAllBetriebsmittel(type, id) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + type + '/' + id
+ };
+ },
+ addNewBetriebsmittel(person_id, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' + person_id,
+ params
+ };
+ },
+ loadBetriebsmittel(betriebsmittelperson_id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id
+ };
+ },
+ updateBetriebsmittel(betriebsmittelperson_id, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,
+ params
+ };
+ },
+ deleteBetriebsmittel(betriebsmittelperson_id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' + betriebsmittelperson_id
+ };
+ },
+ getTypenBetriebsmittel() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/'
+ };
+ },
+ loadInventarliste(query) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' + query
+ };
+ }
+};
diff --git a/public/js/api/factory/checkperson.js b/public/js/api/factory/checkperson.js
new file mode 100644
index 000000000..dc5546cf5
--- /dev/null
+++ b/public/js/api/factory/checkperson.js
@@ -0,0 +1,37 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ updatePersonUnrulyStatus(person_id, unruly) {
+ const params = { person_id, unruly }
+ const url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';
+ return {
+ method: 'post',
+ url,
+ params
+ };
+ },
+ filterPerson(params, base = '') {
+ // TODO(chris): seems to be called from nowhere?
+ const url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';
+ return {
+ method: 'post',
+ url,
+ params
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/cis/dashboard.js b/public/js/api/factory/cis/dashboard.js
new file mode 100644
index 000000000..cb1ec16bb
--- /dev/null
+++ b/public/js/api/factory/cis/dashboard.js
@@ -0,0 +1,25 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getViewData() {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Cis4FhcApi/getViewData'
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/cis/menu.js b/public/js/api/factory/cis/menu.js
new file mode 100644
index 000000000..829c5ff04
--- /dev/null
+++ b/public/js/api/factory/cis/menu.js
@@ -0,0 +1,25 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getMenu() {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/CisMenu/getMenu'
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/cms.js b/public/js/api/factory/cms.js
new file mode 100644
index 000000000..59ad4af5a
--- /dev/null
+++ b/public/js/api/factory/cms.js
@@ -0,0 +1,64 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ content(content_id, version=null, sprache=null, sichtbar=null) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Cms/content',
+ params: {
+ content_id,
+ ...(version ? { version } : {}),
+ ...(sprache ? { sprache } : {}),
+ ...(sichtbar ? { sichtbar } : {})
+ }
+ };
+ },
+ //api function used for the news View that renders the html
+ getNews(page = 1, page_size = 10, sprache) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Cms/getNews',
+ params: {
+ page,
+ page_size,
+ sprache
+ },
+ };
+ },
+ //api function used for the widget component
+ news(limit) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Cms/news',
+ params: { limit }
+ };
+ },
+ getNewsRowCount() {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Cms/getNewsRowCount'
+ };
+ },
+ getNewsExtra() {
+ // TODO(chris): seems to be called from nowhere?
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Cms/getStudiengangInfoForNews'
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/filter.js b/public/js/api/factory/filter.js
new file mode 100644
index 000000000..5207fe1cf
--- /dev/null
+++ b/public/js/api/factory/filter.js
@@ -0,0 +1,95 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ saveCustomFilter(wsParams) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/filter/saveCustomFilter',
+ params: {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType,
+ customFilterName: wsParams.customFilterName
+ }
+ };
+ },
+ removeCustomFilter(wsParams) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/filter/removeCustomFilter',
+ params: {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType,
+ filterId: wsParams.filterId
+ }
+ };
+ },
+ applyFilterFields(wsParams) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/filter/applyFilterFields',
+ params: {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType,
+ filterFields: wsParams.filterFields
+ }
+ };
+ },
+ addFilterField(wsParams) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/filter/addFilterField',
+ params: {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType,
+ filterField: wsParams.filterField
+ }
+ };
+ },
+ removeFilterField(wsParams) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/filter/removeFilterField',
+ params: {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType,
+ filterField: wsParams.filterField
+ }
+ };
+ },
+ getFilterById(wsParams) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/filter/getFilter',
+ params: {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType,
+ filterId: wsParams.filterId
+ }
+ };
+ },
+ getFilter(wsParams) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/filter/getFilter',
+ params: {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType
+ }
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/lehre.js b/public/js/api/factory/lehre.js
new file mode 100644
index 000000000..84c8e8662
--- /dev/null
+++ b/public/js/api/factory/lehre.js
@@ -0,0 +1,39 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getStudentenMail(lehreinheit_id) {
+ // TODO(chris): seems to be called from nowhere?
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Lehre/lvStudentenMail',
+ params: { lehreinheit_id }
+ };
+ },
+ getLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {
+ return {
+ method: 'get',
+ url: `/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`
+ };
+ },
+ getStudentPruefungen(lehrveranstaltung_id) {
+ return {
+ method: 'get',
+ url: `/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/navigation.js b/public/js/api/factory/navigation.js
new file mode 100644
index 000000000..896801dd7
--- /dev/null
+++ b/public/js/api/factory/navigation.js
@@ -0,0 +1,33 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getHeader(navigation_page) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/navigation/header',
+ params: { navigation_page }
+ };
+ },
+ getMenu(navigation_page) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/navigation/menu',
+ params: { navigation_page }
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/notiz.js b/public/js/api/factory/notiz.js
new file mode 100644
index 000000000..074d4b6a5
--- /dev/null
+++ b/public/js/api/factory/notiz.js
@@ -0,0 +1,22 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+import person from "./notiz/person.js";
+
+export default {
+ person
+};
diff --git a/public/js/api/factory/notiz/person.js b/public/js/api/factory/notiz/person.js
new file mode 100644
index 000000000..33b572d1a
--- /dev/null
+++ b/public/js/api/factory/notiz/person.js
@@ -0,0 +1,87 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getNotizen(id, type) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/notiz/notizPerson/getNotizen/' + id + '/' + type
+ };
+ },
+ getUid() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/notiz/notizPerson/getUid/'
+ };
+ },
+ addNewNotiz(id, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,
+ params
+ };
+ },
+ loadNotiz(notiz_id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/notiz/notizPerson/loadNotiz/',
+ params: {
+ notiz_id
+ }
+ };
+ },
+ loadDokumente(notiz_id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/notiz/notizPerson/loadDokumente/',
+ params: {
+ notiz_id
+ }
+ };
+ },
+ deleteNotiz(notiz_id, type_id, id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/notiz/notizPerson/deleteNotiz/',
+ params: {
+ notiz_id,
+ type_id,
+ id
+ }
+ };
+ },
+ updateNotiz(notiz_id, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,
+ params
+ };
+ },
+ getMitarbeiter(event) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event
+ };
+ },
+ isBerechtigt(id, type_id) {
+ // TODO(chris): seems to be called from nowhere?
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/notiz/notizPerson/isBerechtigt/'
+ };
+ }
+};
diff --git a/public/js/api/factory/ort.js b/public/js/api/factory/ort.js
new file mode 100644
index 000000000..90488df1b
--- /dev/null
+++ b/public/js/api/factory/ort.js
@@ -0,0 +1,26 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getContentID(ort_kurbz) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Ort/ContentID',
+ params: { ort_kurzbz: ort_kurbz }
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/phrasen.js b/public/js/api/factory/phrasen.js
new file mode 100644
index 000000000..a87e4f4be
--- /dev/null
+++ b/public/js/api/factory/phrasen.js
@@ -0,0 +1,45 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ loadCategory(category) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/phrasen/loadModule/' + category
+ };
+ },
+ setLanguage(categories,language) {
+ const params = {categories, language}
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/phrasen/setLanguage',
+ params
+ };
+ },
+ getLanguage() {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/phrasen/getLanguage'
+ };
+ },
+ getActiveDbLanguages() {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/phrasen/getAllLanguages'
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/profil.js b/public/js/api/factory/profil.js
new file mode 100644
index 000000000..5da1f202d
--- /dev/null
+++ b/public/js/api/factory/profil.js
@@ -0,0 +1,73 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getView(uid) {
+ return {
+ method: 'get',
+ url: `/api/frontend/v1/Profil/getView/${uid}`
+ };
+ },
+ fotoSperre(value) {
+ return {
+ method: 'get',
+ url: `/api/frontend/v1/Profil/fotoSperre/${value}`
+ };
+
+ },
+ isStudent(uid) {
+ // TODO(chris): seems to be called from nowhere?
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Profil/isStudent',
+ params: { uid }
+ };
+ },
+ isMitarbeiter(uid) {
+ return {
+ method: 'get',
+ url: `/api/frontend/v1/Profil/isMitarbeiter/${uid}`
+ };
+ },
+ getZustellAdresse() {
+ // TODO(chris): seems to be called from nowhere?
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Profil/getZustellAdresse'
+ };
+ },
+ getZustellKontakt() {
+ // TODO(chris): seems to be called from nowhere?
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Profil/getZustellKontakt'
+ };
+ },
+ getGemeinden(nation, zip) {
+ return {
+ method: 'get',
+ url: `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`
+ };
+
+ },
+ getAllNationen() {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Profil/getAllNationen'
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/profilUpdate.js b/public/js/api/factory/profilUpdate.js
new file mode 100644
index 000000000..42e87ae0e
--- /dev/null
+++ b/public/js/api/factory/profilUpdate.js
@@ -0,0 +1,110 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ //! API calls for profil update requests
+ getStatus() {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/ProfilUpdate/getStatus'
+ };
+ },
+ getTopic() {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/ProfilUpdate/getTopic'
+ };
+ },
+ acceptProfilRequest({profil_update_id, uid, status_message, topic, requested_change}) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/ProfilUpdate/acceptProfilRequest',
+ params: {
+ profil_update_id,
+ uid,
+ status_message,
+ topic,
+ requested_change
+ }
+ };
+ },
+ denyProfilRequest({profil_update_id, uid, topic, status_message}) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/ProfilUpdate/denyProfilRequest',
+ params: {
+ profil_update_id,
+ uid,
+ topic,
+ status_message
+ }
+ };
+ },
+ insertFile(dms, replace = null) {
+ return {
+ method: 'post',
+ url: `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,
+ params: dms
+ };
+ },
+ getProfilRequestFiles(requestID) {
+ return {
+ method: 'get',
+ url: `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`
+ };
+ },
+ selectProfilRequest(uid = null, id = null) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/ProfilUpdate/selectProfilRequest',
+ params: {
+ ...(uid ? { uid } : {}),
+ ...(id ? { id } : {})
+ }
+ };
+ },
+ insertProfilRequest(topic, payload, fileID = null) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/ProfilUpdate/insertProfilRequest',
+ params: {
+ topic,
+ payload,
+ ...(fileID ? { fileID } : {})
+ }
+ };
+ },
+ updateProfilRequest(topic, payload, ID, fileID = null) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/ProfilUpdate/updateProfilRequest',
+ params: {
+ topic,
+ payload,
+ ID,
+ ...(fileID ? { fileID } : {})
+ }
+ };
+ },
+ deleteProfilRequest(requestID) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/ProfilUpdate/deleteProfilRequest',
+ params: { requestID }
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/searchbar.js b/public/js/api/factory/searchbar.js
new file mode 100644
index 000000000..a7bd73b88
--- /dev/null
+++ b/public/js/api/factory/searchbar.js
@@ -0,0 +1,26 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ search(params) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/searchbar/search',
+ params
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/studiengang.js b/public/js/api/factory/studiengang.js
new file mode 100644
index 000000000..6d5ae15aa
--- /dev/null
+++ b/public/js/api/factory/studiengang.js
@@ -0,0 +1,32 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ studiengangInformation() {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Studgang/getStudiengangInfo'
+ };
+ },
+ getStudiengangByKz(studiengang_kz) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz',
+ params: { studiengang_kz }
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/studstatus.js b/public/js/api/factory/studstatus.js
new file mode 100644
index 000000000..459594f8d
--- /dev/null
+++ b/public/js/api/factory/studstatus.js
@@ -0,0 +1,28 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+import abmeldung from "./studstatus/abmeldung.js";
+import unterbrechung from "./studstatus/unterbrechung.js";
+import wiederholung from "./studstatus/wiederholung.js";
+import leitung from "./studstatus/leitung.js";
+
+export default {
+ abmeldung,
+ unterbrechung,
+ wiederholung,
+ leitung
+};
\ No newline at end of file
diff --git a/public/js/api/factory/studstatus/abmeldung.js b/public/js/api/factory/studstatus/abmeldung.js
new file mode 100644
index 000000000..81fe5fda7
--- /dev/null
+++ b/public/js/api/factory/studstatus/abmeldung.js
@@ -0,0 +1,45 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getDetails(antrag_id, prestudent_id) {
+ const url = '/api/frontend/v1/studstatus/abmeldung/'
+ + (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);
+ return {
+ method: 'get',
+ url
+ };
+ },
+ create(studiensemester, prestudent_id, grund) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/abmeldung/createAntrag',
+ params: {
+ studiensemester,
+ prestudent_id,
+ grund
+ }
+ };
+ },
+ cancel(antrag_id) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/abmeldung/cancelAntrag',
+ params: { antrag_id }
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/studstatus/leitung.js b/public/js/api/factory/studstatus/leitung.js
new file mode 100644
index 000000000..cc6b87d25
--- /dev/null
+++ b/public/js/api/factory/studstatus/leitung.js
@@ -0,0 +1,100 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getStgs() {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/studstatus/leitung/getActiveStgs'
+ };
+ },
+ getAntraege(url, config, params) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/studstatus/leitung/getAntraege/' + url
+ };
+ },
+ getHistory(antrag_id) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id
+ };
+ },
+ getPrestudents(query, signal) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/leitung/getPrestudents',
+ params: { query }
+ };
+ },
+ approve(antrag) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/leitung/approveAntrag',
+ params: antrag
+ };
+ },
+ reject(antrag) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/leitung/rejectAntrag',
+ params: antrag
+ };
+ },
+ reopen(antrag) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/leitung/reopenAntrag',
+ params: antrag
+ };
+ },
+ pause(antrag) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/leitung/pauseAntrag',
+ params: antrag
+ };
+ },
+ unpause(antrag) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/leitung/unpauseAntrag',
+ params: antrag
+ };
+ },
+ object(antrag) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/leitung/objectAntrag',
+ params: antrag
+ };
+ },
+ approveObjection(antrag) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/leitung/approveObjection',
+ params: antrag
+ };
+ },
+ denyObjection(antrag) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/leitung/denyObjection',
+ params: antrag
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/studstatus/unterbrechung.js b/public/js/api/factory/studstatus/unterbrechung.js
new file mode 100644
index 000000000..bf772bf42
--- /dev/null
+++ b/public/js/api/factory/studstatus/unterbrechung.js
@@ -0,0 +1,49 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getDetails(antrag_id, prestudent_id) {
+ const url = '/api/frontend/v1/studstatus/unterbrechung/'
+ + (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);
+ return {
+ method: 'get',
+ url
+ };
+ },
+ create(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/unterbrechung/createAntrag',
+ params: {
+ studiensemester,
+ prestudent_id,
+ grund,
+ datum_wiedereinstieg,
+ attachment
+ }
+ };
+ },
+ cancel(antrag_id) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/unterbrechung/cancelAntrag',
+ params: {
+ antrag_id
+ }
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/studstatus/wiederholung.js b/public/js/api/factory/studstatus/wiederholung.js
new file mode 100644
index 000000000..3591bb6ed
--- /dev/null
+++ b/public/js/api/factory/studstatus/wiederholung.js
@@ -0,0 +1,63 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getDetails(prestudent_id) {
+ const url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;
+ return {
+ method: 'get',
+ url
+ };
+ },
+ getLvs(antrag_id) {
+ const url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;
+ return {
+ method: 'get',
+ url
+ };
+ },
+ create(prestudent_id, studiensemester) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/wiederholung/createAntrag',
+ params: {
+ prestudent_id,
+ studiensemester
+ }
+ };
+ },
+ cancel(prestudent_id, studiensemester) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/wiederholung/cancelAntrag',
+ params: {
+ prestudent_id,
+ studiensemester
+ }
+ };
+ },
+ saveLvs(forbiddenLvs, mandatoryLvs) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/studstatus/wiederholung/saveLvs',
+ params: {
+ forbiddenLvs,
+ mandatoryLvs
+ }
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stundenplan.js b/public/js/api/factory/stundenplan.js
new file mode 100644
index 000000000..3cfa3c641
--- /dev/null
+++ b/public/js/api/factory/stundenplan.js
@@ -0,0 +1,66 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getRoomInfo(ort_kurzbz, start_date, end_date) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Stundenplan/getRoomplan',
+ params: { ort_kurzbz, start_date, end_date }
+ };
+ },
+ getStundenplan(start_date, end_date, lv_id) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Stundenplan/getStundenplan',
+ params: { start_date, end_date, lv_id }
+ };
+ },
+ getStunden() {
+ // TODO(chris): seems to be called from nowhere?
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Stundenplan/Stunden'
+ };
+ },
+ getOrtReservierungen(ort_kurzbz, start_date, end_date) {
+ return {
+ method: 'get',
+ url: `/api/frontend/v1/Stundenplan/Reservierungen/${ort_kurzbz}`,
+ params: { start_date, end_date }
+ };
+ },
+ getStundenplanReservierungen(start_date, end_date) {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Stundenplan/Reservierungen',
+ params: { start_date, end_date }
+ };
+ },
+ getLehreinheitStudiensemester(lehreinheit_id) {
+ return {
+ method: 'get',
+ url: `/api/frontend/v1/Stundenplan/getLehreinheitStudiensemester/${lehreinheit_id}`
+ };
+ },
+ studiensemesterDateInterval(date) {
+ return {
+ method: 'get',
+ url: `/api/frontend/v1/Stundenplan/studiensemesterDateInterval/${date}`
+ };
+ },
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv.js b/public/js/api/factory/stv.js
new file mode 100644
index 000000000..7ea387263
--- /dev/null
+++ b/public/js/api/factory/stv.js
@@ -0,0 +1,48 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+import app from './stv/app.js';
+import lists from './stv/lists.js';
+import verband from './stv/verband.js';
+import students from './stv/students.js';
+import filter from './stv/filter.js';
+import konto from './stv/konto.js';
+import kontakt from './stv/kontakt.js';
+import prestudent from './stv/prestudent.js';
+import status from './stv/status.js';
+import details from './stv/details.js';
+import exam from './stv/exam.js';
+import abschlusspruefung from './stv/abschlusspruefung.js';
+import grades from './stv/grades.js';
+import mobility from './stv/mobility.js';
+
+export default {
+ app,
+ lists,
+ verband,
+ students,
+ filter,
+ konto,
+ kontakt,
+ prestudent,
+ status,
+ details,
+ exam,
+ abschlusspruefung,
+ grades,
+ mobility
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/abschlusspruefung.js b/public/js/api/factory/stv/abschlusspruefung.js
new file mode 100644
index 000000000..37e442b19
--- /dev/null
+++ b/public/js/api/factory/stv/abschlusspruefung.js
@@ -0,0 +1,111 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getAbschlusspruefung(uid) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + uid
+ };
+ },
+ addNewAbschlusspruefung(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/',
+ params
+ };
+ },
+ loadAbschlusspruefung(id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/',
+ params: { id }
+ };
+ },
+ updateAbschlusspruefung(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/',
+ params
+ };
+ },
+ deleteAbschlusspruefung(id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/',
+ params: { id }
+ };
+ },
+ getTypenAbschlusspruefung() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/'
+ };
+ },
+ getTypenAntritte() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/'
+ };
+ },
+ getBeurteilungen() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/'
+ };
+ },
+ getAkadGrade(studiengang_kz) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/abschlusspruefung/getAkadGrade/',
+ params: { studiengang_kz }
+ };
+ },
+ getTypStudiengang(studiengang_kz) {
+ // TODO(chris): seems to be called from nowhere?
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/',
+ params: { studiengang_kz }
+ };
+ },
+ getMitarbeiter(searchString) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString
+ };
+ },
+ getPruefer(searchString) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString
+ };
+ },
+ getNoten() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/abschlusspruefung/getNoten/'
+ };
+ },
+ checkForExistingExams(uids) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/',
+ params: { uid }
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/app.js b/public/js/api/factory/stv/app.js
new file mode 100644
index 000000000..6fcf46700
--- /dev/null
+++ b/public/js/api/factory/stv/app.js
@@ -0,0 +1,31 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ configStudent() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/config/student'
+ };
+ },
+ configStudents() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/config/students'
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/details.js b/public/js/api/factory/stv/details.js
new file mode 100644
index 000000000..282b0003e
--- /dev/null
+++ b/public/js/api/factory/stv/details.js
@@ -0,0 +1,32 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ get(prestudent_id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/student/get/' + prestudent_id
+ };
+ },
+ save(prestudent_id, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/student/save/' + prestudent_id,
+ params
+ };
+ },
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/exam.js b/public/js/api/factory/stv/exam.js
new file mode 100644
index 000000000..0a03cf8f5
--- /dev/null
+++ b/public/js/api/factory/stv/exam.js
@@ -0,0 +1,101 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getPruefungen(uid) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/pruefung/getPruefungen/' + uid
+ };
+ },
+ loadPruefung(pruefung_id) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id
+ };
+ },
+ getTypenPruefungen() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/pruefung/getTypenPruefungen'
+ };
+ },
+ getAllLehreinheiten(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/pruefung/getAllLehreinheiten/',
+ params
+ };
+ },
+ getLvsByStudent(uid) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid
+ };
+ },
+ getLvsandLesByStudent(uid, semester) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester
+ };
+ },
+ getLvsAndMas(uid) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid
+ };
+ },
+ getMitarbeiterLv(id) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id
+ };
+ },
+ getNoten() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/pruefung/getNoten'
+ };
+ },
+ checkZeugnisnoteLv(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/',
+ params
+ };
+ },
+ addPruefung(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/pruefung/insertPruefung/',
+ params
+ };
+ },
+ updatePruefung(id, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/pruefung/updatePruefung/' + id,
+ params
+ };
+ },
+ deletePruefung(id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/pruefung/deletePruefung/' + id
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/filter.js b/public/js/api/factory/stv/filter.js
new file mode 100644
index 000000000..b81121702
--- /dev/null
+++ b/public/js/api/factory/stv/filter.js
@@ -0,0 +1,32 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getStg() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/filter/getStg'
+ };
+ },
+ setStg(studiengang_kz) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/filter/setStg',
+ params: { studiengang_kz }
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/grades.js b/public/js/api/factory/stv/grades.js
new file mode 100644
index 000000000..ea0d025eb
--- /dev/null
+++ b/public/js/api/factory/stv/grades.js
@@ -0,0 +1,96 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ list() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/grades/list'
+ };
+ },
+ getCertificate(prestudent_id, all) {
+ all = all ? '/all' : '';
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/grades/getCertificate/' + prestudent_id + all
+ };
+ },
+ getTeacherProposal(prestudent_id, all) {
+ all = all ? '/all' : '';
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/grades/getTeacherProposal/' + prestudent_id + all
+ };
+ },
+ getRepeaterGrades(prestudent_id, all) {
+ all = all ? '/all' : '';
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/grades/getRepeaterGrades/' + prestudent_id + all
+ };
+ },
+ updateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/grades/updateCertificate',
+ params: {
+ lehrveranstaltung_id,
+ student_uid,
+ studiensemester_kurzbz,
+ note
+ }
+ };
+ },
+ deleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/grades/deleteCertificate',
+ params: {
+ lehrveranstaltung_id,
+ student_uid,
+ studiensemester_kurzbz
+ }
+ };
+ },
+ copyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',
+ params: {
+ lehrveranstaltung_id,
+ student_uid,
+ studiensemester_kurzbz
+ }
+ };
+ },
+ copyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',
+ params: {
+ studierendenantrag_lehrveranstaltung_id
+ }
+ };
+ },
+ getGradeFromPoints(points, lehrveranstaltung_id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/grades/getGradeFromPoints',
+ params: { points, lehrveranstaltung_id }
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/kontakt.js b/public/js/api/factory/stv/kontakt.js
new file mode 100644
index 000000000..ef77f6d6b
--- /dev/null
+++ b/public/js/api/factory/stv/kontakt.js
@@ -0,0 +1,28 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+import address from './kontakt/address.js';
+import bankaccount from './kontakt/bankaccount.js';
+import contact from './kontakt/contact.js';
+import company from './kontakt/company.js';
+
+export default {
+ address,
+ bankaccount,
+ contact,
+ company
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/kontakt/address.js b/public/js/api/factory/stv/kontakt/address.js
new file mode 100644
index 000000000..78027835f
--- /dev/null
+++ b/public/js/api/factory/stv/kontakt/address.js
@@ -0,0 +1,71 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ get(uid) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/kontakt/getAdressen/' + uid
+ };
+ },
+ add(uid, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/kontakt/addNewAddress/' + uid,
+ params
+ };
+ },
+ load(address_id){
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/kontakt/loadAddress/',
+ params: { address_id }
+ };
+ },
+ update(address_id, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,
+ params
+ };
+ },
+ delete(address_id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/kontakt/deleteAddress/',
+ params: { address_id }
+ };
+ },
+ getTypes() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/kontakt/getAdressentypen/'
+ };
+ },
+ getPlaces(plz) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/address/getPlaces/' + plz
+ };
+ },
+ getNations() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/address/getNations/'
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/kontakt/bankaccount.js b/public/js/api/factory/stv/kontakt/bankaccount.js
new file mode 100644
index 000000000..7af230878
--- /dev/null
+++ b/public/js/api/factory/stv/kontakt/bankaccount.js
@@ -0,0 +1,53 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ get(uid) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/kontakt/getBankverbindung/' + uid
+ };
+ },
+ add(uid, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + uid,
+ params
+ };
+ },
+ load(bankverbindung_id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/kontakt/loadBankverbindung/',
+ params: { bankverbindung_id }
+ };
+ },
+ update(bankverbindung_id, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,
+ params
+ };
+ },
+ delete(bankverbindung_id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/kontakt/deleteBankverbindung/',
+ params: { bankverbindung_id }
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/kontakt/company.js b/public/js/api/factory/stv/kontakt/company.js
new file mode 100644
index 000000000..e97a3de1e
--- /dev/null
+++ b/public/js/api/factory/stv/kontakt/company.js
@@ -0,0 +1,25 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ get(searchString) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/kontakt/getFirmen/' + searchString
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/kontakt/contact.js b/public/js/api/factory/stv/kontakt/contact.js
new file mode 100644
index 000000000..7193a65c9
--- /dev/null
+++ b/public/js/api/factory/stv/kontakt/contact.js
@@ -0,0 +1,65 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ get(uid) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/kontakt/getKontakte/' + uid
+ };
+ },
+ add(uid, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/kontakt/addNewContact/' + uid,
+ params
+ };
+ },
+ load(kontakt_id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/kontakt/loadContact/',
+ params: { kontakt_id }
+ };
+ },
+ update(kontakt_id, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,
+ params
+ };
+ },
+ delete(kontakt_id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/kontakt/deleteContact/',
+ params: { kontakt_id }
+ };
+ },
+ getTypes() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/kontakt/getKontakttypen/'
+ };
+ },
+ getStandorteByFirma(searchString) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/konto.js b/public/js/api/factory/stv/konto.js
new file mode 100644
index 000000000..6c17d460d
--- /dev/null
+++ b/public/js/api/factory/stv/konto.js
@@ -0,0 +1,74 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ get(person_id, only_open, studiengang_kz) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/konto/get',
+ params: {
+ person_id,
+ only_open,
+ studiengang_kz
+ }
+ };
+ },
+ checkDoubles(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/konto/checkDoubles',
+ params,
+ config: {
+ confirmErrorHandler: error => true
+ }
+ };
+ },
+ insert(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/konto/insert',
+ params
+ };
+ },
+ counter(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/konto/counter',
+ params
+ };
+ },
+ edit(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/konto/update',
+ params
+ };
+ },
+ delete(buchungsnr) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/konto/delete',
+ params: { buchungsnr }
+ };
+ },
+ getBuchungstypen() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/konto/getBuchungstypen'
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/lists.js b/public/js/api/factory/stv/lists.js
new file mode 100644
index 000000000..4e7904d00
--- /dev/null
+++ b/public/js/api/factory/stv/lists.js
@@ -0,0 +1,55 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getSprachen() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/lists/getSprachen'
+ };
+ },
+ getGeschlechter() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/lists/getGeschlechter'
+ };
+ },
+ getAusbildungen() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/lists/getAusbildungen'
+ };
+ },
+ getStgs() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/lists/getStgs'
+ };
+ },
+ getOrgforms() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/lists/getOrgforms'
+ };
+ },
+ getStudiensemester() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/lists/getStudiensemester'
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/mobility.js b/public/js/api/factory/stv/mobility.js
new file mode 100644
index 000000000..262dbcf55
--- /dev/null
+++ b/public/js/api/factory/stv/mobility.js
@@ -0,0 +1,128 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getMobilitaeten(uid) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/mobility/getMobilitaeten/' + uid
+ };
+ },
+ getProgramsMobility() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/mobility/getProgramsMobility/'
+ };
+ },
+ addNewMobility(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/mobility/insertMobility/',
+ params
+ };
+ },
+ loadMobility(bisio_id) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/mobility/loadMobility/' + bisio_id
+ };
+ },
+ updateMobility(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/mobility/updateMobility/',
+ params
+ };
+ },
+ deleteMobility(bisio_id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id
+ };
+ },
+ getLVList(studiengang_kz) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz
+ };
+ },
+ getAllLehreinheiten(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/mobility/getAllLehreinheiten/',
+ params
+ };
+ },
+ getLvsandLesByStudent(uid) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid
+ };
+ },
+ getPurposes(bisio_id) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/mobility/getPurposes/' + bisio_id
+ };
+ },
+ getSupports(bisio_id) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/mobility/getSupports/' + bisio_id
+ };
+ },
+ getListPurposes() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/mobility/getListPurposes/'
+ };
+ },
+ getListSupports() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/mobility/getListSupports/'
+ };
+ },
+ deleteMobilityPurpose(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id,
+ params
+ };
+ },
+ addMobilityPurpose(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id,
+ params
+ };
+ },
+ deleteMobilitySupport(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id,
+ params
+ };
+ },
+ addMobilitySupport(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id,
+ params
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/prestudent.js b/public/js/api/factory/stv/prestudent.js
new file mode 100644
index 000000000..a49dd1d7a
--- /dev/null
+++ b/public/js/api/factory/stv/prestudent.js
@@ -0,0 +1,150 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ //------------- Prestudent.js------------------------------------------------------
+ get(prestudent_id) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/prestudent/get/' + prestudent_id
+ };
+ },
+ updatePrestudent(prestudent_id, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,
+ params
+ };
+ },
+ getBezeichnungZGV() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/prestudent/getBezeichnungZGV/'
+ };
+ },
+ getBezeichnungMZgv() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/prestudent/getBezeichnungMZgv/'
+ };
+ },
+ getBezeichnungDZgv() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/prestudent/getBezeichnungDZgv/'
+ };
+ },
+ getStgs() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/lists/getStgs/'
+ };
+ },
+ getAusbildung() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/prestudent/getAusbildung/'
+ };
+ },
+ getAufmerksamdurch() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/prestudent/getAufmerksamdurch/'
+ };
+ },
+ getBerufstaetigkeit() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/prestudent/getBerufstaetigkeit/'
+ };
+ },
+ getTypenStg() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/prestudent/getTypenStg/'
+ };
+ },
+ getBisstandort() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/prestudent/getBisstandort/'
+ };
+ },
+ //------------- MultiStatus.js------------------------------------------------------
+ getHistoryPrestudent(prestudent_id) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/status/getHistoryPrestudent/' + prestudent_id
+ };
+ },
+ getMaxSem(studiengang_kzs) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/status/getMaxSemester/',
+ params: { studiengang_kzs }
+ };
+ },
+ advanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/status/advanceStatus/'
+ + prestudent_id + '/'
+ + status_kurzbz + '/'
+ + studiensemester_kurzbz + '/'
+ + ausbildungssemester
+ };
+ },
+ confirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/status/confirmStatus/'
+ + prestudent_id + '/'
+ + status_kurzbz + '/'
+ + studiensemester_kurzbz + '/'
+ + ausbildungssemester
+ };
+ },
+ isLastStatus(id) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/status/isLastStatus/' + id
+ };
+ },
+ deleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/status/deleteStatus/'
+ + prestudent_id + '/'
+ + status_kurzbz + '/'
+ + studiensemester_kurzbz + '/'
+ + ausbildungssemester
+ };
+ },
+ getLastBismeldestichtag() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/status/getLastBismeldestichtag/'
+ };
+ },
+ //------------- History.js------------------------------------------------------
+ getHistoryPrestudents(person_id) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + person_id
+ };
+ },
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/status.js b/public/js/api/factory/stv/status.js
new file mode 100644
index 000000000..11e7f4fde
--- /dev/null
+++ b/public/js/api/factory/stv/status.js
@@ -0,0 +1,98 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ //------------- Modal.js------------------------------------------------------
+ insertStatus(id, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/status/insertStatus/' + id,
+ params
+ };
+ },
+ loadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/status/loadStatus/'
+ + prestudent_id + '/'
+ + status_kurzbz + '/'
+ + studiensemester_kurzbz + '/'
+ + ausbildungssemester
+ };
+ },
+ updateStatus({
+ prestudent_id,
+ status_kurzbz,
+ studiensemester_kurzbz,
+ ausbildungssemester
+ }, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/status/updateStatus/'
+ + prestudent_id + '/'
+ + status_kurzbz + '/'
+ + studiensemester_kurzbz + '/'
+ + ausbildungssemester,
+ params
+ };
+ },
+ getStudienplaene(prestudent_id) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id
+ };
+ },
+ getStudiengang(prestudent_id) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id
+ };
+ },
+ getStatusgruende() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/status/getStatusgruende/'
+ };
+ },
+ getStati() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/lists/getStati/'
+ };
+ },
+ //------------- Dropdown.js------------------------------------------------------
+ addStudent(id, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/status/addStudent/' + id,
+ params
+ };
+ },
+ changeStatus(id, params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/status/changeStatus/' + id,
+ params
+ };
+ },
+ getStatusarray() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/status/getStatusarray/'
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/students.js b/public/js/api/factory/stv/students.js
new file mode 100644
index 000000000..582ba04e8
--- /dev/null
+++ b/public/js/api/factory/stv/students.js
@@ -0,0 +1,50 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ uid(uid) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/students/uid/' + uid
+ };
+ },
+ prestudent(prestudent_id) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/students/prestudent/' + prestudent_id
+ };
+ },
+ person(person_id) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/students/person/' + person_id
+ };
+ },
+ verband(relative_path) {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/students/' + relative_path
+ };
+ },
+ check(params) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/student/check',
+ params
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/stv/verband.js b/public/js/api/factory/stv/verband.js
new file mode 100644
index 000000000..114931e4c
--- /dev/null
+++ b/public/js/api/factory/stv/verband.js
@@ -0,0 +1,43 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ get(path) {
+ let url = 'api/frontend/v1/stv/verband';
+ if (path)
+ url += '/' + path;
+ return {
+ method: 'get',
+ url
+ };
+ },
+ favorites: {
+ get() {
+ return {
+ method: 'get',
+ url: 'api/frontend/v1/stv/favorites'
+ };
+ },
+ set(favorites) {
+ return {
+ method: 'post',
+ url: 'api/frontend/v1/stv/favorites/set',
+ params: { favorites }
+ };
+ }
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/widget/ampeln.js b/public/js/api/factory/widget/ampeln.js
new file mode 100644
index 000000000..b634766a8
--- /dev/null
+++ b/public/js/api/factory/widget/ampeln.js
@@ -0,0 +1,37 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ open() {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Ampeln/open'
+ };
+ },
+ all() {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Ampeln/all'
+ };
+ },
+ confirm(ampel_id) {
+ return {
+ method: 'get',
+ url: `/api/frontend/v1/Ampeln/confirm/${ampel_id}`
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/factory/widget/bookmark.js b/public/js/api/factory/widget/bookmark.js
new file mode 100644
index 000000000..9768e25ac
--- /dev/null
+++ b/public/js/api/factory/widget/bookmark.js
@@ -0,0 +1,45 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ getBookmarks() {
+ return {
+ method: 'get',
+ url: '/api/frontend/v1/Bookmark/getBookmarks'
+ };
+ },
+ delete(bookmark_id) {
+ return {
+ method: 'get',
+ url: `/api/frontend/v1/Bookmark/delete/${bookmark_id}`
+ };
+ },
+ update({ bookmark_id, url, title, tag=null }) {
+ return {
+ method: 'post',
+ url: `/api/frontend/v1/Bookmark/update/${bookmark_id}`,
+ params: { url, title }
+ };
+ },
+ insert({ url, title, tag }) {
+ return {
+ method: 'post',
+ url: `/api/frontend/v1/Bookmark/insert`,
+ params: { url, title, tag }
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/udf.js b/public/js/api/udf.js
new file mode 100644
index 000000000..77d1e92cb
--- /dev/null
+++ b/public/js/api/udf.js
@@ -0,0 +1,26 @@
+/**
+ * Copyright (C) 2025 fhcomplete.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+export default {
+ load({ ciModel, pk }) {
+ return {
+ method: 'post',
+ url: '/api/frontend/v1/udf/load/' + ciModel,
+ params: pk
+ };
+ }
+};
\ No newline at end of file
diff --git a/public/js/apps/Bismeldestichtag/Bismeldestichtag.js b/public/js/apps/Bismeldestichtag/Bismeldestichtag.js
index 877805b8f..d6e5a4a27 100644
--- a/public/js/apps/Bismeldestichtag/Bismeldestichtag.js
+++ b/public/js/apps/Bismeldestichtag/Bismeldestichtag.js
@@ -23,7 +23,7 @@ import {CoreRESTClient} from '../../RESTClient.js';
import {CoreFetchCmpt} from '../../components/Fetch.js';
import {BismeldestichtagAPIs} from './API.js';
-import Phrasen from '../../plugin/Phrasen.js';
+import PluginsPhrasen from '../../plugins/Phrasen.js';
const bismeldestichtagApp = Vue.createApp({
data: function() {
@@ -237,4 +237,4 @@ const bismeldestichtagApp = Vue.createApp({
}
});
-bismeldestichtagApp.use(Phrasen).mount('#main');
+bismeldestichtagApp.use(PluginsPhrasen).mount('#main');
diff --git a/public/js/apps/Cis.js b/public/js/apps/Cis.js
index 482c2774a..b62592ebd 100644
--- a/public/js/apps/Cis.js
+++ b/public/js/apps/Cis.js
@@ -1,9 +1,7 @@
import FhcSearchbar from "../components/searchbar/searchbar.js";
import CisMenu from "../components/Cis/Menu.js";
-import FhcApi from '../plugin/FhcApi.js';
-import Phrasen from '../plugin/Phrasen.js';
-import fhcapifactory from "./api/fhcapifactory.js";
-Vue.$fhcapi = fhcapifactory;
+import PluginsPhrasen from '../plugins/Phrasen.js';
+import ApiSearchbar from '../api/factory/searchbar.js';
const app = Vue.createApp({
name: 'CisApp',
@@ -113,16 +111,15 @@ const app = Vue.createApp({
},
methods: {
searchfunction: function(searchsettings) {
- return Vue.$fhcapi.search.search(searchsettings);
+ return this.$api.call(ApiSearchbar.search(searchsettings));
}
}
});
-app.use(FhcApi);
app.use(primevue.config.default, {
zIndex: {
overlay: 9000,
tooltip: 8000
}
})
-app.use(Phrasen);
+app.use(PluginsPhrasen);
app.mount('#cis-header');
diff --git a/public/js/apps/Cis/Documents.js b/public/js/apps/Cis/Documents.js
index bcb01b6e8..de03769b4 100644
--- a/public/js/apps/Cis/Documents.js
+++ b/public/js/apps/Cis/Documents.js
@@ -1,4 +1,4 @@
-import Phrasen from '../../plugin/Phrasen.js';
+import PluginsPhrasen from '../../plugins/Phrasen.js';
import {setScrollbarWidth} from "../../helpers/CssVarCalcHelpers.js";
const app = Vue.createApp({
@@ -89,5 +89,5 @@ const app = Vue.createApp({
setScrollbarWidth();
-app.use(Phrasen);
+app.use(PluginsPhrasen);
app.mount('#content');
diff --git a/public/js/apps/Cis/ProfilUpdateRequests.js b/public/js/apps/Cis/ProfilUpdateRequests.js
index 05ce939e4..68465b202 100644
--- a/public/js/apps/Cis/ProfilUpdateRequests.js
+++ b/public/js/apps/Cis/ProfilUpdateRequests.js
@@ -1,6 +1,7 @@
import ProfilUpdateView from "../../components/Cis/ProfilUpdate/ProfilUpdateView.js";
-import Phrasen from "../../plugin/Phrasen.js";
+import PluginsPhrasen from "../../plugins/Phrasen.js";
+import ApiProfilUpdate from '../../api/factory/profilUpdate.js';
// TODO: sobald in verwendung den vue router pfad zu ProfilUpdateView definieren und diese app in component auslagern
const app = Vue.createApp({
@@ -23,7 +24,8 @@ const app = Vue.createApp({
},
methods: {},
created() {
- this.$fhcApi.factory.profilUpdate.getStatus()
+ this.$api
+ .call(ApiProfilUpdate.getStatus())
.then((response) => {
this.profilUpdateStates = response.data;
})
@@ -32,4 +34,4 @@ const app = Vue.createApp({
});
},
});
-app.use(Phrasen).mount("#content");
\ No newline at end of file
+app.use(PluginsPhrasen).mount("#content");
\ No newline at end of file
diff --git a/public/js/apps/Dashboard/Admin.js b/public/js/apps/Dashboard/Admin.js
index 0470f82a7..4a5fcee2f 100644
--- a/public/js/apps/Dashboard/Admin.js
+++ b/public/js/apps/Dashboard/Admin.js
@@ -1,7 +1,6 @@
import {CoreNavigationCmpt} from '../../components/navigation/Navigation.js';
import DashboardAdmin from '../../components/Dashboard/Admin.js';
-import FhcApi from '../../plugin/FhcApi.js';
-import Phrasen from '../../plugin/Phrasen.js';
+import PluginsPhrasen from '../../plugins/Phrasen.js';
const app = Vue.createApp({
name: 'AdminApp',
@@ -13,6 +12,5 @@ const app = Vue.createApp({
DashboardAdmin
}
});
-app.use(FhcApi);
-app.use(Phrasen);
+app.use(PluginsPhrasen);
app.mount('#main');
\ No newline at end of file
diff --git a/public/js/apps/Dashboard/Fhc.js b/public/js/apps/Dashboard/Fhc.js
index ea8d512df..3b6bb5683 100644
--- a/public/js/apps/Dashboard/Fhc.js
+++ b/public/js/apps/Dashboard/Fhc.js
@@ -1,6 +1,5 @@
import FhcDashboard from '../../components/Dashboard/Dashboard.js';
-import FhcApi from '../../plugin/FhcApi.js';
-import Phrasen from '../../plugin/Phrasen.js';
+import PluginsPhrasen from '../../plugins/Phrasen.js';
import contrast from '../../directives/contrast.js';
import {setScrollbarWidth} from "../../helpers/CssVarCalcHelpers.js";
import Stundenplan, {DEFAULT_MODE_STUNDENPLAN} from "../../components/Cis/Stundenplan/Stundenplan.js";
@@ -259,13 +258,12 @@ const app = Vue.createApp({
// kind of a bandaid for bad css on some pages to avoid horizontal scroll
setScrollbarWidth();
app.use(router);
-app.use(FhcApi);
app.use(primevue.config.default, {
zIndex: {
overlay: 9000,
tooltip: 8000
}
})
-app.use(Phrasen);
+app.use(PluginsPhrasen);
app.directive('contrast', contrast);
app.mount('#fhccontent');
\ No newline at end of file
diff --git a/public/js/apps/LogsViewer/LogsViewer.js b/public/js/apps/LogsViewer/LogsViewer.js
index 8aefa1d67..eeb4b38a7 100644
--- a/public/js/apps/LogsViewer/LogsViewer.js
+++ b/public/js/apps/LogsViewer/LogsViewer.js
@@ -21,7 +21,7 @@ import {LogsViewerTabulatorEventHandlers} from './TabulatorSetup.js';
import {CoreFilterCmpt} from '../../components/filter/Filter.js';
import {CoreNavigationCmpt} from '../../components/navigation/Navigation.js';
-import Phrasen from '../../plugin/Phrasen.js';
+import PluginsPhrasen from '../../plugins/Phrasen.js';
const logsViewerApp = Vue.createApp({
data: function() {
@@ -42,5 +42,5 @@ const logsViewerApp = Vue.createApp({
}
});
-logsViewerApp.use(Phrasen).mount('#main');
+logsViewerApp.use(PluginsPhrasen).mount('#main');
diff --git a/public/js/apps/Studentenverwaltung.js b/public/js/apps/Studentenverwaltung.js
index fbbee8e1d..bef605a10 100644
--- a/public/js/apps/Studentenverwaltung.js
+++ b/public/js/apps/Studentenverwaltung.js
@@ -18,7 +18,7 @@
import FhcStudentenverwaltung from "../components/Stv/Studentenverwaltung.js";
import fhcapifactory from "./api/fhcapifactory.js";
-import Phrasen from "../plugin/Phrasen.js";
+import PluginsPhrasen from "../plugins/Phrasen.js";
const ciPath = FHC_JS_DATA_STORAGE_OBJECT.app_root.replace(/(https:|)(^|\/\/)(.*?\/)/g, '') + FHC_JS_DATA_STORAGE_OBJECT.ci_router;
@@ -34,7 +34,9 @@ const router = VueRouter.createRouter({
]
});
-const app = Vue.createApp();
+const app = Vue.createApp({
+ name: 'StudentenverwaltungApp'
+});
app
.use(router)
@@ -43,5 +45,5 @@ app
overlay: 1100
}
})
- .use(Phrasen)
+ .use(PluginsPhrasen)
.mount('#main');
diff --git a/public/js/apps/lehre/Antrag.js b/public/js/apps/lehre/Antrag.js
index bb7de3485..97b4bda97 100644
--- a/public/js/apps/lehre/Antrag.js
+++ b/public/js/apps/lehre/Antrag.js
@@ -1,7 +1,7 @@
import StudierendenantragAntrag from "../../components/Studierendenantrag/Antrag.js";
import StudierendenantragStatus from "../../components/Studierendenantrag/Status.js";
import StudierendenantragInfoblock from "../../components/Studierendenantrag/Infoblock.js";
-import Phrasen from '../../plugin/Phrasen.js';
+import PluginsPhrasen from '../../plugins/Phrasen.js';
const app = Vue.createApp({
name: 'AntragApp',
@@ -21,5 +21,5 @@ const app = Vue.createApp({
}
});
app
- .use(Phrasen)
+ .use(PluginsPhrasen)
.mount('#wrapper');
\ No newline at end of file
diff --git a/public/js/apps/lehre/Antrag/Leitung.js b/public/js/apps/lehre/Antrag/Leitung.js
index 22c3fa3f5..8fd8b117e 100644
--- a/public/js/apps/lehre/Antrag/Leitung.js
+++ b/public/js/apps/lehre/Antrag/Leitung.js
@@ -1,5 +1,5 @@
import StudierendenantragLeitung from '../../../components/Studierendenantrag/Leitung.js';
-import Phrasen from '../../../plugin/Phrasen.js';
+import PluginsPhrasen from '../../../plugins/Phrasen.js';
const app = Vue.createApp({
name: 'LeitungApp',
@@ -8,6 +8,6 @@ const app = Vue.createApp({
}
});
app
- .use(Phrasen)
+ .use(PluginsPhrasen)
.use(primevue.config.default,{zIndex: {overlay: 9999}})
.mount('#wrapper');
\ No newline at end of file
diff --git a/public/js/apps/lehre/Antrag/Lvzuweisung.js b/public/js/apps/lehre/Antrag/Lvzuweisung.js
index ecad05fa5..7504e7dcf 100644
--- a/public/js/apps/lehre/Antrag/Lvzuweisung.js
+++ b/public/js/apps/lehre/Antrag/Lvzuweisung.js
@@ -1,5 +1,5 @@
import LvZuweisung from '../../../components/Studierendenantrag/Lvzuweisung.js';
-import Phrasen from '../../../plugin/Phrasen.js';
+import PluginsPhrasen from '../../../plugins/Phrasen.js';
const app = Vue.createApp({
name: 'LvzuweisungApp',
@@ -13,5 +13,5 @@ const app = Vue.createApp({
}
});
app
- .use(Phrasen)
+ .use(PluginsPhrasen)
.mount('#wrapper');
\ No newline at end of file
diff --git a/public/js/apps/lehre/Antrag/Student.js b/public/js/apps/lehre/Antrag/Student.js
index 1848daea4..46150c541 100644
--- a/public/js/apps/lehre/Antrag/Student.js
+++ b/public/js/apps/lehre/Antrag/Student.js
@@ -1,5 +1,5 @@
import LvPopup from '../../../components/Studierendenantrag/Leitung/LvPopup.js';
-import Phrasen from '../../../plugin/Phrasen.js';
+import PluginsPhrasen from '../../../plugins/Phrasen.js';
const app = Vue.createApp({
name: 'StudentApp',
@@ -8,5 +8,5 @@ const app = Vue.createApp({
}
});
app
- .use(Phrasen)
+ .use(PluginsPhrasen)
.mount('#wrapper');
\ No newline at end of file
diff --git a/public/js/apps/lehre/lvplanung/LvTemplates.js b/public/js/apps/lehre/lvplanung/LvTemplates.js
index 5bb8694a0..655d611ce 100644
--- a/public/js/apps/lehre/lvplanung/LvTemplates.js
+++ b/public/js/apps/lehre/lvplanung/LvTemplates.js
@@ -17,9 +17,7 @@
import LvTemplateUebersicht from '../../../lehre/lvplanung/LvTemplateUebersicht.js';
import {CoreNavigationCmpt} from '../../../components/navigation/Navigation.js';
-import FhcAlert from '../../../plugin/FhcAlert.js';
-import FhcApi from "../../../plugin/FhcApi.js";
-import Phrasen from "../../../plugin/Phrasen.js";
+import PluginsPhrasen from "../../../plugins/Phrasen.js";
const lvTemplatesApp = Vue.createApp({
@@ -32,7 +30,5 @@ const lvTemplatesApp = Vue.createApp({
lvTemplatesApp
.use(primevue.config.default,{zIndex: {overlay: 9999}})
- .use(FhcAlert)
- .use(FhcApi)
- .use(Phrasen)
+ .use(PluginsPhrasen)
.mount('#main')
\ No newline at end of file
diff --git a/public/js/components/Betriebsmittel/Betriebsmittel.js b/public/js/components/Betriebsmittel/Betriebsmittel.js
index d1c07db33..39681ffb4 100644
--- a/public/js/components/Betriebsmittel/Betriebsmittel.js
+++ b/public/js/components/Betriebsmittel/Betriebsmittel.js
@@ -35,13 +35,9 @@ export default {
return {
tabulatorOptions: {
ajaxURL: 'dummy',
- ajaxRequestFunc: this.endpoint.getAllBetriebsmittel,
- ajaxParams: () => {
- return {
- type: this.typeId,
- id: this.id
- };
- },
+ ajaxRequestFunc: () => this.$api.call(
+ this.endpoint.getAllBetriebsmittel(this.typeId, this.id)
+ ),
ajaxResponse: (url, params, response) => response.data,
columns: [
{title: "Nummer", field: "nummer", width: 150},
@@ -221,7 +217,9 @@ export default {
.then(result => result
? betriebsmittelperson_id
: Promise.reject({handled: true}))
- .then(this.endpoint.deleteBetriebsmittel)
+ .then(betriebsmittelperson_id => this.$api.call(
+ this.endpoint.deleteBetriebsmittel(betriebsmittelperson_id))
+ )
.then(result => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
window.scrollTo(0, 0);
@@ -234,8 +232,8 @@ export default {
this.formData.uid = this.uid;
if (this.formData.betriebsmitteltyp == 'Inventar')
this.formData.betriebsmittel_id = this.formData.inventarData?.betriebsmittel_id;
- return this.endpoint
- .addNewBetriebsmittel(this.$refs.betriebsmittelData, this.id, this.formData)
+ return this.$refs.betriebsmittelData
+ .call(this.endpoint.addNewBetriebsmittel(this.id, this.formData))
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$refs.betriebsmittelModal.hide();
@@ -248,8 +246,11 @@ export default {
updateBetriebsmittel(betriebsmittelperson_id) {
if (this.formData.betriebsmitteltyp == 'Inventar')
this.formData.betriebsmittel_id = this.formData.inventarData?.betriebsmittel_id;
- return this.endpoint
- .updateBetriebsmittel(this.$refs.betriebsmittelData, betriebsmittelperson_id, this.formData)
+ return this.$refs.betriebsmittelData
+ .call(this.endpoint.updateBetriebsmittel(
+ betriebsmittelperson_id,
+ this.formData
+ ))
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$refs.betriebsmittelModal.hide();
@@ -262,8 +263,8 @@ export default {
loadBetriebsmittel(betriebsmittelperson_id) {
this.resetModal();
this.statusNew = false;
- return this.endpoint
- .loadBetriebsmittel(betriebsmittelperson_id)
+ return this.$api
+ .call(this.endpoint.loadBetriebsmittel(betriebsmittelperson_id))
.then(result => {
this.formData = result.data;
})
@@ -271,8 +272,8 @@ export default {
},
searchInventar(event) {
const encodedQuery = encodeURIComponent(event.query);
- return this.endpoint
- .loadInventarliste(encodedQuery)
+ return this.$api
+ .call(this.endpoint.loadInventarliste(encodedQuery))
.then(result => {
this.filteredInventar = result.data;
});
@@ -294,8 +295,8 @@ export default {
}
},
created() {
- return this.endpoint
- .getTypenBetriebsmittel()
+ return this.$api
+ .call(this.endpoint.getTypenBetriebsmittel())
.then(result => {
this.listBetriebsmitteltyp = result.data;
})
diff --git a/public/js/components/Bootstrap/Alert.js b/public/js/components/Bootstrap/Alert.js
index 075c9cf86..9afcfe475 100644
--- a/public/js/components/Bootstrap/Alert.js
+++ b/public/js/components/Bootstrap/Alert.js
@@ -1,6 +1,7 @@
import BsModal from './Modal.js';
export default {
+ name: 'BootstrapAlert',
components: {
BsModal
},
diff --git a/public/js/components/Bootstrap/Confirm.js b/public/js/components/Bootstrap/Confirm.js
index 7a6f74b15..a56885473 100644
--- a/public/js/components/Bootstrap/Confirm.js
+++ b/public/js/components/Bootstrap/Confirm.js
@@ -1,6 +1,7 @@
import BsAlert from './Alert.js';
export default {
+ name: 'BootstrapConfirm',
mixins: [
BsAlert
],
diff --git a/public/js/components/Bootstrap/Modal.js b/public/js/components/Bootstrap/Modal.js
index e390319e8..2b3223ff7 100644
--- a/public/js/components/Bootstrap/Modal.js
+++ b/public/js/components/Bootstrap/Modal.js
@@ -1,6 +1,7 @@
-import Phrasen from '../../plugin/Phrasen.js';
+//import Phrasen from '../../plugin/Phrasen.js';
export default {
+ name: 'BootstrapModal',
data: () => ({
modal: null
}),
@@ -77,6 +78,7 @@ export default {
return new Promise((resolve,reject) => {
const instance = Vue.createApp({
+ name: 'ModalTmpApp',
setup() {
return () => Vue.h(BsModal, {...{
class: 'fade'
@@ -104,9 +106,12 @@ export default {
instance.use(primevue.config.default, {zIndex: {overlay: 9999}})
}
- instance.use(Phrasen); // TODO(chris): find a more dynamic way
- instance.mount(wrapper);
- document.body.appendChild(wrapper);
+ //instance.use(Phrasen); // TODO(chris): find a more dynamic way
+ import('../../plugins/Phrasen.js').then((Phrasen) => {
+ instance.use(Phrasen.default);
+ instance.mount(wrapper);
+ document.body.appendChild(wrapper);
+ });
});
},
template: `