Merge branch 'master' into feature-56330/Digi-Anw-Feedback

This commit is contained in:
Johann Hoffmann
2025-04-14 15:23:31 +02:00
38 changed files with 1559 additions and 334 deletions
@@ -0,0 +1,80 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Studienjahr extends FHCAPI_Controller
{
/**
* Studienjahr API constructor.
*/
public function __construct()
{
parent::__construct(
array(
'getAll' => self::PERM_LOGGED,
'getNext' => self::PERM_LOGGED
)
);
// Load model StudiensemesterModel
$this->load->model('organisation/studienjahr_model', 'StudienjahrModel');
}
/**
* Get all Studienjahre.
*
* @param null|string $order Sorting order for the Studienjahr, 'asc' or 'desc'. Defaults to 'asc'.
* @param null|string $start Starting Studienjahre with given studienjahr_kurzbz
*/
public function getAll()
{
$order = $this->input->get('order');
$start = $this->input->get('studienjahr_kurzbz');
if (strcasecmp($order, 'DESC') == 0) {
$this->StudienjahrModel->addOrder('studienjahr_kurzbz', 'DESC');
} else {
$this->StudienjahrModel->addOrder('studienjahr_kurzbz', 'ASC');
}
if ($start) {
$result = $this->StudienjahrModel->loadWhere([
'studienjahr_kurzbz >= ' => $start
]);
} else {
$result = $this->StudienjahrModel->load();
}
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_DB);
}
$this->terminateWithSuccess((getData($result) ?: []));
}
public function getNext()
{
$this->StudienjahrModel->addJoin('public.tbl_studiensemester', 'studienjahr_kurzbz');
$this->StudienjahrModel->addOrder('start');
$this->StudienjahrModel->addLimit(1);
$result = $this->StudienjahrModel->loadWhere(['start >' => 'NOW()']);
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_DB);
}
$this->terminateWithSuccess(current(getData($result)));
}
}
@@ -24,7 +24,8 @@ class Studiensemester extends FHCAPI_Controller
parent::__construct(
array(
'getAll' => self::PERM_LOGGED,
'getAktNext' => self::PERM_LOGGED
'getAktNext' => self::PERM_LOGGED,
'getStudienjahrByStudiensemester' => self::PERM_LOGGED
)
);
// Load model StudiensemesterModel
@@ -115,4 +116,40 @@ class Studiensemester extends FHCAPI_Controller
$this->terminateWithSuccess((getData($result) ?: ''));
}
/**
* Get Studienjahr by Studiensemester.
* input param semester: studiensemester_kurzbz
*/
public function getStudienjahrByStudiensemester()
{
$semester = $this->input->get('semester');
$studienjahrObj = null;
if (!is_numeric($semester))
{
$this->StudiensemesterModel->addSelect('studienjahr_kurzbz');
$result = $this->StudiensemesterModel->loadWhere(array('studiensemester_kurzbz =' => $semester));
}
if (hasData($result))
{
$studienjahr = getData($result)[0]->studienjahr_kurzbz;
$startstudienjahr = substr($studienjahr, 0, 4);
$endstudienjahr = substr($studienjahr, 0, 2) . substr($studienjahr, -2);
$studienjahrObj = new StdClass();
$studienjahrObj->studienjahr_kurzbz = $studienjahr;
$studienjahrObj->startstudienjahr = $startstudienjahr;
$studienjahrObj->endstudienjahr= $endstudienjahr;
}
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_DB);
}
$this->terminateWithSuccess((getData(success($studienjahrObj))));
}
}
@@ -52,6 +52,7 @@ class OneTimeMessages extends JOB_Controller
JOIN public.tbl_prestudentstatus ps USING (prestudent_id)
JOIN public.tbl_studiengang s USING (studiengang_kz)
WHERE get_rolle_prestudent(ps.prestudent_id, NULL) = \'Wartender\'
AND ps.status_kurzbz = \'Wartender\'
AND ps.studiensemester_kurzbz = ?
AND ps.datum <= NOW() - \''.$days.' days\'::interval
AND s.typ = ?
@@ -821,7 +821,7 @@ class ReihungstestJob extends JOB_Controller
JOIN lehre.tbl_studienordnung USING (studienordnung_id)
JOIN PUBLIC.tbl_studiengang ON (tbl_studienordnung.studiengang_kz = tbl_studiengang.studiengang_kz)
WHERE get_rolle_prestudent (tbl_prestudent.prestudent_id, ?) IN ('Aufgenommener','Bewerber','Wartender','Abgewiesener')
AND studiensemester_kurzbz = ?
AND studiensemester_kurzbz = ?
AND tbl_studiengang.typ IN ('b', 'm')
)
SELECT * FROM prst
@@ -861,7 +861,7 @@ class ReihungstestJob extends JOB_Controller
{
// Alle niedrigeren Prios laden
$qryNiedrPrios = "
SELECT DISTINCT
SELECT DISTINCT ON(prestudent_id)
get_rolle_prestudent (tbl_prestudent.prestudent_id, '".$row_ps->studiensemester_kurzbz."') AS laststatus,
tbl_studienplan.orgform_kurzbz,
tbl_person.nachname,
@@ -880,7 +880,7 @@ class ReihungstestJob extends JOB_Controller
AND studiensemester_kurzbz = '".$row_ps->studiensemester_kurzbz."'
AND tbl_studiengang.typ IN ('b', 'm')
AND priorisierung > ".$row_ps->priorisierung."
ORDER BY studiengang_kz, laststatus
ORDER BY prestudent_id, studiengang_kz, laststatus, tbl_prestudentstatus.datum DESC
";
// Wenn der letzte Status "Aufgenommener" ist, alle niedrigeren Prios auf "Abgewiesen" setzen
@@ -976,7 +976,7 @@ class ReihungstestJob extends JOB_Controller
FROM public.tbl_konto
WHERE person_id = " . $row_ps->person_id . "
AND studiensemester_kurzbz = '" . $row_ps->studiensemester_kurzbz . "'
AND buchungstyp_kurzbz = 'StudiengebuehrAnzahlung'";
AND buchungstyp_kurzbz IN ('StudiengebuehrAnzahlung','KautionDrittStaat')";
$resultKautionExists = $db->execReadOnlyQuery($qryKautionExists);
if (hasdata($resultKautionExists))
+1 -1
View File
@@ -109,7 +109,7 @@ class PermissionLib
foreach($oe_kurzbz as $value)
{
$results[] = $this->isBerechtigt($berechtigung_kurzbz, $value, $art, $kostenstelle_id);
$results[] = $this->isBerechtigt($berechtigung_kurzbz, $art, $value, $kostenstelle_id);
}
if(!in_array(true, $results))
@@ -16,145 +16,21 @@ class Lehrveranstaltung_model extends DB_Model
}
/**
* Get Lehrveranstaltungen by eventQuery string. Use with autocomplete event queries.
* @param $eventQuery String
* @param string $studiensemester_kurzbz Filter by Studiensemester
* @param array $oes Filter by Organisationseinheiten
* @return array
*/
public function getAutocompleteSuggestions($eventQuery, $studiensemester_kurzbz = null, $oes = null)
{
$subQry = $this->_getQryLvsByStudienplan($studiensemester_kurzbz, $oes);
$params = [];
/* filter by input string */
if (is_string($eventQuery)) {
$subQry.= ' AND lv.bezeichnung ILIKE ?';
$params[] = '%' . $eventQuery . '%';
}
$qry = 'SELECT DISTINCT ON (lehrveranstaltung_id) * FROM ('. $subQry. ') AS tmp';
return $this->execQuery($qry, $params);
}
/**
* Get Lehrveranstaltungen with its Stg, OE and OE-type.
* Filter by Studiensemester and Organisationseinheiten if necessary.
* @param $eventQuery String
* @param string $studiensemester_kurzbz Filter by Studiensemester
* @param array $oes Filter by Organisationseinheiten
* @param array $lv_ids Filter by Lehrveranstaltung-Ids
* @return array
*/
public function getLvsByStudienplan($studiensemester_kurzbz = null, $oes = null, $lv_ids = null)
{
$subQry = $this->_getQryLvsByStudienplan($studiensemester_kurzbz, $oes);
$qry = 'SELECT * FROM ('. $subQry. ') AS tmp';
if (isset($lv_ids) && is_array($lv_ids))
{
/* filter by lv_ids */
$implodedLvIds = "'". implode("', '", $lv_ids). "'";
$qry.= ' WHERE lehrveranstaltung_id IN ('. $implodedLvIds. ')';
}
$qry.= ' ORDER BY stg_typ_kurzbz, orgform_kurzbz DESC';
return $this->execQuery($qry);
}
/**
* Get basic query to retrieve Lehrveranstaltungen according to the Orgforms and Ausbildungssemesters actual Studienplan.
*
* @return string
*/
private function _getQryLvsByStudienplan($studiensemester_kurzbz = null, $oes = null, $lehrtyp_kurzbz = 'lv')
{
$qry = '
SELECT
lv.oe_kurzbz AS lv_oe_kurzbz,
CASE
WHEN oe.organisationseinheittyp_kurzbz = \'Kompetenzfeld\' THEN (\'KF \' || oe.bezeichnung)
WHEN oe.organisationseinheittyp_kurzbz = \'Department\' THEN (\'DEP \' || oe.bezeichnung)
ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung)
END AS lv_oe_bezeichnung,
stplsem.studiensemester_kurzbz,
studienordnung_id,
sto.studiengang_kz,
stpl.studienplan_id,
stplsem.semester,
stpl.orgform_kurzbz,
upper(stg.typ || stg.kurzbz) AS stg_typ_kurzbz,
stg.bezeichnung AS stg_bezeichnung,
stgtyp.bezeichnung AS stg_typ_bezeichnung,
lv.lehrveranstaltung_id,
lv.semester,
lv.bezeichnung AS lv_bezeichnung,
(
-- comma seperated string of all lehreinheitgruppen
SELECT string_agg(bezeichnung, \', \') AS lehreinheitgruppe_bezeichnung
FROM(
-- distinct bezeichnung, as may come multiple times from different lehreinheiten
SELECT DISTINCT ON (studiengang_kz, bezeichnung) studiengang_kz, bezeichnung FROM
(
-- distinct lehreinheitgruppe, as may come multiple times from different lehrform
SELECT DISTINCT ON (legr.lehreinheitgruppe_id) legr.studiengang_kz,
-- get Spezialgruppe or Lehrverbandgruppe
COALESCE(
legr.gruppe_kurzbz,
CONCAT( UPPER(stg1.typ), UPPER(stg1.kurzbz), \'-\', legr.semester, legr.verband, legr.gruppe )
) as bezeichnung
FROM lehre.tbl_lehreinheitgruppe legr
JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung lv1 USING (lehrveranstaltung_id)
JOIN public.tbl_studiengang stg1 ON stg1.studiengang_kz = legr.studiengang_kz
WHERE lv1.lehrveranstaltung_id = lv.lehrveranstaltung_id
AND le.studiensemester_kurzbz = stplsem.studiensemester_kurzbz
) AS lehreinheitgruppen
GROUP BY studiengang_kz, bezeichnung
ORDER BY studiengang_kz DESC
) AS uniqueLehreinheitgruppen_bezeichnung
) AS lehreinheitgruppen_bezeichnung
FROM
lehre.tbl_studienplan stpl
JOIN lehre.tbl_studienordnung sto USING (studienordnung_id)
JOIN lehre.tbl_studienplan_semester stplsem USING (studienplan_id)
JOIN lehre.tbl_studienplan_lehrveranstaltung stpllv ON (stpllv.studienplan_id = stpl.studienplan_id AND stpllv.semester = stplsem.semester)
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
JOIN public.tbl_organisationseinheit oe USING (oe_kurzbz)
JOIN public.tbl_studiengang stg ON stg.studiengang_kz = sto.studiengang_kz
JOIN public.tbl_studiengangstyp stgtyp ON stgtyp.typ = stg.typ
/* filter by lehrtyp_kurzbz, default is lvs only */
WHERE
lehrtyp_kurzbz = '. $this->db->escape($lehrtyp_kurzbz);
if (isset($studiensemester_kurzbz) && is_string($studiensemester_kurzbz))
{
/* filter by studiensemester */
$qry.= ' AND stplsem.studiensemester_kurzbz = '. $this->db->escape($studiensemester_kurzbz);
}
if (isset($oes) && is_array($oes))
{
/* filter by organisationseinheit */
$implodedOes = "'". implode("', '", $oes). "'";
$qry.= ' AND lv.oe_kurzbz IN ('. $implodedOes. ')';
}
return $qry;
}
/**
* Get all Templates and union with all Lehrveranstaltungen of given Studiensemester and Oes, that are assigned to
* a template. This data structure can be used for nested tabulator data tree.
* Get all Templates and its assigned Lehrveranstaltungen of given Studiensemester and Oes.
* Lvs are queried via actual Studienordnung and Studienplan.
*
* @param null|string $studiensemester_kurzbz
* @param null|array $oes
* @param null $lehrveranstaltung_id Queries certain LV only
* @return array|stdClass|null
*/
public function getTemplateLvTree($studiensemester_kurzbz = null, $oes = null){
public function getTemplateLvTree($studiensemester_kurzbz = null, $oes = null, $studienjahr_kurzbz = null){
if (is_string($studiensemester_kurzbz) && is_string($studienjahr_kurzbz))
{
return error('Query not possible for both studiensemester and studienjahr');
}
$params = [];
$qry = '
WITH
@@ -189,6 +65,17 @@ class Lehrveranstaltung_model extends DB_Model
}
if (is_string($studienjahr_kurzbz)) {
/* filter by studiensemester */
$params[] = $studienjahr_kurzbz;
$qry .= '
AND stplsem.studiensemester_kurzbz IN (
SELECT studiensemester_kurzbz
FROM public.tbl_studiensemester
WHERE studienjahr_kurzbz = ?
)';
}
if (is_array($oes))
{
/* filter by organisationseinheit */
@@ -300,7 +187,15 @@ class Lehrveranstaltung_model extends DB_Model
JOIN public.tbl_studiengangstyp stgtyp ON stgtyp.typ = stg.typ
JOIN public.tbl_organisationseinheit oe ON oe.oe_kurzbz = lv.oe_kurzbz
ORDER BY
oe.bezeichnung, lv.semester, lv.bezeichnung
-- Sort by lv.bezeichnung
lv.bezeichnung,
-- Within each group, ensure templates appear first
CASE
WHEN lv.lehrtyp_kurzbz = \'tpl\' THEN 0
ELSE 1
END,
-- Ensure assigend lvs follow their template, grouped by lehrveranstaltung_template_id
COALESCE(lv.lehrveranstaltung_template_id, lv.lehrveranstaltung_id)
';
return $this->execQuery($qry, $params);
@@ -811,6 +706,28 @@ class Lehrveranstaltung_model extends DB_Model
return $this->execQuery($qry);
}
/**
* Check if given LV is a template (Quellkurs)
*
* @param $lehrveranstaltung_id
* @return array|stdClass|void
*/
public function checkIsTemplate($lehrveranstaltung_id)
{
$this->addSelect('lehrtyp_kurzbz, lehrveranstaltung_template_id');
$result = $this->load($lehrveranstaltung_id);
if (isError($result))
return error(getError($result));
if (hasData($result))
{
return success(
getData($result)[0]->lehrtyp_kurzbz === 'tpl' &&
getData($result)[0]->lehrveranstaltung_template_id === null
);
}
}
/**
* Get ECTS Summe pro angerechnetes Quereinstiegssemester.
@@ -1,4 +1,5 @@
<?php
class Studienjahr_model extends DB_Model
{
@@ -29,6 +30,22 @@ class Studienjahr_model extends DB_Model
return $this->execQuery($query);
}
public function getNextStudienjahr()
{
$this->addJoin('public.tbl_studiensemester', 'studienjahr_kurzbz');
$this->addOrder('start');
$this->addLimit(1);
return $this->loadWhere(['start >' => 'NOW()']);
}
public function getNextFrom($studienjahr_kurzbz)
{
$this->addLimit(1);
return $this->loadWhere([
'studienjahr_kurzbz >' => $studienjahr_kurzbz
]);
}
/**
* Get the current Studienjahr. During the summer term, continue using the previous Studienjahr.
@@ -38,8 +55,7 @@ class Studienjahr_model extends DB_Model
*/
public function getLastOrAktStudienjahr($days = 60)
{
if (!is_numeric($days))
{
if (!is_numeric($days)) {
$days = 60;
}
@@ -63,8 +79,7 @@ class Studienjahr_model extends DB_Model
*/
public function getAktOrNextStudienjahr($days = 62)
{
if (!is_numeric($days))
{
if (!is_numeric($days)) {
$days = 62;
}
@@ -225,7 +225,7 @@ class Studiensemester_model extends DB_Model
/**
* @param string $student_uid
*
*
* @return StdClass
*/
public function getWhereStudentHasLvs($student_uid)
@@ -238,7 +238,7 @@ class Studiensemester_model extends DB_Model
$this->db->where("v.lehreverzeichnis<>''");
$this->addOrder($this->dbTable . '.start');
return $this->loadWhere(['uid' => $student_uid, 'v.lehre' => true]);
}
@@ -291,6 +291,42 @@ class Studiensemester_model extends DB_Model
return $studienjahrNumber;
}
/**
* Get Studienjahr by Studiensemester.
*
* @param $studiensemester_kurzbz
* @return array|stdClass
*/
public function getStudienjahrByStudiensemester($studiensemester_kurzbz)
{
$studienjahrObj = null;
if (!is_numeric($studiensemester_kurzbz))
{
$this->StudiensemesterModel->addSelect('studienjahr_kurzbz');
$result = $this->StudiensemesterModel->loadWhere(array('studiensemester_kurzbz =' => $studiensemester_kurzbz));
}
if (hasData($result))
{
$studienjahr = getData($result)[0]->studienjahr_kurzbz;
$startstudienjahr = substr($studienjahr, 0, 4);
$endstudienjahr = substr($studienjahr, 0, 2) . substr($studienjahr, -2);
$studienjahrObj = new StdClass();
$studienjahrObj->studienjahr_kurzbz = $studienjahr;
$studienjahrObj->startstudienjahr = $startstudienjahr;
$studienjahrObj->endstudienjahr= $endstudienjahr;
}
if (isError($result)) {
return error(getError($result));
}
return success($studienjahrObj);
}
/**
* Holt Start und Ende des Studiensemester_kurzbz
* @param studiensemester_kurzbz
@@ -8,7 +8,7 @@
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
$LOGDATA_NAME = '\'Message sent\'';
$LOGDATA_VON = '\'online\'';
$STUDIENGEBUEHR_ANZAHLUNG = '\'StudiengebuehrAnzahlung\'';
$KAUTION_DRITT_STAAT = '\'KautionDrittStaat\'';
$query = '
SELECT
@@ -62,7 +62,7 @@ $query = '
FROM public.tbl_konto konto
WHERE konto.person_id = p.person_id
AND konto.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
AND konto.buchungstyp_kurzbz = '. $STUDIENGEBUEHR_ANZAHLUNG .'
AND konto.buchungstyp_kurzbz = '. $KAUTION_DRITT_STAAT .'
) AS "Kaution"
FROM
public.tbl_prestudentstatus pss
@@ -13,7 +13,7 @@
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
$AKTE_TYP = '\'identity\', \'zgv_bakk\'';
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
$STUDIENGEBUEHR_ANZAHLUNG = '\'StudiengebuehrAnzahlung\'';
$KAUTION_DRITT_STAAT = '\'KautionDrittStaat\'';
$ORG_NAME = '\'InfoCenter\'';
$ONLINE = '\'online\'';
@@ -302,7 +302,7 @@
FROM public.tbl_konto konto
WHERE konto.person_id = p.person_id
AND konto.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
AND konto.buchungstyp_kurzbz = '. $STUDIENGEBUEHR_ANZAHLUNG .'
AND konto.buchungstyp_kurzbz = '. $KAUTION_DRITT_STAAT .'
) AS "Kaution"
FROM public.tbl_person p
LEFT JOIN (
@@ -13,7 +13,8 @@
$ORG_NAME = '\'InfoCenter\'';
$IDENTITY = '\'identity\'';
$ONLINE = '\'online\'';
$STUDIENGEBUEHR_ANZAHLUNG = '\'StudiengebuehrAnzahlung\'';
$KAUTION_DRITT_STAAT = '\'KautionDrittStaat\'';
$query = '
SELECT
@@ -275,7 +276,7 @@ $query = '
FROM public.tbl_konto konto
WHERE konto.person_id = p.person_id
AND konto.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
AND konto.buchungstyp_kurzbz = '. $STUDIENGEBUEHR_ANZAHLUNG .'
AND konto.buchungstyp_kurzbz = '. $KAUTION_DRITT_STAAT .'
) AS "Kaution"
FROM public.tbl_person p
LEFT JOIN (
@@ -9,7 +9,8 @@
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
$ORG_NAME = '\'InfoCenter\'';
$STUDIENGEBUEHR_ANZAHLUNG = '\'StudiengebuehrAnzahlung\'';
$KAUTION_DRITT_STAAT = '\'KautionDrittStaat\'';
$query = '
SELECT
@@ -206,7 +207,7 @@ $query = '
FROM public.tbl_konto konto
WHERE konto.person_id = p.person_id
AND konto.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
AND konto.buchungstyp_kurzbz = '. $STUDIENGEBUEHR_ANZAHLUNG .'
AND konto.buchungstyp_kurzbz = '. $KAUTION_DRITT_STAAT .'
) AS "Kaution"
FROM public.tbl_person p
LEFT JOIN (
+7 -6
View File
@@ -125,7 +125,7 @@ $projekttyp_kurzbz = $projektarbeit_obj->projekttyp_kurzbz;
// paarbeit sollte nur ab bestimmten Zeitpunkt online bewertet werden
$paIsCurrent = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id);
if(!is_numeric($paIsCurrent) || $paIsCurrent < 0)
if(!is_bool($paIsCurrent))
{
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."</font><br>&nbsp;";
}
@@ -166,7 +166,7 @@ if(in_array($betreuerart, array('Erstbegutachter', 'Senatsvorsitz')))
}
// Mail mit Token an Zweitbegutachter senden
if (count($zweitbetreuerArr) > 0 && $paIsCurrent >= 1 && isset($_GET['zweitbegutachtertoken']) && isset($_GET['zweitbetreuer_person_id']))
if (count($zweitbetreuerArr) > 0 && $paIsCurrent === true && isset($_GET['zweitbegutachtertoken']) && isset($_GET['zweitbetreuer_person_id']))
{
$qry_std="SELECT * FROM campus.vw_benutzer where uid=".$db->db_add_param($uid);
if(!$result_std=$db->db_query($qry_std))
@@ -482,7 +482,7 @@ $htmlstr .= "<table id='beurteilungheadertable' width=100%>\n";
$htmlstr .= "<tr><td style='font-size:16px'>".$p->t('abgabetool/student').": <b>".$db->convert_html_chars($studentenname)."</b></td>";
$htmlstr .= "<td width=10% align=center>";
$semester_benotbar = $paIsCurrent >= 1;
$semester_benotbar = $paIsCurrent === true;
$endupload_vorhanden = $num_rows_endupload >= 1;
if ($semester_benotbar && $endupload_vorhanden)
@@ -495,7 +495,8 @@ if ($semester_benotbar && $endupload_vorhanden)
}
else
{
$quick_info = !$semester_benotbar ? $p->t('abgabetool/aeltereParbeitBenoten') : $p->t('abgabetool/keinEnduploadErfolgt');
$quick_info = !$semester_benotbar ? $p->t('abgabetool/aeltereParbeitBenotenQuickInfo') : $p->t('abgabetool/keinEnduploadErfolgt');
$info_text = !$semester_benotbar ? $p->t('abgabetool/aeltereParbeitBenoten') : $p->t('abgabetool/keinEnduploadErfolgt');
$htmlstr .= "<form action='javascript:void(0);'>";
$htmlstr .= "<input type='submit' value='".$p->t('abgabetool/benoten')."' title='".$quick_info."'
alt='".$quick_info."' disabled>";
@@ -516,7 +517,7 @@ else
}
$htmlstr .= "<tr>
<td style='font-size:16px'>" . $p->t('abgabetool/titel') . ": <b>".$db->convert_html_chars($titel)."<b></td>
<td align='center' class='warningtext'>".(isset($quick_info) ? $quick_info : '')."</td>
<td align='center' class='warningtext'>".(isset($info_text) ? $info_text : '')."</td>
<td valign=\"right\"><a href='abgabe_student_frameset.php?uid=$uid' target='_blank'>".$p->t('abgabetool/studentenansicht')."</a></td>";
$htmlstr .= "</tr>\n";
@@ -544,7 +545,7 @@ if (isset($zweitbetreuerArr) && is_array($zweitbetreuerArr)) // wenn es Zweitbet
$htmlstr .= "&nbsp;&nbsp;<img src='../../../skin/images/exclamation.png' title='" . $p->t('abgabetool/zweitBegutachterEmailFehlt') . "' alt='" . $p->t('abgabetool/zweitBegutachterEmailFehlt') . "'/>";
// Token senden button wenn Zweitbegutachter extern ist und Projektarbeit nicht für altes Semester ist
if (isset($zweitbetreuer->email) && !isset($zweitbetreuer->uid) && $paIsCurrent >= 1)
if (isset($zweitbetreuer->email) && !isset($zweitbetreuer->uid) && $paIsCurrent === true)
{
$htmlstr .= "<form action='" . htmlspecialchars($_SERVER['PHP_SELF']) . "' method='GET' style='display: inline'>\n";
$htmlstr .= "<input type='hidden' name='uid' value='" . $student_uid . "'>";
+2 -2
View File
@@ -195,13 +195,13 @@ else
$htmlstr .= "<td>";
if (!is_null($row->babgeschickt))
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->betreuer_person_id ."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungErstDownload')."</a>";
$htmlstr .= "<a href='./projektbeurteilungDocumentExport.php?betreuerart_kurzbz=" . $row->betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->betreuer_person_id ."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungErstDownload')."</a>";
if (!is_null($row->babgeschickt) && !is_null($row->zweitbetreuer_abgeschickt))
$htmlstr .= "/";
if (!is_null($row->zweitbetreuer_abgeschickt))
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->zweitbetreuer_betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->zweitbetreuer_person_id."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungZweitDownload')."</a>";
$htmlstr .= "<a href='./projektbeurteilungDocumentExport.php?betreuerart_kurzbz=" . $row->zweitbetreuer_betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->zweitbetreuer_person_id."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungZweitDownload')."</a>";
$htmlstr .= "</td>";
}
+5 -5
View File
@@ -472,8 +472,8 @@ if($command=="update" && $error!=true)
else
{
// paarbeit sollte nur ab bestimmten Zeitpunkt online bewertet werden
$num_rows_sem = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id);
if(!is_numeric($num_rows_sem) || $num_rows_sem < 0)
$paIsCurrent = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id);
if(!is_bool($paIsCurrent))
{
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."</font><br>&nbsp;";
}
@@ -495,7 +495,7 @@ if($command=="update" && $error!=true)
$maildata['student_voller_name'] = trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost);
$maildata['abgabetyp'] = $abgabetyp;
$maildata['parbeituebersichtlink'] = "<p><a href='".APP_ROOT."cis/private/lehre/abgabe_lektor_frameset.html'>Zur Projektarbeitsübersicht</a></p>";
$maildata['bewertunglink'] = $num_rows_sem >= 1 && $paabgabetyp_kurzbz == 'end' ? "<p><a href='$mail_fulllink'>Zur Beurteilung der Arbeit</a></p>" : "";
$maildata['bewertunglink'] = $paIsCurrent && $paabgabetyp_kurzbz == 'end' ? "<p><a href='$mail_fulllink'>Zur Beurteilung der Arbeit</a></p>" : "";
$maildata['token'] = "";
$mailres = sendSanchoMail(
@@ -557,8 +557,8 @@ if($command=="update" && $error!=true)
$zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name'];
$zweitbetmaildata['abgabetyp'] = $abgabetyp;
$zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : "";
$zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "<p><a href='$mail_link'>Zur Beurteilung der Arbeit</a></p>" : "";
$zweitbetmaildata['token'] = $num_rows_sem >= 1 && isset($begutachterMitToken->zugangstoken) && !$intern ? "<p>Zugangstoken: " . $begutachterMitToken->zugangstoken . "</p>" : "";
$zweitbetmaildata['bewertunglink'] = $paIsCurrent ? "<p><a href='$mail_link'>Zur Beurteilung der Arbeit</a></p>" : "";
$zweitbetmaildata['token'] = $paIsCurrent && isset($begutachterMitToken->zugangstoken) && !$intern ? "<p>Zugangstoken: " . $begutachterMitToken->zugangstoken . "</p>" : "";
$mailres = sendSanchoMail(
'ParbeitsbeurteilungEndupload',
@@ -241,7 +241,7 @@ if (isset($_REQUEST["freigabe"]) && ($_REQUEST["freigabe"] == 1))
<body>
$name hat neue Noten für die Lehrveranstaltung\n\n<br>
<b>" . $sg->kuerzel . ' ' . $lv->semester . '.Semester
' . $lv->bezeichnung . " " . $lv->orgform_kurzbz . " - " . $stsem . "</b>
' . $lv->bezeichnung . " - " .$lv->lehrform_kurzbz. " " . $lv->orgform_kurzbz . " - " . $stsem . "</b>
<br>eingetragen.\n<br><br>
Die Noten können jetzt ins Zeugnis übernommen werden.\n";
@@ -0,0 +1,26 @@
<?php
/* Erstellt einen Lehrauftrag im PDF Format
*
* Erstellt ein XML File Transformiert dieses mit
* Hilfe der XSL-FO Vorlage aus der DB und generiert
* daraus ein PDF
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/projektarbeit.class.php');
if (!isset($_GET['betreuerart_kurzbz']) || !isset($_GET['person_id']) || !isset($_GET['projektarbeit_id']))
die('Fehlerhafte Parameteruebergabe');
// passende Vorlage holen
$projektarbeitVorlage = new projektarbeit();
$vorlage = $projektarbeitVorlage->getVorlage($_GET['projektarbeit_id'], $_GET['betreuerart_kurzbz']);
if ($vorlage == null)
die("<html><body><h3>".$projektarbeitVorlage->errormsg."</h3></body></html>");
// weiterleiten auf Dokumentexport
header('Location: ' . APP_ROOT . '/cis/private/pdfExport.php?xml=projektarbeitsbeurteilung.xml.php'
.'&xsl='.$vorlage.'&betreuerart_kurzbz=' . $_GET['betreuerart_kurzbz']
. '&projektarbeit_id=' . $_GET['projektarbeit_id'] . '&person_id=' . $_GET['person_id']
);
die();
+21 -27
View File
@@ -196,41 +196,35 @@ if (isset($_GET['output']) && $_GET['output'] != 'pdf')
else
$output = 'pdf';
if (isset($_GET['xsl']) && ($_GET['xsl'] === 'Projektbeurteilung'))
// Berechtigungprüfung Projektarbeit
if (isset($_GET['projektarbeit_id']))
{
if (!isset($_GET['betreuerart_kurzbz']) || !isset($_GET['person_id']) || !isset($_GET['projektarbeit_id']))
die('Fehlerhafte Parameteruebergabe');
$projektarbeitVorlage = new projektarbeit();
$allePaVorlagen = $projektarbeitVorlage->getAllVorlagen();
$projektarbeit = new projektarbeit();
$projektarbeit->load($_GET['projektarbeit_id']);
if (!is_array($allePaVorlagen))
die("<html><body><h3>Fehler beim Holen der Projektarbeit Vorlagen</h3></body></html>");
$betreuer = new person();
$betreuer->getPersonFromBenutzer($user);
//Überprüft ob es der Betreuer oder der Student ist
if ($betreuer->person_id !== $_GET['person_id'] && $projektarbeit->student_uid !== $user && !$rechte->isBerechtigt('assistenz'))
die("<html><body><h3>Sie haben keine Berechtigung für diese Aktion.</h3></body></html>");
switch ($_GET['betreuerart_kurzbz'])
if (in_array($xsl, $allePaVorlagen))
{
case 'Begutachter' :
case 'Senatsvorsitz' :
$xsl = 'ProjektBeurteilungBA';
break;
case 'Erstbegutachter' :
$xsl = 'ProjektBeurteilungMAErst';
break;
case 'Zweitbegutachter' :
$xsl = 'ProjektBeurteilungMAZweit';
break;
}
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
$allowed = true;
$projektarbeit = new projektarbeit();
$projektarbeit->load($_GET['projektarbeit_id']);
$betreuer = new person();
$betreuer->getPersonFromBenutzer($user);
//Überprüft ob es der Betreuer oder der Student ist
if ($betreuer->person_id !== $_GET['person_id'] && $projektarbeit->student_uid !== $user && !$rechte->isBerechtigt('assistenz'))
die("<html><body><h3>Sie haben keine Berechtigung für diese Aktion.</h3></body></html>");
$paBerechtigt = true;
}
}
$konto = new konto();
if ((((isset($_GET["uid"]) && $user == $_GET["uid"])) || $rechte->isBerechtigt('admin')) || (isset($allowed) && $allowed === true))
if (((isset($_GET["uid"]) && $user == $_GET["uid"])) || $rechte->isBerechtigt('admin') || (isset($paBerechtigt) && $paBerechtigt === true))
{
$buchungstypen = array();
if (defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN"))
+7
View File
@@ -177,6 +177,9 @@ if(isset($_REQUEST['AuswahlGebiet']))
WHERE gebiet_id=".$db->db_add_param($gebiet_id)."
ORDER BY studiengang";
$result = $db->db_query($qry);
$qry_anz_fragen = "SELECT count(*) FROM testtool.tbl_frage WHERE gebiet_id=".$db->db_add_param($gebiet_id)." AND demo=false";
$result_anz_fragen = $db->db_fetch_object($db->db_query($qry_anz_fragen));
if ($gebietdetails)
{
@@ -215,6 +218,10 @@ if(isset($_REQUEST['AuswahlGebiet']))
<td align="right">Multipleresponse:</td>
<td>'.($gebietdetails->multipleresponse==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Fragen im Gebiet:</td>
<td>'.$result_anz_fragen->count.'</td>
</tr>
<tr>
<td align="right">Gestellte Fragen:</td>
<td>'.$gebietdetails->maxfragen.'</td>
+18
View File
@@ -217,6 +217,24 @@ function getDataFromClipboard()
return pastetext;
}
// ****
// * Kopiert Inhalte in die Zwischenablage
// ****
function copyToClipboard(link)
{
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
try {
const clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper);
clipboard.copyString(link);
// Erfolgsmeldung anzeigen
alert("Link erfolgreich in die Zwischenablage kopiert.\nBitte in anderem Browser einfügen und öffnen.");
} catch (e) {
alert("Fehler beim Kopieren in die Zwischenablage: " + e);
}
}
// ****
// * Oeffnet ein neues Fenster welches dann die Datei 'action' mit dem POST Parameter 'data' aufruft
// ****
+2 -1
View File
@@ -355,7 +355,8 @@ if(!$error)
WHERE
mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid)." AND
studiensemester_kurzbz=".$db->db_add_param($le->studiensemester_kurzbz)." AND
bismelden";
bismelden AND
lower(mitarbeiter_uid) NOT LIKE '_dummy%'";
if(count($oe_arr)>0)
$qry.=" AND tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).")";
+15
View File
@@ -175,7 +175,22 @@ function MessagesIFrameSetHTML(val)
}
//Value setzen
if(val!='')
{
editor.contentDocument.execCommand("inserthtml", false, val);
setTimeout(function()
{
scrollToTop();
}, 100);
}
}
function scrollToTop()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
editor = document.getElementById('message-wysiwyg');
editor.contentWindow.scrollTo(0, 0);
}
function MessageIFrameInit()
@@ -1113,15 +1113,15 @@ function StudentAbschlusspruefungTypChange()
{
if(document.getElementById('student-abschlusspruefung-menulist-typ').value=='Bachelor')
{
document.getElementById('student-abschlusspruefung-label-pruefer1').value='Pruefer 1';
document.getElementById('student-abschlusspruefung-label-pruefer2').value='Pruefer 2';
document.getElementById('student-abschlusspruefung-label-pruefer1').value='PrueferIn 1';
document.getElementById('student-abschlusspruefung-label-pruefer2').value='PrueferIn 2';
document.getElementById('student-abschlusspruefung-menulist-pruefer3').hidden=false;
document.getElementById('student-abschlusspruefung-label-pruefer3').hidden=false;
}
else
{
document.getElementById('student-abschlusspruefung-label-pruefer1').value='Pruefer 1 (Diplomarbeit)';
document.getElementById('student-abschlusspruefung-label-pruefer2').value='Pruefer 2';
document.getElementById('student-abschlusspruefung-label-pruefer1').value='PrueferIn 1 (Diplomarbeit)';
document.getElementById('student-abschlusspruefung-label-pruefer2').value='PrueferIn 2';
document.getElementById('student-abschlusspruefung-menulist-pruefer3').hidden=true;
document.getElementById('student-abschlusspruefung-label-pruefer3').hidden=true;
}
+1 -1
View File
@@ -74,7 +74,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<?php $hideZugangscode = (defined('ACTIVE_ADDONS') && strpos(ACTIVE_ADDONS, 'bewerbung') !== false) ? '':' hidden="true"'; ?>
<label value="Zugangscode" control="student-detail-zugangscode" <?php echo $hideZugangscode; ?>/>
<label id="label-student-detail-link_bewerbungstool" hidden="true" value=""></label>
<label class="text-link" href="#" id="label-student-detail-zugangscode" value="" <?php echo $hideZugangscode; ?> onclick="window.open(document.getElementById('label-student-detail-link_bewerbungstool').value)"/>
<label class="text-link" href="#" id="label-student-detail-zugangscode" value="" <?php echo $hideZugangscode; ?> onclick="copyToClipboard(document.getElementById('label-student-detail-link_bewerbungstool').value)"/>
<?php $hideBpk = $rechte->isBerechtigt('student/bpk') ? '':' hidden="true"'; ?>
<label value="BPK" control="student-detail-textbox-bpk"<?php echo $hideBpk; ?>/>
<hbox><textbox id="student-detail-textbox-bpk" disabled="true" maxlength="28" size="50"<?php echo $hideBpk; ?>/></hbox>
+1 -1
View File
@@ -121,7 +121,7 @@ class phrasen extends basis_db
* Wobei x durch den Index+1 im Array zu ersetzten ist. zB "%2$s" um die Variable $value[1] auszugeben
* naehere Infos siehe sprintf
*
* @param $key Key der Phrase
* @param $key String Key der Phrase
* @param $value Array mit Parametern fuer die Phrase
*/
public function t($key, $value=array())
+169 -86
View File
@@ -16,8 +16,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
/**
* Klasse projektarbeit
@@ -27,7 +27,7 @@ require_once(dirname(__FILE__).'/basis_db.class.php');
class projektarbeit extends basis_db
{
public $new; // boolean
public $new; // boolean
public $result = array(); // adresse Objekt
//Tabellenspalten
@@ -59,6 +59,37 @@ class projektarbeit extends basis_db
public $abgabedatum;
// Welche Version der Projektarbeit wird ab welchem Semester verwendet
private $_versions = array(
'Diplom' => array(
'SS2025' => 3,
'SS2023' => 2,
'SS2022' => 1
),
'Others' => array(
'SS2025' => 2,
'SS2022' => 1
)
);
// welche Vorlagen werden ab welcher Projekarbeitsversion verwendet (0 - erste "default" Vorlage)
private $_projektarbeitVorlageMappings = array(
'Begutachter' => array(
2 => 'ProjektBeurteilungBAProzent',
0 => 'ProjektBeurteilungBA'
),
'Senatsvorsitz' => array(
2 => 'ProjektBeurteilungBAProzent',
0 => 'ProjektBeurteilungBA'
),
'Erstbegutachter' => array(
3 => 'ProjektBeurteilungMAProzent',
0 => 'ProjektBeurteilungMAErst'
),
'Zweitbegutachter' => array(
0 => 'ProjektBeurteilungMAZweit'
)
);
/**
* Konstruktor
@@ -233,25 +264,25 @@ class projektarbeit extends basis_db
$qry='BEGIN; INSERT INTO lehre.tbl_projektarbeit (projekttyp_kurzbz, titel, lehreinheit_id, student_uid, firma_id, note, punkte,
beginn, ende, faktor, freigegeben, gesperrtbis, stundensatz, gesamtstunden, themenbereich, anmerkung,
insertamum, insertvon, updateamum, updatevon, titel_english, final) VALUES('.
$this->db_add_param($this->projekttyp_kurzbz).', '.
$this->db_add_param($this->titel).', '.
$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '.
$this->db_add_param($this->student_uid).', '.
$this->db_add_param($this->firma_id, FHC_INTEGER).', '.
$this->db_add_param($this->note).', '.
$this->db_add_param($this->punkte).', '.
$this->db_add_param($this->beginn).', '.
$this->db_add_param($this->ende).', '.
$this->db_add_param($this->faktor).', '.
$this->db_add_param($this->freigegeben, FHC_BOOLEAN).', '.
$this->db_add_param($this->gesperrtbis).', '.
$this->db_add_param($this->stundensatz).', '.
$this->db_add_param($this->gesamtstunden).', '.
$this->db_add_param($this->themenbereich).', '.
$this->db_add_param($this->anmerkung).', now(), '.
$this->db_add_param($this->insertvon).', now(), '.
$this->db_add_param($this->updatevon).','.
$this->db_add_param($this->titel_english).','.
$this->db_add_param($this->projekttyp_kurzbz).', '.
$this->db_add_param($this->titel).', '.
$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '.
$this->db_add_param($this->student_uid).', '.
$this->db_add_param($this->firma_id, FHC_INTEGER).', '.
$this->db_add_param($this->note).', '.
$this->db_add_param($this->punkte).', '.
$this->db_add_param($this->beginn).', '.
$this->db_add_param($this->ende).', '.
$this->db_add_param($this->faktor).', '.
$this->db_add_param($this->freigegeben, FHC_BOOLEAN).', '.
$this->db_add_param($this->gesperrtbis).', '.
$this->db_add_param($this->stundensatz).', '.
$this->db_add_param($this->gesamtstunden).', '.
$this->db_add_param($this->themenbereich).', '.
$this->db_add_param($this->anmerkung).', now(), '.
$this->db_add_param($this->insertvon).', now(), '.
$this->db_add_param($this->updatevon).','.
$this->db_add_param($this->titel_english).','.
$this->db_add_param($this->final, FHC_BOOLEAN).');';
}
else
@@ -471,92 +502,144 @@ class projektarbeit extends basis_db
}
/**
* Prüft ob Projektarbeit aktuell ist (ab bestimmtem Semester).
* Masterarbeiten sind ab der Änderung zur Gewichtung der Punkte aktuell,
* Bachelorarbeiten schon ab dem Umstieg auf das Online Beurteilungsformular.
* Prüft ob Projektarbeit aktuell ist (also zurzeit online bewertet wird).
* @param $projektarbeit_id
* @return int -1 wenn Fehler, 0 wenn nicht aktuell, 1 wenn aktuell
* @return boolean
*/
public function projektarbeitIsCurrent($projektarbeit_id)
{
$version = $this->getVersion($projektarbeit_id);
// paarbeit sollte nur ab einem Studiensemester online bewertet werden
$qry="SELECT 1
FROM lehre.tbl_projektarbeit
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
AND
(
(
projekttyp_kurzbz = 'Diplom'
AND tbl_studiensemester.start::date >= (
SELECT start
FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = 'SS2023'
)::date
)
OR
(
projekttyp_kurzbz <> 'Diplom'
AND tbl_studiensemester.start::date >= (
SELECT start
FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = 'SS2022'
)::date
)
)
LIMIT 1";
$result_sem=$this->db_query($qry);
if (!$result_sem)
{
$this->errormsg = "Fehler beim Ermitteln der Projektarbeit Aktualität";
return -1;
}
$num_rows = $this->db_num_rows($result_sem);
if ($num_rows < 0)
{
$this->errormsg = "Fehler beim Ermitteln der Anzahl der aktuellen Projektarbeiten";
}
return $num_rows;
return $version === null ? null : $version->isCurrent;
}
/**
* Prüft ob Projektarbeit aktuell ist (ab bestimmtem Semester), vor der Änderung zur Gewichtung der Punkte.
* Holt sich Version der Projektarbeit.
* Liefert auch mit, ob die Version die aktuellste ist.
* z.B.: Masterarbeiten waren ab der Änderung zur Gewichtung der Punkte aktuell,
* Bachelorarbeiten waren ab dem Umstieg auf das Online Beurteilungsformular aktuell.
* @param $projektarbeit_id
* @return int -1 wenn Fehler, 0 wenn nicht aktuell, 1 wenn aktuell
* @return objekt mit Versionsinfo, null im Fehlerfall
*/
public function projektarbeitIsCurrentBeforeWeightening($projektarbeit_id)
public function getVersion($projektarbeit_id)
{
// paarbeit sollte nur ab einem Studiensemester online bewertet werden
$qry="SELECT 1
FROM lehre.tbl_projektarbeit
$qry="
SELECT
CASE
WHEN semesters_diplom.studiensemester_kurzbz IS NOT NULL
THEN semesters_diplom.studiensemester_kurzbz
ELSE semesters.studiensemester_kurzbz
END AS version_studiensemester_kurzbz,
pa.projekttyp_kurzbz
FROM
lehre.tbl_projektarbeit pa
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
AND tbl_studiensemester.start::date >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2022')::date
LIMIT 1";
JOIN public.tbl_studiensemester sem USING(studiensemester_kurzbz)
LEFT JOIN (
SELECT
start, studiensemester_kurzbz
FROM
public.tbl_studiensemester
WHERE
studiensemester_kurzbz IN (".$this->db_implode4SQL(array_keys($this->_versions['Others'])).")
) semesters ON sem.start >= semesters.start AND pa.projekttyp_kurzbz <> 'Diplom'
LEFT JOIN (
SELECT
start, studiensemester_kurzbz
FROM
public.tbl_studiensemester
WHERE
studiensemester_kurzbz IN (".$this->db_implode4SQL(array_keys($this->_versions['Diplom'])).")
) semesters_diplom ON sem.start >= semesters_diplom.start AND pa.projekttyp_kurzbz = 'Diplom'
WHERE
projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
ORDER BY
semesters.start DESC, semesters_diplom.start DESC
LIMIT 1";
$result_sem=$this->db_query($qry);
$errormsg = "Fehler beim Ermitteln der Projektarbeit Version";
if (!$result_sem)
if ($this->db_query($qry))
{
$this->errormsg = "Fehler beim Ermitteln der Projektarbeit Aktualität";
return -1;
if ($row = $this->db_fetch_object())
{
// known project types
if (isset($this->_versions[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz]))
{
$row->versionNumber = $this->_versions[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz];
$row->isCurrent =
$this->_versions[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz]
== max($this->_versions[$row->projekttyp_kurzbz]);
}
elseif (isset($this->_versions['Others'][$row->version_studiensemester_kurzbz]))
{
$row->versionNumber = $this->_versions['Others'][$row->version_studiensemester_kurzbz];
$row->isCurrent =
$this->_versions['Others'][$row->version_studiensemester_kurzbz]
== max($this->_versions['Others']);
}
else
{
$row->isCurrent = false;
$row->versionNumber = 0;
}
return $row;
}
else
{
$this->errormsg = $errormsg;
return null;
}
}
else
{
$this->errormsg = $errormsg;
return null;
}
}
/**
* Holt Version einer Projektarbeit für eine Betreuerart.
* @param $projektarbeit_id
* @param $betreuerart_kurzbz
* @return string Vorlagenname
*/
public function getVorlage($projektarbeit_id, $betreuerart_kurzbz)
{
$version = $this->getVersion($projektarbeit_id);
if ($version == null) return null;
$key = 0;
if (isset($this->_projektarbeitVorlageMappings[$betreuerart_kurzbz]))
{
foreach ($this->_projektarbeitVorlageMappings[$betreuerart_kurzbz] as $versionNumber => $vorlage)
{
if ($versionNumber <= $version->versionNumber && $versionNumber > $key) $key = $versionNumber;
}
}
$num_rows = $this->db_num_rows($result_sem);
return
isset($this->_projektarbeitVorlageMappings[$betreuerart_kurzbz][$key])
? $this->_projektarbeitVorlageMappings[$betreuerart_kurzbz][$key]
: '';
}
if ($num_rows < 0)
/**
* Holt alle möglichen, jemals verwendeten Projektarbeits-Vorlagen
* @return array mit Vorlagennamen
*/
public function getAllVorlagen()
{
$vorlagen = array();
foreach ($this->_projektarbeitVorlageMappings as $mappings)
{
$this->errormsg = "Fehler beim Ermitteln der Anzahl der aktuellen Projektarbeiten";
$vorlagen = array_unique(array_merge($vorlagen, $mappings));
}
return $num_rows;
return $vorlagen;
}
}
?>
+1
View File
@@ -1,6 +1,7 @@
<?php
$this->phrasen['abgabetool/abgabetool']='Abgabetool';
$this->phrasen['abgabetool/aeltereParbeitBenoten']='Projektarbeit für älteres Semester, bitte Word-Formular zur Benotung verwenden!';
$this->phrasen['abgabetool/aeltereParbeitBenotenQuickInfo']='Projektarbeit für älteres Semester, bitte Word-Formular zur Benotung verwenden!';
$this->phrasen['abgabetool/keinEnduploadErfolgt']='Endupload ist noch nicht erfolgt';
$this->phrasen['abgabetool/typ']='Typ';
$this->phrasen['abgabetool/titel']='Titel';
+1
View File
@@ -1,6 +1,7 @@
<?php
$this->phrasen['abgabetool/abgabetool']='Submission tool';
$this->phrasen['abgabetool/aeltereParbeitBenoten']='Thesis handed in for older semester, please use word form for assessment!';
$this->phrasen['abgabetool/aeltereParbeitBenotenQuickInfo']='Thesis handed in for older semester, please use word form for assessment!';
$this->phrasen['abgabetool/keinEnduploadErfolgt']='Final version not uploaded yet';
$this->phrasen['abgabetool/typ']='Type';
$this->phrasen['abgabetool/titel']='Title';
+1
View File
@@ -1,6 +1,7 @@
<?php
$this->phrasen['abgabetool/abgabeLektorenbereich']='Consegna portale lettori';
$this->phrasen['abgabetool/aeltereParbeitBenoten']='Thesis handed in for older semester, please use word form for assessment!';
$this->phrasen['abgabetool/aeltereParbeitBenotenQuickInfo']='Thesis handed in for older semester, please use word form for assessment!';
$this->phrasen['abgabetool/abgabeStudentenbereich']='consegna portale studente';
$this->phrasen['abgabetool/abgabetermine']='scadenze consegna';
$this->phrasen['abgabetool/abgabetool']='Strumenti di consegna';
+24 -17
View File
@@ -13,7 +13,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*
* @usage:
* Preperations:
* Be sure to have PrimeVue loaded with the toast and confirmdialog
@@ -23,44 +23,51 @@
* Use:
* In your component you can call now the global property $fhcAlert
* which has the following functions:
*
*
* alertSuccess
* ------------
* Displays a success message
* @param string message
* @return void
*
*
* alertInfo
* ---------
* Displays an info message
* @param string message
* @return void
*
*
* alertWarning
* ------------
* Displays a warning
* @param string message
* @return void
*
*
* alertError
* ----------
* Displays an error
* @param string message
* @return void
*
*
* alertSystemError
* ----------------
* Displays an alert with the error details and a button to mail
* the error to the Support Team
* @param string message
* @return void
*
*
* confirmDelete
* -------------
* Displays a confirmation dialog and returns a Promise which resolves
* with true or false depending und the pressed button.
* @return Promise
*
*
* confirm
* ------------
* Displays a confirmation dialog and returns a Promise which resolves
* with true or false depending und the pressed button.
* @param string message
* @return Promise
*
* alertDefault
* ------------
* Displays an alert
@@ -69,7 +76,7 @@
* @param string message
* @param boolean sticky (optional) defaults to false
* @return void
*
*
* alertMultiple
* -------------
* Displays multiple alerts
@@ -78,14 +85,14 @@
* @param string title (optional) defaults to 'Info'
* @param boolean sticky (optional) defaults to false
* @return void
*
*
* handleSystemError
* -----------------
* Automatiticly determine how to display an system error and display it.
* This would be used in a catch block of an ajax call.
* @param mixed error
* @return void
*
*
* handleSystemMessage
* -------------------
* Automatiticly determine how to display a message and display it.
@@ -248,7 +255,7 @@ export default {
},
alertDefault(severity, title, message, sticky = false) {
let options = { severity: severity, summary: title, detail: message};
if (!sticky)
options.life = 3000;
@@ -266,7 +273,7 @@ export default {
// don't show an error message to the user if the error was an aborted request
if(error.hasOwnProperty('name') && error.name.toLowerCase() === "AbortError".toLowerCase())
return;
// Error is string
if (typeof error === 'string')
return $fhcAlert.alertSystemError(error);
@@ -278,7 +285,7 @@ export default {
// Error has been handled already
if (error.hasOwnProperty('handled') && error.handled)
return;
// Error is object
if (typeof error === 'object' && error !== null) {
let errMsg = '';
@@ -294,7 +301,7 @@ export default {
if (error.hasOwnProperty('stack'))
errMsg += 'Error Stack: ' + error.stack + '\r\n';
// Fallback object error message
if (errMsg == '')
errMsg = 'Error Message: ' + JSON.stringify(error) + '\r\n';
@@ -368,7 +375,7 @@ export default {
// NOTE(chris): reset form validation
$fhcAlert.resetFormValidation(form);
// NOTE(chris): set form input validation
const notFound = Object.entries(errors).filter(([key, detail]) => {
const input = form.querySelector('[data-fhc-form-validate="' + key + '"]');
@@ -421,4 +428,4 @@ export default {
app.config.globalProperties.$fhcAlert = $fhcAlert;
app.provide('$fhcAlert', app.config.globalProperties.$fhcAlert);
}
}
}
+2 -1
View File
@@ -61,6 +61,7 @@ require_once('dbupdate_3.4/41134_C4_bookmark_dashboardWidget.php');
require_once('dbupdate_3.4/28575_softwarebereitstellung.php');
require_once('dbupdate_3.4/41150_oe-pfad_db_view.php');
require_once('dbupdate_3.4/44031_stv_favorites.php');
require_once('dbupdate_3.4/37620_reihungslisten.php');
require_once('dbupdate_3.4/40896_kennzeichnung_unruly_person.php');
require_once('dbupdate_3.4/39911_tabulator_in_contentmittitel.php');
require_once('dbupdate_3.4/25999_C4_permission.php');
@@ -191,7 +192,7 @@ $tabellen=array(
"fue.tbl_ressource" => array("ressource_id","student_uid","mitarbeiter_uid","betriebsmittel_id","firma_id","bezeichnung","beschreibung","insertamum","insertvon","updateamum","updatevon"),
"fue.tbl_scrumteam" => array("scrumteam_kurzbz","bezeichnung","punkteprosprint","tasksprosprint","gruppe_kurzbz"),
"fue.tbl_scrumsprint" => array("scrumsprint_id","scrumteam_kurzbz","sprint_kurzbz","sprintstart","sprintende","insertamum","insertvon","updateamum","updatevon"),
"hr.tbl_sachaufwand" => array("sachaufwand_id","mitarbeiter_uid","sachaufwandtyp_kurzbz","dienstverhaeltnis_id","beginn","ende","anmerkung","insertamum","insertvon","updateamum","updatevon"),
"hr.tbl_sachaufwand" => array("sachaufwand_id","mitarbeiter_uid","sachaufwandtyp_kurzbz","dienstverhaeltnis_id","beginn","ende","anmerkung","insertamum","insertvon","updateamum","updatevon","betrag"),
"hr.tbl_sachaufwandtyp" => array("sachaufwandtyp_kurzbz","bezeichnung","sort", "aktiv"),
"hr.tbl_stundensatz" => array("stundensatz_id","uid","stundensatztyp","stundensatz","oe_kurzbz","gueltig_von","gueltig_bis","insertamum","insertvon","updateamum","updatevon"),
"hr.tbl_stundensatztyp" => array("stundensatztyp","bezeichnung","aktiv","insertamum","insertvon","updateamum","updatevon"),
+17
View File
@@ -605,4 +605,21 @@ if ($result = $db->db_query("SELECT * FROM information_schema.columns WHERE colu
else
echo 'Spalte gehaltsbestandteil_bis wurde in hr.tbl_gehaltshistorie neu erstellt<br>';
}
}
if ($result = $db->db_query("SELECT * FROM information_schema.columns WHERE column_name='betrag' AND table_name='tbl_sachaufwand' AND table_schema='hr'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "
ALTER TABLE
hr.tbl_sachaufwand
ADD COLUMN
betrag numeric(9,2)
";
if (! $db->db_query($qry))
echo '<strong>Vertraege: ' . $db->db_last_error() . '</strong><br>';
else
echo 'Spalte betrag wurde in hr.tbl_sachaufwand neu erstellt<br>';
}
}
@@ -0,0 +1,13 @@
<?php
// Added Buchungstyp "StudiengebuehrErhoeht"
if ($result = @$db->db_query("SELECT 1 FROM public.tbl_buchungstyp WHERE buchungstyp_kurzbz = 'KautionDrittStaat';"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO public.tbl_buchungstyp (buchungstyp_kurzbz, beschreibung, standardtext, standardbetrag) VALUES ('KautionDrittStaat', 'Kaution', 'Deposit for application, third countries', '-250');";
if (!$db->db_query($qry))
echo '<strong>public.tbl_buchungstyp '.$db->db_last_error().'</strong><br>';
else
echo ' public.tbl_buchungstyp: Added buchungstyp "KautionDrittStaat" <br>';
}
}
+868 -7
View File
@@ -10227,13 +10227,13 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Der Plagiatscheck wurde durchgeführt und bestätigt, dass der zentrale Inhalt der Arbeit im erforderlichen Ausmaß eigenständig verfasst wurde (vgl. Satzungsteil Studienrechtliche Bestimmungen / Prüfungsordnung, § 18 Abs. 2 und 3).',
'text' => 'Der Plagiatscheck wurde durchgeführt und bestätigt, dass der zentrale Inhalt der Arbeit im erforderlichen Ausmaß eigenständig verfasst wurde (vgl. Satzungsteil Studienrechtliche Bestimmungen / Prüfungsordnung, § 20 Abs. 2 und 3).',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The plagiarism check has been carried out and confirms that the central content of the thesis has been written independently to the required extent (cf. part of the Statutes on Studies Act Provisions / Examination Regulations, § 18 Para. 2 and 3).',
'text' => 'The plagiarism check has been carried out and confirms that the central content of the thesis has been written independently to the required extent (cf. part of the Statutes on Studies Act Provisions / Examination Regulations, § 20 Para. 2 and 3).',
'description' => '',
'insertvon' => 'system'
)
@@ -35711,18 +35711,18 @@ array(
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'softwareanforderungSubtitle',
'phrase' => 'softwarebereitstellungSubtitle',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Softwareanforderung und Lizenzmanagement für die Lehre',
'text' => 'Softwarebereitstellung für die Lehre',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Software Request and License management for Education',
'text' => 'Software delivery for Education',
'description' => '',
'insertvon' => 'system'
)
@@ -38319,6 +38319,147 @@ array(
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'userAnzahl',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'User-Anzahl',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'User Number',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'userAnzahlAendern',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'User-Anzahl ändern',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Change User Number',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'userAnzahlNeu',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'User-Anzahl NEU',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'NEW User Number',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'standardLvTemplate',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Standard LV-Template',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Standard Course Template',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'anforderungNachStandardLvTemplate',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Anforderung nach Standard LV-Template',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Request by Standard Course Template',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'swAnforderungUeberAuswahlVonStandardisiertenLvTemplates',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Softwareanforderung über die Auswahl von standardisierten LV-Templates (Quellkurse)",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Software Requirements based on the Selection of Standardized Course-Templates",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'swFuerLvAnfordern',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Software für LV anfordern",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Request software for courses",
'description' => '',
'insertvon' => 'system'
)
)
),
// Betriebsmittel end
array(
'app' => 'core',
'category' => 'exam',
@@ -38558,7 +38699,7 @@ array(
'insertvon' => 'system'
)
)
),
),
array(
'app' => 'core',
'category' => 'betriebsmittel',
@@ -38578,7 +38719,7 @@ array(
'insertvon' => 'system'
)
)
),
),
array(
'app' => 'core',
'category' => 'betriebsmittel',
@@ -38620,6 +38761,166 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'errorConfigFehlt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Config-Eintrag fehlt",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Missing config entry",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'errorUnbekannteUrl',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Unbekannte URL. Seite bzw. Link kann nicht geöffnet werden.",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Unknown URL. Cannot open to site or link",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'zuordnungExistiertBereits',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Zuordnung existiert bereits.",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Assignment already exists.",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'swFuerLvAendern',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Software für LV ändern",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Change Software for courses",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'anforderungNachQuellkurs',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Anforderung nach Quellkurs',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Request by Course-Template',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'swAnforderungFuerQuellkurs',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Softwareanforderung für Quellkurse",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Software Requirements for Course-Templates",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'swAnforderungFuerEinzelneLvs',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Softwareanforderung für einzelne Lehrveranstaltungen",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Software Requirements for individual Courses",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'softwarebereitstellung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Softwarebereitstellung",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Software Delivery",
'description' => '',
'insertvon' => 'system'
)
)
),
// AMPELN PHRASEN -----------------------------------------------------------------------------
array(
'app' => 'core',
@@ -40874,6 +41175,566 @@ array(
)
),
// feature-55614 end
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'swAendern',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'SW ändern',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Change SW',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'quellkurs',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Quellkurs',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Source Course',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'softwareAbbestellt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Software wurde abbestellt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Software was cancelled',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'lizenzkategorie',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Lizenz-Kategorie',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'License category',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'lizenzkategorieKurzbz',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Lizenz-Kategorie Kurzbz',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'License category short',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'lizenzkategorie',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Lizenz-Kategorie',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'License category',
'description' => '',
'insertvon' => 'system'
)
)
),
// PROJEKTARBEITSBEURTEILUNG SS2025 PHRASEN ---------------------------------------------------------------------------
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'maxPunkte',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Max. Punkte',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Max. points',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'bewertung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Erfüllungsgrad (Prozent) zum Ausfüllen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Degree of Fulfilment (Percentage) to Fill In',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'details',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Details (angemessener und korrekter Einsatz von
Werkzeugen und Technologien in jedem Schritt)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Details
(appropriate and correct use of tools and technologies at each step)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'problemstellungZieldefinition',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Problemstellung und Zieldefinition',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Problem Definition and Objective Setting',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'problemstellungZieldefinitionText',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Problemstellung ist klar und präzise definiert und in einen wissenschaftlichen Kontext eingebettet.
Die Zielsetzung sowie eventuelle Messgrößen sind eindeutig formuliert.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The problem is clearly and precisely defined and embedded in a scientific context.
The objective, along with any potential metrics, is clearly formulated.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'methodikLoesungsansatz',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Methodik und Lösungsansatz',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Methodology and Approach',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'methodikLoesungsansatzText',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Das methodische Vorgehen ist logisch und nachvollziehbar strukturiert, passend zur Zielsetzung,
und die angewandten Methoden sind korrekt und fundiert umgesetzt.
Die Methodik ist fachspezifisch angemessen, literaturbasiert begründet und wissenschaftlich vertretbar.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The methodological approach is logically and comprehensively structured,
aligned with the objective, and the applied methods are implemented correctly and soundly.
The methodology is appropriate to the field, justified based on literature, and scientifically valid.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'ergebnisseDiskussion',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Ergebnisse und Diskussion',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Results and Discussion',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'ergebnisseDiskussionText',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Qualität der Lösung ist bezogen auf die Zielsetzung ausreichend.
Die Ergebnisse werden fundiert analysiert und in Bezug auf die Zielsetzung schlüssig interpretiert.
Die Diskussion reflektiert die Relevanz und Grenzen der Ergebnisse kritisch und ist logisch strukturiert.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The quality of the solution sufficiently meets the objective.
The results are thoroughly analyzed and coherently interpreted with respect to the objective.
The discussion critically reflects on the relevance and limitations of the results and is logically structured.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'strukturAufbau',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Struktur und Aufbau',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Structure and Organization',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'strukturAufbauText',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Arbeit folgt einer logischen, klaren Gliederung und einem konsistenten roten Faden.
Verzeichnisse, Grafiken, Tabellen und der Text sind gemäß den aktuell gültigen wissenschaftlichen Richtlinien der FH Technikum Wien aufbereitet.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The work follows a logical and clear outline with a consistent narrative thread.
Directories, graphics, tables, and text are prepared in accordance with the currently valid scientific guidelines of FH Technikum Wien.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'stilAusdruck',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Stil und Ausdruck',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Style and Expression',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'stilAusdruckText',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Der sprachliche Ausdruck ist präzise,
fachlich korrekt und erfüllt die Anforderungen an gendergerechte Sprache gemäß den geltenden Richtlinien der FH Technikum Wien.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The linguistic expression is precise, professionally accurate,
and meets the requirements of gender-sensitive language as per the applicable guidelines of FH Technikum Wien.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'zitierregelnQuellenangaben',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Zitierregeln und Quellenangaben',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Citation Rules and References',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'zitierregelnQuellenangabenText',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Umfang, Qualität und Aktualität der verarbeiteten Quellen sind angemessen
und repräsentieren den aktuellen Stand der Forschung zum Thema. Die Zitierregeln (IEEE oder Harvard) werden konsequent und korrekt angewendet.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The scope, quality, and timeliness of the sources processed are appropriate
and represent the current state of research on the topic. The prescribed citation rules are consistently and correctly applied.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'notenschluesselHinweisGewichtungEinzeln',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Jedes Kriterium muss mit mind. 50% bewertet werden, sonst ist die gesamte Arbeit negativ.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Each criterion must receive a minimum score of 50%; otherwise, the entire work is rated negatively.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'gesamtkommentar',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Gesamtkommentar',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Overall comment',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'gesamtkommentarVerpflichtend',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Gesamtkommentar verpflichtend auszufüllen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'An overall comment is mandatory and must be completed',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'eingabefeld',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Eingabefeld',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Input field',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'universitaetLogo',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Universitätslogo',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'University logo',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'textEingabefeldBewertung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Text-Eingabefeld zur Bewertung',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Text inut field for assessment',
'description' => '',
'insertvon' => 'system'
)
)
)
// PROJEKTARBEITSBEURTEILUNG SS2025 ENDE ---------------------------------------------------------------------------
);
+31 -5
View File
@@ -940,7 +940,7 @@ function GenerateXMLStudentBlock($row)
}
if($row->svnr!='' && $row->svnr!=null && substr($row->svnr,4,6)!=$row->vdat && substr($row->vdat,0,4)!='0101' && substr($row->vdat,0,4)!='0107')
{
$error_log_hinweis.=(!empty($error_log_hinweis)?', ':'')."SVNR ('".$row->svnr."') enth&auml;lt Geburtsdatum (".$datum_obj->formatDatum($row->gebdatum,'d.m.Y').") nicht";
$error_log_hinweis.=(!empty($error_log_hinweis)?', ':'')."SVNR ('".$row->svnr."') enth&auml;lt Geburtsdatum (".$datum_obj->formatDatum($row->gebdatum,'d.m.Y').") nicht (Nicht BIS-Relevant)";
}
if($row->ersatzkennzeichen!='' && $row->ersatzkennzeichen!=null && substr($row->ersatzkennzeichen,4,6)!=$row->vdat)
{
@@ -972,7 +972,7 @@ function GenerateXMLStudentBlock($row)
}
if($row->bpk == '' || $row->bpk == null)
{
$error_log_hinweis .= (!empty($error_log_hinweis) ? ', ' : '') . "bPK fehlt";
$error_log .= (!empty($error_log) ? ', ' : '') . "bPK fehlt";
}
if($row->bpk != '' && $row->bpk != null)
{
@@ -1300,6 +1300,12 @@ function GenerateXMLStudentBlock($row)
$gserror.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gemeinsame Studien - Partner Code ist leer\n";
if($rowgs->programm_code=='')
$gserror.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gemeinsame Studien - Programm ist leer\n";
// Check, wenn Staatsbuergerschft oder Geburtsnation nicht Ö, dann vermutlich Externer
if ($studtyp=='I' && (($row->staatsbuergerschaft != '' && $row->staatsbuergerschaft != 'A') || ($row->geburtsnation != '' && $row->geburtsnation != 'A')))
{
$error_log_hinweis .= (!empty($error_log_hinweis) ? ', ' : '') . "Hinweis: Person scheint aufgrund der Staatsbürgerschaft <b>externer Studierende*r</b> zu sein. Bitte prüfen und ggf. korrigieren.";
//$gserror .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Studierende*r scheint <b>externer Studierende*r</b> zu sein. Bitte prüfen und ggf. korrigieren.\n";
}
if($gserror!='')
{
@@ -1340,7 +1346,7 @@ function GenerateXMLStudentBlock($row)
}
if($row_ap->sponsion=='' || $row_ap->sponsion==null)
{
$error_log_hinweis.=(!empty($error_log_hinweis)?', ':'')."Datum der Sponsion ('".$row_ap->sponsion."')";
$error_log_hinweis.=(!empty($error_log_hinweis)?', ':'')."Datum der Sponsion ('".$row_ap->sponsion."') (Nicht BIS-Relevant)";
}
$ap++;
}
@@ -1354,6 +1360,26 @@ function GenerateXMLStudentBlock($row)
die("\nQry Failed:".$qry_ap);
}
}
//Wenn Beendigungsdatum VOR der Meldung und kein Absolvent vorhanden
if($aktstatus!='Absolvent' && !$gemeinsamestudien)
{
$qry_abs="SELECT * FROM lehre.tbl_abschlusspruefung WHERE student_uid=".$db->db_add_param($row->student_uid)."
AND abschlussbeurteilung_kurzbz!='nicht' AND abschlussbeurteilung_kurzbz IS NOT NULL
AND datum <= '".$bisdatum."'::date";
if($result_abs = $db->db_query($qry_abs))
{
while($row_abs = $db->db_fetch_object($result_abs))
{
$error_log.=(!empty($error_log)?', ':'')."Wenn das Abschlussdatum (".$datum_obj->formatDatum($row_abs->datum,'d.m.Y').") vor der BIS-Meldung liegt, muss ein Absolventenstatus vorhanden sein";
}
}
else
{
die("\nQry Failed:".$qry_abs);
}
}
if($orgform_code_array[$storgform]!=1) // Wenn nicht Vollzeit
{
if($row->berufstaetigkeit_code=='' || $row->berufstaetigkeit_code==null)
@@ -1420,7 +1446,7 @@ function GenerateXMLStudentBlock($row)
}
if($error_log_hinweis != '')
{
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: grey'>".$error_log_hinweis." (Nicht BIS-Relevant)</span>\n";
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: grey'>".$error_log_hinweis."</span>\n";
$error_log_hinweis = '';
}
$anzahl_fehler++;
@@ -1434,7 +1460,7 @@ function GenerateXMLStudentBlock($row)
if($error_log_hinweis != '')
{
$v.="<u>Bei Student (UID, Nachname, Vorname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($laststatus->status_kurzbz): </u>\n";
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: grey'>".$error_log_hinweis." (Nicht BIS-Relevant)</span>\n\n";
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: grey'>".$error_log_hinweis."</span>\n\n";
$error_log_hinweis = '';
}
+26
View File
@@ -1051,6 +1051,16 @@ function casDeletePrestudent($db, $prestudent_id, $trans=true)
}
}
/* Entries from testtool */
if(!$error)
{
$qry = 'DELETE FROM testtool.tbl_pruefling_frage WHERE pruefling_id=(SELECT pruefling_id FROM testtool.tbl_pruefling WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).');
DELETE FROM testtool.tbl_antwort WHERE pruefling_id=(SELECT pruefling_id FROM testtool.tbl_pruefling WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).');
DELETE FROM testtool.tbl_pruefling WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).';';
if(!$db->db_query($qry))
$error = true;
}
/*
* Delete the tbl_student entry
*/
@@ -1606,6 +1616,22 @@ function casDeletePerson($db, $person_id, $trans=true)
}
}
/* Entries from rt_person */
if(!$error)
{
$qry = 'DELETE FROM public.tbl_rt_person WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).';';
if(!$db->db_query($qry))
$error = true;
}
/* Entries from UHSTAT */
if(!$error)
{
$qry = 'DELETE FROM bis.tbl_uhstat1daten WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).';';
if(!$db->db_query($qry))
$error = true;
}
+37 -13
View File
@@ -41,18 +41,19 @@ $datum_obj = new datum();
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ampel - Details</title>
<link rel="stylesheet" href="../../skin/fhcomplete.css" type="text/css">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<link rel="stylesheet" href="../../vendor/fortawesome/font-awesome4/css/font-awesome.min.css">
<link rel="stylesheet" href="../../vendor/components/jqueryui/themes/base/jquery-ui.min.css">
<script type="text/javascript" src="../../vendor/components/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../vendor/twbs/bootstrap3/dist/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ampel - Details</title>
<link rel="stylesheet" href="../../skin/fhcomplete.css" type="text/css">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<link rel="stylesheet" href="../../vendor/fortawesome/font-awesome4/css/font-awesome.min.css">
<link rel="stylesheet" href="../../vendor/components/jqueryui/themes/base/jquery-ui.min.css">
<script type="text/javascript" src="../../vendor/components/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../vendor/twbs/bootstrap3/dist/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../include/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$( ".datepicker_datum" ).datepicker({
@@ -61,6 +62,29 @@ $datum_obj = new datum();
dateFormat: 'dd.mm.yy',
});
});
tinyMCE.init({
mode: 'specific_textareas',
editor_selector: "mceEditor",
theme: "advanced",
language: "de",
file_browser_callback: "FHCFileBrowser",
plugins: "spellchecker,pagebreak,style,layer,table,advhr,advimage,advlink,inlinepopups,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking",
// Theme options
theme_advanced_buttons1: "code, bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontsizeselect",
theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,image,cleanup,|,forecolor,backcolor",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,fullscreen",
//theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,|,forecolor,backcolor",
//theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,|,print,|,ltr,rtl,|,fullscreen",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "center",
theme_advanced_statusbar_location: "bottom",
theme_advanced_resizing: true,
force_br_newlines: true,
force_p_newlines: false,
forced_root_block: '',
editor_deselector: "mceNoEditor",
relative_urls: false
});
</script>
<style>
/*remove input type="date" arrows*/
@@ -232,7 +256,7 @@ $datum_obj = new datum();
echo '
<tr valign="top">
<td>'.$lang->sprache.'</td>
<td><textarea name="beschreibung'.$lang->sprache.'" cols="60" rows="5">'.htmlspecialchars((isset($ampel->beschreibung[$lang->sprache])?$ampel->beschreibung[$lang->sprache]:'')).'</textarea></td>
<td><textarea class="mceEditor" name="beschreibung'.$lang->sprache.'" cols="60" rows="5">'.htmlspecialchars((isset($ampel->beschreibung[$lang->sprache])?$ampel->beschreibung[$lang->sprache]:'')).'</textarea></td>
<td></td>
<td colspan="2"><input size="70" maxlength="64" name="buttontext'.$lang->sprache.'" value="'.htmlspecialchars((isset($ampel->buttontext[$lang->sprache])?$ampel->buttontext[$lang->sprache]:'')).'"></td>
</tr>';
+16 -2
View File
@@ -1220,6 +1220,7 @@ $reihungstest = isset($_REQUEST['reihungstest']) ? $_REQUEST['reihungstest'] : '
$studiengang = isset($_REQUEST['studiengang']) ? $_REQUEST['studiengang'] : '';
$semester = isset($_REQUEST['semester']) ? $_REQUEST['semester'] : '';
$prestudent_id = isset($_REQUEST['prestudent_id']) ? $_REQUEST['prestudent_id'] : '';
$prestudent_ids = isset($_REQUEST['prestudent_ids']) ? $_REQUEST['prestudent_ids'] : '';
$orgform_kurzbz = isset($_REQUEST['orgform_kurzbz']) ? $_REQUEST['orgform_kurzbz'] : '';
$format = (isset($_REQUEST['format']) ? $_REQUEST['format'] : '');
$stgtyp = (isset($_REQUEST['stgtyp']) ? $_REQUEST['stgtyp'] : '');
@@ -1259,7 +1260,7 @@ if ($prestudent_id != '' && !is_numeric($prestudent_id))
{
die('PrestudentID ist ungueltig');
}
if (isset($_POST['rtauswsubmit']) && $reihungstest == '' && $studiengang == '' && $semester == '' && $prestudent_id == '' && $datum_von == '' && $datum_bis == '')
if (isset($_POST['rtauswsubmit']) && $reihungstest == '' && $studiengang == '' && $semester == '' && $prestudent_id == '' && $datum_von == '' && $datum_bis == '' && $prestudent_ids == '')
{
die('Waehlen Sie bitte mindestens eine der Optionen aus');
}
@@ -1378,6 +1379,10 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
{
$query .= " AND ps.prestudent_id=" . $db->db_add_param($prestudent_id, FHC_INTEGER);
}
if ($prestudent_ids != '')
{
$query .= " AND ps.prestudent_id IN (" .$db->db_implode4SQL(explode(',', $prestudent_ids)) . ")";
}
if ($orgform_kurzbz != '' && $studiengang != '')
{
$query .= " AND (tbl_ablauf.studienplan_id=(
@@ -1611,6 +1616,10 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
{
$query .= " AND ps.prestudent_id=" . $db->db_add_param($prestudent_id, FHC_INTEGER);
}
if ($prestudent_ids != '')
{
$query .= " AND ps.prestudent_id IN (" .$db->db_implode4SQL(explode(',',$prestudent_ids)) . ")";
}
if ($orgform_kurzbz != '')
{
//$query .= " AND tbl_prestudentstatus.orgform_kurzbz=" . $db->db_add_param($orgform_kurzbz);
@@ -2891,7 +2900,7 @@ else
$selectedrtstr = '';
$checkbxstr = '';
$first = true;
$noparamsselected = $prestudent_id == '' && $reihungstest == '' && $datum_von == '' && $datum_bis == '' && $studiengang == '' && $semester == '';
$noparamsselected = $prestudent_id == '' && $reihungstest == '' && $datum_von == '' && $datum_bis == '' && $studiengang == '' && $semester == '' && $prestudent_ids == '';
//$maxeachline = 1;
foreach ($rtest as $rt)
{
@@ -3007,6 +3016,9 @@ else
echo '</td></tr>';
echo '<tr><td>';
echo 'PrestudentIn: <INPUT id="prestudent" type="text" name="prestudent_id" size="50" value="' . $prestudent_id . '" placeholder="Name, UID oder Prestudent_id eingeben"/><input type="hidden" id="prestudent_id" name="prestudent_id" value="' . $prestudent_id . '" />';
echo '</td></tr>';
echo '<tr><td>';
echo 'PrestudentIn (Mehrfachauswahl): <input name="prestudent_ids" disabled type="text" size="50" value="' . $prestudent_ids . '"/><input type="hidden" id="prestudent_ids" name="prestudent_ids" value="' . $prestudent_ids . '" />';
echo '</td></tr>
</table></td><td id="auswertencell">';
echo '<INPUT type="submit" class="btn btn-primary" value="Anzeigen" name="rtauswsubmit" id="auswertenButton"/><br><br>';
@@ -3015,6 +3027,7 @@ else
&datum_von=' . $datum_von . '
&datum_bis=' . $datum_bis . '
&prestudent_id=' . $prestudent_id . '
&' . http_build_query(array('prestudent_ids' => $prestudent_ids)) . '
&' . http_build_query(array('reihungstest' => $reihungstest)) . '
&orgform_kurzbz=' . $orgform_kurzbz . '
&stgtyp=' . $stgtyp . '
@@ -3068,6 +3081,7 @@ else
datum_von=' . $datum_von . '&
datum_bis=' . $datum_bis . '&
prestudent_id=' . $prestudent_id . '&
&' . http_build_query(array('prestudent_ids' => $prestudent_ids)) . '
&' . http_build_query(array('reihungstest' => $reihungstest)) . '">
<div class="row">';
echo '<div class="col-xs-12" id="miscfunctionscol">';