mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-10-28 14:53:01 +00:00
infocenter new column for karrierepfade; added a new karrierepfade dropdown into the zgv panel to be shown/edited; udf widget save button now says "zusatzfelder speichern" and only shows if the widget actually has editable udfs;
This commit is contained in:
@@ -53,6 +53,12 @@ class InfoCenter extends Auth_Controller
|
||||
'message' => 'ZGV saved for degree program %s, prestudentid %s',
|
||||
'success' => null
|
||||
),
|
||||
'savekarrierepfad' => array(
|
||||
'logtype' => 'Action',
|
||||
'name' => 'Karrierepfad changed',
|
||||
'message' => 'Karrierepfad of prestudentid %s changed from %s to %s',
|
||||
'success' => null
|
||||
),
|
||||
'abgewiesen' => array(
|
||||
'logtype' => 'Processstate',
|
||||
'name' => 'Interessent rejected',
|
||||
@@ -162,6 +168,7 @@ class InfoCenter extends Auth_Controller
|
||||
$this->load->model('crm/Dokument_model', 'DokumentModel');
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
$this->load->model('crm/Karrierepfad_model', 'KarrierepfadModel');
|
||||
$this->load->model('crm/Statusgrund_model', 'StatusgrundModel');
|
||||
$this->load->model('crm/ZGVPruefung_model', 'ZGVPruefungModel');
|
||||
$this->load->model('crm/ZGVPruefungStatus_model', 'ZGVPruefungStatusModel');
|
||||
@@ -545,7 +552,8 @@ class InfoCenter extends Auth_Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves a ZGV for a prestudent, includes Ort, Datum, Nation for bachelor and master
|
||||
* Saves a ZGV for a prestudent, includes Ort, Datum, Nation for bachelor and master.
|
||||
* Also saves the Karrierepfad, if the panel has the select.
|
||||
*/
|
||||
public function saveZgvPruefung()
|
||||
{
|
||||
@@ -570,6 +578,21 @@ class InfoCenter extends Auth_Controller
|
||||
$prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent_id);
|
||||
$prestudentdata = getData($prestudent);
|
||||
|
||||
// Only the select of an editable panel posts karrierepfad_id
|
||||
// Rule: empty, or aktiv and linked to the Studienplan of the last status
|
||||
$karrierepfad_id = $this->input->post('karrierepfad_id') === '' ? null : $this->input->post('karrierepfad_id');
|
||||
$karrierepfadChanged = $this->input->post('karrierepfad_id') !== null && $karrierepfad_id != $prestudentdata->karrierepfad_id;
|
||||
$karrierepfadSelectable = true;
|
||||
|
||||
if ($karrierepfadChanged && $karrierepfad_id !== null)
|
||||
{
|
||||
$karrierepfade = isset($prestudentdata->prestudentstatus->studienplan_id) ?
|
||||
$this->KarrierepfadModel->getByStudienplan($prestudentdata->prestudentstatus->studienplan_id) :
|
||||
null;
|
||||
$karrierepfadSelectable = hasData($karrierepfade)
|
||||
&& in_array($karrierepfad_id, array_column(getData($karrierepfade), 'karrierepfad_id'));
|
||||
}
|
||||
|
||||
if ($prestudentdata->studiengangtyp === 'm')
|
||||
{
|
||||
// zgvmasterdata
|
||||
@@ -614,6 +637,9 @@ class InfoCenter extends Auth_Controller
|
||||
$updateArray = array_merge($updateArray, $updateMasterArray);
|
||||
}
|
||||
|
||||
if ($karrierepfadChanged && $karrierepfadSelectable)
|
||||
$updateArray['karrierepfad_id'] = $karrierepfad_id;
|
||||
|
||||
$prestresult = $this->PrestudentModel->update(
|
||||
$prestudent_id,
|
||||
$updateArray
|
||||
@@ -623,6 +649,8 @@ class InfoCenter extends Auth_Controller
|
||||
$json = error('Error when updating Prestudent!');
|
||||
elseif (isError($semresult))
|
||||
$json = error('Error when updating Ausbildungssemester!');
|
||||
elseif (!$karrierepfadSelectable)
|
||||
$json = error('Karrierepfad is not selectable for the Studienplan');
|
||||
else
|
||||
$json = success('Zgv saved successfully!');
|
||||
|
||||
@@ -632,6 +660,19 @@ class InfoCenter extends Auth_Controller
|
||||
$logdata = $this->_getPersonAndStudiengangFromPrestudent($prestudent_id);
|
||||
|
||||
$this->_log($logdata['person_id'], 'savezgv', array($logdata['studiengang_kurzbz'], $prestudent_id));
|
||||
|
||||
if ($karrierepfadChanged && $karrierepfadSelectable && isSuccess($prestresult))
|
||||
{
|
||||
$this->_log(
|
||||
$logdata['person_id'],
|
||||
'savekarrierepfad',
|
||||
array(
|
||||
$prestudent_id,
|
||||
$this->_getKarrierepfadBezeichnung($prestudentdata->karrierepfad_id),
|
||||
$this->_getKarrierepfadBezeichnung($karrierepfad_id)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2099,6 +2140,14 @@ class InfoCenter extends Auth_Controller
|
||||
|
||||
$zgvpruefung = getData($prestudentWithZgv);
|
||||
|
||||
// Karrierepfad: the stored one, and the selectable ones of the Studienplan of the last status
|
||||
$karrierepfad = isset($zgvpruefung->karrierepfad_id) ? getData($this->KarrierepfadModel->load($zgvpruefung->karrierepfad_id)) : null;
|
||||
$zgvpruefung->karrierepfad = isset($karrierepfad[0]) ? $karrierepfad[0] : null;
|
||||
$karrierepfade = isset($zgvpruefung->prestudentstatus->studienplan_id) ?
|
||||
$this->KarrierepfadModel->getByStudienplan($zgvpruefung->prestudentstatus->studienplan_id) :
|
||||
null;
|
||||
$zgvpruefung->karrierepfade = hasData($karrierepfade) ? getData($karrierepfade) : array();
|
||||
|
||||
if (isset($zgvpruefung->prestudentstatus))
|
||||
{
|
||||
//get orgform for german and english
|
||||
@@ -2348,6 +2397,21 @@ class InfoCenter extends Auth_Controller
|
||||
return array('person_id' => $person_id, 'studiengang_kurzbz' => $studiengang_kurzbz, 'studiengang_bezeichnung' => $studiengang_bezeichnung, 'studiengang_mail' => $studiengang_mail, 'studiengang_typ' => $studiengang_typ);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function retrieves the German Bezeichnung of a Karrierepfad for the log
|
||||
* @param $karrierepfad_id
|
||||
* @return string 'none' if no Karrierepfad
|
||||
*/
|
||||
private function _getKarrierepfadBezeichnung($karrierepfad_id)
|
||||
{
|
||||
if ($karrierepfad_id === null)
|
||||
return 'none';
|
||||
|
||||
$karrierepfad = getData($this->KarrierepfadModel->load($karrierepfad_id));
|
||||
|
||||
return isset($karrierepfad[0]->bezeichnung_mehrsprachig[0]) ? $karrierepfad[0]->bezeichnung_mehrsprachig[0] : $karrierepfad_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function for logging
|
||||
* @param $person_id
|
||||
|
||||
@@ -303,7 +303,20 @@
|
||||
WHERE konto.person_id = p.person_id
|
||||
AND konto.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
|
||||
AND konto.buchungstyp_kurzbz = '. $KAUTION_DRITT_STAAT .'
|
||||
) AS "Kaution"
|
||||
) AS "Kaution",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || kp.bezeichnung_mehrsprachig[1]), \', \')
|
||||
FROM public.tbl_prestudent ps
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN public.tbl_karrierepfad kp USING(karrierepfad_id)
|
||||
WHERE ps.person_id = p.person_id
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
WHERE pss.prestudent_id = ps.prestudent_id
|
||||
AND pss.studiensemester_kurzbz = '.$STUDIENSEMESTER.'
|
||||
)
|
||||
) AS "Karrierepfad"
|
||||
FROM public.tbl_person p
|
||||
LEFT JOIN (
|
||||
SELECT tpl.person_id,
|
||||
@@ -396,7 +409,8 @@
|
||||
'InfoCenter Mitarbeiter',
|
||||
ucfirst($this->p->t('infocenter', 'rueckstelldatum')),
|
||||
ucfirst($this->p->t('infocenter', 'rueckstellgrund')),
|
||||
ucfirst($this->p->t('infocenter', 'kaution'))
|
||||
ucfirst($this->p->t('infocenter', 'kaution')),
|
||||
ucfirst($this->p->t('infocenter', 'karrierepfad'))
|
||||
),
|
||||
'formatRow' => function($datasetRaw) {
|
||||
|
||||
@@ -519,6 +533,11 @@
|
||||
$datasetRaw->{'Kaution'} = 'Offen';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'Karrierepfad'} === null)
|
||||
{
|
||||
$datasetRaw->{'Karrierepfad'} = '-';
|
||||
}
|
||||
|
||||
return $datasetRaw;
|
||||
},
|
||||
'markRow' => function($datasetRaw) {
|
||||
|
||||
@@ -66,7 +66,8 @@
|
||||
<h4 class="panel-title">
|
||||
<a data-toggle="collapse"
|
||||
href="#collapse<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
<?php echo $studiengangkurzbz.' - '.$studiengangbezeichnung.' | '.(isset($zgvpruefung->prestudentstatus->status_kurzbz) ? $zgvpruefung->prestudentstatus->status_kurzbz : '');
|
||||
<?php echo $studiengangkurzbz.' - '.$studiengangbezeichnung ?><span id="karrierepfadHeading_<?php echo $zgvpruefung->prestudent_id ?>"<?php echo isset($zgvpruefung->karrierepfad) ? '' : ' class="hidden"' ?>>, <?php echo ucfirst($this->p->t('infocenter', 'karrierepfad')) ?>: <span class="karrierepfadName"><?php echo isset($zgvpruefung->karrierepfad) ? html_escape($zgvpruefung->karrierepfad->bezeichnung_mehrsprachig[0]) : '' ?></span></span><?php
|
||||
echo ' | '.(isset($zgvpruefung->prestudentstatus->status_kurzbz) ? $zgvpruefung->prestudentstatus->status_kurzbz : '');
|
||||
?></a>
|
||||
</h4>
|
||||
</div>
|
||||
@@ -202,6 +203,38 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Karrierepfad only if the Studienplan offers some or one is stored -->
|
||||
<?php if (!empty($zgvpruefung->karrierepfade) || isset($zgvpruefung->karrierepfad)): ?>
|
||||
<div class="row">
|
||||
<div class="col-lg-<?php echo $columns[0] ?>">
|
||||
<div class="form-group">
|
||||
<label><?php echo ucfirst($this->p->t('infocenter', 'karrierepfad')) . ':' ?></label>
|
||||
<?php if ($infoonly):
|
||||
echo isset($zgvpruefung->karrierepfad) ? html_escape($zgvpruefung->karrierepfad->bezeichnung_mehrsprachig[0]) : $this->p->t('infocenter', 'karrierepfadOhne');
|
||||
else:
|
||||
// The stored one stays selectable, also if the Studienplan no longer offers it
|
||||
$karrierepfadOptionen = $zgvpruefung->karrierepfade;
|
||||
if (isset($zgvpruefung->karrierepfad)
|
||||
&& !in_array($zgvpruefung->karrierepfad->karrierepfad_id, array_column($karrierepfadOptionen, 'karrierepfad_id')))
|
||||
$karrierepfadOptionen[] = $zgvpruefung->karrierepfad;
|
||||
|
||||
echo "<select id='karrierepfad_" . $zgvpruefung->prestudent_id . "' name='karrierepfad_id' class='form-control'>";
|
||||
echo "<option value=''>" . $this->p->t('infocenter', 'karrierepfadOhne') . "</option>";
|
||||
foreach ($karrierepfadOptionen as $karrierepfad)
|
||||
{
|
||||
$selected = (isset($zgvpruefung->karrierepfad) && $karrierepfad->karrierepfad_id == $zgvpruefung->karrierepfad->karrierepfad_id) ? 'selected' : '';
|
||||
$aktiv = $karrierepfad->aktiv ? '' : '(inaktiv)';
|
||||
$class = $karrierepfad->aktiv ? '' : 'gesperrtoption';
|
||||
$bezeichnung = html_escape($karrierepfad->bezeichnung_mehrsprachig[0]);
|
||||
|
||||
echo "<option " . $selected . " value='" . $karrierepfad->karrierepfad_id . "' class='" . $class . "' data-bezeichnung='" . $bezeichnung . "'>" . $bezeichnung . " " . $aktiv . "</option>";
|
||||
}
|
||||
echo "</select>";
|
||||
endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div class="row">
|
||||
<div class="col-lg-<?php echo $columns[0] ?>">
|
||||
<div class="form-group">
|
||||
|
||||
@@ -17,7 +17,11 @@ var FHC_UDFWidget = {
|
||||
|
||||
$("div[type*='UDFWidget']").each(function(i, udfWidgetDiv) {
|
||||
|
||||
var saveButton = $('<input type="button" value="Speichern">');
|
||||
// No button without an editable UDF: fields without write permission are disabled
|
||||
if ($(udfWidgetDiv).find("[name^='udf_']:enabled").length === 0) return;
|
||||
|
||||
// The label names what it saves, the page can have another save button
|
||||
var saveButton = $('<input type="button" value="Zusatzfelder speichern">');
|
||||
|
||||
saveButton.on('click', function() {
|
||||
|
||||
|
||||
@@ -215,6 +215,15 @@ var InfocenterDetails = {
|
||||
if (FHC_AjaxClient.hasData(data))
|
||||
{
|
||||
$("#zgvSpeichern_" + prestudentid).before("<span id='zgvSpeichernNotice' class='text-success'>" + FHC_PhrasesLib.t('ui', 'gespeichert') + "</span> ");
|
||||
|
||||
// The panel heading shows the saved Karrierepfad
|
||||
var karrierepfad = $("#karrierepfad_" + prestudentid + " option:selected");
|
||||
if (karrierepfad.length)
|
||||
{
|
||||
$("#karrierepfadHeading_" + prestudentid + " .karrierepfadName").text(karrierepfad.attr('data-bezeichnung') || '');
|
||||
$("#karrierepfadHeading_" + prestudentid).toggleClass('hidden', karrierepfad.val() === '');
|
||||
}
|
||||
|
||||
InfocenterDetails._refreshLog();
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user