Merge branch 'epic-56039/LV-Evaluierung' into demo

This commit is contained in:
Andreas Österreicher
2025-12-18 13:46:11 +01:00
7 changed files with 627 additions and 9 deletions
@@ -801,4 +801,73 @@ class Studiengang_model extends DB_Model
return $this->execReadOnlyQuery($qry, array($studiengang_kz, $orgform_kurzbz, $studiensemester_kurzbz));
}
/**
* Get active Studiengänge with Kuerzel by given Studiengang-Kennzahlen.
* Helpful to easily get Studiengänge the user is entitled for.
*
* @param $studiengang_kz_arr
* @param $studiensemester_kurzbz
* @return array|stdClass|null Returns one row per Studiengang. Not considering the Orgforms.
*/
public function getByStgs($studiengang_kz_arr, $studiensemester_kurzbz)
{
if (is_numeric($studiengang_kz_arr))
{
$studiengang_kz_arr = [$studiengang_kz_arr];
}
$qry = '
SELECT
DISTINCT stg.*, UPPER(typ::varchar(1) || kurzbz) AS kuerzel
FROM
public.tbl_studiengang stg
JOIN lehre.tbl_studienordnung sto USING(studiengang_kz)
JOIN lehre.tbl_studienplan stpl USING(studienordnung_id)
JOIN lehre.tbl_studienplan_semester stplsem USING(studienplan_id)
WHERE
stg.studiengang_kz IN ?
AND stplsem.studiensemester_kurzbz = ?
ORDER BY
stg.kurzbzlang
';
return $this->execQuery($qry, [$studiengang_kz_arr, $studiensemester_kurzbz]);
}
/**
* Get OrgForms of given Studiengang and Studiensemester.
*
* @param $studiengang_kz
* @param $studiensemester_kurzbz
* @return array|stdClass|null
*/
public function getOrgformsByStg($studiengang_kz, $studiensemester_kurzbz)
{
$qry = '
SELECT
stpl.orgform_kurzbz
FROM
public.tbl_studiengang stg
JOIN lehre.tbl_studienordnung sto USING(studiengang_kz)
JOIN lehre.tbl_studienplan stpl USING(studienordnung_id)
JOIN lehre.tbl_studienplan_semester stplsem USING(studienplan_id)
WHERE
stg.studiengang_kz = ?
AND stg.aktiv = TRUE
AND stplsem.studiensemester_kurzbz = ?
GROUP BY
stpl.orgform_kurzbz
ORDER BY
CASE stpl.orgform_kurzbz
WHEN \'VZ\' THEN 1
WHEN \'BB\' THEN 2
WHEN \'DUA\' THEN 3
ELSE 4
END,
stpl.orgform_kurzbz;
';
return $this->execQuery($qry, [$studiengang_kz, $studiensemester_kurzbz]);
}
}
+5 -1
View File
@@ -27,12 +27,16 @@ define('CIS_LEHRVERANSTALTUNG_SEMESTERINFO_ANZEIGEN',true);
define('CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN',false);
define('CIS_LEHRVERANSTALTUNG_GESAMTNOTE_ANZEIGEN', true);
define('CIS_LEHRVERANSTALTUNG_ANRECHNUNG_ANZEIGEN', true);
define('CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN', true);
define('CIS_EVALUIERUNG_ANZEIGEN_STG', true);
define('CIS_LEHRVERANSTALTUNG_EVALUIERUNG_ANZEIGEN', true);
// Wenn gesetzt, werden die Digitale Anwesenheit-Icons nur fuer diese Studiengaenge angezeigt, sonst für alle
// define('CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN_STG', serialize(array('257')));
// define('CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN_LVA', serialize(array('39455','39481','39480','41906','41905','41904','39459','39512','39454','39482','42230','42231','39458','41921','41922','39457','42896')));
// Wenn gesetzt, werden die LV-Evaluierung-Icons nur für diese Studiengaenge angezeigt, sonst alle
define('CIS_EVALUIERUNG_ANZEIGEN_STG', serialize((array('335', '585', '914', '298')))); // BIW, MAI, BUB, MIO
// Im CIS Menue Links bei Modulen anzeigen wenn Lehrauftrag
define('CIS_LEHRVERANSTALTUNG_MODULE_LINK',true);
+21
View File
@@ -500,6 +500,27 @@ if((!defined('CIS_LEHRVERANSTALTUNG_ANRECHNUNG_ANZEIGEN') || CIS_LEHRVERANSTALTU
);
}
// LV-Evaluierung NEU
if(defined('CIS_EVALUIERUNG_ANZEIGEN_STG')
&& CIS_EVALUIERUNG_ANZEIGEN_STG
&& $angemeldet
&& (!defined('CIS_EVALUIERUNG_ANZEIGEN_STG') || in_array($lv->studiengang_kz, unserialize(CIS_EVALUIERUNG_ANZEIGEN_STG)))
&& ($rechte->isBerechtigt('extension/lvevaluierung_init')))
{
$text='(Pilotphase)';
$link= APP_ROOT. 'index.ci.php/extensions/FHC-Core-Evaluierung/Initiierung?lehrveranstaltung_id='. urlencode($lv->lehrveranstaltung_id).'&studiensemester_kurzbz='.urlencode($angezeigtes_stsem);
$menu[]=array
(
'id'=>'extension_lvevaluierung_menu_initiierung',
'position'=>'140',
'name'=>$p->t('lvevaluierung/lvevaluierung'). ' - '. strtoupper($p->t('global/neu')),
'icon'=>'../../../skin/images/button_lvevaluierung.png',
'link'=> $link,
'text'=>$text
);
}
//************* Menuepunkte anzeigen ****************
-6
View File
@@ -8,12 +8,6 @@ export const FhcChart = {
},
template: `
<div style="width:100%;height:100%;overflow:auto">
<div role="group" aria-label="Chart Modus">
<Button :class="(chartOptions.chart.type === 'pie' ? 'active ' : '') + 'btn btn-outline-secondary'" style="width: 48px;" @click="chartOptions.chart.type='pie'"><i class="fa-solid fa-chart-pie"></i></Button>
<Button :class="(chartOptions.chart.type === 'bar' ? 'active ' : '') + 'btn btn-outline-secondary'" style="width: 48px;" @click="chartOptions.chart.type='bar'"><i class="fa-solid fa-chart-bar"></i></Button>
<Button :class="(chartOptions.chart.type === 'column' ? 'active ' : '') + 'btn btn-outline-secondary'" style="width: 48px;" @click="chartOptions.chart.type='column'"><i class="fa-solid fa-chart-simple"></i></Button>
<Button :class="(chartOptions.chart.type === 'line' ? 'active ' : '') + 'btn btn-outline-secondary'" style="width: 48px;" @click="chartOptions.chart.type='line'"><i class="fa-solid fa-chart-line"></i></Button>
</div>
<figure>
<highcharts class="chart" :options="chartOptions"></highcharts>
</figure>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

+1
View File
@@ -87,6 +87,7 @@ require_once('dbupdate_3.4/66982_berufsschule.php');
require_once('dbupdate_3.4/62063_lv_evaluierung.php');
require_once('dbupdate_3.4/40314_electronic_onboarding_anbindung_ida.php');
require_once('dbupdate_3.4/47972_pruefungsverwaltung_ects_angabe.php');
require_once('dbupdate_3.4/62063_lv_evaluierung.php');
require_once('dbupdate_3.4/67490_studstatus_suche_abort_controller_haengt.php');
require_once('dbupdate_3.4/69065_Projektarbeiten_Firmen_verwalten.php');
require_once('dbupdate_3.4/68744_StV_settings.php');
+531 -2
View File
@@ -13757,13 +13757,13 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'LektorInnen',
'text' => 'Lehrende',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Lectors',
'text' => 'Lecturers',
'description' => '',
'insertvon' => 'system'
)
@@ -53782,6 +53782,535 @@ I have been informed that I am under no obligation to consent to the transmissio
)
)
),
// LVEVALUIERUNG ---------------------------------------------------------------------------------------------------
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'abschicken',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Abschicken',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Submit',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'zurueckZumStart',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Zurück zum Start',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Back to Start',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'global',
'phrase' => 'lvevaluierungAbschicken',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'LV-Evaluierung abschicken',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Submit Course Evaluation',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'global',
'phrase' => 'lvevaluierung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'LV-Evaluierung',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Course Evaluation',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'loginTextCodeEingeben',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Bitte geben Sie Ihren Code ein, um die Evaluierung zu starten:',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Please enter your code to start the evaluation:',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'loginCodeEingeben',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Evaluierung-Code eingeben',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Enter your Evaluation-Code',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'loginTextLvevaluierung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => '
<div class="text-start mb-3">
<p>Die folgende LV-Evaluierung umfasst</p>
</div>
<ul class="text-start small">
<li>zwei (geschlossene) Pflichtfragen</li>
<li>die Möglichkeit, optional zu einzelnen Bereichen konkreteres Feedback zu geben</li>
<li>zwei optionale Freitextfragen</li>
</ul>
',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => '
<div class="text-start mb-3">
<p>The following course evaluation includes</p>
</div>
<ul class="text-start small">
<li>two (closed) mandatory questions</li>
<li>the opportunity to optionally provide more specific feedback on individual areas</li>
<li>two optional free-text questions</li>
</ul>
',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'loginTextAntwortoptionen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => '
<div class="text-start mb-3">
<p>Die Antwortoptionen umfassen 5 Stufen:</p>
</div>
<ul class="text-start small">
<li>Sehr gut</li>
<li>Gut</li>
<li>Mittel</li>
<li>Schlecht</li>
<li>Sehr schlecht</li>
</ul>
',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => '
<div class="text-start mb-3">
<p>The answer options comprise 5 levels:</p>
</div>
<ul class="text-start small">
<li>Excellent</li>
<li>Good</li>
<li>Satisfactory</li>
<li>Poor</li>
<li>Insufficient</li>
</ul>
',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'evaluierungPeriodeBeendet',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Der Evaluierungszeitraum endete am {date}',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Evaluation period was closed on {date}',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'evaluierungPeriodeStartetErst',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Der Evaluierungszeitraum startet erst am {date}',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Evaluation period starts on {date}',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'evaluierungEingereicht',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Evaluierung wurde am {date} eingereicht',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Evaluation was submitted on {date}',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'evaluierungNichtMehrVerfuegbar',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Diese Evaluierung ist nicht mehr verfügbar.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'This evaluation is no longer available.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'evaluierungNichtVerfuegbar',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Diese Evaluierung ist nicht verfügbar.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'This evaluation is not available yet.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'logoutTitle',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Danke!<br>Was passiert nun mit Ihrem Feedback?',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Thank you!<br>What happens to your feedback now?',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'logoutText',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => '
<p>Danke, dass Sie sich Zeit für das Feedback genommen haben! Ihre ehrliche und konstruktive Rückmeldung ist essenziell, damit Ihre Lehrenden und Ihre Studiengangsleitung die Lehrveranstaltung immer weiter verbessern und anpassen können!</p>
<p>Und was passiert jetzt mit Ihrem Feedback? Die Studiengangsleitung wird die Ergebnisse &amp; Maßnahmen zusammen mit Ihrer Jahrgangsvertretung besprechen. So tragen Sie aktiv dazu bei, die Lehrveranstaltung für zukünftige Semester noch spannender &amp; lehrreicher zu machen!</p>
<p>Gemeinsam für mehr Qualität in der Lehre!</p>
',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => '
<p>Thank you for taking the time to provide feedback! Your honest and constructive input is essential for your lecturers and degree program director to continuously improve and adapt the course.</p>
<p>What happens with your feedback? The degree program director will discuss the results and potential measures together with your academic year representatives. You have thus actively contributed to making the course even more engaging and educational for future semesters!</p>
<p>Working together for higher quality in teaching!</p>
',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'evaluierungZeitAbgelaufen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Evaluierungszeit ist abgelaufen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The Evaluation time is over',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'evaluierungAntwortenNichtUebermittelt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Ihre Antworten wurden nicht übermittelt.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Your responses were not submitted.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'evaluierungCodeExistiertNicht',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Dieser Evaluierungscode exisitiert nicht',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'This evaluation code does not exist',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'evaluierungNichtAktiv',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Evaluierung ist nicht aktiv',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Evaluation is not active',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'zeitLaeuftAb',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Zeit läuft bald ab zum Speichern bitte Abschicken klicken',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Time is running out — please click Submit to save your answers',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'spracheAuswaehlen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Sprache auswählen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Select language',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'fhtwLogo',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'FH Technikum Wien Logo',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'UAS Technikum Wien Logo',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'evaluierungscodeEingeben',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Evaluierungscode eingeben',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Enter Evaluation code',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'lvevaluierung',
'category' => 'fragebogen',
'phrase' => 'fragebogen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Fragebogen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Questionnaire',
'description' => '',
'insertvon' => 'system'
)
)
),
// ### DOKUMENTE ERSTELLEN PHRASEN END ###
// ### Personen zusammenlegen Phrasen BEGIN
array(