Compare commits

...

4 Commits

Author SHA1 Message Date
Harald Bamberger 45eca862ac use table alias 2026-05-19 16:17:14 +02:00
Harald Bamberger 3533a3fd4b add missing comma 2026-05-19 16:11:08 +02:00
Harald Bamberger bd47ad2b8c Merge branch 'master' into feature-69187/CIS_MA_Pruefungsprotokolle 2026-04-20 09:48:34 +02:00
Alexei Karpenko d9c7df736c Pruefungsprotokolle: added cis header/footer switch, added language in form 2025-11-14 11:01:11 +01:00
6 changed files with 110 additions and 41 deletions
@@ -215,8 +215,11 @@ class Pruefungsprotokoll extends Auth_Controller
if (hasData($abschlusspruefung))
{
$abschlusspruefung_data = getData($abschlusspruefung);
if ($this->permissionlib->isBerechtigt('admin') ||
(isset($abschlusspruefung_data->studiengang_kz) && $this->permissionlib->isBerechtigt('assistenz', 'suid', $abschlusspruefung_data->studiengang_kz))
if ($this->permissionlib->isBerechtigt('admin')
|| (
isset($abschlusspruefung_data->studiengang_kz)
&& $this->permissionlib->isBerechtigt('assistenz', 'suid', $abschlusspruefung_data->studiengang_kz)
)
|| $this->_uid === $abschlusspruefung_data->uid_vorsitz)
$result = $abschlusspruefung;
else
@@ -100,12 +100,14 @@ class Abschlusspruefung_model extends DB_Model
if (isError($abschlussarbeit))
return $abschlussarbeit;
if (hasData($abschlussarbeit))
{
$abschlussarbeit = getData($abschlussarbeit)[0];
$abschlusspruefungdata->projektarbeit_studiengangstyp_name = $abschlussarbeit->projekttyp_kurzbz;
$abschlusspruefungdata->abschlussarbeit_titel = $abschlussarbeit->titel;
$abschlusspruefungdata->abschlussarbeit_note = $abschlussarbeit->note;
$abschlusspruefungdata->abschlussarbeit_sprache = $abschlussarbeit->sprache_bezeichnung;
}
}
}
@@ -23,9 +23,11 @@ class Projektarbeit_model extends DB_Model
*/
public function getProjektarbeit($student_uid, $studiengang_kz = null, $studiensemester_kurzbz = null, $projekttyp = null, $final = null)
{
$sprache_index = "COALESCE((SELECT index FROM public.tbl_sprache WHERE sprache=" . $this->escape(getUserLanguage()) . " LIMIT 1), 1)";
$qry = "SELECT
pa.*, tbl_projekttyp.bezeichnung,
tbl_lehreinheit.studiensemester_kurzbz, tbl_lehrveranstaltung.lehrveranstaltung_id,
tbl_sprache.bezeichnung[".$sprache_index."] AS sprache_bezeichnung,
tbl_firma.name AS firma_name,
(
SELECT
@@ -44,6 +46,7 @@ class Projektarbeit_model extends DB_Model
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
LEFT JOIN public.tbl_firma USING (firma_id)
LEFT JOIN public.tbl_sprache ON pa.sprache = tbl_sprache.sprache
WHERE
pa.student_uid = ?";
+36 -25
View File
@@ -9,22 +9,8 @@ $sitesettings = array(
'ajaxlib' => true,
'sbadmintemplate3' => true,
'phrases' => array(
'abschlusspruefung' => array(
'freigegebenAm',
'pruefungGespeichert',
'pruefungSpeichernFehler',
'abschlussbeurteilungLeer',
'beginnzeitLeer',
'beginnzeitFormatError',
'endezeitLeer',
'endezeitFormatError',
'endezeitBeforeError',
'verfNotice'
),
'ui' => array(
'stunde',
'minute'
)
'abschlusspruefung',
'ui'
),
'customCSSs' => array(
'public/css/sbadmin2/admintemplate_contentonly.css',
@@ -37,10 +23,18 @@ $sitesettings = array(
)
);
$this->load->view(
'templates/FHC-Header',
$sitesettings
);
if(defined('CIS4')){
$this->load->view(
'templates/CISVUE-Header',
$sitesettings
);
}else{
$this->load->view(
'templates/FHC-Header',
$sitesettings
);
}
?>
<div id="wrapper">
<div id="page-wrapper">
@@ -161,6 +155,14 @@ $this->load->view(
<?php echo ($abschlusspruefung->studiengangstyp == 'Bachelor' ? $this->p->t('abschlusspruefung', 'pruefungsgegenstandBachelor') : $this->p->t('abschlusspruefung', 'pruefungsgegenstandMaster')) ?>
</td>
</tr>
<tr>
<td>
<?php echo $this->p->t('abschlusspruefung', 'spracheDerArbeit') ?>&nbsp;<?php echo $arbeit_name ?>
</td>
<td colspan="5">
<?php echo $abschlusspruefung->abschlussarbeit_sprache ?? '' ?>
</td>
</tr>
<tr>
<td colspan="6">
<?php echo ucfirst($this->p->t('global', 'notizen')); ?>
@@ -201,7 +203,9 @@ $this->load->view(
<div class="col-lg-12 text-right">
<p>
<?php $freigegeben = isset($abschlusspruefung->freigabedatum); ?>
<button id="saveProtocolBtn" class="btn btn-default"<?php echo $freigegeben ? " disabled" : "" ?>><?php echo $this->p->t('ui', 'speichern') ?></button>
<button id="saveProtocolBtn" class="btn btn-default"<?php echo $freigegeben ? ' disabled title="'.$this->p->t('abschlusspruefung', 'bereitsFreigegeben').'"' : '' ?>>
<?php echo $this->p->t('ui', 'speichern') ?>
</button>
</p>
</div>
</div>
@@ -236,7 +240,14 @@ $this->load->view(
</div>
</div>
<?php
$this->load->view(
'templates/FHC-Footer',
$sitesettings
);
if (defined('CIS4')) {
$this->load->view(
'templates/CISVUE-Footer',
$sitesettings
);
} else {
$this->load->view(
'templates/FHC-Footer',
$sitesettings
);
}
+22 -14
View File
@@ -11,11 +11,6 @@ $("document").ready(function() {
$("#saveProtocolBtn, #freigebenProtocolBtn").click(
function() {
var freigebendata = {
freigeben: false,
password: null
}
var data = {
abschlussbeurteilung_kurzbz: $("#abschlussbeurteilung_kurzbz").val(),
protokoll: $("#protokoll").val(),
@@ -25,11 +20,16 @@ $("document").ready(function() {
if ($(this).prop("id") === 'freigebenProtocolBtn')
{
freigebendata.freigeben = true;
freigebendata.password = $("#password").val();
Pruefungsprotokoll.freigebendata.freigeben = true;
Pruefungsprotokoll.freigebendata.password = $("#password").val();
}
else
{
Pruefungsprotokoll.freigebendata.freigeben = false;
Pruefungsprotokoll.freigebendata.password = null;
}
var checkFields = Pruefungsprotokoll.checkFields(data, freigebendata, $("#verfCheck").prop('checked'));
var checkFields = Pruefungsprotokoll.checkFields(data, $("#verfCheck").prop('checked'));
$("#protocolform td").removeClass('has-error');
if (checkFields.length > 0)
{
@@ -50,7 +50,7 @@ $("document").ready(function() {
return;
}
Pruefungsprotokoll.saveProtokoll($("#abschlusspruefung_id").val(), freigebendata, data);
Pruefungsprotokoll.saveProtokoll($("#abschlusspruefung_id").val(), data);
}
)
@@ -71,6 +71,10 @@ $("document").ready(function() {
var Pruefungsprotokoll = {
abschlussbeurteilung_kurzbz: '',
freigebendata: {
freigeben: false,
password: null
},
checkVerfassung: function()
{
// if student not mentally and physically fit (checkbox), no grade can be set
@@ -85,11 +89,11 @@ var Pruefungsprotokoll = {
$("#verfNotice").html(FHC_PhrasesLib.t("abschlusspruefung", "verfNotice"));
}
},
checkFields: function(data, freigebendata, verfChecked)
checkFields: function(data, verfChecked)
{
var errors = [];
if (data.abschlussbeurteilung_kurzbz == "" && freigebendata.freigeben === true && verfChecked)
if (data.abschlussbeurteilung_kurzbz == "" && Pruefungsprotokoll.freigebendata.freigeben === true && verfChecked)
errors.push({"abschlussbeurteilung_kurzbz": FHC_PhrasesLib.t("abschlusspruefung", "abschlussbeurteilungLeer")});
var zeitregex = /^[0-2][0-9]:[0-5][0-9]$/;
@@ -115,15 +119,19 @@ var Pruefungsprotokoll = {
return errors;
},
setSaveButtonDisabled: function()
{
$("#saveProtocolBtn").prop("disabled", true).prop("title", FHC_PhrasesLib.t("abschlusspruefung", "bereitsFreigegeben"));
},
// ajax calls
// -----------------------------------------------------------------------------------------------------------------
saveProtokoll: function(abschlusspruefung_id, freigeben, data)
saveProtokoll: function(abschlusspruefung_id, data)
{
FHC_AjaxClient.ajaxCallPost(
CALLED_PATH + '/saveProtokoll',
{
abschlusspruefung_id: abschlusspruefung_id,
freigebendata: freigeben,
freigebendata: Pruefungsprotokoll.freigebendata,
protocoldata: data
},
{
@@ -133,7 +141,7 @@ var Pruefungsprotokoll = {
var dataresponse = FHC_AjaxClient.getData(data);
if (dataresponse.freigabedatum)
{
$("#saveProtocolBtn").prop("disabled", true);
Pruefungsprotokoll.setSaveButtonDisabled();
$("#freigegebenText").html('&nbsp;&nbsp;' + FHC_PhrasesLib.t("abschlusspruefung", "freigegebenAm") +
'&nbsp;' + dataresponse.freigabedatum)
}
+42
View File
@@ -58177,6 +58177,48 @@ I have been informed that I am under no obligation to consent to the transmissio
)
),
// ### Phrases Dashboard Admin END
//**************************** Pruefungsprotokolle start
array(
'app' => 'core',
'category' => 'abschlusspruefung',
'phrase' => 'bereitsFreigegeben',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Protokoll ist bereits freigegeben',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Record of examination already approved',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'abschlusspruefung',
'phrase' => 'spracheDerArbeit',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Sprache der',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Language of',
'description' => '',
'insertvon' => 'system'
)
)
),
//**************************** Pruefungsprotokolle end
);