| '.$p->t("global/bezeichnung").' |
'.$p->t("services/leistung").' |
'.$p->t("services/design").' |
+ '.$p->t("services/kritikalitaet").' |
'.$p->t("services/details").' |
@@ -159,6 +158,8 @@ foreach($service->result as $row)
echo '',$design,' | ';
//echo '',$betrieb,' | ';
//echo '',$operativ,' | ';
+ $title = (isset($servicekategorie_arr[$row->servicekategorie_kurzbz])?$servicekategorie_arr[$row->servicekategorie_kurzbz]:'');
+ echo '',$title,' | ';
echo ''.($row->content_id!=''?'Details':'');
if (defined("ADDON_MOODLE_PATH"))
echo ' '.($row->ext_id!=''?'Beschreibung':'');
diff --git a/cis/private/lehre/anwesenheitsliste.php b/cis/private/lehre/anwesenheitsliste.php
index 8b1f28408..0ba5531c8 100644
--- a/cis/private/lehre/anwesenheitsliste.php
+++ b/cis/private/lehre/anwesenheitsliste.php
@@ -62,7 +62,7 @@
$stsem = $_GET['stsem'];
else
die($p->t('anwesenheitsliste/studiensemesterIstUngueltig'));
-
+
$covidhelper = new CovidHelper();
?>
";
- $qry = "SELECT *, tbl_lehreinheitgruppe.studiengang_kz, tbl_lehreinheitgruppe.semester FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
- WHERE lehrveranstaltung_id='$lvid' AND studiensemester_kurzbz=".$db->db_add_param($stsem);
-
$qry = "SELECT *, tbl_lehreinheitgruppe.studiengang_kz, tbl_lehreinheitgruppe.semester ,tbl_lehreinheit.lehrform_kurzbz
FROM lehre.tbl_lehreinheit
JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id)
@@ -213,7 +210,7 @@ $covidhelper = new CovidHelper();
$covid_content = "".$p->t('anwesenheitsliste/covidstatuslisten')." | ".$covid_content." ";
else
$covid_content = ($covidhelper->isUdfDefined()) ? $p->t('anwesenheitsliste/keineStudentenVorhanden') : '';
-
+
if($aw_content!='')
$aw_content = "".$p->t('anwesenheitsliste/anwesenheitslisten')." | ".$aw_content." ";
else
@@ -241,9 +238,9 @@ $covidhelper = new CovidHelper();
{
$covid_content = '';
}
-
+
echo "
-
+
| $aw_content |
$covid_content |
diff --git a/cis/private/pdfExport.php b/cis/private/pdfExport.php
index 6db6f885a..ad2bb1fae 100644
--- a/cis/private/pdfExport.php
+++ b/cis/private/pdfExport.php
@@ -65,6 +65,11 @@ $xsl_stg_kz = 0;
$sign = false;
+/* Signing on CIS disabled
+if(isset($_GET['sign']))
+ $sign = true;
+*/
+
// Direkte uebergabe des Studienganges dessen Vorlage verwendet werden soll
if (isset($_GET['xsl_stg_kz']))
$xsl_stg_kz = $_GET['xsl_stg_kz'];
@@ -298,22 +303,18 @@ if ((((isset($_GET["uid"]) && $user == $_GET["uid"])) || $rechte->isBerechtigt('
$dokument->setFilename($filename);
- if (!$dokument->create($output))
- die($dokument->errormsg);
-
if ($sign === true)
{
- if ($dokument->sign($user))
- {
- $dokument->output();
- }
- else
+ if (!$dokument->sign($user))
{
echo $dokument->errormsg;
}
}
- else
- $dokument->output();
+
+ if (!$dokument->create($output))
+ die($dokument->errormsg);
+
+ $dokument->output();
$dokument->close();
}
else
diff --git a/content/statistik/lehrauftragsliste_mail.xls.php b/content/statistik/lehrauftragsliste_mail.xls.php
index 853be72fe..b4ee093b7 100644
--- a/content/statistik/lehrauftragsliste_mail.xls.php
+++ b/content/statistik/lehrauftragsliste_mail.xls.php
@@ -30,6 +30,8 @@ require_once('../../include/Excel/excel.php');
require_once('../../include/studiengang.class.php');
require_once('../../include/studiensemester.class.php');
require_once('../../include/mail.class.php');
+require_once('../../include/benutzerfunktion.class.php');
+require_once('../../include/organisationseinheit.class.php');
$stsem = new studiensemester();
@@ -96,12 +98,11 @@ $qry_stg = "SELECT distinct studiengang_kz, typ, kurzbz
SELECT
studiengang_kz
FROM
- lehre.tbl_projektbetreuer, lehre.tbl_projektarbeit, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung
+ lehre.tbl_projektbetreuer JOIN lehre.tbl_projektarbeit ON tbl_projektbetreuer.projektarbeit_id=tbl_projektarbeit.projektarbeit_id
+ JOIN lehre.tbl_lehreinheit ON tbl_lehreinheit.lehreinheit_id = tbl_projektarbeit.lehreinheit_id
+ JOIN lehre.tbl_lehrveranstaltung ON tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id
WHERE
- lehre.tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND
- tbl_projektbetreuer.projektarbeit_id=tbl_projektarbeit.projektarbeit_id AND
- tbl_projektarbeit.lehreinheit_id = tbl_lehreinheit.lehreinheit_id AND
- tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id
+ lehre.tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
) as foo
JOIN public.tbl_studiengang USING (studiengang_kz)
";
@@ -124,6 +125,10 @@ $workbook->setCustomColor(10, 255, 186, 179);
$format_colored =& $workbook->addFormat();
$format_colored->setFgColor(10);
+$workbook->setCustomColor(10, 238, 238, 0);
+$oe_colored =& $workbook->addFormat();
+$oe_colored->setFgColor(11);
+
$format_number_colored =& $workbook->addFormat();
$format_number_colored->setNumFormat('0,0.00');
//$format_number_colored->setNumFormat('0.00');
@@ -185,6 +190,17 @@ if ($result_stg = $db->db_query($qry_stg))
$gesamt->write($gesamtsheet_row, $i, "Gesamtstunden", $format_bold);
$worksheet->write(2, ++$i, "Gesamtkosten", $format_bold);
$gesamt->write($gesamtsheet_row, $i, "Gesamtkosten", $format_bold);
+
+ $worksheet->write(2, ++$i, "Gesamtstunden bestellt", $format_bold);
+ $gesamt->write($gesamtsheet_row, $i, "Gesamtstunden bestellt", $format_bold);
+ $worksheet->write(2, ++$i, "Gesamtkosten bestellt", $format_bold);
+ $gesamt->write($gesamtsheet_row, $i, "Gesamtkosten bestellt", $format_bold);
+
+ $worksheet->write(2, ++$i, "Gesamtstunden erteilt", $format_bold);
+ $gesamt->write($gesamtsheet_row, $i, "Gesamtstunden erteilt", $format_bold);
+ $worksheet->write(2, ++$i, "Gesamtkosten erteilt", $format_bold);
+ $gesamt->write($gesamtsheet_row, $i, "Gesamtkosten erteilt", $format_bold);
+
$worksheet->write(2, ++$i, "Gesamtstunden angenommen", $format_bold);
$gesamt->write($gesamtsheet_row, $i, "Gesamtstunden angenommen", $format_bold);
$worksheet->write(2, ++$i, "Gesamtkosten angenommen", $format_bold);
@@ -209,7 +225,7 @@ if ($result_stg = $db->db_query($qry_stg))
SELECT tbl_organisationseinheit.organisationseinheittyp_kurzbz || ' ' || tbl_organisationseinheit.bezeichnung
FROM PUBLIC.tbl_benutzerfunktion
JOIN PUBLIC.tbl_organisationseinheit USING (oe_kurzbz)
- WHERE funktion_kurzbz = 'oezuordnung'
+ WHERE funktion_kurzbz = (CASE WHEN fixangestellt = true THEN 'kstzuordnung' ELSE 'oezuordnung' END)
AND (
datum_von IS NULL
OR datum_von <= now()
@@ -229,7 +245,7 @@ if ($result_stg = $db->db_query($qry_stg))
WHERE oe_kurzbz IN (
SELECT oe_kurzbz
FROM PUBLIC.tbl_benutzerfunktion
- WHERE funktion_kurzbz = 'oezuordnung'
+ WHERE funktion_kurzbz = (CASE WHEN fixangestellt = true THEN 'kstzuordnung' ELSE 'oezuordnung' END)
AND (
datum_von IS NULL
OR datum_von <= now()
@@ -262,26 +278,20 @@ if ($result_stg = $db->db_query($qry_stg))
THEN 't'
ELSE 'f'
END AS geaendert,
- (SELECT
- vertragsstatus_kurzbz
- FROM
- lehre.tbl_vertrag_vertragsstatus
- WHERE
- vertrag_id = tbl_lehreinheitmitarbeiter.vertrag_id
- ORDER BY datum DESC
- LIMIT 1) as vertragsstatus
- FROM lehre.tbl_lehreinheit,
- lehre.tbl_lehreinheitmitarbeiter,
- PUBLIC.tbl_mitarbeiter,
- PUBLIC.tbl_benutzer,
- PUBLIC.tbl_person,
- lehre.tbl_lehrveranstaltung
- WHERE tbl_person.person_id = tbl_benutzer.person_id
- AND tbl_benutzer.uid = tbl_mitarbeiter.mitarbeiter_uid
- AND tbl_lehreinheitmitarbeiter.mitarbeiter_uid = tbl_mitarbeiter.mitarbeiter_uid
- AND tbl_lehreinheit.lehreinheit_id = tbl_lehreinheitmitarbeiter.lehreinheit_id
- AND tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id
- AND studiengang_kz = ".$db->db_add_param($studiengang_kz)."
+ (SELECT
+ ARRAY_TO_STRING(ARRAY_AGG(vertragsstatus_kurzbz), ',')
+ FROM
+ lehre.tbl_vertrag_vertragsstatus
+ WHERE
+ vertrag_id = tbl_lehreinheitmitarbeiter.vertrag_id
+ ) as vertragsstatus
+ FROM lehre.tbl_lehreinheit
+ JOIN lehre.tbl_lehreinheitmitarbeiter ON tbl_lehreinheit.lehreinheit_id = tbl_lehreinheitmitarbeiter.lehreinheit_id
+ JOIN PUBLIC.tbl_mitarbeiter ON tbl_lehreinheitmitarbeiter.mitarbeiter_uid = tbl_mitarbeiter.mitarbeiter_uid
+ JOIN PUBLIC.tbl_benutzer ON tbl_benutzer.uid = tbl_mitarbeiter.mitarbeiter_uid
+ JOIN PUBLIC.tbl_person ON tbl_person.person_id = tbl_benutzer.person_id
+ JOIN lehre.tbl_lehrveranstaltung ON tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id
+ WHERE studiengang_kz = ".$db->db_add_param($studiengang_kz)."
AND studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)."
AND tbl_lehreinheitmitarbeiter.semesterstunden <> 0
AND tbl_lehreinheitmitarbeiter.semesterstunden IS NOT NULL
@@ -302,6 +312,7 @@ if ($result_stg = $db->db_query($qry_stg))
$gesamtsheet_row++;
while ($row = $db->db_fetch_object($result))
{
+ $row->vertragsstatus = explode(',', $row->vertragsstatus);
//Gesamtstunden und Kosten ermitteln
if (array_key_exists($row->mitarbeiter_uid, $liste))
{
@@ -314,13 +325,43 @@ if ($result_stg = $db->db_query($qry_stg))
$liste[$row->mitarbeiter_uid]['gesamtkosten'] =
$liste[$row->mitarbeiter_uid]['gesamtkosten'] + ($row->semesterstunden * $row->stundensatz);
+ if (!isset($liste[$row->mitarbeiter_uid]['gesamtstunden_bestellt']))
+ {
+ $liste[$row->mitarbeiter_uid]['gesamtstunden_bestellt'] = 0;
+ $liste[$row->mitarbeiter_uid]['gesamtkosten_bestellt'] = 0;
+ }
+
+ if (!isset($liste[$row->mitarbeiter_uid]['gesamtstunden_erteilt']))
+ {
+ $liste[$row->mitarbeiter_uid]['gesamtstunden_erteilt'] = 0;
+ $liste[$row->mitarbeiter_uid]['gesamtkosten_erteilt'] = 0;
+ }
+
if (!isset($liste[$row->mitarbeiter_uid]['gesamtstunden_akzeptiert']))
{
$liste[$row->mitarbeiter_uid]['gesamtstunden_akzeptiert'] = 0;
$liste[$row->mitarbeiter_uid]['gesamtkosten_akzeptiert'] = 0;
}
- if ($row->vertragsstatus == 'akzeptiert')
+ if (in_array('bestellt', $row->vertragsstatus))
+ {
+ $liste[$row->mitarbeiter_uid]['gesamtstunden_bestellt'] =
+ $liste[$row->mitarbeiter_uid]['gesamtstunden_bestellt'] + $row->semesterstunden;
+ $liste[$row->mitarbeiter_uid]['gesamtkosten_bestellt'] =
+ $liste[$row->mitarbeiter_uid]['gesamtkosten_bestellt']
+ + ($row->semesterstunden * $row->stundensatz);
+ }
+
+ if (in_array('erteilt', $row->vertragsstatus))
+ {
+ $liste[$row->mitarbeiter_uid]['gesamtstunden_erteilt'] =
+ $liste[$row->mitarbeiter_uid]['gesamtstunden_erteilt'] + $row->semesterstunden;
+ $liste[$row->mitarbeiter_uid]['gesamtkosten_erteilt'] =
+ $liste[$row->mitarbeiter_uid]['gesamtkosten_erteilt']
+ + ($row->semesterstunden * $row->stundensatz);
+ }
+
+ if (in_array('akzeptiert', $row->vertragsstatus))
{
$liste[$row->mitarbeiter_uid]['gesamtstunden_akzeptiert'] =
$liste[$row->mitarbeiter_uid]['gesamtstunden_akzeptiert'] + $row->semesterstunden;
@@ -336,13 +377,43 @@ if ($result_stg = $db->db_query($qry_stg))
$liste[$row->mitarbeiter_uid]['gesamtstunden'] = $row->semesterstunden;
$liste[$row->mitarbeiter_uid]['gesamtkosten'] = $row->semesterstunden * $row->stundensatz;
+ if (!isset($liste[$row->mitarbeiter_uid]['gesamtstunden_bestellt']))
+ {
+ $liste[$row->mitarbeiter_uid]['gesamtstunden_bestellt'] = 0;
+ $liste[$row->mitarbeiter_uid]['gesamtkosten_bestellt'] = 0;
+ }
+
+ if (!isset($liste[$row->mitarbeiter_uid]['gesamtstunden_erteilt']))
+ {
+ $liste[$row->mitarbeiter_uid]['gesamtstunden_erteilt'] = 0;
+ $liste[$row->mitarbeiter_uid]['gesamtkosten_erteilt'] = 0;
+ }
+
if (!isset($liste[$row->mitarbeiter_uid]['gesamtstunden_akzeptiert']))
{
$liste[$row->mitarbeiter_uid]['gesamtstunden_akzeptiert'] = 0;
$liste[$row->mitarbeiter_uid]['gesamtkosten_akzeptiert'] = 0;
}
- if ($row->vertragsstatus == 'akzeptiert')
+ if (in_array('bestellt', $row->vertragsstatus))
+ {
+ $liste[$row->mitarbeiter_uid]['gesamtstunden_bestellt'] =
+ $liste[$row->mitarbeiter_uid]['gesamtstunden_bestellt'] + $row->semesterstunden;
+ $liste[$row->mitarbeiter_uid]['gesamtkosten_bestellt'] =
+ $liste[$row->mitarbeiter_uid]['gesamtkosten_bestellt']
+ + ($row->semesterstunden * $row->stundensatz);
+ }
+
+ if (in_array('erteilt', $row->vertragsstatus))
+ {
+ $liste[$row->mitarbeiter_uid]['gesamtstunden_erteilt'] =
+ $liste[$row->mitarbeiter_uid]['gesamtstunden_erteilt'] + $row->semesterstunden;
+ $liste[$row->mitarbeiter_uid]['gesamtkosten_erteilt'] =
+ $liste[$row->mitarbeiter_uid]['gesamtkosten_erteilt']
+ + ($row->semesterstunden * $row->stundensatz);
+ }
+
+ if (in_array('akzeptiert', $row->vertragsstatus))
{
$liste[$row->mitarbeiter_uid]['gesamtstunden_akzeptiert'] =
$liste[$row->mitarbeiter_uid]['gesamtstunden_akzeptiert'] + $row->semesterstunden;
@@ -356,8 +427,20 @@ if ($result_stg = $db->db_query($qry_stg))
$liste[$row->mitarbeiter_uid]['vorname'] = $row->vorname;
$liste[$row->mitarbeiter_uid]['nachname'] = $row->nachname;
$liste[$row->mitarbeiter_uid]['fixangestellt'] = $row->fixangestellt;
- $liste[$row->mitarbeiter_uid]['oezuordnung'] = $row->oezuordnung;
- $liste[$row->mitarbeiter_uid]['department'] = $row->department;
+
+ if (is_null($row->oezuordnung))
+ {
+ $oeInfos = getOe($row->mitarbeiter_uid, $row->fixangestellt);
+ $liste[$row->mitarbeiter_uid]['oezuordnung'] = $oeInfos['oezuordnung'];
+ $liste[$row->mitarbeiter_uid]['department'] = $oeInfos['department'];
+ $liste[$row->mitarbeiter_uid]['organisationgeaendert'] = $oeInfos['organisationgeaendert'];
+ }
+ else
+ {
+ $liste[$row->mitarbeiter_uid]['oezuordnung'] = $row->oezuordnung;
+ $liste[$row->mitarbeiter_uid]['department'] = $row->department;
+ }
+
$liste[$row->mitarbeiter_uid]['betreuergesamtstunden'] = 0;
$liste[$row->mitarbeiter_uid]['betreuergesamtkosten'] = 0;
if ($row->geaendert == 't')
@@ -375,7 +458,7 @@ if ($result_stg = $db->db_query($qry_stg))
public.tbl_benutzerfunktion
JOIN public.tbl_organisationseinheit USING (oe_kurzbz)
WHERE
- funktion_kurzbz='oezuordnung'
+ funktion_kurzbz = (CASE WHEN fixangestellt = true THEN 'kstzuordnung' ELSE 'oezuordnung' END)
AND (datum_von IS NULL OR datum_von <= now())
AND (datum_bis IS NULL OR datum_bis >= now())
AND tbl_benutzerfunktion.uid = tbl_benutzer.uid
@@ -390,7 +473,7 @@ if ($result_stg = $db->db_query($qry_stg))
WHERE oe_kurzbz IN (
SELECT oe_kurzbz
FROM PUBLIC.tbl_benutzerfunktion
- WHERE funktion_kurzbz = 'oezuordnung'
+ WHERE funktion_kurzbz = (CASE WHEN fixangestellt = true THEN 'kstzuordnung' ELSE 'oezuordnung' END)
AND (
datum_von IS NULL
OR datum_von <= now()
@@ -419,27 +502,23 @@ if ($result_stg = $db->db_query($qry_stg))
WHERE meine_oes.organisationseinheittyp_kurzbz = 'Department'
) AS department
FROM
- lehre.tbl_projektbetreuer, public.tbl_person, public.tbl_benutzer,
- public.tbl_mitarbeiter, lehre.tbl_projektarbeit, lehre.tbl_lehreinheit,
- lehre.tbl_lehrveranstaltung
+ lehre.tbl_projektbetreuer JOIN public.tbl_person ON tbl_projektbetreuer.person_id=tbl_person.person_id
+ JOIN public.tbl_benutzer ON tbl_benutzer.person_id=tbl_person.person_id
+ JOIN public.tbl_mitarbeiter ON tbl_mitarbeiter.mitarbeiter_uid=tbl_benutzer.uid
+ JOIN lehre.tbl_projektarbeit ON tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id
+ JOIN lehre.tbl_lehreinheit ON tbl_lehreinheit.lehreinheit_id=tbl_projektarbeit.lehreinheit_id
+ JOIN lehre.tbl_lehrveranstaltung ON tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id
WHERE
- tbl_projektbetreuer.person_id=tbl_person.person_id AND
- tbl_person.person_id=tbl_benutzer.person_id AND
- tbl_mitarbeiter.mitarbeiter_uid=tbl_benutzer.uid AND
- tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND
- tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND
- tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND
NOT EXISTS (SELECT
mitarbeiter_uid
FROM
- lehre.tbl_lehreinheitmitarbeiter, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung
+ lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit ON tbl_lehreinheitmitarbeiter.lehreinheit_id=tbl_lehreinheit.lehreinheit_id
+ JOIN lehre.tbl_lehrveranstaltung ON tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id
WHERE
mitarbeiter_uid=tbl_benutzer.uid AND
- tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND
tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND
- tbl_lehreinheitmitarbeiter.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND
tbl_lehreinheitmitarbeiter.semesterstunden<>0 AND
tbl_lehreinheitmitarbeiter.semesterstunden is not null AND
EXISTS (
@@ -461,8 +540,20 @@ if ($result_stg = $db->db_query($qry_stg))
$liste[$row->uid]['vorname'] = $row->vorname;
$liste[$row->uid]['nachname'] = $row->nachname;
$liste[$row->uid]['fixangestellt'] = $row->fixangestellt;
- $liste[$row->uid]['oezuordnung'] = $row->oezuordnung;
- $liste[$row->uid]['department'] = $row->department;
+
+ if (is_null($row->oezuordnung))
+ {
+ $oeInfos = getOe($row->uid, $row->fixangestellt);
+ $liste[$row->uid]['oezuordnung'] = $oeInfos['oezuordnung'];
+ $liste[$row->uid]['department'] = $oeInfos['department'];
+ $liste[$row->uid]['organisationgeaendert'] = $oeInfos['organisationgeaendert'];
+ }
+ else
+ {
+ $liste[$row->uid]['oezuordnung'] = $row->oezuordnung;
+ $liste[$row->uid]['department'] = $row->department;
+ }
+
$liste[$row->uid]['geaendert'] = false;
$liste[$row->uid]['gesamtstunden'] = 0;
$liste[$row->uid]['gesamtkosten'] = 0;
@@ -488,32 +579,29 @@ if ($result_stg = $db->db_query($qry_stg))
ELSE
'f'
END as geaendert,
- (
- SELECT
- vertragsstatus_kurzbz
+ (SELECT
+ ARRAY_TO_STRING(ARRAY_AGG(vertragsstatus_kurzbz), ',')
FROM
lehre.tbl_vertrag_vertragsstatus
WHERE
vertrag_id = tbl_projektbetreuer.vertrag_id
- ORDER BY datum DESC
- LIMIT 1
) as vertragsstatus
- FROM lehre.tbl_projektbetreuer, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung,
- public.tbl_benutzer, lehre.tbl_projektarbeit, campus.vw_student
+ FROM
+ lehre.tbl_projektbetreuer JOIN public.tbl_benutzer ON tbl_projektbetreuer.person_id = tbl_benutzer.person_id
+ JOIN lehre.tbl_projektarbeit ON tbl_projektarbeit.projektarbeit_id = tbl_projektbetreuer.projektarbeit_id
+ JOIN lehre.tbl_lehreinheit ON tbl_lehreinheit.lehreinheit_id = tbl_projektarbeit.lehreinheit_id
+ JOIN lehre.tbl_lehrveranstaltung ON tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id
+ JOIN campus.vw_student ON vw_student.uid = student_uid
WHERE
- tbl_projektbetreuer.person_id = tbl_benutzer.person_id
- AND tbl_benutzer.uid = ".$db->db_add_param($uid)."
- AND tbl_projektarbeit.projektarbeit_id = tbl_projektbetreuer.projektarbeit_id
- AND student_uid = vw_student.uid
- AND tbl_lehreinheit.lehreinheit_id = tbl_projektarbeit.lehreinheit_id
+ tbl_benutzer.uid = ".$db->db_add_param($uid)."
AND tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
- AND tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id
AND tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER);
if ($result = $db->db_query($qry))
{
while ($row = $db->db_fetch_object($result))
{
+ $row->vertragsstatus = explode(',', $row->vertragsstatus);
$liste[$uid]['gesamtstunden'] = $liste[$uid]['gesamtstunden'] + $row->stunden;
$liste[$uid]['gesamtkosten'] =
$liste[$uid]['gesamtkosten'] + ($row->stunden * $row->stundensatz);
@@ -524,13 +612,42 @@ if ($result_stg = $db->db_query($qry_stg))
{
$liste[$uid]['geaendert'] = true;
}
+
+ if (!isset($liste[$uid]['gesamtstunden_bestellt']))
+ {
+ $liste[$uid]['gesamtstunden_bestellt'] = 0;
+ $liste[$uid]['gesamtkosten_bestellt'] = 0;
+ }
+
+ if (!isset($liste[$uid]['gesamtstunden_erteilt']))
+ {
+ $liste[$uid]['gesamtstunden_erteilt'] = 0;
+ $liste[$uid]['gesamtkosten_erteilt'] = 0;
+ }
+
if (!isset($liste[$uid]['gesamtstunden_akzeptiert']))
{
$liste[$uid]['gesamtstunden_akzeptiert'] = 0;
$liste[$uid]['gesamtkosten_akzeptiert'] = 0;
}
- if ($row->vertragsstatus == 'akzeptiert')
+ if (in_array('bestellt', $row->vertragsstatus))
+ {
+ $liste[$uid]['gesamtstunden_bestellt'] =
+ $liste[$uid]['gesamtstunden_bestellt'] + $row->stunden;
+ $liste[$uid]['gesamtkosten_bestellt'] =
+ $liste[$uid]['gesamtkosten_bestellt'] + ($row->stunden * $row->stundensatz);
+ }
+
+ if (in_array('erteilt', $row->vertragsstatus))
+ {
+ $liste[$uid]['gesamtstunden_erteilt'] =
+ $liste[$uid]['gesamtstunden_erteilt'] + $row->stunden;
+ $liste[$uid]['gesamtkosten_erteilt'] =
+ $liste[$uid]['gesamtkosten_erteilt'] + ($row->stunden * $row->stundensatz);
+ }
+
+ if (in_array('akzeptiert', $row->vertragsstatus))
{
$liste[$uid]['gesamtstunden_akzeptiert'] =
$liste[$uid]['gesamtstunden_akzeptiert'] + $row->stunden;
@@ -558,13 +675,20 @@ if ($result_stg = $db->db_query($qry_stg))
if (isset($row['geaendert']) && $row['geaendert'] == true)
{
$format = $format_colored;
+ $formatOE = $format_colored;
$formatnb = $format_number_colored;
}
else
{
$format = $format_normal;
+ $formatOE = $format_normal;
$formatnb = $format_number;
}
+
+ if(isset($row['organisationgeaendert']) && $row['organisationgeaendert'] === true)
+ {
+ $formatOE = $oe_colored;
+ }
//Studiengang
$worksheet->write($zeile, $i, $studiengang->kuerzel, $format);
$gesamt->write($gesamtsheet_row, $i, $studiengang->kuerzel, $format);
@@ -584,11 +708,11 @@ if ($result_stg = $db->db_query($qry_stg))
$worksheet->write($zeile, ++$i, $row['fixangestellt'], $format);
$gesamt->write($gesamtsheet_row, $i, $row['fixangestellt'], $format);
//OE-Zuordnung
- $worksheet->write($zeile, ++$i, $row['oezuordnung'], $format);
- $gesamt->write($gesamtsheet_row, $i, $row['oezuordnung'], $format);
+ $worksheet->write($zeile, ++$i, $row['oezuordnung'], $formatOE);
+ $gesamt->write($gesamtsheet_row, $i, $row['oezuordnung'], $formatOE);
//Department der OE-Zuordnung
- $worksheet->write($zeile, ++$i, $row['department'], $format);
- $gesamt->write($gesamtsheet_row, $i, $row['department'], $format);
+ $worksheet->write($zeile, ++$i, $row['department'], $formatOE);
+ $gesamt->write($gesamtsheet_row, $i, $row['department'], $formatOE);
//LVStunden
$lvstunden = str_replace(', ', '.', $row['lvstunden']);
$worksheet->write($zeile, ++$i, $lvstunden, $format);
@@ -613,6 +737,25 @@ if ($result_stg = $db->db_query($qry_stg))
$gesamtkosten_row = str_replace(', ', '.', $row['gesamtkosten']);
$worksheet->writeNumber($zeile, ++$i, $gesamtkosten_row, $formatnb);
$gesamt->writeNumber($gesamtsheet_row, $i, $gesamtkosten_row, $formatnb);
+
+ //Gesamtstunden bestellt
+ $gesamtstunden_bestellt = str_replace(', ', '.', $row['gesamtstunden_bestellt']);
+ $worksheet->write($zeile, ++$i, $gesamtstunden_bestellt, $formatnb);
+ $gesamt->write($gesamtsheet_row, $i, $gesamtstunden_bestellt, $formatnb);
+ //Gesamtkosten bestellt
+ $gesamtkosten_bestellt_row = str_replace(', ', '.', $row['gesamtkosten_bestellt']);
+ $worksheet->writeNumber($zeile, ++$i, $gesamtkosten_bestellt_row, $formatnb);
+ $gesamt->writeNumber($gesamtsheet_row, $i, $gesamtkosten_bestellt_row, $formatnb);
+
+ //Gesamtstunden erteilt
+ $gesamtstunden_erteilt = str_replace(', ', '.', $row['gesamtstunden_erteilt']);
+ $worksheet->write($zeile, ++$i, $gesamtstunden_erteilt, $formatnb);
+ $gesamt->write($gesamtsheet_row, $i, $gesamtstunden_erteilt, $formatnb);
+ //Gesamtkosten erteilt
+ $gesamtkosten_erteilt_row = str_replace(', ', '.', $row['gesamtkosten_erteilt']);
+ $worksheet->writeNumber($zeile, ++$i, $gesamtkosten_erteilt_row, $formatnb);
+ $gesamt->writeNumber($gesamtsheet_row, $i, $gesamtkosten_erteilt_row, $formatnb);
+
//Gesamtstunden akzeptiert
$gesamtstunden_akzeptiert = str_replace(', ', '.', $row['gesamtstunden_akzeptiert']);
$worksheet->write($zeile, ++$i, $gesamtstunden_akzeptiert, $formatnb);
@@ -641,11 +784,31 @@ if ($result_stg = $db->db_query($qry_stg))
else
$liste_gesamt[$uid]['gesamtkosten'] = $row['gesamtkosten'];
+ if (isset($liste_gesamt[$uid]['gesamtstunden_bestellt']))
+ $liste_gesamt[$uid]['gesamtstunden_bestellt'] += $row['gesamtstunden_bestellt'];
+ else
+ $liste_gesamt[$uid]['gesamtstunden_bestellt'] = $row['gesamtstunden_bestellt'];
+
+ if (isset($liste_gesamt[$uid]['gesamtkosten_bestellt']))
+ $liste_gesamt[$uid]['gesamtkosten_bestellt'] += $row['gesamtkosten_bestellt'];
+ else
+ $liste_gesamt[$uid]['gesamtkosten_bestellt'] = $row['gesamtkosten_bestellt'];
+
+ if (isset($liste_gesamt[$uid]['gesamtstunden_erteilt']))
+ $liste_gesamt[$uid]['gesamtstunden_erteilt'] += $row['gesamtstunden_erteilt'];
+ else
+ $liste_gesamt[$uid]['gesamtstunden_erteilt'] = $row['gesamtstunden_erteilt'];
+
+ if (isset($liste_gesamt[$uid]['gesamtkosten_erteilt']))
+ $liste_gesamt[$uid]['gesamtkosten_erteilt'] += $row['gesamtkosten_erteilt'];
+ else
+ $liste_gesamt[$uid]['gesamtkosten_erteilt'] = $row['gesamtkosten_erteilt'];
+
if (isset($liste_gesamt[$uid]['gesamtstunden_akzeptiert']))
$liste_gesamt[$uid]['gesamtstunden_akzeptiert'] += $row['gesamtstunden_akzeptiert'];
else
$liste_gesamt[$uid]['gesamtstunden_akzeptiert'] = $row['gesamtstunden_akzeptiert'];
-
+
if (isset($liste_gesamt[$uid]['gesamtkosten_akzeptiert']))
$liste_gesamt[$uid]['gesamtkosten_akzeptiert'] += $row['gesamtkosten_akzeptiert'];
else
@@ -745,3 +908,36 @@ if ($result_stg = $db->db_query($qry_stg))
else
echo "Fehler beim Versenden der Lehrauftragsliste";
}
+
+function getOe($mitarbeiter_uid, $fixangestellt)
+{
+ $benutzerfunktion = new Benutzerfunktion();
+ $oe = new Organisationseinheit();
+
+ $benutzerfunktion->getBenutzerFunktionByUid($mitarbeiter_uid, $fixangestellt === 'Ja' ? 'kstzuordnung' : 'oezuordnung', date('Y-m-d'));
+
+ if (isset($benutzerfunktion->result[0]))
+ {
+ array_multisort(array_column($benutzerfunktion->result, 'datum_von'), SORT_ASC, $benutzerfunktion->result);
+ }
+ else
+ {
+ $benutzerfunktion->getBenutzerFunktionByUid($mitarbeiter_uid, $fixangestellt === 'Ja' ? 'kstzuordnung' : 'oezuordnung', null, date('Y-m-d'));
+ array_multisort(array_column($benutzerfunktion->result, 'datum_bis'), SORT_DESC, $benutzerfunktion->result);
+ }
+
+ if (!isset($benutzerfunktion->result[0]))
+ return array('oezuordnung' => '', 'department' => '', 'organisationgeaendert' => false);
+
+ $oe->load($benutzerfunktion->result[0]->oe_kurzbz);
+ $oezuordnung = $oe->organisationseinheittyp_kurzbz . ' ' . $oe->bezeichnung;
+
+ $oe_parents = $oe->getParents_withOEType($oe->oe_kurzbz);
+
+ if (is_array($oe_parents))
+ $department = ($oe_parents[array_search('Department', array_column($oe_parents, 'oe_typ_bezeichnung'))]->oe_bezeichnung);
+ else
+ $department = '';
+
+ return array('oezuordnung' => $oezuordnung, 'department' => $department, 'organisationgeaendert' => true);
+}
\ No newline at end of file
diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php
index ed0ee56e1..e1bcffd84 100644
--- a/content/student/studentDBDML.php
+++ b/content/student/studentDBDML.php
@@ -74,7 +74,10 @@ require_once('../../include/reihungstest.class.php');
require_once('../../include/studienplan.class.php');
require_once('../../include/mobilitaet.class.php');
require_once('../../include/studienordnung.class.php');
+require_once('../../include/mitarbeiter.class.php');
+require_once('../../include/bisverwendung.class.php');
require_once('../../include/bismeldestichtag.class.php');
+require_once('../../include/stundensatz.class.php');
$user = get_uid();
$db = new basis_db();
@@ -4654,6 +4657,7 @@ if(!$error)
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
+
elseif(isset($_POST['type']) && $_POST['type']=='getstundensatz')
{
if(isset($_POST['person_id']) && isset($_POST['studiensemester_kurzbz']))
@@ -4661,33 +4665,87 @@ if(!$error)
$studiensemester = new studiensemester();
if ($studiensemester->load($_POST['studiensemester_kurzbz']))
{
- $qry = "SELECT ss.stundensatz
- FROM hr.tbl_stundensatz ss
- JOIN public.tbl_mitarbeiter ON ss.uid = tbl_mitarbeiter.mitarbeiter_uid
- JOIN public.tbl_benutzer ON(tbl_benutzer.uid=tbl_mitarbeiter.mitarbeiter_uid)
- WHERE person_id=".$db->db_add_param($_POST['person_id'], FHC_INTEGER) ."
- AND stundensatztyp = ". $db->db_add_param('lehre') ."
- AND gueltig_von <= ". $db->db_add_param($studiensemester->ende) ."
- AND (gueltig_bis >= ". $db->db_add_param($studiensemester->start) ." OR gueltig_bis IS NULL)
- ORDER BY gueltig_bis DESC NULLS FIRST, gueltig_von DESC NULLS LAST LIMIT 1
- ";
- if($result = $db->db_query($qry))
+ if (defined('FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ')
+ && !FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ)
{
- if($row = $db->db_fetch_object($result))
+ // Mitarbeiter laden
+ $qry = "
+ SELECT
+ mitarbeiter_uid, fixangestellt
+ FROM
+ public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON(tbl_benutzer.uid=tbl_mitarbeiter.mitarbeiter_uid)
+ WHERE
+ person_id=".$db->db_add_param($_POST['person_id'], FHC_INTEGER) ."
+ ORDER BY tbl_mitarbeiter.insertamum DESC NULLS LAST LIMIT 1
+ ";
+ if($result = $db->db_query($qry))
{
- $data = $row->stundensatz;
- $return = true;
- }
- else
- {
- $data = '80.00';
- $return = true;
+ if($row = $db->db_fetch_object($result))
+ {
+ $uid = $row->mitarbeiter_uid;
+
+ if($db->db_parse_bool($row->fixangestellt)==true)
+ {
+ // Fixangestellte haben keinen Stundensatz
+ $data = '';
+ $return = true;
+ }
+ else
+ {
+ // Stundensatz des Mitarbeiters laden
+ $stundensatz = new stundensatz();
+ if($stundensatz->getStundensatzDatum($uid, $studiensemester->start, $studiensemester->ende, 'lehre'))
+ {
+ $data = $stundensatz->stundensatz;
+ $return = true;
+ }
+ else
+ {
+ // Keine Stundensatz hinterlegt
+ $data = '0.00';
+ $return = true;
+ }
+ }
+ }
+ else
+ {
+ // Kein Mitarbeiter gefunden, kein Stundensatz
+ $data = '0.00';
+ $return = true;
+ }
}
}
else
{
- $return = false;
- $errormsg = 'Unbekannter Fehler';
+ $qry = "SELECT ss.stundensatz
+ FROM hr.tbl_stundensatz ss
+ JOIN public.tbl_mitarbeiter ON ss.uid = tbl_mitarbeiter.mitarbeiter_uid
+ JOIN public.tbl_benutzer ON(tbl_benutzer.uid=tbl_mitarbeiter.mitarbeiter_uid)
+ WHERE person_id=".$db->db_add_param($_POST['person_id'], FHC_INTEGER) ."
+ AND stundensatztyp = ". $db->db_add_param('lehre') ."
+ AND gueltig_von <= ". $db->db_add_param($studiensemester->ende) ."
+ AND (gueltig_bis >= ". $db->db_add_param($studiensemester->start) ." OR gueltig_bis IS NULL)
+ ORDER BY gueltig_bis DESC NULLS FIRST, gueltig_von DESC NULLS LAST LIMIT 1
+ ";
+ if($result = $db->db_query($qry))
+ {
+ if($row = $db->db_fetch_object($result))
+ {
+ $data = $row->stundensatz;
+ $return = true;
+ }
+ else
+ {
+ $data = '80.00';
+ $return = true;
+ }
+ }
+ else
+ {
+ $return = false;
+ $errormsg = 'Unbekannter Fehler';
+ }
}
}
else
@@ -4695,8 +4753,15 @@ if(!$error)
$return = false;
$errormsg = 'Fehler beim Laden des Studiensemesters';
}
+
}
- }
+ else
+ {
+ $data = '20.00'.$_POST['studiensemester_kurzbz'];
+ $return = true;
+ }
+ }
+
elseif(isset($_POST['type']) && $_POST['type']=='saveanrechnung')
{
$anrechnung = new anrechnung();
diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php
index 11a4d862f..8be20d32d 100644
--- a/content/student/studentoverlay.js.php
+++ b/content/student/studentoverlay.js.php
@@ -1658,7 +1658,7 @@ function StudentAuswahl()
var antragnotentree = document.getElementById('student-antragnoten-tree');
- url='index.ci.php/components/Antrag/Wiederholung/getLvsAsRdf/'+prestudent_id+"?"+gettimestamp();
+ url='index.ci.php/api/frontend/fas/studstatus/Wiederholung/getLvs/'+prestudent_id+"?"+gettimestamp();
try
{
@@ -4764,7 +4764,7 @@ function StudentNotenMoveFromAntrag()
var paramList= '';
var i = 0;
- var url = 'index.ci.php/components/Antrag/Wiederholung/moveLvsToZeugnis';
+ var url = 'index.ci.php/api/frontend/fas/studstatus/Wiederholung/moveLvsToZeugnis';
var req = new phpRequest(url,'','');
for (var t = 0; t < numRanges; t++)
diff --git a/content/student/studentprojektarbeit.js.php b/content/student/studentprojektarbeit.js.php
index a18b94b6d..6c3919327 100644
--- a/content/student/studentprojektarbeit.js.php
+++ b/content/student/studentprojektarbeit.js.php
@@ -393,6 +393,7 @@ function StudentProjektarbeitAuswahl()
anmerkung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" ));
gesamtstunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gesamtstunden" ));
final = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#final" ));
+ var lehreinheit_stsem = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehreinheit_stsem" ));
var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
@@ -440,6 +441,7 @@ function StudentProjektarbeitAuswahl()
//Werte setzen
document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value=projektarbeit_id;
+ document.getElementById('student-projektarbeit-textbox-lehreinheit_stsem').value=lehreinheit_stsem;
document.getElementById('student-projektarbeit-menulist-projekttyp').value=projekttyp_kurzbz;
document.getElementById('student-projektarbeit-menulist-lehrveranstaltung').value=lehrveranstaltung_id;
document.getElementById('student-projektarbeit-menulist-lehreinheit').value=lehreinheit_id;
@@ -649,6 +651,8 @@ function StudentProjektarbeitNeu()
document.getElementById('student-projektarbeit-checkbox-neu').checked=true;
document.getElementById('student-projektarbeit-textbox-projektarbeit_id').value='';
+ document.getElementById('student-projektarbeit-textbox-lehreinheit_stsem').value='';
+
StudentProjektarbeitResetFields();
StudentProjektarbeitDetailDisableFields(false);
StudentProjektbetreuerDisableFields(true);
@@ -872,6 +876,7 @@ function StudentProjektbetreuerAuswahl()
name = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#name" ));
punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" ));
stunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stunden" ));
+
stundensatz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#stundensatz" ));
betreuerart_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#betreuerart_kurzbz" ));
person_nachname = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#person_nachname" ));
@@ -892,6 +897,16 @@ function StudentProjektbetreuerAuswahl()
document.getElementById('student-projektbetreuer-textbox-person_id').value=person_id;
document.getElementById('student-projektbetreuer-checkbox-neu').checked=false;
+ var lehreinheitstsem = document.getElementById('student-projektarbeit-textbox-lehreinheit_stsem').value;
+ var default_stundensatz = StudentProjektbetreuerLoadStundensatz(person_id, lehreinheitstsem);
+
+ if (default_stundensatz != '')
+ default_stundensatz = 'Stundensatz (Default '+default_stundensatz+'):';
+ else
+ default_stundensatz = 'Stundensatz';
+
+ document.getElementById('student-projektbetreuer-label-stundensatz').value= default_stundensatz;
+
var gesamtkosten = StudentProjektbetreuerGesamtkosten();
@@ -1171,7 +1186,9 @@ function StudentProjektbetreuerDetailReset()
document.getElementById('student-projektbetreuer-textbox-stunden').value='0.0';
document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Begutachter';
}
+
document.getElementById('student-projektbetreuer-textbox-stundensatz').value='80.0';
+ document.getElementById('student-projektbetreuer-label-stundensatz').value= 'Stundensatz (Default 80.0):';
document.getElementById('student-projektbetreuer-menulist-person').value='';
}
@@ -1358,16 +1375,16 @@ function StudentProjektbetreuerLoeschen()
}
}
-function StudentProjektbetreuerLoadMitarbeiterDaten()
+function StudentProjektbetreuerLoadStundensatz(person_id, studiensemester)
{
- person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person');
+ var stundensatz='';
var url = 'content/student/studentDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'getstundensatz');
req.add('person_id', person_id);
- req.add('studiensemester_kurzbz', getStudiensemester())
+ req.add('studiensemester_kurzbz', studiensemester)
var response = req.executePOST();
@@ -1385,7 +1402,23 @@ function StudentProjektbetreuerLoadMitarbeiterDaten()
stundensatz = val.dbdml_data
}
- document.getElementById('student-projektbetreuer-textbox-stundensatz').value=stundensatz;
+ return stundensatz;
+}
+
+function StudentProjektbetreuerLoadMitarbeiterDaten()
+{
+ var person_id = MenulistGetSelectedValue('student-projektbetreuer-menulist-person');
+ var lehreinheitstsem = document.getElementById('student-projektarbeit-textbox-lehreinheit_stsem').value;
+
+ var stundensatz = StudentProjektbetreuerLoadStundensatz(person_id, lehreinheitstsem);
+
+ if (stundensatz != '')
+ default_stundensatz = 'Stundensatz (Default '+stundensatz+'):';
+ else
+ default_stundensatz = 'Stundensatz';
+
+ document.getElementById('student-projektbetreuer-label-stundensatz').value = default_stundensatz;
+ document.getElementById('student-projektbetreuer-textbox-stundensatz').value = stundensatz;
}
// ****
diff --git a/content/student/studentprojektarbeitoverlay.xul.php b/content/student/studentprojektarbeitoverlay.xul.php
index fde05d4ad..71cae9cf6 100644
--- a/content/student/studentprojektarbeitoverlay.xul.php
+++ b/content/student/studentprojektarbeitoverlay.xul.php
@@ -171,7 +171,11 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
-
+
+
+
+
+
@@ -523,7 +527,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
-
+
diff --git a/locale/de-AT/services.php b/locale/de-AT/services.php
index 1b03bc956..159efd2e9 100644
--- a/locale/de-AT/services.php
+++ b/locale/de-AT/services.php
@@ -5,6 +5,7 @@ $this->phrasen['services/details']='Details';
$this->phrasen['services/filtern']='Filtern';
$this->phrasen['services/leistung']='Leistung';
$this->phrasen['services/design']='Verantwortlich';
+$this->phrasen['services/kritikalitaet']='Kritikalität';
$this->phrasen['services/betrieb']='Betrieb';
$this->phrasen['services/operativ']='Operativ';
?>
diff --git a/locale/en-US/services.php b/locale/en-US/services.php
index d3c0642fa..ac31031a9 100644
--- a/locale/en-US/services.php
+++ b/locale/en-US/services.php
@@ -5,6 +5,7 @@ $this->phrasen['services/details']='Details';
$this->phrasen['services/filtern']='Filter';
$this->phrasen['services/leistung']='Service';
$this->phrasen['services/design']='Design';
+$this->phrasen['services/kritikalitaet']='Criticality';
$this->phrasen['services/betrieb']='Running';
$this->phrasen['services/operativ']='Operating';
-?>
\ No newline at end of file
+?>
diff --git a/public/js/api/fhcapifactory.js b/public/js/api/fhcapifactory.js
new file mode 100644
index 000000000..41c89ef50
--- /dev/null
+++ b/public/js/api/fhcapifactory.js
@@ -0,0 +1,30 @@
+/**
+ * Copyright (C) 2024 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 search from "./search.js";
+import phrasen from "./phrasen.js";
+import navigation from "./navigation.js";
+import filter from "./filter.js";
+import studstatus from "./studstatus.js";
+
+export default {
+ search,
+ phrasen,
+ navigation,
+ filter,
+ studstatus
+};
diff --git a/public/js/api/filter.js b/public/js/api/filter.js
new file mode 100644
index 000000000..a5920c758
--- /dev/null
+++ b/public/js/api/filter.js
@@ -0,0 +1,89 @@
+/**
+ * Copyright (C) 2024 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 this.$fhcApi.post(
+ '/api/frontend/v1/filter/saveCustomFilter',
+ {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType,
+ customFilterName: wsParams.customFilterName
+ }
+ );
+ },
+ removeCustomFilter(wsParams) {
+ return this.$fhcApi.post(
+ '/api/frontend/v1/filter/removeCustomFilter',
+ {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType,
+ filterId: wsParams.filterId
+ }
+ );
+ },
+ applyFilterFields(wsParams) {
+ return this.$fhcApi.post(
+ '/api/frontend/v1/filter/applyFilterFields',
+ {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType,
+ filterFields: wsParams.filterFields
+ }
+ );
+ },
+ addFilterField(wsParams) {
+ return this.$fhcApi.post(
+ '/api/frontend/v1/filter/addFilterField',
+ {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType,
+ filterField: wsParams.filterField
+ }
+ );
+ },
+ removeFilterField(wsParams) {
+ return this.$fhcApi.post(
+ '/api/frontend/v1/filter/removeFilterField',
+ {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType,
+ filterField: wsParams.filterField
+ }
+ );
+ },
+ getFilterById(wsParams) {
+ return this.$fhcApi.get(
+ '/api/frontend/v1/filter/getFilter',
+ {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType,
+ filterId: wsParams.filterId
+ }
+ );
+ },
+ getFilter(wsParams) {
+ return this.$fhcApi.get(
+ '/api/frontend/v1/filter/getFilter',
+ {
+ filterUniqueId: wsParams.filterUniqueId,
+ filterType: wsParams.filterType
+ }
+ );
+ }
+};
+
diff --git a/public/js/api/navigation.js b/public/js/api/navigation.js
new file mode 100644
index 000000000..05006331f
--- /dev/null
+++ b/public/js/api/navigation.js
@@ -0,0 +1,32 @@
+/**
+ * Copyright (C) 2024 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 this.$fhcApi.get(
+ '/api/frontend/v1/navigation/header',
+ { navigation_page }
+ );
+ },
+ getMenu: function(navigation_page) {
+ return this.$fhcApi.get(
+ '/api/frontend/v1/navigation/menu',
+ { navigation_page }
+ );
+ }
+};
+
diff --git a/public/js/api/phrasen.js b/public/js/api/phrasen.js
new file mode 100644
index 000000000..896641bcf
--- /dev/null
+++ b/public/js/api/phrasen.js
@@ -0,0 +1,22 @@
+/**
+ * Copyright (C) 2024 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 this.$fhcApi.get('/api/frontend/v1/phrasen/loadModule/' + category);
+ }
+};
diff --git a/public/js/api/search.js b/public/js/api/search.js
new file mode 100644
index 000000000..4655d8fa8
--- /dev/null
+++ b/public/js/api/search.js
@@ -0,0 +1,27 @@
+/**
+ * Copyright (C) 2024 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(searchsettings) {
+ const url = '/api/frontend/v1/searchbar/search';
+ return this.$fhcApi.post(url, searchsettings);
+ },
+ searchdummy(searchsettings) {
+ const url = 'public/js/apps/api/dummyapi.php/Search';
+ return this.$fhcApi.post(url, searchsettings);
+ }
+};
\ No newline at end of file
diff --git a/public/js/api/studstatus.js b/public/js/api/studstatus.js
new file mode 100644
index 000000000..87d6840b1
--- /dev/null
+++ b/public/js/api/studstatus.js
@@ -0,0 +1,223 @@
+/**
+ * Copyright (C) 2024 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 {
+ abmeldung: {
+ getDetails(antrag_id, prestudent_id) {
+ const url = '/api/frontend/v1/studstatus/abmeldung/'
+ + (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);
+ return this.$fhcApi.get(url);
+ },
+ create(stdsem, prestudent_id, grund) {
+ return this.$fhcApi.post('/api/frontend/v1/studstatus/abmeldung/createAntrag', {
+ studiensemester: stdsem,
+ prestudent_id,
+ grund
+ }, {
+ errorHandling: 'strict'
+ });
+ },
+ cancel(antrag_id) {
+ if (!Array.isArray(antrag_id))
+ return this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/abmeldung/cancelAntrag',
+ { antrag_id }
+ );
+ return Promise.allSettled(antrag_id.map(antrag => this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/abmeldung/cancelAntrag',
+ { antrag_id: antrag.studierendenantrag_id },
+ { errorHeader: '#' + antrag.studierendenantrag_id }
+ )));
+ }
+ },
+ unterbrechung: {
+ getDetails(antrag_id, prestudent_id) {
+ const url = '/api/frontend/v1/studstatus/unterbrechung/'
+ + (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);
+ return this.$fhcApi.get(url);
+ },
+ create(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {
+ return this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/createAntrag', {
+ studiensemester,
+ prestudent_id,
+ grund,
+ datum_wiedereinstieg,
+ attachment
+ }, {
+ errorHandling: 'strict'
+ });
+ },
+ cancel(antrag_id) {
+ return this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/cancelAntrag', {
+ antrag_id
+ }, {
+ errorHandling: 'strict'
+ });
+ }
+ },
+ wiederholung: {
+ getDetails(prestudent_id) {
+ const url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;
+ return this.$fhcApi.get(url)
+ },
+ getLvs(antrag_id) {
+ const url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;
+ return this.$fhcApi.get(url)
+ },
+ create(prestudent_id, studiensemester) {
+ return this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/createAntrag', {
+ prestudent_id,
+ studiensemester
+ }, {
+ errorHandling: 'strict'
+ });
+ },
+ cancel(prestudent_id, studiensemester) {
+ return this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/cancelAntrag', {
+ prestudent_id,
+ studiensemester
+ }, {
+ errorHandling: 'strict'
+ });
+ },
+ saveLvs(forbiddenLvs, mandatoryLvs) {
+ return this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/saveLvs', {
+ forbiddenLvs,
+ mandatoryLvs
+ });
+ }
+ },
+ leitung: {
+ getStgs() {
+ return this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getActiveStgs');
+ },
+ getAntraege(url, config, params) {
+ return this.$fhcApi
+ .get('/api/frontend/v1/studstatus/leitung/getAntraege/' + url)
+ .then(res => res.data); // Return data for tabulator
+ },
+ getHistory(antrag_id) {
+ return this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id)
+ },
+ getPrestudents(query, signal) {
+ return this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/getPrestudents',
+ { query },
+ {
+ signal: signal,
+ timeout: 30000
+ }
+ );
+ },
+ approve(antrag) {
+ if (!Array.isArray(antrag))
+ return this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/approveAntrag',
+ antrag
+ );
+ return Promise.allSettled(antrag.map(a => this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/approveAntrag',
+ a,
+ { errorHeader: '#' + a.studierendenantrag_id }
+ )));
+ },
+ reject(antrag) {
+ if (!Array.isArray(antrag))
+ return this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/rejectAntrag',
+ antrag
+ );
+ return Promise.allSettled(antrag.map(a => this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/rejectAntrag',
+ a,
+ { errorHeader: '#' + a.studierendenantrag_id }
+ )));
+ },
+ reopen(antrag) {
+ if (!Array.isArray(antrag))
+ return this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/reopenAntrag',
+ antrag
+ );
+ return Promise.allSettled(antrag.map(a => this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/reopenAntrag',
+ a,
+ { errorHeader: '#' + a.studierendenantrag_id }
+ )));
+ },
+ pause(antrag) {
+ if (!Array.isArray(antrag))
+ return this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/pauseAntrag',
+ antrag
+ );
+ return Promise.allSettled(antrag.map(a => this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/pauseAntrag',
+ a,
+ { errorHeader: '#' + a.studierendenantrag_id }
+ )));
+ },
+ unpause(antrag) {
+ if (!Array.isArray(antrag))
+ return this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/unpauseAntrag',
+ antrag
+ );
+ return Promise.allSettled(antrag.map(a => this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/unpauseAntrag',
+ a,
+ { errorHeader: '#' + a.studierendenantrag_id }
+ )));
+ },
+ object(antrag) {
+ if (!Array.isArray(antrag))
+ return this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/objectAntrag',
+ antrag
+ );
+ return Promise.allSettled(antrag.map(a => this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/objectAntrag',
+ a,
+ { errorHeader: '#' + a.studierendenantrag_id }
+ )));
+ },
+ approveObjection(antrag) {
+ if (!Array.isArray(antrag))
+ return this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/approveObjection',
+ antrag
+ );
+ return Promise.allSettled(antrag.map(a => this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/approveObjection',
+ a,
+ { errorHeader: '#' + a.studierendenantrag_id }
+ )));
+ },
+ denyObjection(antrag) {
+ if (!Array.isArray(antrag))
+ return this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/denyObjection',
+ antrag
+ );
+ return Promise.allSettled(antrag.map(a => this.$fhcApi.post(
+ '/api/frontend/v1/studstatus/leitung/denyObjection',
+ a,
+ { errorHeader: '#' + a.studierendenantrag_id }
+ )));
+ }
+ }
+};
\ No newline at end of file
diff --git a/public/js/apps/TestSearch.js b/public/js/apps/TestSearch.js
index d4aa35312..469aaeb09 100644
--- a/public/js/apps/TestSearch.js
+++ b/public/js/apps/TestSearch.js
@@ -1,195 +1,195 @@
-import {CoreFilterCmpt} from '../components/Filter.js';
-import {CoreNavigationCmpt} from '../components/Navigation.js';
-import verticalsplit from "../components/verticalsplit/verticalsplit.js";
-import searchbar from "../components/searchbar/searchbar.js";
-import fhcapifactory from "./api/fhcapifactory.js";
+import {CoreFilterCmpt} from '../components/filter/Filter.js';
+import {CoreNavigationCmpt} from '../components/navigation/Navigation.js';
+import CoreVerticalsplit from "../components/verticalsplit/verticalsplit.js";
+import CoreSearchbar from "../components/searchbar/searchbar.js";
+import FhcApi from "../plugin/FhcApi.js";
-Vue.$fhcapi = fhcapifactory;
-
-Vue.createApp({
- "data": function() {
- return {
- "title": "Test Search",
- "appSideMenuEntries": {},
- "searchbaroptions": {
- "types": [
- "person",
- "raum",
- "mitarbeiter",
- "student",
- "prestudent",
- "document",
- "cms",
- "organisationunit"
- ],
- "actions": {
- "person": {
- "defaultaction": {
- "type": "link",
- "action": function(data) {
- //alert('person defaultaction ' + JSON.stringify(data));
- //window.location.href = data.profil;
- return data.profil;
- }
- },
- "childactions": [
- {
- "label": "testchildaction1",
- "icon": "fas fa-check-circle",
- "type": "function",
- "action": function(data) {
- alert('person testchildaction 01 ' + JSON.stringify(data));
- }
- },
- {
- "label": "testchildaction2",
- "icon": "fas fa-file-csv",
- "type": "function",
- "action": function(data) {
- alert('person testchildaction 02 ' + JSON.stringify(data));
- }
- }
- ]
- },
- "raum": {
- "defaultaction": {
- "type": "function",
- "action": function(data) {
- alert('raum defaultaction ' + JSON.stringify(data));
- }
- },
- "childactions": [
- {
- "label": "Rauminformation",
- "icon": "fas fa-info-circle",
- "type": "link",
- "action": function(data) {
- return data.infolink;
- }
- },
- {
- "label": "Raumreservierung",
- "icon": "fas fa-bookmark",
- "type": "link",
- "action": function(data) {
- return data.booklink;
- }
- }
- ]
- },
- "employee": {
- "defaultaction": {
- "type": "function",
- "action": function(data) {
- alert('employee defaultaction ' + JSON.stringify(data));
- }
- },
- "childactions": [
- {
- "label": "testchildaction1",
- "icon": "fas fa-address-book",
- "type": "function",
- "action": function(data) {
- alert('employee testchildaction 01 ' + JSON.stringify(data));
- }
- },
- {
- "label": "testchildaction2",
- "icon": "fas fa-user-slash",
- "type": "function",
- "action": function(data) {
- alert('employee testchildaction 02 ' + JSON.stringify(data));
- }
- },
- {
- "label": "testchildaction3",
- "icon": "fas fa-bell",
- "type": "function",
- "action": function(data) {
- alert('employee testchildaction 03 ' + JSON.stringify(data));
- }
- },
- {
- "label": "testchildaction4",
- "icon": "fas fa-calculator",
- "type": "function",
- "action": function(data) {
- alert('employee testchildaction 04 ' + JSON.stringify(data));
- }
- }
- ]
- },
- "organisationunit": {
- "defaultaction": {
- "type": "function",
- "action": function(data) {
- alert('organisationunit defaultaction ' + JSON.stringify(data));
- }
- },
- "childactions": []
- }
- }
- },
- "searchbaroptions2": {
- "types": [
- "raum",
- "organisationunit"
- ],
- "actions": {
- "raum": {
- "defaultaction": {
- "type": "function",
- "action": function(data) {
- alert('raum defaultaction ' + JSON.stringify(data));
- }
- },
- "childactions": [
- {
- "label": "Rauminformation",
- "icon": "fas fa-info-circle",
- "type": "link",
- "action": function(data) {
- return data.infolink;
- }
- },
- {
- "label": "Raumreservierung",
- "icon": "fas fa-bookmark",
- "type": "link",
- "action": function(data) {
- return data.booklink;
- }
- }
- ]
- },
- "organisationunit": {
- "defaultaction": {
- "type": "function",
- "action": function(data) {
- alert('organisationunit defaultaction ' + JSON.stringify(data));
- }
- },
- "childactions": []
- }
- }
- }
- };
- },
- "components": {
- "CoreNavigationCmpt": CoreNavigationCmpt,
- "CoreFilterCmpt": CoreFilterCmpt,
- "verticalsplit": verticalsplit,
- "searchbar": searchbar
- },
- "methods": {
- "newSideMenuEntryHandler": function(payload) {
- this.appSideMenuEntries = payload;
- },
- "searchfunction": function(searchsettings) {
- return Vue.$fhcapi.Search.search(searchsettings);
- },
- "searchfunctiondummy": function(searchsettings) {
- return Vue.$fhcapi.Search.searchdummy(searchsettings);
- }
- }
-}).mount('#main');
+const app = Vue.createApp({
+ components: {
+ CoreNavigationCmpt,
+ CoreFilterCmpt,
+ CoreVerticalsplit,
+ CoreSearchbar
+ },
+ data() {
+ return {
+ title: "Test Search",
+ appSideMenuEntries: {},
+ searchbaroptions: {
+ types: [
+ "person",
+ "raum",
+ "mitarbeiter",
+ "student",
+ "prestudent",
+ "document",
+ "cms",
+ "organisationunit"
+ ],
+ actions: {
+ person: {
+ defaultaction: {
+ type: "link",
+ action(data) {
+ //alert('person defaultaction ' + JSON.stringify(data));
+ //window.location.href = data.profil;
+ return data.profil;
+ }
+ },
+ childactions: [
+ {
+ label: "testchildaction1",
+ icon: "fas fa-check-circle",
+ type: "function",
+ action(data) {
+ alert('person testchildaction 01 ' + JSON.stringify(data));
+ }
+ },
+ {
+ label: "testchildaction2",
+ icon: "fas fa-file-csv",
+ type: "function",
+ action(data) {
+ alert('person testchildaction 02 ' + JSON.stringify(data));
+ }
+ }
+ ]
+ },
+ raum: {
+ defaultaction: {
+ type: "function",
+ action(data) {
+ alert('raum defaultaction ' + JSON.stringify(data));
+ }
+ },
+ childactions: [
+ {
+ label: "Rauminformation",
+ icon: "fas fa-info-circle",
+ type: "link",
+ action(data) {
+ return data.infolink;
+ }
+ },
+ {
+ label: "Raumreservierung",
+ icon: "fas fa-bookmark",
+ type: "link",
+ action(data) {
+ return data.booklink;
+ }
+ }
+ ]
+ },
+ employee: {
+ defaultaction: {
+ type: "function",
+ action(data) {
+ alert('employee defaultaction ' + JSON.stringify(data));
+ }
+ },
+ childactions: [
+ {
+ label: "testchildaction1",
+ icon: "fas fa-address-book",
+ type: "function",
+ action(data) {
+ alert('employee testchildaction 01 ' + JSON.stringify(data));
+ }
+ },
+ {
+ label: "testchildaction2",
+ icon: "fas fa-user-slash",
+ type: "function",
+ action(data) {
+ alert('employee testchildaction 02 ' + JSON.stringify(data));
+ }
+ },
+ {
+ label: "testchildaction3",
+ icon: "fas fa-bell",
+ type: "function",
+ action(data) {
+ alert('employee testchildaction 03 ' + JSON.stringify(data));
+ }
+ },
+ {
+ label: "testchildaction4",
+ icon: "fas fa-calculator",
+ type: "function",
+ action(data) {
+ alert('employee testchildaction 04 ' + JSON.stringify(data));
+ }
+ }
+ ]
+ },
+ organisationunit: {
+ defaultaction: {
+ type: "function",
+ action(data) {
+ alert('organisationunit defaultaction ' + JSON.stringify(data));
+ }
+ },
+ childactions: []
+ }
+ }
+ },
+ searchbaroptions2: {
+ types: [
+ "raum",
+ "organisationunit"
+ ],
+ actions: {
+ raum: {
+ defaultaction: {
+ type: "function",
+ action(data) {
+ alert('raum defaultaction ' + JSON.stringify(data));
+ }
+ },
+ childactions: [
+ {
+ label: "Rauminformation",
+ icon: "fas fa-info-circle",
+ type: "link",
+ action(data) {
+ return data.infolink;
+ }
+ },
+ {
+ label: "Raumreservierung",
+ icon: "fas fa-bookmark",
+ type: "link",
+ action(data) {
+ return data.booklink;
+ }
+ }
+ ]
+ },
+ organisationunit: {
+ defaultaction: {
+ type: "function",
+ action(data) {
+ alert('organisationunit defaultaction ' + JSON.stringify(data));
+ }
+ },
+ childactions: []
+ }
+ }
+ }
+ };
+ },
+ methods: {
+ newSideMenuEntryHandler(payload) {
+ this.appSideMenuEntries = payload;
+ },
+ searchfunction(searchsettings) {
+ return this.$fhcApi.factory.search.search(searchsettings);
+ },
+ searchfunctiondummy(searchsettings) {
+ return this.$fhcApi.factory.search.searchdummy(searchsettings);
+ }
+ }
+});
+app.use(FhcApi)
+app.mount('#main');
diff --git a/public/js/apps/lehre/Antrag.js b/public/js/apps/lehre/Antrag.js
index 00a5877b3..d0c8ab89a 100644
--- a/public/js/apps/lehre/Antrag.js
+++ b/public/js/apps/lehre/Antrag.js
@@ -1,12 +1,10 @@
import StudierendenantragAntrag from "../../components/Studierendenantrag/Antrag.js";
import StudierendenantragStatus from "../../components/Studierendenantrag/Status.js";
import StudierendenantragInfoblock from "../../components/Studierendenantrag/Infoblock.js";
-import VueDatePicker from "../../components/vueDatepicker.js.php";
import Phrasen from '../../plugin/Phrasen.js';
const app = Vue.createApp({
components: {
- VueDatePicker,
StudierendenantragAntrag,
StudierendenantragStatus,
StudierendenantragInfoblock
diff --git a/public/js/components/Fetch.js b/public/js/components/Fetch.js
index 9a34e1a3f..2f7985649 100644
--- a/public/js/components/Fetch.js
+++ b/public/js/components/Fetch.js
@@ -99,8 +99,10 @@ export const CoreFetchCmpt = {
*
*/
errorHandler: function(error) {
- if (error.response.data.retval)
+ if (error.response?.data?.retval)
this.setError(error.response.data.retval);
+ else if (error.data?.message)
+ this.setError(error.data.message);
else
this.setError(error.message);
},
diff --git a/public/js/components/Form/Form.js b/public/js/components/Form/Form.js
index 9a729b88f..fb264e0fe 100644
--- a/public/js/components/Form/Form.js
+++ b/public/js/components/Form/Form.js
@@ -46,7 +46,8 @@ export default {
const factory = Object.create(Object.getPrototypeOf(this.$fhcApi.factory), Object.getOwnPropertyDescriptors(this.$fhcApi.factory));
factory.$fhcApi = {
get: this.get,
- post: this.post
+ post: this.post,
+ _defaultErrorHandlers: this.$fhcApi._defaultErrorHandlers
};
return factory;
}
diff --git a/public/js/components/Studierendenantrag/Form/Abmeldung.js b/public/js/components/Studierendenantrag/Form/Abmeldung.js
index d72f84265..1660957c5 100644
--- a/public/js/components/Studierendenantrag/Form/Abmeldung.js
+++ b/public/js/components/Studierendenantrag/Form/Abmeldung.js
@@ -1,10 +1,16 @@
import {CoreFetchCmpt} from '../../Fetch.js';
+import CoreForm from '../../Form/Form.js';
+import FormValidation from '../../Form/Validation.js';
+import FormInput from '../../Form/Input.js';
var _uuid = 0;
export default {
components: {
- CoreFetchCmpt
+ CoreFetchCmpt,
+ CoreForm,
+ FormValidation,
+ FormInput
},
emits: [
'setInfos',
@@ -18,9 +24,8 @@ export default {
return {
data: null,
saving: false,
- errors: {
- grund: [],
- default: []
+ formData: {
+ grund: ''
}
}
},
@@ -34,24 +39,14 @@ export default {
case 'Genehmigt': return 'success';
default: return 'warning';
}
- },
- loadUrl() {
- if (this.studierendenantragId)
- return '/components/Antrag/Abmeldung/getDetailsForAntrag/'+
- this.studierendenantragId;
- return '/components/Antrag/Abmeldung/getDetailsForNewAntrag/' +
- this.prestudentId;
}
},
methods: {
load() {
- return axios.get(
- FHC_JS_DATA_STORAGE_OBJECT.app_root +
- FHC_JS_DATA_STORAGE_OBJECT.ci_router +
- this.loadUrl
- ).then(
- result => {
- this.data = result.data.retval;
+ return this.$fhcApi.factory
+ .studstatus.abmeldung.getDetails(this.studierendenantragId, this.prestudentId)
+ .then(result => {
+ this.data = result.data;
if (this.data.status) {
const msg = (this.data.status == 'Pause' && this.data.status_insertvon == "Studienabbruch") ? Vue.computed(() => {
let status = this.$p.t('studierendenantrag/status_stop');
@@ -63,8 +58,8 @@ export default {
});
}
return result;
- }
- );
+ })
+ .catch(this.$fhcAlert.handleSystemError);
},
createAntrag() {
bootstrap.Modal.getOrCreateInstance(this.$refs.modal).hide();
@@ -73,52 +68,39 @@ export default {
severity: 'warning'
});
this.saving = true;
- for(var k in this.errors)
- this.errors[k] = [];
- axios.post(
- FHC_JS_DATA_STORAGE_OBJECT.app_root +
- FHC_JS_DATA_STORAGE_OBJECT.ci_router +
- '/components/Antrag/Abmeldung/createAntrag/', {
- studiensemester: this.data.studiensemester_kurzbz,
- prestudent_id: this.data.prestudent_id,
- grund: this.$refs.grund.value
- }
- ).then(
- result => {
- if (result.data.error)
- {
- for (var k in result.data.retval)
- {
- if (this.errors[k] !== undefined)
- this.errors[k].push(result.data.retval[k]);
- else
- this.errors.default.push(result.data.retval[k]);
- }
- this.$emit('setStatus', {
- msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),
- severity: 'danger'
+
+ this.$refs.form.clearValidation();
+ this.$refs.form.factory
+ .studstatus.abmeldung.create(
+ this.data.studiensemester_kurzbz,
+ this.data.prestudent_id,
+ this.formData.grund
+ )
+ .then(result => {
+ if (result.data === true)
+ document.location += "";
+
+ this.data = result.data;
+ if (this.data.status)
+ this.$emit("setStatus", {
+ msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),
+ severity: this.statusSeverity
});
- }
else
- {
- if (result.data.retval === true)
- document.location += "";
- this.data = result.data.retval;
- if (this.data.status) {
- this.$emit("setStatus", {
- msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),
- severity: this.statusSeverity
- });
- }
- else
- this.$emit('setStatus', {
- msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_open')})),
- severity:'success'
- });
- }
+ this.$emit('setStatus', {
+ msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_open')})),
+ severity:'success'
+ });
this.saving = false;
- }
- );
+ })
+ .catch(error => {
+ this.$emit('setStatus', {
+ msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),
+ severity: 'danger'
+ });
+ this.saving = false;
+ this.$fhcAlert.handleSystemError(error);
+ });
},
cancelAntrag() {
this.$emit('setStatus', {
@@ -126,51 +108,37 @@ export default {
severity: 'warning'
});
this.saving = true;
- for(var k in this.errors)
- this.errors[k] = [];
- axios.post(
- FHC_JS_DATA_STORAGE_OBJECT.app_root +
- FHC_JS_DATA_STORAGE_OBJECT.ci_router +
- '/components/Antrag/Abmeldung/cancelAntrag/', {
- antrag_id: this.data.studierendenantrag_id
- }
- ).then(
- result => {
- if (result.data.error)
- {
- for (var k in result.data.retval)
- {
- if (this.errors[k] !== undefined)
- this.errors[k].push(result.data.retval[k]);
- else
- this.errors.default.push(result.data.retval[k]);
- }
- this.$emit('setStatus', {
- msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),
- severity:'danger'
+
+ this.$refs.form.clearValidation();
+ this.$refs.form.factory
+ .studstatus.abmeldung.cancel(
+ this.data.studierendenantrag_id
+ )
+ .then(result => {
+ if (Number.isInteger(result.data))
+ document.location = document.location.replace(/abmeldung\/([0-9]*)\/[0-9]*[\/]?$/, 'abmeldung/$1') + "/" + result.data;
+
+ this.data = result.data;
+ if (this.data.status)
+ this.$emit("setStatus", {
+ msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),
+ severity: this.statusSeverity
});
- }
else
- {
- if (Number.isInteger(result.data.retval)) {
- document.location = document.location.replace(/abmeldung\/([0-9]*)\/[0-9]*[\/]?$/, 'abmeldung/$1') + "/" + result.data.retval;
- }
- this.data = result.data.retval;
- if (this.data.status) {
- this.$emit("setStatus", {
- msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),
- severity: this.statusSeverity
- });
- }
- else
- this.$emit('setStatus', {
- msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_cancelled')})),
- severity: 'danger'
- });
- }
+ this.$emit('setStatus', {
+ msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_cancelled')})),
+ severity: 'danger'
+ });
this.saving = false;
- }
- );
+ })
+ .catch(error => {
+ this.$emit('setStatus', {
+ msg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),
+ severity: 'danger'
+ });
+ this.saving = false;
+ this.$fhcAlert.handleSystemError(error);
+ });
}
},
created() {
@@ -179,10 +147,9 @@ export default {
template: `
|